【车联网】VerhicleTestTool测试工具

VerhicleTestTool测试工具手册

目前支持两个模块:

  • UDS测试
  • ADB/SSH系统信息收集

0x01 UDS测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
python verhicletool.py uds -h


usage: verhicletool.py uds [-h] [-id UDSID] [-data DATA] [-list] [-fd] [-fuzz] [-seed] [-show] [-file FILE_NAME] [-n NUM]

optional arguments:
-h, --help show this help message and exit
-id UDSID, --udsid UDSID
设置诊断ID
-data DATA, --data DATA
选择发送数据,通过-list查看支持的数据
-list, --list 查看支持的发送数据
-fd, --fuzzdata 向总线发送诊断ID固定,报文数据随机的应用层畸形数据
-fuzz, --fuzz 向总线发送诊断ID随机,报文数据随机的应用层畸形数据
-seed, --seed_request
向总线发送27服务请求seed
-show, --show 显示seed
-file FILE_NAME, --filename FILE_NAME
需要统计seed重复率的周立功文件
-n NUM, --num NUM Number of times to loop

UDSTool测试工具目前实现了:

  • 常用测试数据发收,例如1001、2701、1101、F190等
  • 向总线发送诊断ID固定,报文数据随机的应用层畸形数据进行FUZZ
  • 向总线发送诊断ID随机,报文数据随机的应用层畸形数据进行FUZZ
  • 向总线发送1003和2701请求seed,默认请求1次,可以通过-n参数指定请求次数
  • 请求seed后筛选出seed数据显示到终端,可以通过-n参数指定请求次数
  • 统计周立功文件中的seed重复率

常用测试数据发收

plugins/data_dict.py中,定义了常用测试的总线数据,包含10服务、11服务、27服务、23服务等,后续添加数据只需增加一条字典即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
data_dict = {
'1001': [0x02, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00],
'1002': [0x02, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00],
'1003': [0x02, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00],
'1101': [0x02, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00],
'1102': [0x02, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00],
'0414': [0x04, 0x14, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00],
'1901': [0x03, 0x19, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00],
'2301': [0x06, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00],
'2701': [0x02, 0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00],
'2702': [0x02, 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00],
'2801': [0x03, 0x28, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00],
'2802': [0x03, 0x28, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00],
'3101': [0x02, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00],
'3102': [0x02, 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00],
'8501': [0x02, 0x85, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00],
'8502': [0x02, 0x85, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00],
'f185': [0x03, 0x22, 0xf1, 0x85, 0x00, 0x00, 0x00, 0x00],
'f187': [0x03, 0x22, 0xf1, 0x87, 0x00, 0x00, 0x00, 0x00],
'f189': [0x03, 0x22, 0xf1, 0x89, 0x00, 0x00, 0x00, 0x00],
'f190': [0x03, 0x22, 0xf1, 0x90, 0x00, 0x00, 0x00, 0x00],
'f191': [0x03, 0x22, 0xf1, 0x91, 0x00, 0x00, 0x00, 0x00],
'f193': [0x03, 0x22, 0xf1, 0x93, 0x00, 0x00, 0x00, 0x00],
'f193': [0x03, 0x22, 0xf1, 0x94, 0x00, 0x00, 0x00, 0x00],
'f195': [0x03, 0x22, 0xf1, 0x95, 0x00, 0x00, 0x00, 0x00],
}

运行python3 UDSTool.py uds -id 733 -data 1001即可发送数据并查看回复

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401110937715.png

如果发送的数据不在定义的列表,只会输出banner信息

ID固定报文随机的FUZZ

运行python3 UDSTool.py uds -id 733 -fd进行FUZZ,No ECU response received就代表TX的数据没有回应,过程中也可通过candump can0 -l进行保存

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401110945275.png

ID报文均随机的FUZZ

运行python3 UDSTool.py uds -fuzz进行FUZZ

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401130951462.png

seed请求

运行python3 UDSTool.py uds -id 733 -seed请求seed,默认请求一次,通过-n参数指定请求次数

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401110953532.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401110954005.png

统计周立功seed文件

首先通过周立功UDS诊断功能多次请求seed,开启实时保存,发送完毕停止保存。

将xx.zudslog文件复制到同目录,执行python UDSTool.py uds -file GW.zudslog,就会统计seed

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401110958617.png

0x02 系统服务信息收集

定义了一些系统测试常用命令,包括apk查找、netstat端口查看、配置文件搜索等,输出到目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
python verhicletool.py adb -h


usage: verhicletool.py adb [-h] [-t TARGET] [-p PORT]

optional arguments:
-h, --help show this help message and exit
-t TARGET, --target TARGET
adb连接ip地址
-p PORT, --port PORT adb连接ip端口

python verhicletool.py ssh -h


usage: verhicletool.py ssh [-h] [-t TARGET] [-p PORT] [-u USERNAME] [-pw PASSWORD]

optional arguments:
-h, --help show this help message and exit
-t TARGET, --target TARGET
Target IP address
-p PORT, --port PORT Target port
-u USERNAME, --username USERNAME
Username for SSH
-pw PASSWORD, --password PASSWORD
Password for SSH

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401121519483.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401121520910.png

https://zebpic-1301715962.cos.ap-nanjing.myqcloud.com//blog/202401121523534.png

0x03 ToDo

  • UDS
    • DID读取
    • 2e服务写入
  • 信息收集
    • SSH证书登录
  • 固件
    • hex/bin/s19固件互转
    • 固件敏感信息搜索
    • 固件基址查询
    • 固件数据篡改