tcpdump抓包、 udp | tcp 命令行发数据

一、关于 /dev/(tcp|udp)/{HOST}/{PORT}发数据

参考:【bash】关于 /dev/(tcp|udp)/{HOST}/{PORT}

虽然:/dev/tcp/{HOST}/{PORT} 这个字符串看起来很像一个文件系统中的文件,并且位于 /dev 这个设备文件夹下;但是:这个文件并不存在,而且并不是一个设备文件。这只是 bash 实现的用来实现网络请求的一个接口,其实就像我们自己编写的一个命令行程序,按照指定的格式输入 host port参数,就能发起一个 socket连接完全一样。

1、命令行发送udp数据

由于udp面向无连接,所以直接发数据即可

 echo "112233" > /dev/udp/192.168.62.224/30301    #最后两个斜杠是目标ip和端口

2、命令行发送tcp数据

tcp是面向连接的,如果不存在tcp的服务端,就会显示发送失败,所以发送tcp数据时要保证有一个tcp服务端才行

 echo "112233" > /dev/tcp/192.168.43.131/8080

在这里插入图片描述

二、tcpdump抓数据

1、tcpdump命令不仅可以抓取tcp数据,也可以抓取udp包。其命令格式:

tcpdump -i 网卡名 udp port 端口名

实际工作中常用: sudo tcpdump -i any -X udp port 51101
常用参数
-i 指定从哪个接口抓包
-w 将抓包信息保存到文件中
-n 不转换主机名,看到的是 IP ,而不是主机名 
-x 显示报文详细信息
-X 告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。
-vv 输出详细的报文信息

2、设置抓包端口的协议tcp、udp

tcpdump  -i any  tcp  port  xx  -w /tmp/11.cap

tcpdump  -i any  udp  port  xx  -w  /tmp/11.cap

-w写文件,参数是路径和文件名,不写路径默认是系统默认路径
抓到cap文件后拷贝到wireshark中可直观分析

3、 抓全量包

tcpdump  -i  any  -w  /tmp/11.cap

4、 针对网卡抓包

tcpdump  -i eth0  -w  /tmp/11.cap

5、 针对某个IP地址抓包

tcpdump  -i any  host  xx.xx.xx.xx  -w /tmp/11.cap

6、 针对某个端口抓包

tcpdump  -i any port  xx  -w /tmp/11.cap

7、 设置每个抓包的长度。在suse linux下需要设置,0就是65535。

tcpdump  -i  any  -s 0   -w /tmp/11.cap

8、 各种排列组合

tcpdump  -i any tcp port yy and host xxx.xxx.xx.xx -w 11.cap

tcpdump  -i any tcp and host xxx.xxx.xx.xx  -w  11.cap

猜你喜欢

转载自blog.csdn.net/weixin_44618297/article/details/130796222