前言
tcpdump是命令行形式的抓包工具
linux默认安装
1、指令
一些指令如下:
-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;0是包有多大抓多大
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。
2、tcpdump——抓包
默认只抓68字节
一些例子如下:
tcpdump -i eth0 -s 0 -w file.pcap 抓取所有eth0的数据包写入file.pcap
tcpdump -r file.pcap 读取
tcpdump -r -A file.pcap ASCII码显示
tcpdump -r -X file.pcap 十六进制显示
tcpdump -i eth0 tcp part 22 指定抓取端口和协议并实时显示
3、 tcpdump——筛选
在读取时可以进行筛选
一些例子如下:
tcpdump -n -r http.cap | awk'{print $3}' | sort -u 读取http.cap不做dns解析筛选第三列剔除重复项最终得到IP地址和端口
tcpdump -n src host 145.254.160.237 -r http.cap 只显示这个原IP
tcpdump -n dst host 145.254.160.237 -r http.cap 只显示这个目标IP
tcpdump -n port 53 -r http.cap 只显示这个端口
tcpdump -nX port 80 -r http.cap 这个端口十六进制显示
4、tcpdump——高级筛选
tcpdump可以进行很细的筛选
如图所示,若想选取flag为24 的数据包,指令如下:
tcpdump -A -n ‘tcp[13] = 24’ -r http.cap 读取http.cap中第14个字节是24的数据包
结语
wireshark和tcpdump基本可满足抓包需求
需要好好熟悉!