linux/windows常用抓包分析操作

windows:Wireshark抓包,打开wireshark,选择抓包的网卡,输入过滤条件,常用过滤条件:

1、过滤IP: ip.addr == 192.168.21.45

2、过滤端口:tcp.port == 5060 || udp.port == 5060

3、根据消息协议过滤,如:sip,sip.Call-ID == "MTI2Y2YyMD", rtp, rtp.ssrc == 12345, http等

注:! && || 非且或3个符号linux/win通用,不喜欢写 not and or

本机抓包:本机发送到本机的数据包不会经过网卡,无法抓到包,需要设置路由
route add 本机ip mask 255.255.255.255 网关ip
如:route add 92.168.136.200 mask 255.255.255.255 192.168.128.1
使用完毕后用route delete 192.168.136.200 mask 255.255.255.255 192.168.128.1删除,否则所有本机报文都经过网卡出去走一圈回来很耗性能。

 

linux 抓包:需要安装tcpdump, 可以直接yum或apt-get install tcpdump 安装,不能连网的话下载rpm包安装,需要下载libpcap和tcpdump的rpm包,rpm -Uvh +rpm包安装即可,

libpcap rpm包官方下载地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=libpcap&submit=Search+...&system=&arch=

tcpdump rpm包官方下载地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=tcpdump

这两地址就是在http://www.rpmfind.net/上搜一下libpcap和tcpdump就出来了,搬到csdn上赚c币骗小白不厚道。收藏好http://www.rpmfind.net/,好东西。

常用抓包命令:

1、-i 指定网卡如eth0, ip addr 看下,如果安装了k8s虚拟网卡太多,可以 ip addr|grep 192.168 快速找到,可以不指定,设为any 即可。

2、host 指定ip, port 指定端口,可以加tcp或udp限定协议,-vn 打印, -w 输出到文件,再拷贝到win上用wireshark打开。

简单的看下信令,直接打印即可:

tcpdump -i any udp port 5060 -vn (打印5060端口抓到的包)

写到文件:

tcpdump -i any udp port 5060 -vn -w sip.pcap

tcpdump -i any host 192.168.12.34 -vn -w sip.pcap 指定ip抓

加了-vn会提示抓到多少个包,ctrl +c 结束后拷贝sip.pcap 用wireshark打开分析。

 

wireshark分析技巧:

1、分析sip中会话流程(如invite流程)可过滤call-id, 见上面win过滤。

2、分析rtp:如果没有显示数据为rtp包,可选中一个包,右键选择“解码为”(倒数第二个选项),“当前“选择RTP(快速输入RTP会跳转)

OK解码成rtp包后,选择 电话-->RTP-->流分析

确认后就可分析出流的丢包、乱序等问题

左边写了,丢包28个占2.25%,乱序1个,将流保存下来,把后缀名强行改为.ps 或.h264/h265,即可播放,h264可以用eseye_u分析,h265的ps流的话只能用ffmpeg播,vlc播不了,若ps 流打包有问题,可以看另一篇“最简单的h264/h265/svac和g711封装成ps流”具体分析,常见的问题是h265打包成了264。

保存时一定要选择为raw原始数据,保存后再改后缀。

附:国标接入或级联某些小厂家时可能会出现视频下半截放不出来,这种现象90%是发送方pes包没处理好,pes包最大65535(u_short)。

如果是下半截严重花屏,多半是发送方没有做流量峰值控制,接收方扩大缓冲区可以解决,但容易丢包。简单的峰值控制定时循环时设置最大发送rtp包数即可。

海康h265的ps流中有0x00 0x00 0x01 0xbd字段,不知道啥用,注意解ps流时去掉它附带的数据就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章