在linux命令行环境下如何抓取网络数据包?

在linux命令行环境下如何抓取网络数据包?,第1张

  众所周知,在Windows下开发运行环境下,在调试网络环境时,可以可以很方便的借助wireshark等软件进行抓包分析;并且在linux或者Ubuntu等桌面版里也可以进行安装抓包工具进行抓包分析,但总有一些情况,无法直接运用工具(比如一些没有界面的linux环境系统中),则此时我们就需要使用到最简单的tcpdump命令进行网络抓包。

  一般的,linux下抓包时,抓取特定的网络数据包到当前文件夹下的文件中,再把文件拷贝出来利用Windows下的wireshark软件进行分析。

tcpdump命令详解:(简单举例)

  1、抓取到的文件为filename.cap,然后将此文件拷贝到Windows下,使用wireshar打开后,即可对此文件进行分析。

  2、eth0 是主机的网络适配器名称,具体的参数值可以在linux命令行窗口中通过 ifconfig 指令查询。

抓包工具:

wireshark

tcpdump

Linux抓包命令tcpdump是一个抓包工具,用于抓取互联网上传输的数据包

tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具

tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息

#常用选项(oldboy讲解)

-i #监听哪一个网卡 -i eth0

-n #不把ip解析成主机名

-nn #不把端口解析成应用层协议

-c #指定抓包的数量

-v #输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。

-vv #输出详细的报文信息。

#实例

1、默认启动

tcpdump -vv #普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

2、过滤主机

tcpdump -i eth1 host 192.168.1.1 #抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据

tcpdump -i eth1 src host 192.168.1.1 #指定源地址,192.168.1.1

tcpdump -i eth1 dst host 192.168.1.1 #指定目的地址,192.168.1.1

3、过滤端口

tcpdump -i eth1 port 80 #抓取所有经过eth1,目的或源端口是80的网络数据

tcpdump -i eth1 src port 80 #指定源端口

tcpdump -i eth1 dst port 80 #指定目的端口

4、协议过滤

tcpdump -i eth1 arp

tcpdump -i eth1 ip

tcpdump -i eth1 tcp

tcpdump -i eth1 udp

tcpdump -i eth1 icmp

tcpdump -i eth1 -p icmp

#抓tcp某端口的数据包

tcpdump -i eth0 tcp port 21 -nn

5、常用表达式

非 : ! or "not" (去掉双引号)

且 : &&or "and"

或 : || or "or"

#抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数

tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

#抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据

tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

#抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6045897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存