Pypcap和dpkt 转载

pypcap 的库特别难装,反正我是莫名其妙装上了。但是在另一台电脑就装不上去。暂时就不写安装方法。此处,先标记下,以后有机会补充。

1、认识下Pypcap和dpkt

要介绍pypcap和wincap等库,首先必须知道libpcap。Libpcap是一个开源代码库,它提供了一个为网络数据报抓取系统设计的高层接口。它发明于1994年,作者是来自加利福尼亚大学的研究学者,当时制作Libpcap目的是为了更好的研究TCP协议和因特网接口。

Libpcap的作者的主要目的是创造一种与运行平台无关的API库。它可以消除在各种不同应用中设立基于不同平台的数据报捕获模型的需要,消除各种操作系统建立不同捕获软件的需要。

一开始,lipcap API库被设计成使用C和C++语言运行。但随着更多不用高级编程语言的出现,比如Perl、Python、Java、C#和Ruby等,lipcap被允许可以被封装成不同语言的库被调用。Libpcap可以在大部分的Unix操作系统下运行,同时也支持windows系统,也就是winpcap库。

有了上面概念,pypcap库的介绍就简单很多了,它是一款基于libpcap封装的为python语言提供接口的抓包库,专门在python上运行。由于Mac OS系统预安装了python2.7,因此它可以运行Pypcap库。

至于dpkt,它则是用来解析数据包的库,不过我对它的了解不是很多。

这边再讲一下pypcap和dpkt的安装,我的建议是用pip或者easy_install的方式,比较省时省力。这里值得一提的是,一开始在安装pypcap的时候,我使用了网上一个帖子的方法,在官网下载pypcap的压缩包后,通过命令行的方法手动软链接,但是在调用import pcap的时候仍然发生了错误。在查找了网上的资料后,安装了homebrew,然后使用了brew doctor的命令,检测了软链接的错误。随后使用了pip成功进行了安装。

2、开始一场纠结的冒险吧

好的这部分将要讲的内容是编程部分,将会站在一个小白的角度逐步讲解。

首先是建文件,用sublime新建个py文件(command+N),目录么。。个人喜好吧,我就放在桌面了。command+S保存,右下角改成python语言,这样可以自动检查语法上的一些问题。

既然辛辛苦苦把库都安装好了,肯定得用对吧。这边直接import把库调用一下。对了,为了后面实现另外一些功能,除了pcap和dpkt,还需要调用一下time、math和os库。

好的接下来我们使用pcap库来进行抓包,这里要用到一个函数pcap.pcap()。这个函数是用来定义嗅探器的,我们的抓包就是通过这个函数定义的嗅探器实现的。如果给嗅探器取名为sniffer,那么参考的定义如下:

sniffer=pcap.pcap(name=None,promisc=True,immediate=True)#这个函数是用来定义嗅探器的,我们的抓包就是通过这个函数定义的嗅探器实现的

  

其中括号里是可以加入参数的,比如name、promisc、immediate和所要抓包的网卡名称等等。网上的中文资料对这个函数的介绍非常有限,所以我也没有找到一个参数列表。但是不加参数也是可以运行的。

好的有了嗅探器以后,我们就可以进行抓包了。那么抓下来的包在哪里呢了(我觉得应该是在缓存里面,请原谅我的无知。。),我们去sniffer里面找找。在这里sniffer是一直在抓包的并把数据源源不断存入内存,但是我们解包得一个个解吧。所以我们做一个循环:

for timestamp,raw_buf in sniffer:

  

这边sniffer中应该是有两个对象,一个timestamp是指时间戳,raw_buf是指包中的原始数据。

接下来我们用dpkt进行解包了,注意以下定义:

原文地址:https://www.cnblogs.com/Mengchangxin/p/9504322.html