网络抓包文件太大,如何切分

news/2025/1/22 17:16:50/文章来源:https://www.cnblogs.com/grey-wolf/p/18686468

背景

节前最后几天了,随便写点水文吧,今天就记录一下,当我们拿到的网络抓包文件太大,应该怎么分析。

一般来说,我们个人抓包的话,linux上用tcpdump比较多,抓的时候也会用捕获表达式,抓出来的包一般不大,用wireshark分析就很容易。

但是,前一阵的一个晚上,dba突然找我,看能不能帮忙一起分析一个网络抓包文件,连了会议后一看,大小有4g,这么大的包,wireshark打开都很是困难,分析也很卡。

这么大的包,怎么来的呢,原来是网络同事直接在路由器上抓的,过滤条件就是某个数据库服务器的ip:1433端口(sql server数据库)。既然过滤了,包还这么大?问了下,原来在路由器上抓了整整一个半小时,然后这个库流量又大,所以最终就有4g。

dba的诉求是,某个数据库客户端发了某些sql,导致把数据库服务器搞死了,现在就是要找出来是哪个客户端,哪个sql。

最终呢,我只是给dba同事说了下,怎么拆分包,怎么查看包里的sql;后续忙起来后,我也没问进度,估计已经解决了吧。

这里就简单记录下,遇到这种大的包,怎么拆分。

editcap

editcap这个命令是wireshark自带的,一般就在wireshark目录下,像我这边在:C:\Program Files\Wireshark\editcap.exe,我一般会加入到环境变量PATH。

介绍如下:

Editcap is a program that reads some or all of the captured packets from the infile, optionally converts them in various ways and writes the resulting packets to the capture outfile (or outfiles).

即,可以读取pcap/pcapng类型的文件,通过各种方式进行一些处理、转换,然后将结果写入到另外的文件。

说明文档:

image-20250122161700554

在我们场景中,一般使用如下几个选项就行了:

image-20250122162346067

按时间

按包的开始时间

-A

Saves only the packets whose timestamp is on or after start time. The time is given in the following format YYYY-MM-DD HH:MM:SS[.nnnnnnnnn] (the decimal and fractional seconds are optional).

比如,对于如下这个包:

editcap  file20230325.pcap file20230325-after-pm-3.pcap -A "2023-03-25 15:00:00"

其中,file20230325-after-pm-3.pcap就是要保存的文件名,-A就是选择15点以后的报文。

可以看下图示例效果:

image-20250122162808207

获取包的时间范围

但你可能有个疑问,如果不知道包的时间范围呢?

可以先用如下命令获取:

capinfos file20230325.pcap

image-20250122163028108

按包的结束时间

-B

Saves only the packets whose timestamp is before stop time. The time is given in the following format YYYY-MM-DD HH:MM:SS[.nnnnnnnnn] (the decimal and fractional seconds are optional).

editcap  file20230325.pcap file20230325-start3-end310.pcap -A "2023-03-25 15:00:00" -B "2023-03-25 15:10:00"

image-20250122163358633

按包的数量

-c <packets per file>
Splits the packet output to different files based on uniform packet counts with a maximum of <packets per file> each. Each output file will be created with a suffix -nnnnn, starting with 00000. If the specified number of packets is written to the output file, the next output file is opened. The default is to use a single output file.

这个是把大文件拆分,按照包的数量,届时,每个子文件里的包的数量是一致的。

editcap  file20230325.pcap -c 100000 file20230325-by-packets-number.pcap

效果:

image-20250122163917848

但可以看到,每个里面都有1w个包

image-20250122164009642

image-20250122164036502

按时间间隔

-i

Splits the packet output to different files based on uniform time intervals using a maximum interval of each. Floating point values (e.g. 0.5) are allowed. Each output file will be created with a suffix -nnnnn, starting with 00000. If packets for the specified time interval are written to the output file, the next output file is opened. The default is to use a single output file.

单位是秒。

我们示例文件总共是1000多秒。

image-20250122164317496

editcap  file20230325.pcap -i 100 file20230325-by-seconds.pcap

image-20250122164429164

image-20250122164648284

image-20250122164708275

组合时间范围、包的数量两个选项

editcap  file20230325.pcap file20230325-start3-end310-packets-number.pcap -A "2023-03-25 15:00:00" -B "2023-03-25 15:10:00" -c 10000

image-20250122164946525

这个就是,本来按照时间范围,只会生成一个包。加了-C后,就继续按包的数量拆分了。

组合时间范围、时间间隔两个选项

editcap  file20230325.pcap file20230325-start3-end310-seconds.pcap -A "2023-03-25 15:00:00" -B "2023-03-25 15:10:00" -i 100

image-20250122170035066

按序号

image-20250122170742237

命令中可以指定序号,但是默认是删掉这些序号的包。

-r

Reverse the packet selection. Causes the packets whose packet numbers are specified on the command line to be written to the output capture file, instead of discarding them.

加了-r后,意味着反选。即保留这些序号的包。

官方示例:
To limit a capture file to packets from number 200 to 750 (inclusive) use:editcap -r capture.pcapng small.pcapng 200-750

image-20250122170404907

我这边也试了下:

editcap  -r file20230325.pcap file20230325-frame-number.pcap 1-100

image-20250122170654536

总结

也没啥好总结的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873321.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java进程内存占用分析

一、背景 1.1 问题描述 不知道大家在开发过程中有没有遇到过类似的问题,明明通过JVM参数-Xmx256m设置了最大堆内存大小为256m,但是程序运行一段时间后发现占用的内存明显超过了256m,却并没有出现内存溢出等问题,那是什么东西占用了额外的内存空间呢? 通过ps查看java进程项…

《ESP32-S3使用指南—IDF版 V1.6》第三章 ESP32-S3基础知识

第三章 ESP32-S3基础知识 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp3…

GDB - 查看崩溃程序maps映射表

可执行程序如何通过gdb查看映射信息? 在终端中打开gdb调试器:gdb 可执行文件名。 进入gdb调试器后,使用命令info proc mapping查看可执行程序的映射信息。 这个命令将会输出可执行程序的内存映射信息,包括可执行文件的代码段、数据段、堆和栈等信息,以及共享库的地址空间等…

Anthropic 计划为 Claude 发布「双向」语音模式;商汤「日日新」实时音视频对话服务开放商用丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

记录---当window.open被ios安全机制拦截,我掏出3种方案,终于跳转成功!

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣一、前言 今天在开发H5的时候,遇到了一个bug,就是在ios环境,在某些情况下执行window.open不生效,所以正好趁此机会研究了一下window.open。 二、window.open介绍 从open方法的调用方式可以看出,open方法是定义在Wind…

C. Gawr Gura

小鲨鱼cos本来有三张但是被审核夹了,只发两张试试..?

马拉车 Manacher

讲解马拉车算法,模板例题与代码更新日志 2025/01/22:开工。思路 马拉车算法用于解决回文子串问题,思路类似于Z函数。 首先我们考虑使所有回文串都是奇数串,具体的,我们在两两字符之间插入相同的特殊字符,比如: \[\texttt{abcba}\rightarrow\texttt{\#a\#b\#c\#b\#a\#} \…

折腾笔记[10]-使用rust进行ORB角点检测

打包ORB算法到bye_orb_rs库,使用rust进行ORB角点检测. Package the ORB algorithm into the bye_orb_rs library, and use Rust for ORB corner detection.摘要 打包ORB算法到bye_orb_rs库,使用rust进行ORB角点检测. Package the ORB algorithm into the bye_orb_rs library, a…

DBSyncer开源数据同步中间件

一、简介 DBSyncer(英[dbsɪŋkɜː(r)],美[dbsɪŋkɜː(r) 简称dbs)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预…

幻想 实在 自我

小 C 和 小 Y 的故事还未停止 …… 或许不会停止弥晨时间仓促,如有错误欢迎指出,欢迎在评论区讨论,如对您有帮助还请点个推荐、关注支持一下

AT+CSQ 和 AT+QENG查询的 RSSI不一致

1. 查询结果如下:2. CSQ查询的RSSI 接收信号强度指示时是31,对应但是 AT+QENG查询的是-128

记录printf的一个小问题

因为打算使用sprintf来格式化字符串,然后显示,遇到了一个符号类型的问题 printf("%d",now_adc);这一句,如果now_adc是uchar类型,输出字符会显示异常,后来了解到,如果要直接打印uchar只能用%x或者%s 所以如果不想改变量大小可以在前面加括号强转如printf("…