最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python如何抓包

    正文概述    2020-01-03   255

    系统环境:windows7,选择windows系统是因为我对自己平时日常机器上的流量比较感兴趣

    python如何抓包

    python环境:python2.7 ,这里不选择python3的原因,是因为接下来要用到的scapy包在python3中安装较于python2要麻烦得多。如果你习惯于用python3,数据包的分析完全可以放在3下面做,因为抓包和分析是两个完全独立的过程。

    需要的python包:scapy和dpkt

    抓包代码:

    from scapy.sendrecv import sniff
    from scapy.utils import wrpcap
    dpkt = sniff(count = 100)  #这里是针对单网卡的机子,多网卡的可以在参数中指定网卡
    wrpcap("demo.pcap", dpkt)

    你没看错,仅仅只需要两行代码就可以实现一个简单的抓包功能。sniff函数负责嗅探数据包,而wrpcap函数将抓取到的数据包保存起来。

    数据包的分析:

    import dpkt
    import socket
    import datetime
    def printPcap(pcap):
    try:
    for timestamp, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf) #获得以太包,即数据链路层包
    print("ip layer:"+eth.data.__class__.__name__) #以太包的数据既是网络层包
    print("tcp layer:"+eth.data.data.__class__.__name__) #网络层包的数据既是传输层包
    print("http layer:" + eth.data.data.data.__class__.__name__) #传输层包的数据既是应用层包
    print('Timestamp: ',str(datetime.datetime.utcfromtimestamp(timestamp))) #打印出包的抓取时间
    if not isinstance(eth.data, dpkt.ip.IP):
    print('Non IP Packet type not supported %s' % eth.data.__class__.__name__)
    continue
    ip = eth.data
    do_not_fragment =bool(ip.off & dpkt.ip.IP_DF)
    more_fragments =bool(ip.off & dpkt.ip.IP_MF)
    fragment_offset = ip.off & dpkt.ip.IP_OFFMASK
    print('IP: %s -> %s (len=%d ttl=%d DF=%d MF=%d offset=%d)' % (socket.inet_ntoa(ip.src), socket.inet_ntoa(ip.dst), ip.len, ip.ttl, do_not_fragment, more_fragments,fragment_offset))
    except:
    pass
    def main():
    f =open('demo.pcap','rb')
    pcap = dpkt.pcap.Reader(f)
    printPcap(pcap)
    if __name__ =='__main__':
    main()

    结果显示:

    这是我打开360的路由器卫士时抓取的数据包。这个软件在打开时与路由器通信,获得连接路由器的电脑和手机的列表。192.168.1.100是我的机器,192.168.1.1是路由器地址,其中可以看到windows发送的数据包的ttl值默认是128,其他的系统默认是64,与我们的理论常识是相符的。


    起源地下载网 » python如何抓包

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元