Сеть нюхает с питоном
Я собираюсь создать программное обеспечение для университета. У меня есть некоторые идеи, но я хочу услышать еще. Идея состоит в том, чтобы использовать пассивный сигнал на передней панели брандмауэра и получить все данные...
Я знаю, что C быстрее, но я хочу сделать это с Python, есть ли хорошие идеи, такие как библиотеки и т.д.?
Refs:
2 ответа
Использование pylibcap
, Он предоставляет интерфейс к libpcap, который является стандартом де-факто для перехвата пакетов в Linux. Для разбора пакетов вы можете использовать construct
библиотека, так как она уже содержит парсер для пакетов TCP.
Вот небольшой пример программы:
import pcap
from construct.protocols.ipstack import ip_stack
def print_packet(pktlen, data, timestamp):
if not data:
return
stack = ip_stack.parse(data)
payload = stack.next.next.next
print payload
p = pcap.pcapObject()
p.open_live('eth0', 1600, 0, 100)
p.setfilter('dst port 80', 0, 0)
print 'Press CTRL+C to end capture'
try:
while True:
p.dispatch(1, print_packet)
except KeyboardInterrupt:
print # Empty line where ^C from CTRL+C is displayed
print '%d packets received, %d packets dropped, %d packets dropped by interface' % p.stats()
Почему бы не использовать Scapy?? Это самые простые методы, насколько я знаю, см. Ссылку ниже: