Menggunakan Python dan Scapy untuk mengendus ARP pada Pi

12

Saya mencoba menggunakan Raspberry Pi untuk menemukan permintaan ARP dari perangkat nirkabel tertentu di jaringan saya. Itu salah satu tombol dash Amazon. Seseorang menggunakan kode ini untuk mendengarkan ketika dasbor terhubung ke wifi.

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)

Ketika saya menjalankan ini pada Raspbian (dengan python dan scapy diinstal), saya mendapatkan kesalahan

"IndexError: Layer [ARP] not found"

Saya benar-benar tidak terbiasa dengan scapy dan hanya menyelam untuk pertama kalinya. Terima kasih atas ide Anda.

pengguna851
sumber
Apakah Anda pernah berhasil ini? Saya telah melewati masalah itu tetapi masih tidak dapat melihat permintaan ARP dari tombol saya
jbnunn
@ jbnunn jawaban ini bekerja untuk saya stackoverflow.com/questions/24415294/…
Katu

Jawaban:

7

Saya juga melakukan hal yang sama. Apa yang saya temukan adalah yang tcpdumptidak diinstal.

Sederhana sudo apt-get install tcpdumpmemperbaiki kesalahan ini untuk saya.

anak sungai
sumber
6

Saya memiliki kesalahan yang sama, tetapi ternyata itu tidak terjadi dengan andal, terkadang gagal dengan:

IndexError: Layer [ARP] not found

dan terkadang berjalan selamanya.

Petunjuk: Atur count=0pada baris sniff cetak untuk menjalankannya selamanya, hitungannya tampaknya akan habis.

Saya awalnya menginstal scapy dari situs web, tetapi akhirnya melakukan:

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

dan tampaknya berjalan dengan baik ketika dijalankan. Tidak yakin saya membutuhkan semua hal di atas, tetapi python-scapy merekomendasikan mereka (dan banyak rutinitas grafik) ketika saya menginstalnya.

Tambahan: Setiap kali saya mengutak-atik kode kemungkinan itu akan berjalan tanpa menabrak perubahan, jadi ada sesuatu yang sangat aneh terjadi.

wpns
sumber
1

Kami memiliki masalah yang sama di sini, dan ternyata kami lupa memeriksa satu syarat.

Cukup tambahkan baris ini sebelum semua blok if:

if pkt.haslayer(ARP):
Roger Geng
sumber
0

pada Raspy B 2012 saya memakan> 50% dari CPU.

Apa yang saya coba adalah

sniff (filter = "tcp dan port 123", prn = print_summary, store = 0)

Saya mengalihkan permintaan tombol-Dash ke IP mesin tempat Scapy berjalan melalui Firewall saya. Idenya adalah untuk menyimpan sumber daya dan tidak untuk memantau semua lalu lintas untuk alamat mac tetapi hanya untuk menonton permintaan koneksi ke port.

Ini mengkonsumsi ~ 30% CPU. Ini bekerja pada mesin Ubuntu, tetapi pada Raspi B dibutuhkan sekitar 5 menit untuk mulai bekerja dan kemudian menunjukkan Koneksi dari seluruh jaringan saya - apa yang tidak pada mesin Ubuntu. Saya menganggap itu rusak pada gambar Raspy Musicbox.

Peter Fleix
sumber