pypcap 的库特别难装,反正我是莫名其妙装上了。可是在另外一台电脑就装不上去。暂时就不写安装方法。此处,先标记下,之后有机会补充。python
一、认识下Pypcap和dpkt编程
要介绍pypcap和wincap等库,首先必须知道libpcap。Libpcap是一个开源代码库,它提供了一个为网络数据报抓取系统设计的高层接口。它发明于1994年,做者是来自加利福尼亚大学的研究学者,当时制做Libpcap目的是为了更好的研究TCP协议和因特网接口。windows
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库。python2.7
至于dpkt,它则是用来解析数据包的库,不过我对它的了解不是不少。编程语言
这边再讲一下pypcap和dpkt的安装,个人建议是用pip或者easy_install的方式,比较省时省力。这里值得一提的是,一开始在安装pypcap的时候,我使用了网上一个帖子的方法,在官网下载pypcap的压缩包后,经过命令行的方法手动软连接,可是在调用import pcap的时候仍然发生了错误。在查找了网上的资料后,安装了homebrew,而后使用了brew doctor的命令,检测了软连接的错误。随后使用了pip成功进行了安装。函数
二、开始一场纠结的冒险吧操作系统
好的这部分将要讲的内容是编程部分,将会站在一个小白的角度逐步讲解。命令行
首先是建文件,用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进行解包了,注意如下定义: