分你所享、信息共享、轻松分享
来自民间的思想 | 送人玫瑰,手有余香。

DJI tello无人机通信协议破解测试

*本文原创作者:question,本文属FreeBuf原创奖励计划,未经许可禁止转载

前言

最近迷上了无人机,买了各种飞控 DJI NAZA,CCD3,F3,还不敢入手pix(穷)。玩了一圈,看到dji发布了一款可以编程的无人机TELLO,果断入手。无奈玩厌倦了,SDK只开放了起飞降落这些简单功能,秉着搞事不怕事大的原则开始了装逼的道路。 1.png

0×01:抓包

无人机支持APP控制,手机通过WIFI连接无人机进行控制。寄出上古神器 树莓派3+kali+TLWN722N开始了抓包之路。 我也是个菜鸟,列下抓包命令 ,大神就不要笑话了:

1.无线网卡进入监听模式

airmon-ng start wlan1

2.扫描周边的wifi信号

airodump-ng wlan1mon 下面是扫描的结果 image.png TELLO是无人机释放的wifi信号 这里主要关心下信道

3.修改无线网卡信道

iwconfig wlan1 channel 11

4.打开Wireshark开始抓包

通过app遥控无人机进行了一个起飞降落后停止抓包 ,在手机上可以看到无人机的IP 这个时候过滤下IP 或者通过SSID进行过滤也可以,我这里通过IP 过滤:ip.src == 192.168.10.2 or ip.src == 192.168.10.1 (192.168.10.2是手机获取到的IP地址) image.png 可以看到 数据非常多大概看了下应该有:
1.手机给无人机发过去的控制数据包 2.无人机给手机发送的状态数据包(电量,高度等) 3.无人机给手机发送的图像数据包
控制数据包 :使用UDP协议 端口是8889号端口,数据长度22 不是明文ASCII。 image.png 对抓到的包如果要进行每个字段进行解密就要记录很多控制包,比如不停的对飞机进行起飞降落,抓包看那些值改变。 本人比较懒,打算穿美特斯邦威。

0×02:魔爪伸向APP

apktool 资源反编译工具,直接解压apk会导致xml乱码 dex2jar 源码反编译工具 jd-gui 源码查看工具

0×03:控制部分代码预览

写过Android app的都知道 入口当然在xml里找了哈哈 AndroidManifest.xml image.png 第一个箭头有个有趣的东西 百度定位服务,应该是用来记录用户在哪里飞飞机的,大家请准守国家法规。 第二个箭头是app启动入口,感兴趣的自己去跟踪吧 我下面贴下关系的代码部分。 控制部分代码