wireshark

``` pcapng 转 pcap tshark -F pcap -r 源文件 -w 目标文件 [TCP Previous segment not captured]报文指的是在TCP发送端传输过程中,该Seq前的报文缺失了。一般在网络拥塞的情况下,造成TCP报文乱序、丢包时,会出现该标志。 [TCP Out-Of-Order]指的是TCP发送端传输过程中报文乱序了。 [TCP dup ack XXX#X]表示第几次重新请求某一个包,#前XXX表示第几个包(不是Seq),#后的X表示第几次请求。丢包或者乱序的情况下,会出现该标志。 https://www.zhihu.com/question/264811393/answer/2594036023 ``` ### centos7安装 ```bash yum -y install openssl-devel python3.x86_64 glib2-devel libpcap libpcap-devel libgcrypt-devel glib2-devel qt-devel qt5-qtbase-devel qt5-linguist qt5-qtmultimedia-devel qt5-qtsvg-devel libcap-devel libcap-ng-devel gnutls-devel krb5-devel libxml2-devel lua-devel lz4-devel snappy-devel spandsp-devel libssh2-devel bcg729-devel libmaxminddb-devel sbc-devel libsmi-devel libnl3-devel libnghttp2-devel libssh-devel libpcap-devel c-ares-devel redhat-rpm-config rpm-build gtk+-devel gtk3-devel desktop-file-utils portaudio-devel rubygem-asciidoctor docbook5-style-xsl docbook-style-xsl systemd-devel git gcc gcc-c++ flex bison doxygen gettext-devel libxslt #wget https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-linux-x86_64.tar.gz tar -zvxf cmake-3.25.0-rc2.tar.gz cd cmake-3.25.0-rc2/ ./bootstrap --parallel=20 make -j 20 make install #wget https://2.na.dl.wireshark.org/src/all-versions/wireshark-3.6.9.tar.xz --no-check-certificate tar -vxf wireshark-3.6.9.tar.xz cd wireshark-3.6.9 mkdir build cd build /usr/local/bin/cmake ../ make -j 20 make install ``` ### windows操作 ![image.png](https://cos.easydoc.net/97954506/files/las61uae.png) 开始 => 停止 => 导出 ![image.png](https://cos.easydoc.net/97954506/files/las6avdl.png) 文件 =>导出特定分组 ![image.png](https://cos.easydoc.net/97954506/files/las6c053.png) ### linux操作 ``` # yum -y install tcpdump [root@master39 ~]# tcpdump -i bond0 -w 2022fire.pcap tcpdump: listening on bond0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C2756620 packets captured 2756974 packets received by filter 273 packets dropped by kernel [root@master39 ~]# ll total 11319880 -rw-r--r-- 1 tcpdump tcpdump 5654515678 Nov 22 20:20 2022fire.pcap ``` ### tshark ``` tshark -r fixed_pcap.pcap -Y "ip.addr == 10.132.67.230 and tcp.port == 8003" ``` ### tcpdump ``` -c count // count表示数量。抓取数据包的数量达到count后结束命令,如果不使用-c 参数,会不停的抓取数据包,直到手动停止 -C file_size // 抓取数据包保存到文件时,通过该命令指定文件的大小。文件达到指定大小后,会创建一个在原文件名称后面加上序号的新文件,如:dump.txt,dump.txt1。file_size的单位是b -D // 列出服务器所有网卡。tcpdump默认监听的是编号最小的那个网卡,一般是eth0。在进行抓包时可以通过 -i 参数指定监听的网卡,any表示监听所有网卡 -i interfaces // 指定监听的网卡名称,any表示监听所有的网卡 -n // 输出结果中,不把ip转换成主机名(默认显示的是主机名) -q // 快速输出,只输出简要的数据包信息 -r file // 从文件中获取数据包,不再从网络获取数据包 -t // 不输出时间戳 -w file // 将抓取的数据包保存到文件,-r 参数可以从文件中读取数据包 -W filecount // 指定文件的数量,当文件滚动到指定数量后会从第一个文件开始覆盖 ``` ![image.png](https://cos.easydoc.net/97954506/files/lhg3a2ud.png) ``` -host // 过滤主机,如 tcpdump host 192.168.1.110 只抓取经过这个ip的数据包 -src // 用来过滤请求来源方的参数,如:tcpdump src host 192.168.1.110 只抓取从这个ip过来的数据包 -dst // 用来过滤请求接收方的参数,如:tcpdump dst host 192.168.1.110 只抓取发送到这个ip的数据包 -port // 过滤端口,如:tcpdump port 8080 只抓取经过8080端口的数据包 -net // 过滤网络,如:tcpdump net 192.168 只抓取经过这个网段的数据包 -and、not、or // 条件过滤,和字面意思一样。如:tcpdump net 192.168 and port 8080 抓取经过192.168网段并经过8080端口的数据包 ``` #### 数据包分析 抓取的数据包格式如下 ![image.png](https://cos.easydoc.net/97954506/files/lhg3bepc.png) ``` 20:17:43.496528 // 时间戳,时:分:秒.微秒 IP // 网际网络协议的名称 180.101.49.12.http > iZbp14w0b2rs7i1400bjjmZ.42468180.101.49.12.http // 请求发送方的ip和端口 > 请求接收方的ip和端口。端口有时会显示为某个网络协议,如http、ssh、mysql等 Flags [R] // flag标识和状态,可选的状态有: [S.] [.] [P.] [F.][R] seq、ack、fin // 表示tcp协议的3次握手和4次挥手的过程。seq表示请求的序列号,ack是回答的序列号,fin表示完成。这里显示的序列号是相对值,-S参数可以显示绝对值 win // 表示当前窗口的可用大小 length // 表示报文体的长度,从长度可以简单分析是否正确接收了请求 ``` #### 常用的命令组合 抓取8080端口的数据包 ``` tcpdump -i any port 8080 ``` 抓取从192.168.1.110发送到192.168.1.111的数据包 ``` tcpdump -i any src host 192.168.1.110 and dst host 192.168.1.111 ``` 抓取192.168网段除了192.168.1.110的请求的数据包 ``` tcpdump -i any src net 192.168 and 'src host not 192.168.1.110' ``` 抓取8080端口的数据包并写入dump.pcap文件中 ``` tcpdump -i any port 8080 -w dump.pcap ```