python捕获数据包 python如何抓包 | 您所在的位置:网站首页 › python调用libpcap抓包转发 › python捕获数据包 python如何抓包 |
问题:之前我们系统上线后,因为是旧的系统,没有加统计的功能,比如用户喜欢那个页面,是哪些用户再访问,接口的负载能力等等。 解决办法:1,现有代码更改,添加功能。现有代码侵入太多,工作量比较大 2,想到tcpdump 抓包,然后分析文件。文件特别大,而且不能做到实时处理。 3,采用python 脚本来处理,直接抓包80端口,加上一些处理,入库之内。 环境搭建: 1,使用到的第三方包:dpkt-1.8.8.tar.gz, impacket-master.zip, pcapy-master.zip pylibpcap-0.6.4.tar.gz PyMySQL3-0.5.tar.gz pypcap-1.1.6.tar.gz pypcap-master.zip下载地址: 2,代码解析: pcapy.findalldevs() max_bytes = 20480 promiscuous = False read_timeout = 10000 # in milliseconds pc = pcapy.open_live("eth1", max_bytes, promiscuous, read_timeout) pc.setfilter('tcp port 80')熟悉tcpdump 的都知道, eth1 是外网,然后 tcp port 80 是表示转80 端口的包。 核心代码: recv_pkts 方法。 解包,得到请求ip地址 src = socket.inet_ntoa(ip.src) ds = socket.inet_ntoa(ip.dst)转换数据为 http 请求数据,这样http请求的数据都在里边,比如cookie,session, Url, 参数,表单等等。 request = dpkt.http.Request(http_data)接下来, 就是统计数据了,自己实现即可。 项目地址: 将来的版本: 1, 支持多包合并。 2, 支持https |
CopyRight 2018-2019 实验室设备网 版权所有 |