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请求的数据都在里边,比如cookie,session,
Url, 参数,表单等等。
request = dpkt.http.Request(http_data)
接下来, 就是统计数据了,自己实现即可。
项目地址:
https://github.com/gitsteven/python-tcpdumpdata
将来的版本:
1, 支持多包合并。
2, 支持https
python tcp 实时抓包的更多相关文章
- [转] Android实时抓包分析 : 善用adb调试桥
Android实时抓包分析 : 善用adb调试桥 谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- python+pcap+dpkt 抓包小实例
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 网络数据包捕获与分析程序 """ imp ...
- android 移动网络实时抓包
2G.3G环境,那就必须root进去tcpdump 方式抓. 准备: 一.root CF-auto-root: http://autoroot.chainfire.eu/ 需要清理全部数据,注意备份 ...
- python+pcap+dpkt抓包小实例
通过pcap与dpkt抓包解包示例: #!/usr/bin/env python # -*- coding: utf-8 -*- """ 网络数据包捕获与分析程序 &qu ...
- 《Wireshark数据包分析实战》 - http背后,tcp/ip抓包分析
作为网络开发人员,使用fiddler无疑是最好的选择,方便易用功能强. 但是什么作为爱学习的同学,是不应该止步于http协议的,学习wireshark则可以满足这方面的需求.wireshark作为抓取 ...
- python爬虫——论抓包的正确姿势和学好Javascript的重要性(1)
没事想爬下数据,就入了scrapy坑,跟着https://zhuanlan.zhihu.com/data-factory这篇教程走,中间被小数量的网站坑过,不过还是写出了爬虫~~ 切糕王子:毫无防御, ...
- TCP头部格式详解,附Wireshark对TCP头部抓包分析
TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...
- Python—TCP的黏包问题以及UDP的分片问题
TCP协议与UDP协议 TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务.收发两端(客户端和服务器端)都要有一一成对的socket, ...
随机推荐
- 20155203 2016-2017-3 《Java程序设计》第5周学习总结
20155203 2016-2017-3 <Java程序设计>第5周学习总结 教材学习内容总结 课堂知识总结 封装是继承的基础,继承是多态的基础.多态是用父类声明对象的引用,用子类生成对象 ...
- asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
物理路径:磁盘路径,也就是在磁盘上的位置. 虚拟路径:web页面上的路径,是相对于应用程序而言的. /// 将物理路径转换成相对路径 /// </summary> ...
- 解决MySQL新增用户无法登陆问题
1. 新增用户 grant all on *.* to '库名'@'%' identified by '库名'; 2. 刷新授权表 flush privileges; 3. 删除空用户 use mys ...
- atom使用markdown
atom使用markdown 最近因为不喜欢博客园自身带的编辑工具,所以尝试使用markdown,目前只是想简单的把标题和内容分的开一些,以后在慢慢熟悉吧 1.atom上安装markdown 在没有外 ...
- CMD常用命令(一)
常用命令大全 net>user heibai lovechina /add 加一个heibai的用户密码为lovechina net>localgroup Administrators h ...
- 统一过程模型(RUP/UP)
http://blog.sina.com.cn/s/blog_6a06f1b7010121hz.html 统一过程(RUP/UP,Rational Unified Process)是一种以用例驱动.以 ...
- mysql学习------二进制日志管理
MySQL二进制日志(Binary Log) a.它包含的内容及作用如下: 包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE) 包含关于每个更新数据库( ...
- Linux TTY驱动--Uart_driver底层【转】
转自:http://blog.csdn.net/sharecode/article/details/9196591 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux 中将串口驱动进行了 ...
- 用Java检测远程主机是否能被连接
有人推荐使用java的Runtime.exec()方法来直接调用系统的Ping命令.也有人完成了纯Java实现Ping的程序,使用的是Java的NIO包(native io, 高效IO包).我个人认为 ...
- java 异常匹配
抛出异常的时候,异常处理系统会安装代码书写顺序找出"最近"的处理程序. 找到匹配的程序后,它就认为异常将得到清理,然后就不再继续查找. 查找的时候并不要求抛出的异常同处理程序的异常 ...