python tcp 实时抓包

问题:之前我们系统上线后,因为是旧的系统,没有加统计的功能,比如用户喜欢那个页面,是哪些用户再访问,接口的负载能力等等。

解决办法: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

下载地址:

https://pan.baidu.com/s/1nvXeuLz

 

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请求的数据都在里边,比如cookiesession

Url, 参数,表单等等。

 request = dpkt.http.Request(http_data)


接下来, 就是统计数据了,自己实现即可。

 

项目地址:

https://github.com/gitsteven/python-tcpdumpdata

 

将来的版本:

1, 支持多包合并。

2, 支持https 


  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yijianxiangde100

你的鼓励是对我创作最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值