Сеть нюхает с питоном - PullRequest
3 голосов
/ 14 января 2012

Я собираюсь создать программное обеспечение для университета.У меня есть некоторые идеи, но я хочу услышать еще.Идея состоит в том, чтобы использовать пассивный сигнал на передней панели брандмауэра и получать все данные ...

Я знаю, что C быстрее, но я хочу сделать это с помощью Python, есть ли какие-нибудь хорошие идеи, такие как библиотеки и т. Д.?

Refs:

Ответы [ 2 ]

11 голосов
/ 14 января 2012

Использование 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()
1 голос
/ 24 сентября 2014

Почему бы не использовать Scapy ??Это самые простые методы, насколько я знаю, см. Ссылку ниже:

http://www.youtube.com/watch?v=c7ZdmnxPZw8

...