用于读取和解析libpcap存储文件的纯python包。

pypcapfile的Python项目详细描述


pypcapfile是处理libpcap存储文件的纯python库。

安装

最简单的安装方法是from
pypi
sudo pip install pypcapfile
注意,对于pip,在您的代码中,包名是pypcapfile;。 您需要
导入pcapfile
或者,可以从源安装。克隆存储库,然后 使用运行setup.py
安装参数:
git clone git://github.com/kisom/pypcapfile.git
cd pypcapfile
./setup.py install
这需要Python distutils
已安装。

简介

核心功能在pcapfile.savefile

中实现
>>>frompcapfileimportsavefile>>>testcap=open('test.pcap','rb')>>>capfile=savefile.load_savefile(testcap,verbose=True)[+]attemptingtoloadtest.pcap[+]foundvalidheader[+]loaded11packets[+]finishedloadingsavefile.>>>printcapfilelittle-endiancapturefileversion2.4microsecondtimeresolutionsnapshotlength:65535linklayertype:LINKTYPE_ETHERNETnumberofpackets:11

您可以查看capfile.packets

中的数据包
>>>pkt=capfile.packets[0]>>>pkt.raw()<binarydatasnipped>>>>pkt.timestamp1343676707L
现在对以太网帧和IPv4有非常基本的支持 数据包
分析。

自动解码层

load_savefilelayers参数决定了 图层到
解码;默认值0不解码,1只加载 链接
层等…例如,没有解码:
>>>frompcapfileimportsavefile>>>frompcapfile.protocols.linklayerimportethernet>>>frompcapfile.protocols.networkimportip>>>importbinascii>>>testcap=open('samples/test.pcap','rb')>>>capfile=savefile.load_savefile(testcap,verbose=True)[+]attemptingtoloadsamples/test.pcap[+]foundvalidheader[+]loaded3packets[+]finishedloadingsavefile.>>>eth_frame=ethernet.Ethernet(capfile.packets[0].raw())>>>printeth_frameethernetfrom00:11:22:33:44:55toff:ee:dd:cc:bb:aatypeIPv4>>>ip_packet=ip.IP(binascii.unhexlify(eth_frame.payload))>>>printip_packetipv4packetfrom192.168.2.47to173.194.37.82carrying44bytes

这个例子:

>>>frompcapfileimportsavefile>>>testcap=open('samples/test.pcap','rb')>>>capfile=savefile.load_savefile(testcap,layers=1,verbose=True)[+]attemptingtoloadsamples/test.pcap[+]foundvalidheader[+]loaded3packets[+]finishedloadingsavefile.>>>printcapfile.packets[0].packet.src00:11:22:33:44:55>>>printcapfile.packets[0].packet.payload<hexstringsnipped>

最后:

>>>frompcapfileimportsavefile>>>testcap=open('samples/test.pcap','rb')>>>capfile=savefile.load_savefile(testcap,layers=2,verbose=True)>>>printcapfile.packets[0].packet.payloadipv4packetfrom192.168.2.47to173.194.37.82carrying44bytes
IPv4模块(ip)当前仅支持基本IP头, 即it
尚未分析选项或外接程序填充。

界面还是有点乱。

未来计划改进

  • IP选项解析(支持END和NOP)
  • IPv6支持
  • TCP选项分析
  • ARP支持

待办事项

  1. 编写单元测试
  2. 添加显示中所有字段值的__repr__方法 IP数据包 和以太网帧

另请参见

贡献者

项目的贡献者列表可以在AUTHORS文件中找到

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
手机上的html调试Java web应用程序   Java当前日期和过去日期之间的差值,以年、月、日、小时、分、秒为单位   如果方法名称相同,java如何使扩展类不从上面的类触发方法?   即使在提供了准确的firebase引用之后,java仍出现“无法跳转到类型”异常。请看详情   jar文件中的java图像   java如何避免从缓存读取时修改相同的对象实例?   Android中java完全控制的线程队列   JTextArea中的java计算   java如何独立运行。jar作为64位mashine上的32位   java在尝试实例化自引用泛型类的实例时,如何处理自引用类型参数   java如何安装着色jar而不是原来的jar   java在resultSet之后使用If-Else   多线程是java。朗,反思一下。方法调用线程安全   java 7语言向后兼容性   Objective C中的Category和Java 8中的Default方法是否等效?