네트워크의 특정 무선 장치에서 ARP 요청을 찾기 위해 Raspberry Pi를 사용하려고합니다. Amazon 대시 버튼 중 하나입니다. 누군가 대시가 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)
Raspbian에서 실행하면 (python 및 scapy가 설치된 상태에서) 오류가 발생합니다
"IndexError: Layer [ARP] not found"
나는 스 캐피에 익숙하지 않고 처음으로 다이빙을합니다. 어떤 아이디어에 감사드립니다.
답변
나도 같은 일을하고 있습니다. 내가 찾은 tcpdump
것은 설치되지 않았다는 것입니다.
간단한 sudo apt-get install tcpdump
이 오류가 수정되었습니다.
답변
나는 같은 오류가 있었지만 안정적으로 발생하지 않는다는 것을 알았습니다. 때로는 즉시 실패합니다.
IndexError: Layer [ARP] not found
때로는 영원합니다.
힌트 : count=0
인쇄 스 니프 라인에서 영원히 실행되도록 설정하면 카운트가 시간 초과 된 것으로 나타납니다.
처음에는 웹 사이트에서 scapy를 설치했지만 결국은 다음과 같습니다.
apt-get update
apt-get upgrade
apt-get install tcpdump tcpreplay wireshark python-scapy
그리고 그것이 실행될 때 잘 돌아가는 것처럼 보입니다. 위의 내용이 모두 필요하지는 않았지만 설치시 python-scapy는 (그리고 많은 그래픽 루틴) 권장했습니다.
부록 : 코드를 변경 할 때마다 충돌없이 변경 될 가능성이 있으므로 실제로 이상한 일이 발생합니다.
답변
우리는 여기에 같은 문제가 있었고 한 가지 조건을 확인하는 것을 잊어 버렸습니다.
모든 if 블록 앞에이 줄을 추가하십시오.
if pkt.haslayer(ARP):
답변
Raspy B 2012에서 CPU의 50 % 이상을 차지합니다.
내가 시도한 것은
sniff (filter = “tcp 및 포트 123”, prn = print_summary, store = 0)
대시 버튼 요청을 방화벽을 통해 Scapy가 실행되는 머신의 IP로 리디렉션했습니다. 아이디어는 리소스를 저장하고 mac 주소에 대한 모든 트래픽을 모니터링하는 것이 아니라 포트에 대한 연결 요청을 보는 것입니다.
이것은 ~ 30 % Cpu를 소비합니다. Ubuntu 시스템에서는 작동하지만 Raspi B에서는 작동하기 시작하는 데 약 5 분이 소요되며 네트워크 전체에서 Ubuntu 시스템에없는 연결을 표시합니다. Raspy Musicbox 이미지에서 깨진 것으로 가정합니다.