我们一开始都是学习wireshark,确实挺好用,但是一但到了只有命令行的怎么办,不过好像wireshark也有命令行的,但要下载,一般的服务器都会装有tcpdump,所以我也来学习学习,同时分析一下
首先看一下帮助吧
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX#] [ -B size ] [ -c count ]
[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
[ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
[ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
[ -T type ] [ --version ] [ -V file ]
[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ]
[ -Z user ] [ expression ]
来个最简单的
tcpdump //普通情况下,直接启动,将监视第一个网络接口上(默认eth0)所有流过的数据包。
tcpdump -i eth0 -s 0 -w a.cap // -i:抓取的网卡 -s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包 -w :将抓到的数据写到一个文件
ctrl + c结束抓取,抓取的数据就保存在a.cap里(且抓取过程并不会显示抓取的数据)
我们再从文件中读取
tcpdump -r a.cap //从文件中读取
抓取tcp协议的22端口的数据包
tcpdump tcp port 22
显示筛选(以下面的包为例)
-n:不将ip地址显示为域名(Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.),说白了就是以ip显示
假如我要获取源ip有哪些,ip基本在第三行
awk是一个强大的文本分析工具(默认以空格为分隔符,$3就是输出第3行),发现ip端口什么的重复了
可用sort把相同的合并(-u, --unique)【注:有五个数字的最后一个数字是端口号,最后有个Request是arp包的第三行,不是很规则啊】
tcpdump -n src host 119.75.218.70 -r test.cap //显示源ip是119.75.218.70的包
相应的就是目标ip了
tcpdump -n dst host 119.75.218.70 -r test.cap
-X参数:跟wireshark最下面一栏的显示基本一样的