Estoy tratando de usar una Raspberry Pi para encontrar solicitudes ARP de un dispositivo inalámbrico específico en mi red. Es uno de esos botones del tablero de Amazon. Alguien usó este código para escuchar cuando el tablero se conecta a 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)
Cuando ejecuto esto en Raspbian (con python y scapy instalado), recibo un error
"IndexError: Layer [ARP] not found"
No estoy familiarizado con el miedo y simplemente me sumerjo por primera vez. Gracias por cualquier idea
Respuestas:
Yo también estoy haciendo lo mismo. Lo que encontré fue que
tcpdump
no estaba instalado.Un simple
sudo apt-get install tcpdump
solucionó este error para mí.fuente
Tuve el mismo error, pero descubrí que no ocurre de manera confiable, a veces falla inmediatamente con:
y a veces corre para siempre.
Sugerencia: Establezca
count=0
en la línea de rastreo de impresión para que se ejecute para siempre, el recuento parece ser tiempo de espera.Inicialmente había instalado scapy desde el sitio web, pero terminé haciendo:
y parece funcionar bien cuando se ejecuta. No estoy seguro de que necesitara todo lo anterior, pero python-scapy los recomendó (y un montón de rutinas gráficas) cuando lo instalé.
Addenda: Cada vez que jugueteo con el código, la probabilidad de que se ejecute sin fallar cambia, por lo que hay algo realmente extraño.
fuente
Tuvimos el mismo problema aquí, y resulta que olvidamos verificar una condición.
Simplemente agregue esta línea antes de todos los bloques if:
fuente
en mi Raspy B 2012 consume> 50% de la CPU.
Lo que probé fue
sniff (filter = "tcp y puerto 123", prn = print_summary, store = 0)
Redirigí las solicitudes del botón Dash a la IP de la máquina donde Scapy se ejecuta a través de mi Firewall. La idea era guardar recursos y no monitorear todo el tráfico para direcciones de mac, sino solo ver las solicitudes de conexión en el puerto.
Esto consume ~ 30% de CPU. Funciona en una máquina Ubuntu, pero en una Raspi B tarda alrededor de 5 minutos en comenzar a funcionar y luego muestra Conexiones de toda mi red, lo que no funciona en la máquina Ubuntu. Supongo que está roto en la imagen de Raspy Musicbox.
fuente