python解析wirshark抓包数据

32 篇文章 3 订阅
8 篇文章 0 订阅
因为工作需要,需要分析wirshark的抓包数据。数据有的是在比特位中。不方便查找。而lua语言又不愿意去学,所以用python解析后,输出日志。帮助分析.

1.tcp分析

from dpkt.tcp import TCP
from scapy.all import *
from datetime import datetime, timedelta
import pytz
import datetime
from datetime import datetime


def main(file_path,tcp_ip,tcp_port):
    pkts = rdpcap(file_path)
    for pkt in pkts:
        if IP in pkt and TCP in pkt:
            if pkt[IP].dst == tcp_ip and pkt[TCP].dport == tcp_port:
            # if pkt[IP].dst == "225.0.0.10" and pkt[TCP].dport == 12306 and len(pkt) == 25:
                if len(pkt.load) == 18:
                    print("*" * 50)
                    print("Time: ", datetime.fromtimestamp(pkt.time), "Second byte: ", pkt[Raw].load[2])


main('E:\\abs\\shak\\1.pcapng', "225.0.0.10", 12306)

2.udp分析

from dpkt.ip import IP
from dpkt.udp import UDP
from scapy.all import *
import datetime
from datetime import datetime


def main(file_path,udp_ip,udp_port):
    pkts = rdpcap(file_path)
    for pkt in pkts:
        if IP in pkt and UDP in pkt:
            if pkt[IP].dst == udp_ip and pkt[UDP].dport == udp_port:
                if len(pkt.load) == 18:
                    print("*"*50)
                    print("Time: ", datetime.fromtimestamp(pkt.time),"Second byte: ", pkt[Raw].load[2])
                if pkt[Raw].load[9] == 0x0a:
                        print("*" * 50)
                        # 打印完整的全部数据
                        #print("Time: ", datetime.fromtimestamp(pkt.time),pkt.show())
                        #只打印对应的数据包
                        print("Time: ", datetime.fromtimestamp(pkt.time),pkt.load)
main('E:\\abs\\shak\\1.pcapng',"225.0.0.10",12306)

3.根据比特位取值,保存

from dpkt.ip import IP
from dpkt.udp import UDP
from scapy.all import *
import datetime
from datetime import datetime

def main(file_path,udp_ip,udp_port):
    pkts = rdpcap(file_path)

    with open("E:\\abs\\shak\\output.txt", "w") as f:
        for pkt in pkts:
            # 过滤ip
            if IP in pkt and UDP in pkt and pkt[IP].dst == udp_ip and pkt[UDP].dport == udp_port:
                # 过滤长度
                if len(pkt.load) == 18:
                    #过滤功能码,同时可以计算某个字节的比特位
                    if pkt[Raw].load[9] == 0x0a:
                        bit_one = (pkt[Raw].load[10] >> 1) & 0x01
                        bit_two = (pkt[Raw].load[10] >> 2) & 0x01
                        bit_three = (pkt[Raw].load[10] >> 3) & 0x01
                        bit_four = (pkt[Raw].load[10] >> 4) & 0x01
                        bit_five = (pkt[Raw].load[10] >> 5) & 0x01
                        bit_six = (pkt[Raw].load[10] >> 6) & 0x01
                        bit_seven = (pkt[Raw].load[10] >> 7) & 0x01

                        data = "Time:" + "\t" + str(datetime.fromtimestamp(pkt.time)) + "\t" + "data:" + str(bit_one)\
                               +" "+str(bit_two)+" "+str(bit_three)+" "+str(bit_four)+" "+str(bit_five)+" "+str(bit_six)\
                               +" "+str(bit_seven)+ "\n"
                        f.write(data)
                        #print("Time: ", datetime.fromtimestamp(pkt.time),pkt.show())
                        print("Time: ", datetime.fromtimestamp(pkt.time),pkt.load)
                        data1 = "Time:"+"\t" +str(datetime.fromtimestamp(pkt.time))+"\t"+"data:"+str(pkt.load)+"\n"
                        f.write(data1)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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抓包是提高网络分析效率的有力工具,可以为网络工程师、安全研究员等提供重要的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

如鸿毛

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值