python 抓包思路

作者: admin 分类: python 发布时间: 2010-12-31 14:41 ė 6 没有评论

Python提供了几个libpcapbind,http://monkey.org/~dugsong/pypcap/这里有 一个最简单的。在windows平台上,你需要先安装winpcap,如果你已经安装了Ethereal非常好用

Google code地址:http://code.google.com/p/pypcap/

>>> import dpkt, pcap
>>> pc = pcap.pcap()
>>> pc.setfilter(‘icmp’)
>>> for ts, pkt in pc:
…     print `dpkt.ethernet.Ethernet(pkt)`

Ethernet(src=’\x00\x03G\xb2M\xe4′, dst=’\x00\x03G\x06h\x18′, data=IP(src=’\n\x00\x01\x1c’, dst=’\n\x00\x01\x10′, sum=39799, len=60, p=1, ttl=128, id=35102, data=ICMP(sum=24667, type=8, data=Echo(id=512, seq=60160, data=’abcdefghijklmnopqrstuvwabcdefghi’))))
Ethernet(src=’\x00\x03G\x06h\x18′, dst=’\x00\x03G\xb2M\xe4′, data=IP(src=’\n\x00\x01\x10′, dst=’\n\x00\x01\x1c’, sum=43697, len=60, p=1, ttl=255, id=64227, data=ICMP(sum=26715, data=Echo(id=512, seq=60160, data=’abcdefghijklmnopqrstuvwabcdefghi’))))
^CTraceback (most recent call last):
File ‘<stdin>’, line 1, in ?
File ‘pcap.pyx’, line 298, in pcap.pcap.__next__
KeyboardInterrupt
>>>
>>> pc.stats()
(4851, 0, 0)

1. pcap还支持一些回调函数的用法,效率比较高,不过抓包不是为了效率,把事情做正确就行
2. 调用pc.setfilter填写filter字符串,libpcap/WinPcap的filter language采用的tcpdump相同的格式,可以去看它的 man page
Ethereal的帮助里面有一个简单的说明

3. 报文的解析,可以用python自带的struct,很容易使用,当然可以安装http://monkey.org/~dugsong/dpkt/这个包,已经帮你解析基本的报文信息

dpkt在Google code的地址:http://code.google.com/p/dpkt/

本文出自 小Q,转载时请注明出处及相应链接。

本文永久链接: http://www.linuxqq.com/archives/583.html

0
更多
Ɣ回顶部