安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 编程茶楼 > Python > python解析pcap文件中的http数据包

python解析pcap文件中的http数据包

时间:2017-08-16来源:未知 作者:安云网点击:
使用scapy、scapy_http就可以方便的对pcap包中的http数据包进行解析 scapy_http可以在https://github.com/invernizzi/scapy-http下载,该地址下也给出了简单的示例程序,按照此示例程序我修改了一个输出pcap包中http包的源目的地址、payload的小程序

使用scapy、scapy_http就可以方便的对pcap包中的http数据包进行解析 //copyright AnYun.ORG

scapy_http可以在https://github.com/invernizzi/scapy-http下载,该地址下也给出了简单的示例程序,按照此示例程序我修改了一个输出pcap包中http包的源目的地址、payload的小程序,如下所示: //copyright AnYun.ORG


//安云网咨询系统


//内容来自安云网

[python] view plain copy //内容来自安云网

  1. #!/usr/bin/env python   //内容来自AnYun.ORG

  2. try:   //本文来自安云网

  3.     import scapy.all as scapy  

    //安云网,anyun.org

  4. except ImportError:   //安云网咨询系统

  5.     import scapy   //安云网咨询系统

  6.    //ANYUN.ORG

  7. try:  

    //安云网,anyun.org

  8.     # This import works from the project directory  

    //本文来自安云网

  9.     import scapy_http.http   //copyright AnYun.ORG

  10. except ImportError:  

    //安云网咨询系统

  11.     # If you installed this package via pip, you just need to execute this   //安云网咨询系统

  12.     from scapy.layers import http   //copyright AnYun.ORG

  13.   

    //安云网,anyun.org

  14. packets = scapy.rdpcap('f:\\abc123.pcap')   //安云网,anyun.org

  15. for p in packets:  

    //内容来自AnYun.ORG

  16.     print '=' * 78  

    //ANYUN.ORG

[python] view plain copy

//copyright AnYun.ORG

  1. #print p.show()   //ANYUN.ORG

  2. for f in p.payload.fields_desc:   //内容来自AnYun.ORG

  3.         if f.name == 'src' or f.name == 'dst':  

    //安云网咨询系统

  4.             ct = scapy.conf.color_theme  

    //ANYUN.ORG

  5.             vcol = ct.field_value  

    //本文来自安云网

  6.             fvalue = p.payload.getfieldval(f.name)   //copyright AnYun.ORG

  7.             reprval = f.i2repr(p.payload,fvalue)   //内容来自安云网

  8.             print "%s : %s" % (f.name, reprval)   //内容来自AnYun.ORG

  9.               

    //本文来自安云网

  10. for f in p.payload.payload.fields_desc:  

    //本文来自安云网

  11.         if f.name == 'load':   //内容来自AnYun.ORG

  12.             ct = scapy.conf.color_theme   //内容来自安云网

  13.             vcol = ct.field_value  

    //ANYUN.ORG

  14.             fvalue = p.payload.getfieldval(f.name)   //ANYUN.ORG

  15.             reprval = f.i2repr(p.payload,fvalue)   //安云网咨询系统

  16.             print "%s : %s" % (f.name, reprval)   //copyright AnYun.ORG


//内容来自AnYun.ORG


//内容来自AnYun.ORG

其中,p为数据包,scapy_http将其分为:

//安云网,anyun.org

Ethernet->TCP->RAW三个层次,
//内容来自安云网

使用p.show()函数可以打印出如下结果: //安云网,anyun.org

###[ Ethernet ]###
  dst       = 02:00:00:00:00:39
  src       = 00:00:00:01:02:09
  type      = 0x800
###[ IP ]###
     version   = 4L
     ihl       = 5L
     tos       = 0x0
     len       = 1014
     id        = 7180
     flags     = 
     frag      = 0L
     ttl       = 45
     proto     = tcp
     chksum    = 0xbbf9
     src       = 126.209.59.13
     dst       = 121.113.176.25
     \options   \

//内容来自安云网


###[ Raw ]###
        load      = '.....'
//安云网,anyun.org

第一层是网络层,包含源、目的mac、ip协议号,第二层是tcp层,第三层包含端口号、http报文 //安云网,anyun.org

其中每一层均为上一层的payload成员

//安云网咨询系统


//安云网咨询系统

在运行程序的过程中,如果提示dnet或pcap库异常,需要到这里下载并重新安装相应的库: //本文来自安云网

//内容来自AnYun.ORG

pcap http://files.cnblogs.com/Jerryshome/pcap-1.1.win32-py2.7.rar

//内容来自AnYun.ORG

dnet http://files.cnblogs.com/Jerryshome/dnet-1.12.win32-py2.7.rar

//安云网,anyun.org


//安云网咨询系统


//本文来自安云网

参考:http://www.cnblogs.com/Jerryshome/p/4076800.html //安云网,anyun.org


//本文来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容