ftpから設定を書き換えて無線出力を上げるハックがMITの論文で示されている。
2016/08/20時点での最新のファームウェアだけ確認。
また、2017年はじめごろリリースのファームウェア All-in-One firmware Version: v1.8.10 にアップデートしても、以下の説明で設置するバックドアのtelnetd はそのまま生きていた。
また、ミスるとWiFiが起き上がらなくなってbrick(文鎮化)する。
なお実験にあたっては、電波の漏洩しない電波暗室か、上げた出力が法令規制値内に収まる国でやること。
とはいえ、日本の電波法では無線LANは1Wの出力まで許可されている。27dBm は 500mW なのでセーフ。
論文は Security Analysis of DJI Phantom 3 Standard
- https://www.youtube.com/watch?v=Ys-svvng5TU
-
http://www.phantompilots.com/threads/phantom-3-standard-range-mod-lets-do-it-together.80721/page-15#post-840050
- telnetで起動することを確認できるので安全性が高い
手順
FTPアクセス → telnetd を起動するようにする(ある種のバックドア) → telnet でWiFi設定を変更
telnet起動まで
とりあえず、いじるためにドローンとコントローラでtelnetを起動させる。
- PCでドローンのコントローラーに接続。
- 192.168.1.1 (コントローラ) や 192.168.1.2 (ドローン) にFTPアクセスする
-
root
/Big~9China
-
- 192.168.1.1 (コントローラ) や 192.168.1.2 (ドローン) でそれぞれ同じファイルを書き換え
-
telnetd -l /bin/ash &
を/sbin/djiled.sh
の2行目に追記する
-
- とりあえず
iw list
をしてみてWiFi出力が 20dBm (だったかな?)であることを確認
起動スクリプト書き換え
telnetが起動したら、いよいよ起動スクリプトを書き換える。
ここからrcS
をいじるので文鎮化の危険あり。
sed -i 's/GB/OK/g' /etc/init.d/rcS
echo "iw reg set US" >>/etc/init.d/rcS
echo "iw dev wlan0 set txpower limit 2700" >>/etc/init.d/rcS
これでアメリカ合衆国用のWiFi出力となる。
最後に再起動したあと、telnetで iw list
をしてみて 27dBm となっていたら成功。
また、iw reg get
で以下のように country US になっていれば成功。
/ # iw reg get
country US: DFS-FCC
(2402 - 2472 @ 40), (N/A, 30), (N/A)
(5170 - 5250 @ 80), (N/A, 17), (N/A)
(5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
(5735 - 5835 @ 80), (N/A, 30), (N/A)
(57240 - 63720 @ 2160), (N/A, 40), (N/A)
なにか抜けてるかもしれないので実験にあたっては原文やフォーラムを熟読のこと。
P3Std 無線系について
- 上位のP3Adv, P3Proとは無線周りがかなり違う
- 上位機種は2.4GHzではあるがLightbridgeでWiFiではない
- これら機種ではコントローラの2本のアンテナを使って送受信
- コントロール周波数は日本仕様だけ 920MHz 、海外は5.8GHzとか
- P3Sdのコントローラから生えてる1本のアンテナはコントロール用のこれ
- アンテナの形状も違う
- ライブ映像や、ドローンの各種情報ダウンリンクはWiFi 2.4GHz
- アンテナは平面アンテナがコントローラ内部に内蔵(ジンバルのノブがあったりするコントローラーの両肩の位置に計2つ)
- 本実験ではこの部分をmodify
- ドローン本体、コントローラ(プロポ)共に 20MHz 幅の 2.4GHz WiFi
- チャンネルは2だったが環境によって違うかもしれない
- コントローラ側では、SSIDを発信するものとドローンと通信する部分が同じWiFiモジュールで動作している模様