Pi'de ARP'yi koklamak için Python ve Scapy kullanma


12

Ağımdaki belirli bir kablosuz aygıttan ARP isteklerini bulmak için bir Raspberry Pi kullanmaya çalışıyorum. Bu Amazon çizgi düğmelerinden biri. Birisi bu kodu, kablosuz bağlantıya bağlandığında dinlemek için kullandı.

from scapy.all import *
def arp_display(pkt):
  if pkt[ARP].op == 1: #who-has (request)
    if pkt[ARP].psrc == '0.0.0.0': # ARP Probe
      if pkt[ARP].hwsrc == '74:75:48:5f:99:30': # button 1
        print "Pushed Huggies"
      elif pkt[ARP].hwsrc == '10:ae:60:00:4d:f3': # button 2
        print "Pushed Elements"
      else:
        print "ARP Probe from unknown device: " + pkt[ARP].hwsrc

print sniff(prn=arp_display, filter="arp", store=0, count=10)

Bunu Raspbian'da (python ve scapy yüklü) çalıştırdığımda bir hata alıyorum

"IndexError: Layer [ARP] not found"

Scapy'yi tamamen bilmiyorum ve sadece ilk kez dalış yapıyorum. Herhangi bir fikir için teşekkürler.


Hiç çalıştın mı? Bu sorunu geçtim ama yine de
düğmemden

@jbnunn Bu cevap benim için çalıştı stackoverflow.com/questions/24415294/...
Katu

Yanıtlar:


7

Ben de aynı şeyi yapıyorum. Bulduğum şey tcpdumpyüklü değildi.

Basit bir sudo apt-get install tcpdumphata benim için bu hatayı düzeltti.


6

Aynı hatayla karşılaştım, ancak güvenilir bir şekilde gerçekleşmediğini fark ettim, bazen hemen başarısız olur:

IndexError: Layer [ARP] not found

ve bazen sonsuza dek sürer.

İpucu: count=0Baskı sniff satırında sonsuza kadar çalışacak şekilde ayarlayın , sayım zaman aşımı gibi görünüyor.

Başlangıçta web sitesinden scapy yükledim, ama yaptım:

apt-get update
apt-get upgrade
apt-get install tcpdump tcpreplay wireshark python-scapy

ve koşarken gayet iyi çalışıyor gibi görünüyor. Yukarıdakilerin hepsine ihtiyacım olduğundan emin değilim, ancak yüklediğimde python-scapy onları (ve bir grup grafik rutini) tavsiye etti.

Addenda: Kodla her uğraştığımda, değişiklikleri çökmeden çalıştırma olasılığı, bu yüzden gerçekten garip bir şey oluyor.


1

Burada da aynı sorunu yaşadık ve bir durumu kontrol etmeyi unuttuğumuz ortaya çıktı.

Bu satırı tüm if bloklarından önce ekleyin:

if pkt.haslayer(ARP):

0

Raspy B 2012'de CPU'nun% 50'sinden fazlasını yiyor.

Denediğim şey

sniff (filtre = "tcp ve port 123", prn = print_summary, mağaza = 0)

Dash-button isteklerini Scapy'nin Güvenlik Duvarım üzerinden çalıştığı makinenin IP'sine yönlendirdim. Fikir kaynakları kaydetmek ve mac adresleri için tüm trafiği izlemek değil, sadece bağlantı noktasındaki bağlantı isteklerini izlemekti.

Bu ~% 30 Cpu tüketir. Bir Ubuntu makinesinde çalışır, ancak bir Raspi B'de çalışmaya başlamak yaklaşık 5 dakika sürer ve daha sonra ağımın her yerinden Bağlantılar gösterir - Ubuntu makinesinde olmayan. Raspy Musicbox görüntüsünde kırıldığını varsayıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.