【B2B研发商城】 【加入收藏】 【设为首页】 【进入论坛】 【站点地图】

你的位置:中国研发网 >> 专题频道 >> 开源软件 >> 监控管理类 >> 详细内容 在线投稿

基于Python的网络抓包开源库 pypcap

排行榜 收藏 打印 发给朋友 举报 来源: 互联网   发布者:未知
热度149票  浏览193次 【共0条评论】【我要评论 时间:2009年11月24日 09:58

基于winpcap的一个开源软件.Ethereal 自带许多协议的 decoder,简单,易用,, 但是它的架构并不灵活,如何你要加入一个自己定义的的解码器,得去修改 Ethereal的代码,再重新编译,很烦琐.对于一般的明文 协议,没有什么问题,但是对于加密协议,比如网络游戏,客户端程序一般会在刚连接上的时候,发送一个随机密钥,而后的报文都会用这个密钥进行加密,如此. 要想破解,得要有一个可编程的抓包器.

libpcap是一个不错的选择,但是对于抓包这样需要反复进行”试 验->修改”这个过程的操作,c 语言显然不是明智的选择.

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

一个规范的抓包过程

import pcap

import dpkt

pc=pcap.pcap() #注,参数可为网卡名,如eth0

pc.setfilter('tcp port 80') #设置监听过滤器

for ptime,pdata in pc: #ptime为收到时间,pdata为收到数据

print ptime,pdata #...

对抓到的以太网V2数据包(raw packet)进行解包

p=dpkt.ethernet.Ethernet(pdata)

if p.data.__class__.__name__=='IP':

ip='%d.%d.%d.%d'%tuple(map(ord,list(p.data.dst)))

if p.data.data.__class__.__name__=='TCP':

if data.dport==80:

print p.data.data.data # by gashero

一些显示参数

nrecv,ndrop,nifdrop=pc.stats()

返回的元组中,第一个参数为接收到的数据包,(by gashero)第二个参数为被核心丢弃的数据包。

项目主页:http://code.google.com/p/pypcap/

下载地址:http://code.google.com/p/pypcap/downloads/list

本站所有文章欢迎任何形式的转载,但请注明作者及出处,尊重他人劳动成果!
文章转载自:中国研发网 [http://www.yanfaw.com]
本文标题:基于Python的网络抓包开源库 pypcap
TAG: Python 开源 网络 pypcap
顶:7 踩:5
对本文中的事件或人物打分:
当前平均分:0.16 (45次打分)
对本篇资讯内容的质量打分:
当前平均分:0.02 (51次打分)
【已经有41人表态】
5票
感动
6票
路过
4票
高兴
3票
难过
5票
搞笑
9票
愤怒
6票
无聊
3票
同情
上一篇 下一篇
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】