2012-01-14 76 views
3

私は大学向けのスニッフィングソフトウェアを作成します。私はいくつかのアイデアを持っていますが、もう少し聞きたいです。アイデアは、ファイアウォールの前面にパッシブタップを使用しているので、すべてのデータを取得することです...Pythonを使ったネットワークスニッフィング

私はCが高速ですが、私はPythonでライブラリなどの任意の良いアイデアでそれをやりたいですか?

参考文献:

答えて

11

使用pylibcap。これは、Linux上のパケットスニッフィングの事実上の標準であるlibpcapへのインタフェースを提供します。パケットを解析するには、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() 
関連する問題