Pi에서 ARP를 스니핑하기 위해 Python과 Scapy 사용


12

네트워크의 특정 무선 장치에서 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"

나는 스 캐피에 익숙하지 않고 처음으로 다이빙을합니다. 어떤 아이디어에 감사드립니다.


이 작업을 해 본 적이 있습니까? 이 문제를 극복했지만 여전히 내 버튼에서 ARP 요청을 볼 수 없습니다
— jbnunn

@jbnunn이 대답은 나를 위해 일한 stackoverflow.com/questions/24415294/...
— Katu

답변:


7

나도 같은 일을하고 있습니다. 내가 찾은 tcpdump것은 설치되지 않았다는 것입니다.

간단한 sudo apt-get install tcpdump이 오류가 수정되었습니다.


6

나는 같은 오류가 있었지만 안정적으로 발생하지 않는다는 것을 알았습니다. 때로는 즉시 실패합니다.

IndexError: Layer [ARP] not found

때로는 영원합니다.

힌트 : count=0인쇄 스 니프 라인에서 영원히 실행되도록 설정하면 카운트가 시간 초과 된 것으로 나타납니다.

처음에는 웹 사이트에서 scapy를 설치했지만 결국은 다음과 같습니다.

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

그리고 그것이 실행될 때 잘 돌아가는 것처럼 보입니다. 위의 내용이 모두 필요하지는 않았지만 설치시 python-scapy는 (그리고 많은 그래픽 루틴) 권장했습니다.

부록 : 코드를 변경 할 때마다 충돌없이 변경 될 가능성이 있으므로 실제로 이상한 일이 발생합니다.


1

우리는 여기에 같은 문제가 있었고 한 가지 조건을 확인하는 것을 잊어 버렸습니다.

모든 if 블록 앞에이 줄을 추가하십시오.

if pkt.haslayer(ARP):

0

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 이미지에서 깨진 것으로 가정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.