这几天在做网络协议的课程设计,题目是IP数据报流量监控,要求是从本地抓取数据包然后解析并进行统计。
这不是有现成的Wireshark吗。。功能强大好用支持多平台,简直是居家旅行黑人电脑攻击网站必备神器(误),现在老师居然要我们自己写一个。不过我脑筋一转,正好这学期开始时看了点python,想着锻炼下自己能力,用python写个抓包加分析的小脚本好了。
环境:MacBook Pro (13-inch, 2016) / macOS Sierra 10.12.5/Python 2.7.10/Sublime Text
OK,这是大致的环境。我们老师给的材料里建议是用Winpcap,但是这是windows上的抓包模块,Mac上。。我们还是从头来吧。。
在网上查了查Mac下Python抓包的文章或博客,发现相关资料还蛮少的,不过还是让我发现了一些有用的部分。
首先,抓包的库还是蛮多的,我这边采用的是 pypcap抓包+dpkt解包 的方法,另外还有scapy啊什么的(我们另外一个班有一组做的就是用scapy的)。而关于Pypcap+dpkt目前能搜到的中文资料就更有限了(可能是我经验不足),给出的方法很多都没法用,或者输出是各种乱码,问题蛮多需要一个一个去解决。后来我在stackoverflow上终于找到了一个跟我一样困惑的外国友人。他提了几个关于抓包的问题和我的困惑也蛮相似的,比如Mac下如何安装Python libcap(其实就是pypcap,原谅我那时候有多无知哈哈哈),为什么抓了包用dpkt解析出来后输出是一串串莫名其妙的字符等等等,反正我觉得这个老兄跟我一样蛮惨,很多概念都从零开始。
嗯。。这篇文章就当作从零开始小白教学好了(我也是小白QAQ。。
1、认识下Pypcap和dpkt