这是一个基于 RT-Thread 的捕获IP报文的小工具, 抓包的数据可以通过文件系统保存,或者通过 rdb 工具导入PC,利用 wireshark 软件解析。
- 使用 menuconfig 使能 tcpdump,详情如下:
RT-Thread online packages --->
IOT internet of things --->
[*] netutils: Networking utilities for RT-Thread --->
[*] Enable tcpdump tool
[ ] Enable tcpdump data to print on the console
[*] Enable tcpdump debug log output
保存 menuconfig 配置后使用 pkgs --update
命令下载软件包
注:调试信息建议不关闭
-i: 指定监听的网络接口
-m: 选择保存模式(文件系统 或 rdb)
-w: 用户指定的文件名 xx.pcap
-p: 停止抓包
-h: 帮助信息
msh />tcpdump -h
|>------------------------- help -------------------------<|
| tcpdump [-p] [-h] [-i interface] [-m mode] [-w file] |
| |
| -h: help |
| -i: specify the network interface for listening |
| -m: choose what mode(file-system or rdb) to save the file|
| -w: write the captured packets into an xx.pcap file |
| -p: stop capturing packets |
| |
| e.g.: |
| specify network interface and select save mode \ |
| and specify filename |
| tcpdump -ie0 -mfile -wtext.pcap |
| tcpdump -ie0 -mrdb -wtext.pcap |
| |
| -m: file-system mode |
| tcpdump -mfile |
| |
| -m: rdb mode |
| tcpdump -mrdb |
| |
| -w: file |
| tcpdump -wtext.pcap |
| |
| -p: stop |
| tcpdump -p |
| |
| -h: help |
| tcpdump -h |
| |
| write commands but no arguments are illegal!! |
| e.g.: tcpdump -i / -i -mfile / -i -mfile -wtext.pcap |
|>------------------------- help -------------------------<|
msh />
我们这里是把 sd-card 挂载文件系统
开发板上电前,插入 sd-card
- 挂载成功,则提示:
SD card capacity 31023104 KB
probe mmcsd block device!
found part[0], begin: 10485760, size: 29.580GB
File System initialized!
- 挂载失败,则提示:
sdcard init fail or timeout: -2!
- 挂载成功,输入
list_device
可以看到sd0
设备,详情如下:
msh />list_device
device type ref count
------ -------------------- ---------
sd0 Block Device 1
e0 Network Interface 0
usbd USB Slave Device 0
rtc RTC 1
spi4 SPI Bus 0
pin Miscellaneous Device 0
uart1 Character Device 3
msh />
抓包前请确认板子的 IP 地址
- msh />里,输入
ifconfig
查看,详情如下:
msh />
network interface: e0 (Default)
MTU: 1500
MAC: 00 04 9f 05 44 e5
FLAGS: UP LINK_UP ETHARP BROADCAST
ip address: 192.168.1.137
gw address: 192.168.1.1
net mask : 255.255.255.0
dns server #0: 192.168.1.1
dns server #1: 0.0.0.0
msh />
- msh />里,输入
tcpdump -ie0 -mfile -wtext.pcap
,详情如下:
msh />tcpdump -ie0 -msd -wtext.pcap
[TCPDUMP]select [e0] network card device
[TCPDUMP]select [file-system] mode
[TCPDUMP]save in [text.pcap]
[TCPDUMP]tcpdump start!
msh />
- 使用抓包命令会创建一个线程,线程的优先级是12。
- 输入
list_thread
命令查看运行中的线程,线程名字是tdth
,详情如下:
thread pri status sp stack size max used left tick error
-------- --- ------- ---------- ---------- ------ ---------- ---
tdth 12 suspend 0x000000ac 0x00000800 08% 0x0000000a 000
tshell 20 ready 0x00000070 0x00001000 22% 0x00000003 000
rp80 8 suspend 0x0000009c 0x00000400 15% 0x0000000a 000
phy 30 suspend 0x00000070 0x00000200 28% 0x00000001 000
usbd 8 suspend 0x00000098 0x00001000 03% 0x00000014 000
tcpip 10 suspend 0x000000b4 0x00000400 39% 0x00000014 000
etx 12 suspend 0x00000084 0x00000400 12% 0x00000010 000
erx 12 suspend 0x00000084 0x00000400 34% 0x00000010 000
mmcsd_de 22 suspend 0x0000008c 0x00000400 49% 0x00000013 000
tidle 31 ready 0x00000054 0x00000100 32% 0x0000001a 000
main 10 suspend 0x00000064 0x00000800 35% 0x00000010 000
msh />
使用 ping 命令来进行抓包测试,
ping
命令需要在 menuconfig 配置使能,详情如下:
RT-Thread online packages --->
IOT internet of things --->
[*] Enable Ping utility
保存 menuconfig 配置后使用 pkgs --update
命令下载软件包
- msh />里输入
ping rt-thread.org
,详情如下:
msh />ping rt-thread.org
60 bytes from 116.62.244.242 icmp_seq=0 ttl=49 time=11 ticks
60 bytes from 116.62.244.242 icmp_seq=1 ttl=49 time=10 ticks
60 bytes from 116.62.244.242 icmp_seq=2 ttl=49 time=12 ticks
60 bytes from 116.62.244.242 icmp_seq=3 ttl=49 time=10 ticks
msh />
- msh />里输入
ping 192.168.1.121
,详情如下:
msh />ping 192.168.1.121
60 bytes from 192.168.10.121 icmp_seq=0 ttl=64 time=5 ticks
60 bytes from 192.168.10.121 icmp_seq=1 ttl=64 time=1 ticks
60 bytes from 192.168.10.121 icmp_seq=2 ttl=64 time=2 ticks
60 bytes from 192.168.10.121 icmp_seq=3 ttl=64 time=3 ticks
msh />
- msh />里,输入
tcpdump -p
,详情如下:
msh />tcpdump -p
[TCPDUMP]tcpdump stop and tcpdump thread exit!
msh />
- msh />里,输入
ls
查看保存结果,详情如下:
msh />ls
Directory /:
System Volume Information<DIR>
text.pcap 1012
msh />
使用读卡器将保存在 sd-card 里的 xx.pcap 文件拷贝到 PC,使用抓包软件 wireshark 直接进行网络流的分析
- msh />里,输入
tcpdump -ie0 -mrdb -wtext.pcap
,详情如下:
msh />tcpdump -ie0 -mrdb -wtext.pcap
[TCPDUMP]select [e0] network card device
[TCPDUMP]select [rdb] mode
[TCPDUMP]save in [text.pcap]
[TCPDUMP]tcpdump start!
msh />
- 请参考 3.4 的操作
- msh />里,输入
tcpdump -p
,详情如下:
msh />tcpdump -p
[TCPDUMP]tcpdump stop and tcpdump thread exit!
msh />
- msh />里,输入
ls
查看保存结果,详情如下:
msh />ls
Directory /:
System Volume Information<DIR>
text.pcap 1012
msh />
使用 rdb 工具将 xx.pcap 文件导入到PC,使用抓包软件 wireshark 直接进行网络流的分析
- tcpdump 工具是需要开启 lwip 的 发送、接收线程的
- 抓包结束或者不想抓包了,请输入
tcpdump -p
结束抓包
- 感谢:liu2guang 制作了 optprase 软件包
- 感谢:uestczyh222 制作了 rdb 工具 & rdb 上位机
- 维护:never
- 主页:https://github.com/RT-Thread-packages/netutils