「干货」常见网络抓包工具和抓包分析
liuian 2025-10-23 07:07 36 浏览
1、概述
在处理IP网络的故障时,经常使用以太网抓包工具来查看和抓取IP网络上某些端口或某些网段的数据包,并对这些数据包进行分析,定位问题。
在 IMON项目里,使用抓包工具抓包进行分析的场景在EPG采集、引流模块和软终端监看模块,一般情况下EPG 采集和引流模块比较稳定,软终端监看还涉及SS5代理,这部分出问题的几率比较大,这是就有可能要现场维护人员抓包进行分析、排查、定位问题,确定是网络问题还是软件问题,如果是软件问题则要将抓回的包发给研发解决。
EPG 抓包可分为对鉴权过程、采集过程抓包验证,主要是通过通过抓包分析与IPTV 鉴 权服务器之间的TCP交互。
流媒体交互抓包可分为对组播、点播进行抓包,一般交互的协议分为IGMP、RTSP、RTMP等,组播一般是基于UDP的IGMP流,点播是基于RTP的RTSP流或基于TCP的RTMP流。
软终端抓包主要是抓取软终端与IPTV服务器交互、SS5与IPTV服务器交互的数据包,一般跟流媒体交互的报文协议差不多,也是分为组播IGMP 、点播 RTSP等协议,不过经过测试发现江苏的部分组播(可能是用户不同所致)发送的是RTSP的包。
2、常用抓包工具
2.1、WireShark
Wireshark 是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析,不过要说明的是,这只是一个工具,用法是非常灵活的。
过滤器的区别
捕捉过滤器(CaptureFilters ):用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。
显示过滤器(DisplayFilters ): 在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随 意修改。
捕捉过滤器
Protocol(协议) :
可能的值 : ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没有特别指明是什么协议,则默认使用所有支持的协议。
Direction (方向):
可能的值 : src, dst, src and dst, src or dst
如果没有特别指明来源或目的地,则默认使用“ src or dst”作为关键字。
例如,” host 10.2.2.2″与” src or dst host 10.2.2.2″是一样的。
Host(s):
可能的值:net, port, host, portrange.
如果没有指定此值,则默认使用”host”关键字。 例如,” src 10.1.1.1″与” src host 10.1.1.1″相同。
Logical Operations (逻辑运算):
可能的值: not, and, or.
否( “not” )具有最高的优先级。或(“ or” )和与 (“ and”) 具有相同的优先级,运算时从左至 右进行。
例如,
“not tcp port 3128 and tcp port 23 ″与” (not tcp port 3128) and tcp port 23 ″相同。 “not tcp port 3128 and tcp port 23 ″与” not (tcp port 3128 and tcp port 23) ”不同。
例子:
tcp dst port 3128// 捕捉目的TCP 端口为3128 的封包。
ip src host 10.1.1.1 // 捕捉来源IP 地址为 10.1.1.1 的封包。
host 10.1.2.3 // 捕捉目的或来源IP 地址为10.1.2.3 的封包。
ether host e0-05-c5-44-b1-3c // 捕捉目的或来源MAC 地址为e0-05-c5-44-b1-3c 的封包。如果 你想抓本机与所有外网通讯的数据包时,可以将这里的mac 地址换成路由的mac 地址即可。
src portrange 2000-2500// 捕捉来源为UDP 或 TCP ,并且端口号在2000 至 2500 范围内的封包。
not imcp //显示除了icmp 以外的所有封包。 ( icmp 通常被 ping 工具使用)
src host 10.7.2.12 and not dst net 10.200.0.0/16 //显示来源IP 地址为10.7.2.12,但目的地不是10.200.0.0/16 的封包。
(src host 10.4.1.12 orsrc net 10.6.0.0/16)and tcp dst portrange200-10000and dst net
10.0.0.0/8 // 捕捉来源IP 为 10.4.1.12 或者来源网络为10.6.0.0/16 ,目的地TCP端口号在200至10000 之间,并且目的位于网络10.0.0.0/8 内的所有封包。
src net 192.168.0.0/24
src net 192.168.0.0 mask 255.255.255.0//捕捉源地址为192.168.0.0 网络内的所有封包。 显示过滤器
例子:
snmp || dns || icmp // 显示 SNMP 或 DNS 或 ICMP 封包。
ip.addr == 10.1.1.1//显示来源或目的IP 地址为10.1.1.1 的封包。
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6 //显示来源不为10.1.2.3 或者目的不为10.4.5.6 的封包。 换句话说,显示的封包将会为:
来源 IP:除了10.1.2.3 以外任意;
目的IP:任意
来源 IP:任意;
目的IP:除了10.4.5.6 以外任意
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6//显示来源不为10.1.2.3 并且目的IP 不为 10.4.5.6 的 封包。
换句话说,显示的封包将会为:
来源 IP:除了10.1.2.3 以外任意;同时须满足,目的IP:除了10.4.5.6 以外任意
tcp.port == 25// 显示来源或目的TCP 端口号为25 的封包。 tcp.dstport == 25// 显示目的TCP 端口号为25 的封包。 tcp.flags // 显示包含TCP 标志的封包。
tcp.flags.syn == 0× 02 // 显示包含TCP SYN 标志的封包。 如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。
2.2 、TCPDUMP
tcpdump是一个运行在命令行 下的 嗅探工具。它允许用户拦截和显示发送或收到过网络 连 接到该计算机的TCP/IP 和其他数据包 。
tcpdump 采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c数量] [ -F文件名]
[ -i网络接口] [ -r文件名 ] [ -s snaplen ] [ -T 类型] [ -w文件名] [ 表达式]
1、tcpdump 的选项介绍
-a将网络地址和广播地址转变成名字;
-d将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd将匹配信息包的代码以c 语言程序段的格式给出;
-ddd将匹配信息包的代码以十进制的形式给出;
-e在输出行打印出数据链路层的头部信息;
-f将外部的Internet 地址以数字的形式打印出来;
-l使标准输出变为缓冲行形式;
-n不把网络地址转换成名字;
-t在输出的每一行不打印时间戳;
-v输出一个稍微详细的信息,例如在ip 包中可以包括ttl 和服务类型的信息;
-vv输出详细的报文信息;
-c在收到指定的包的数目后,tcpdump 就会停止;
-F从指定的文件中读取表达式,忽略其它的表达式;
-i指定监听的网络接口;
-r从指定的文件中读取包(这些包一般通过-w 选项产生 );
-w直接将包写入文件中,并不分析和打印出来;
-T将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议; )
2、tcpdump 的表达式介绍
表达式是一个正则表达式,tcpdump 利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net, port, 例如host 210.27.48.2 ,指明210.27.48.2 是一台主机,net 202.0.0.0 指明202.0.0.0 是一个网络地址,port 23指明端口号是23。如果没有指定类型,缺省的类型是host。
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 , 指明 ip 包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst 关键字。
第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。 Fddi指明是在FDDI( 分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether" 的别名, fddi 和 ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether 的包进行处理和分析。 其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump 将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less, greater,还有三种逻辑运算,取非运算是'not ' '! ',与运算是 'and','&&'; 或运算是'or' ,'||';
说明。
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来
(1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpdump host 210.27.48.1
(2) 想要截获主机210.27.48.1 和主机210.27.48.2 或 210.27.48.3 的通信,使用命令:(在命令行中适用括号时,一定要#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 如果想要获取主机210.27.48.1 除了和主机210.27.48.2 之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要获取主机210.27.48.1 接收或发出的telnet 包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
3、tcpdump 的输出结果介绍
下面我们介绍几种典型的tcpdump命令的输出信息
(1) 数据链路层头信息
使用命令 #tcpdump --e host ice
ice 是一台装有linux 的主机,她的MAC 地址是0:90: 27:58 : AF : 1AH219 是一台装有SOLARIC的 SUN 工作站,它的MAC 地址是8: 0: 20:79: 5B:46;
上一条命令的输出结果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice. telnet 0:0(0) ack 22535 win 8760 (DF)
分析: 21:50:12是显示的时间,847509 是 ID 号,eth0 <表示从网络接口eth0 接受该数据包, eth0 > 表示从网络接口设备发送数据包, 8:0:20:79:5b:46 是主机H219 的 MAC地址它表明是从源地址H219 发来的数据包. 0:90:27:58:af:1a 是主机ICE 的 MAC 地址 ,表示该数据包的目的地址是ICE . ip是表明该数据包是IP 数据包 ,60 是数据包的长度, h219.33357 > ice. telnet 表明该数据包是从主机H219 的 33357 端口发往主机ICE 的 TELNET(23) 端口 . ack22535
表明对序列号是222535 的包进行响应. win 8760 表明发送窗口的大小是8760.:1a)
(2) ARP 包的 TCPDUMP 输出信息
使用命令 #tcpdump arp
得到的输出结果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af
分析 : 22:32:42 是时间戳 , 802509 是 ID 号 , eth0 >表明从主机发出该数据包, arp 表明是ARP 请求包 , who-has route tell ice 表明是主机ICE 请求主机ROUTE的MAC地址。 0:90:27:5
8:af:1a 是主机ICE的MAC地址。
(3) TCP 包的输出信息
用 TCPDUMP捕获的TCP 包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags 是 TCP 包中的标志信息,S 是 SYN 标志 , F (F IN), P (PUSH) , R (RST) "." (没有标记 ); data-seqno 是数据包中的数据的顺序号, ack 是 下次期望的顺序号, window 是接收缓存的窗口大小, urgent 表明数据包中是否有紧急指针.
Options 是选项 .
(4) UDP 包的输出信息
用 TCPDUMP捕获的UDP 包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP 十分简单,上面的输出行表明从主机ROUTE 的 port1 端口发出的一个UDP 数据 包到主机ICE 的 port2 端口,类型是UDP ,包的长度是lenth
3、抓包场景及步骤
3.1 机顶盒抓包
如果有需要抓机顶盒交互的报文,则可以通过HUB 和机顶盒连接进行抓包,可以通过windows的 wireshark 进行抓包,可以把所有交互的包抓下来,然后进行过滤分析,也可以通过过滤规则抓下来已经过滤后的包。
3.2 Linux下抓包
软终端在通过SS5代理服务器进行接入IPTV 环境时,可能需要到 SS5所在的代理服务器上去抓包,抓包方式就是通过TCPDUMP命令来抓取,一般我们把与IPTV网口相关的所有包都抓下来存为PCAP文件进行分析。
抓包命令为tcpdump -i eth1 -wxx.pcap,这样可以把抓过来的包保存到linux 服务器的用户登录当前文件夹下,然后通过SSH 传到本地进行分析,当然了也可以通过过滤规则抓包,详见TCPDUMP的常用命令。
相关推荐
-
- 驱动网卡(怎么从新驱动网卡)
-
网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...
-
2026-01-30 00:37 liuian
- win10更新助手装系统(微软win10更新助手)
-
1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...
- windows11专业版密钥最新(windows11专业版激活码永久)
-
Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...
-
- 手机删过的软件恢复(手机删除过的软件怎么恢复)
-
操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...
-
2026-01-29 23:55 liuian
- 一键ghost手动备份系统步骤(一键ghost 备份)
-
步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。 步骤...
- 怎么创建局域网(怎么创建局域网打游戏)
-
1、购买路由器一台。进入路由器把dhcp功能打开 2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。 3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...
- 精灵驱动器官方下载(精灵驱动手机版下载)
-
是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...
- 一键还原系统步骤(一键还原系统有哪些)
-
1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。 2、在弹出的“准备安装”窗口中,可...
- 电脑加速器哪个好(电脑加速器哪款好)
-
我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...
- 任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)
-
是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...
- u盘怎么恢复文件(u盘文件恢复的方法)
-
开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...
- 系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)
-
1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...
-
- 剪贴板权限设置方法(剪贴板访问权限)
-
1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...
-
2026-01-29 21:37 liuian
- 平板系统重装大师(平板重装win系统)
-
如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...
- 联想官网售后服务网点(联想官网售后服务热线)
-
联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...
- 一周热门
-
-
用什么工具在Win中查看8G大的log文件?
-
如何在 Windows 10 或 11 上通过命令行安装 Node.js 和 NPM
-
Trae IDE 如何与 GitHub 无缝对接?
-
如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
-
5步搞定动态考勤表!标记节假日、调休日?Excel自动变色!
-
RK3588-HDMIRX(瑞芯微rk3588芯片手册)
-
用纯Python轻松构建Web UI:Remi 动态更新,实时刷新界面内容
-
tplink无线路由器桥接教程(tplink路由器如何进行无线桥接)
-
都说Feign是RPC,没有侵入性,为什么我的代码越来越像 C++
-
R语言 | CNS绘图第1款——linkET万物皆可连
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
