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: Python可以通过调用Wireshark的命令行工具来进行抓包。具体步骤如下: 1. 安装Wireshark,并将其添加到系统环境变量中。 2. 在Python中使用subprocess模块调用Wireshark的命令行工具,例如: ``` import subprocess subprocess.call(['tshark', '-i', 'eth0', '-w', 'capture.pcap']) ``` 其中,tshark是Wireshark的命令行工具,-i参数指定要抓取的网络接口,-w参数指定抓包文件的保存路径和文件名。 3. 在代码中添加必要的过滤器,以便只抓取需要的数据。例如,可以使用BPF过滤器来只抓取HTTP请求: ``` subprocess.call(['tshark', '-i', 'eth0', '-w', 'capture.pcap', 'tcp port 80']) ``` 4. 在代码中使用Python的第三方库(例如pyshark)来解析抓包文件,并提取需要的信息。 需要注意的是,使用Wireshark进行抓包可能会涉及到一些安全问题,因此在实际应用中需要谨慎使用。 ### 回答2: Python是一种高级编程语言,拥有多种强大的库和工具,可以用于多种用途,括网络抓包。一种流行的网络抓包工具是Wireshark,它可以捕获网络数据并分析它们,以便理解网络通信情况。 Python中可以使用第三方库PyShark来调用Wireshark的API,从而实现抓包。下面是使用Python调用Wireshark抓包的基本步骤: 1.安装Wireshark和PyShark库 首先需要在电脑上安装Wireshark和PyShark库。Wireshark可以从官方网站下载,PyShark可以通过pip命令进行安装。安装完成后,可以在Python中调用PyShark库。 2.编写Python程序 在Python中创建一个新程序文件,并引用PyShark库。通过编写代码来启动Wireshark,并设置需要捕获的网络接口和过滤器条件。 3.捕获网络数据 启动Wireshark后,Python程序可以开始捕获网络数据。可以将网络数据保存到文件中,以便以后分析。在捕获数据后,需要使用PyShark来读取数据,并进行分析。 4.分析网络数据 使用PyShark可以读取并分析网络数据的内容。可以提取网络协议的字段,以便对网络通信情况进行分析和理解。可以将数据保存到文件中,以便进行更深入的分析。 总之,使用Python调用Wireshark抓包是非常方便和高效的。它可以帮助开发人员快速捕获和分析网络数据,并理解网络通信情况。同时,它还可以自动化测试和网络安全等方面做出贡献。无论是专业开发人员,还是网络工程师或网络安全专家,使用Python调用Wireshark抓包都是非常有用的。 ### 回答3: Wireshark是一款功能强大的网络分析工具,可以抓取网络流量以及分析网络流量中的各种协议,对于网络分析工程师、安全研究员等具有重要的作用。Python是一门功能强大的编程语言,拥有丰富的网络编程库,可以在很多网络应用中发挥重要作用。在Python中,可以通过使用第三方库,实现Python调用Wireshark进行抓包的功能。 使用Python调用Wireshark抓包主要分为以下几个步骤: 1. 安装Wireshark软件,并设置环境变量; 2. 在Python中安装PyShark库; 3. 使用PyShark库编写Python程序来调用Wireshark进行抓包; 4. 对抓包结果进行分析和处理。 具体操作步骤如下: 步骤一:安装Wireshark软件,并设置环境变量 在开始之前,我们首先需要安装Wireshark软件,并设置Wireshark路径的环境变量。安装的具体步骤可以参考Wireshark官方网站。在安装完成后,我们还需要将Wireshark的路径添加到系统的环境变量中,以便在后续的程序中可以直接调用Wireshark程序。 步骤二:在Python中安装PyShark库 在Python中调用Wireshark需要使用第三方库PyShark,我们需要使用pip工具来安装这个库,在命令行中执行以下命令即可: ``` pip install pyshark ``` 步骤三:使用PyShark库编写Python程序来调用Wireshark进行抓包 在安装完PyShark库后,我们可以开始编写Python程序来调用Wireshark进行抓包。以下是一个简单的示例程序,用于抓取本地的网络流量: ``` import pyshark capture = pyshark.LiveCapture(interface='本地网卡名称') capture.sniff(timeout=10) for packet in capture.sniff_continuously(packet_count=10): print(packet) ``` 其中,使用LiveCapture函数来创建一个LiveCapture对象,传入网络接口参数来指定抓取的网络接口。接下来,使用sniff函数来进行抓包,可以指定抓包的超时时间和抓包个数。最后,通过循环遍历capture对象的结果,可以打印出抓包结果。 步骤四:对抓包结果进行分析和处理 在抓包完成后,我们可以通过对抓包结果进行分析和处理来解析网络流量。例如,可以通过Wireshark中支持的过滤器来分析指定的流量,或者通过使用Python的网络编程库,将抓包结果传送到其他的系统中进行进一步处理。总之,Python调用Wireshark抓包是提高网络分析效率的有力工具,可以为网络工程师、安全研究员等提供重要的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yijianxiangde100

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

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

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

打赏作者

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

抵扣说明:

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

余额充值