tcpdump与Wireshark抓包

柔情只为你懂 2022-12-16 06:56 404阅读 0赞

通俗的说,tcpdump是一个抓包工具,用于抓取互联网上传输的数据包。
形象的说,tcpdump就好比是国家海关,驻扎在出入境的咽喉要道,凡是要入境和出境的集装箱,海关人员总要打开箱子,看看里面都装了点啥。
学术的说,tcpdump是一种嗅探器(sniffer),利用以太网的特性,通过将网卡适配器(NIC)置于混杂模式(promiscuous)来获取传输在网络中的信息包。

要用tcpdump抓包,请记住,一定要切换到root账户下,因为只有root才有权限将网卡变更为“混杂模式”

命令实践

1、 直接启动tcpdump,将抓取所有经过第一个网络接口上的数据包

在这里插入图片描述

2、 指定网卡

  • tcpdump默认选择第一块网卡(一般是eth0)进行抓包,我们可以使用-i(interface)参数指定通过哪一个网卡抓包,比如下面为抓取所有经过eth1网络接口上的数据包
  • tcpdump –i eth1

在这里插入图片描述
在这里插入图片描述

  • 如果想知道我们可以通过哪几个网卡抓包,可以使用-D参数,如:

    • lo是回环接口
    • any : 通过任意一块网卡进行抓包

在这里插入图片描述

3、抓取所有经过ens33,目标或者源地址是192.168.0.11

  • tcpdump -i ens33 host 192.168.0.11
    在这里插入图片描述

4、抓取主机10.37.63.255和主机10.37.63.61或10.37.63.95的通信:
在这里插入图片描述
5、抓取主机192.168.13.210除了和主机10.37.63.61之外所有主机通信的数据包:
在这里插入图片描述
6、抓取主机10.37.63.255除了和主机10.37.63.61之外所有主机通信的ip包

在这里插入图片描述

其他选项

  1. # tcpdump -i ens33 -nn -X 'port 10727' -c 1
  2. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  3. listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
  4. 16:42:07.840634 IP 192.168.0.11.10727 > 128.199.176.14.443: Flags [.], ack 3848341625, win 1026, options [nop,nop,sack 1 {
  5. 1453:5809}], length 0
  6. 0x0000: 4500 0034 0ede 4000 8006 fa5c c0a8 000b E..4..@....\....
  7. 0x0010: 80c7 b00e 29e7 01bb 7492 4982 e561 0879 ....)...t.I..a.y
  8. 0x0020: 8010 0402 b48e 0000 0101 050a e561 0e25 .............a.%
  9. 0x0030: e561 1f29 .a.)
  10. 1 packet captured
  11. 6 packets received by filter
  12. 0 packets dropped by kernel
  • -nn选项: 当tcpdump遇到协议号或者端口号时,不要将这些号码转换成对应的协议名称或者端口名称。比如,众所周知21端口是FTP端口,我们希望显示21,而非tcpdump自作聪明的将它显示成FTP
  • -X: 告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。
  • ‘port 10727’: 这是告诉tcpdump不要看到啥就显示啥。我们只关心源端口或目的端口是10727的数据包,其他的数据包别给我显示出来
  • -c选项:是Count的含义,这设置了我们希望tcpdump帮我们抓几个包。我设置的是1,所以tcpdump不会帮我再多抓哪怕一个包回来。

【-e选项】- 增加以太网帧头部信息输出

  • OUI,即Organizationally unique identifier,是“组织唯一标识符”,在任何一块网卡(NIC)中烧录的6字节MAC地址中,前3个字节体现了OUI,其表明了NIC的制造组织。通常情况下,该标识符是唯一的。
    在这里插入图片描述
    【-l选项】- 使得输出变为行缓冲
  • 默认是全缓冲的,-I可以将tcpdump的输出变为“行缓冲”方式
  • 需求: “对于tcpdump输出的内容,提取每一行的第一个域,即”时间域”,并输出出来,为后续统计所用” ——> # tcpdump -i ens33 -l |awk '{print $1}' -—-> 如果不加-l选项,那么只有全缓冲区满,才会输出一次,这样不仅会导致输出是间隔不顺畅的,而且当你ctrl-c时,很可能会断到一行的半截,损坏统计数据的完整性。
    在这里插入图片描述
    【-t选项】- 输出时不打印时间戳

    tcpdump -i eth0 -c 1

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    01:52:10.433391 ARP, Request who-has 116.255.247.61 tell 116.255.247.125, length 64

    tcpdump -i eth0 -c 1 -t

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    ARP, Request who-has 116.255.245.35 tell 116.255.245.62, length 64

  • tcpdump -w google.cap : 将抓包结果存放在google.cap文件中,结束以后可以用Wireshark打开查看

    tcpdump -i ens33 -nn

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:37:42.628409 IP 192.168.0.212.22 > 192.168.0.11.6665: Flags [P.], seq 2262547790:2262548318, ack 983050816, win 239, length 528


    <==按下 [ctrl]-c 之之后結束
    6680 packets captured <==捉下來的封包数量
    14250 packets received by filter <==由过滤所得的總封包數量
    7512 packets dropped by kernel <==被核心所丢弃的封包

  • 15:37:42.628409: 封包被抓取的时间: 时:分:秒

  • IP : IP协议
  • 192.168.0.212.22 > 192.168.0.11.6665: 发送方的ip是192.168.0.212,端口是22;接收方的ip是192.168.0.11,端口是6665
  • 只取出 port 22的包

    tcpdump -i ens33 -nn port 22

    15:42:35.407981 IP 192.168.0.11.6665 > 192.168.0.212.22: Flags [.], ack 34000, win 8209, length 0
    15:42:35.409271 IP 192.168.0.212.22 > 192.168.0.11.6665: Flags [P.], seq 34000:34048, ack 6225, win 239, length 48
    15:42:35.409292 IP 192.168.0.212.22 > 192.168.0.11.6665: Flags [P.], seq 34048:34080, ack 6225, win 239, length 32
    15:42:35.409310 IP 192.168.0.11.6665 > 192.168.0.212.22: Flags [.], ack 34080, win 8208, length 0

http://roclinux.cn/?p=2481

发表评论

表情:
评论列表 (有 0 条评论,404人围观)

还没有评论,来说两句吧...

相关阅读

    相关 tcpdumpWireshark

    > 通俗的说,tcpdump是一个抓包工具,用于抓取互联网上传输的数据包。 > 形象的说,tcpdump就好比是国家海关,驻扎在出入境的咽喉要道,凡是要入境和出境的集装箱,