python解析wirshark抓包数据
python解析wirshark抓包数据
因为工作需要,需要分析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 datetimedef 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 datetimedef 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 datetimedef 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:# 过滤ipif 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) & 0x01bit_two = (pkt[Raw].load[10] >> 2) & 0x01bit_three = (pkt[Raw].load[10] >> 3) & 0x01bit_four = (pkt[Raw].load[10] >> 4) & 0x01bit_five = (pkt[Raw].load[10] >> 5) & 0x01bit_six = (pkt[Raw].load[10] >> 6) & 0x01bit_seven = (pkt[Raw].load[10] >> 7) & 0x01data = "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)
最新文章
- 看门狗怎么用
- 《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox
- tcpdump wireshark简单使用
- 如何使用功率放大器
- Unity C# 打开windows对话框选择文件夹或选择文件
- 只有开源才能拯救AI
- 觉非科技发布【轻地图高速NOA智驾方案】
- 设计大咖亲授:Figma中文环境设置全攻略!
- 海上船舶交通事故VR模拟体验低成本高效率
- (免费领源码)python#django#mysql校园校园宿舍管理系统84831
- Git的安装,简介以及常用命令【超详细】
- SSH全能终端工具mobaXterm(远程工具)使用教程
- mysql数据库可以执行定时任务
- 2020年五一杯数学建模C题饲料混合加工问题解题全过程文档及程序
- BMC Helix解决方案落地亚马逊云科技中国区域,同时上线Marketplace
- springboot(ssm 拍卖行系统 在线拍卖平台 Java(codeLW)
- 结合大模型进行降本增效之——自动化测试