Sử dụng Python và Scacco để đánh hơi ARP trên Pi


12

Tôi đang cố gắng sử dụng Raspberry Pi để tìm các yêu cầu ARP từ một thiết bị không dây cụ thể trên mạng của mình. Đây là một trong những nút dash của Amazon. Ai đó đã sử dụng mã này để nghe khi dấu gạch ngang kết nối với 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)

Khi tôi chạy cái này trên Raspbian (đã cài đặt python và scacco), tôi gặp lỗi

"IndexError: Layer [ARP] not found"

Tôi hoàn toàn không quen thuộc với scealer và chỉ mới lặn lần đầu tiên. Cảm ơn cho bất kỳ ý tưởng.


Bạn đã bao giờ làm việc này? Tôi đã vượt qua vấn đề đó nhưng vẫn không thể thấy yêu cầu ARP từ nút của mình
jbnunn

@jbnunn câu trả lời này có hiệu quả với tôi stackoverflow.com/questions/24415294/ trên
Katu

Câu trả lời:


7

Tôi cũng đang làm điều tương tự. Những gì tôi tìm thấy tcpdumplà không được cài đặt.

Một sudo apt-get install tcpdumplỗi đơn giản đã sửa lỗi này cho tôi.


6

Tôi đã có cùng một lỗi, nhưng thấy nó không xảy ra đáng tin cậy, đôi khi nó bị lỗi ngay lập tức với:

IndexError: Layer [ARP] not found

và đôi khi nó chạy mãi mãi.

Gợi ý: Đặt count=0trong dòng sniff in để nó chạy mãi mãi, số đếm dường như là hết thời gian.

Ban đầu tôi đã cài đặt scacco từ trang web, nhưng cuối cùng lại làm:

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

và nó dường như chỉ chạy tốt khi nó chạy. Không chắc chắn tôi cần tất cả những thứ trên, nhưng python-scacco đã khuyến nghị chúng (và một loạt các thói quen đồ họa) khi tôi cài đặt nó.

Phụ lục: Mỗi lần tôi sử dụng mã xác suất nó sẽ chạy mà không gặp sự cố thay đổi, vì vậy có điều gì đó thực sự kỳ lạ đang xảy ra.


1

Chúng tôi đã có cùng một vấn đề ở đây, và hóa ra chúng tôi quên kiểm tra một điều kiện.

Chỉ cần thêm dòng này trước tất cả các khối if:

if pkt.haslayer(ARP):

0

trên Raspy B 2012 của tôi, nó chiếm tới> 50% CPU.

Những gì tôi đã cố gắng là

sniff (bộ lọc = "tcp và cổng 123", prn = print_summary, store = 0)

Tôi đã chuyển hướng các yêu cầu nút Dash đến IP của máy nơi Scacco chạy qua Tường lửa của tôi. Ý tưởng là để lưu các nguồn tài nguyên và không giám sát tất cả lưu lượng truy cập cho các địa chỉ mac mà chỉ để xem các yêu cầu kết nối trên cổng.

Điều này tiêu thụ ~ 30% Cpu. Nó hoạt động trên máy Ubuntu, nhưng trên Raspi B, mất khoảng 5 phút để bắt đầu hoạt động và sau đó hiển thị Kết nối từ tất cả các mạng của tôi - những gì nó không có trên máy Ubuntu. Tôi giả sử nó bị hỏng trên hình ảnh Raspy Musicbox.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.