大家都知道在windows下面有非常好用的fiddler或者wireshark等抓包工具可以使用。今天顺路看到了linux的抓包工具tcpdump,我们来看一看。

使用

root@debvirtual:/root# tcpdump --help
tcpdump version 4.99.0
libpcap version 1.10.0 (with TPACKET_V3)
OpenSSL 1.1.1k  25 Mar 2021
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ --immediate-mode ] [ -j tstamptype ]
                [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
                [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
                [ --time-stamp-precision precision ] [ --micro ] [ --nano ]
                [ -z postrotate-command ] [ -Z user ] [ expression ]
  • 命令tcpdump,这个命令是需要权限的。
  • 参数比较多,下面我们再来讲一讲一些常用的。

地址相关关键字

  • host
    主机地址,后面可以带具体的IP或者地址(程序员什么时候用用到百度)

    tcpdump host baidu.com
  • port
    端口号,在这个例子中,我们指定了端口80,这个时候我们用curl能够拦截到。但是用ping不能看到(ping在ICMP层并没有端口这么一个说法)

    tcpdump host baidu.com and port 80

方向相关关键字

  • src源地址

    tcpdump src host baidu.com
  • dst目标地址

    tcpdump dst host baidu.com

    这里是支持运算符与或非的,例如当我们ssh到一台机器上时,你使用tcpdump会有很多主机跟服务器的包,可以用 host ! ($host) 进行过滤。

其他类型

  • 协议关键字: ip,arp,tcp,udp等
  • 逻辑运算符: and,or,!等

当然还有很多,随便一款linux工具都是博大精深。即便是Linux可以拦到包很多人也看不懂里面说的啥,还好我们还有其他方法。
我们可以使用-w保存到某个文件,然后将这个文件搞到windows或者mac,用相应的图形工具进行分析。

tcpdump host baidu.com -w out.dcap

2532461-813247c609eedce3.jpg