使用Python进行网络嗅探
我打算为学校开发一个嗅探软件。我有一些想法,但想听听更多的建议。我的想法是,在防火墙前面使用一个被动的连接,这样就能获取所有的数据……
我知道用C语言会更快,但我想用Python来做,有没有好的建议,比如库之类的?
参考资料:
2 个回答
1
为什么不使用Scapy呢?我觉得它是最简单的方法,下面有个链接可以看看:
12
可以使用 pylibcap
这个库。它提供了一个接口,可以让你在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()