目标设备:某国外hud(下图)
目标:建立通讯,控制hud动作
已知信息:两者为以太网通讯
未知信息:以太网主从关系、设备ip地址、通讯端口
分析流程:
车载以太网为两线,需转换器才能和电脑连接,用示波器观察断路时候的波形判断hud为从设备。
上图为网络转换板
连接到ubuntu系统,调用网络查看命令:
Sudo tcpdump -e -i enp0s31f6
获取类似下面这样的信息:
15:00:12.863470 02:00:00:00:00:40 (oui Unknown) > 01:00:5e:00:03:80 (oui Unknown), ethertype 802.1Q (0x8100), length 70: vlan 129, p 0, ethertype IPv4, 10.0.0.64.49818 > 239.0.3.128.51915: UDP, length 24
可知hud的ip地址为10.0.0.64, 采用id为129的vlan和外部通讯,其使用49818对外进行广播,广播地址为239.0.3.128,端口为51915
用wireshark 也可以看到类似信息:
依次输入下列命令创建vlan:
ip link add link enp0s31f6 name eth0_129 type vlan id 129
ip addr add 10.0.0.2/24 brd 10.0.0.255 dev eth0_129
ip link set dev eth0_129 up
从https://github.com/troglobit/mtools下载广播调试工具,编译后运行:
./mreceive -g 239.0.3.128 -p 51915 -i 10.0.0.2
可以发现能够接受到广播包,但ping 10.0.0.64 不通,用wireshark看到设备有回应,但mac地址不对,调用下列命令修改mac地址:
sudo ifconfig eth0_129 down
sudo ifconfig eth0_129 hw ether 02:00:00:00:00:02
sudo ip link set dev eth0_129 up
再次ping 成功。
用端口扫描工具扫描设备:
nmap -sT 10.0.0.64
提示22号端口处于开放状态,这个一般用于ssh,尝试用ssh登录:
ssh 10.0.0.64 -l root
成功登录。
登录设备即可查看程序监听端口:
netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...........
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 765/dropbear
tcp 0 0 0.0.0.0:13402 0.0.0.0:* LISTEN 849/hud_rg3
...........
最终确认13402为应用通讯端口。
参考文档:
https://serverfault.com/questions/163244/linux-kernel-not-passing-through-multicast-udp-packets