一、关于 /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