C状態：中華カメラをHack!? / WiFi、P2PとDebugモードで動作させる!! miSafes D304

## はじめに．．．
準備編で次の状態であったものが対象になります。
**[準備編：中華カメラをHack!? / P2P 通信と miSafes D304](https://qiita.com/PIGYO/items/12632147f73ddf12965c)**
**C状態**：『Misafecam』からカメラの接続が出来なかった。カメラの映像は見えない。または新品の状態。

『Misafecam』サービスが停止したので、**[TUTK P2P Server（ThroughTek Co.）](https://www.throughtek.com/privacy_policy.html)**の認証IDは発行されません。
miSafes D304 は使えるのに、、、そこで無理やり動作させてみましょう！！

この記事を見て分からない方は、**[こちら](https://qiita.com/PIGYO/items/12632147f73ddf12965c)**を参照してください。
ここから先は、自己責任でオペレーションです。

## 概要．．．
準備編で取得した microSD のファイル『misfaes_D304_config_sportdv_sysenv.out』を**『[サクラエディタ](https://sakura-editor.github.io/)』**などで開くと、見事に認証情報が無い．．．
　例
　　　No Wifi Select　　　　　　　・・・WiFi 接続設定は、なし
　　　a8888888　　　　　　　　　・・・TUTK P2P 認証ID、パスもなし

```ruby:misfaes_D304_config_sportdv_sysenv.out
No Wifi Select                ※ ルーターのSSID名が表示されない
admin
admin
a8888888                      ※ TUTK P2P 認証IDが、無い
SY_MCP_IPC
INFOTM
shanghai
```
Debugモードですが『strings /opt/ipnc/p2ptutk』を実行すると情報があります。
参考：UART接続でコマンドを実行



```ruby:/opt/ipnc/p2ptutk
# strings /opt/ipnc/p2ptutk
    :
Note:Now is AP Mode for TUTK debug, guid:"1111111111AAAAAAAAAA" pwd:"a8888888"
wifi.bin
app_qiwo
wifi_pid:%d qiwo_pid:%d
echo 1111111111AAAAAAAAAA > /mnt/config/guid_file           ※ TUTK P2P 認証ID
echo a8888888 > /mnt/config/guid_file_pwd                   ※ TUTK P2P 認証パスワード
/wifi/broadcom_ap6212/ap6212_setup.sh AP &　　　　　　　　　　※ カメラの WiFi を APモードで起動
    :
```
Debug 用の TUTK P2P 認証ID、パスワードを設定して、カメラの WiFi を APモードで起動となります。
しかし、カメラの設置場所とスマホ・アプリ『P2P CamLive』の距離がかせげなければ運用には使えません。
そこで『1. ルーター使用』の状態で運用したいと思います。
![typeC_screen001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/7374c082-6cf6-6a22-bf9f-cb522f132dd4.png)
<font color="Red">ルーター経由で使用しますが、Dubug モードである為 P2P TUTK Server は経由しません。
この為、外出先からカメラの映像は見ることはできません。</font>
![typeC_screen002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/43af468a-0f7b-f915-b961-9f1c97688fde.png)
『strings /opt/ipnc/p2ptutk』の実行結果ですが、ループ録画する為のプロセスが無いので起動している必要があります。
最低限どのようなプロセス、設定が必要かをザックリ書くと．．．

| プロセス名            | 説明                    | 
|:---------------------|:------------------------|
|/opt/ipnc/avserver_q3.bin | ループ録画する為に必要
|/opt/ipnc/p2ptutk | TUTK P2P Server との通信に使用、『P2P CamLive』アプリとの通信に使用 |
|/opt/ipnc/app_qiwo| qiwocloud との通信に使用、『P2P CamLive』アプリとの通信に使用 |

| 設定ファイル            | ファイルの内容           | 補足説明 |
|:---------------------|:------------------------|:--------|
|/mnt/config/guid_file |1111111111AAAAAAAAAA | Debug 用の P2P CamLive 認証ID |
|/mnt/config/guid_file_pwd| a8888888 | Debug 用の P2P CamLive 認証パスワード |
|/mnt/config/reg_info_file| 空ファイルでOK | ファイルがあるとループ録画を実行|
|/tmp/dhcpcd-wlan0.pid|WiFi プロセスID番号|<font color="Red">※注意</font> /opt/ipnc/p2ptutk 起動時にチェックされる|
<font color="Red">※注意
　『/tmp/dhcpcd-wlan0.pid』を touch、mkfile などで手動作成するとOSが起動しなくなります。
　　/wifi/broadcom_ap6212/dhcpcd -d --noipv4ll wlan0　コマンドを実行すると、自動的に作成されます。</font>

## 何が必要か整理してみます．．．
概要をもとに１～15 を用意して misfaes D304 を動作させてみましょう。

```
　1．telnetd がある、BusyBox を準備　　　　　　 ・・・ busybox-armv7l を microSD に保存
```
```:wpa_supplicant.conf
　2．WiFi ルーターへ接続する設定　　　　　　    ・・・ wpa_supplicant.conf
```
```:P2P_GUID_debug-create.sh 
　3．P2P Debug 用の認証IDを設定　　　　　　    ・・・ /mnt/mmc/P2P_GUID_debug-create.sh を作成
　　 ループ録画・認証ファイルを作成            ・・・ touch /mnt/config/reg_info_file
```
```:testlauncher.sh
　4．OSをwrite可能でマウント					 ・・・ mount -w -o remount /dev/root /
　5. 判定：1回目であれば、P2P_GUID_debug-create.sh　実行
　6．telnet ユーザ作成				  		  ・・・ adduser... Admin
　7．telnetd デバイス設定、プロセス起動		   ・・・ /sbin/telnetd
　8．telnet ユーザが su - root 実行可能にする	 ・・・ chmod u+s /bin/busybox
　9. ループ録画のプロセスを起動                 ・・・ /opt/ipnc/avserver_q3.bin &
　10．P2P TUTK 接続プロセスの起動準備			 ・・・ /tmp/wpa_supplicant.conf
　11．WiFi 起動、ルーターへ接続					・・・ /wifi/broadcom_ap6212/wpa_supplicant
　12．WiFi IPアドレス取得、dhcpcd-wlan0.pid作成 ・・・ /wifi/broadcom_ap6212/dhcpcd -d --noipv4ll wlan0
　13. p2ptutk 起動前のタイミング調整        　  ・・・ sleep 60
　14. P2Ptutk 起動時にWAN接続が無く、Debugであると偽装 ・・・ route del default
　15. P2P CamLive 接続用に P2Ptutk 起動　　　　　　　　・・・ /opt/ipnc/p2ptutk &
```

## misfaes D304 起動ファイルを microSD に作成．．．
#### 1．telnetd がある、BusyBox を準備
[BusyBox公式サイト](https://busybox.net/)から、misfaes D304 が使用する『BusyBox v1.21.1』と同じものをダウンロードします。
ダウンロードしたバイナリ・ファイルは、FAT32フォーマットの microSD に保存します。
[BusyBox v1.21.1 ダウンロード・リンク](https://busybox.net/downloads/binaries/1.21.1/)
　　Name　　　　　　　Last modified　　　　Size　　　Description
　　[busybox-armv7l](https://busybox.net/downloads/binaries/1.21.1/) 　　2013-07-09　02:02　　1.1M 　　　　　　　　　　　※ microSD へ保存

#### 2．WiFi ルーターへ接続する設定
これから使用する設定ファイル、シェルは**『[サクラエディタ](https://sakura-editor.github.io/)』**などで編集します。
保存する時は<font color="Red">改行コードを『LF(UNIX)』で保存</font>してください。**『[サクラエディタ](https://sakura-editor.github.io/)』**は『LF(UNIX)』の改行にすると『↓（下矢印）』で表示されます。
![TYPEX_screen001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/c5a6a3ea-2b4b-6d82-8b00-d7e3506c1286.png)
wpa_supplicant.conf ファイルの <font color="Red">ssid、psk をWiFiルーターの設定に変更</font>して、microSD へ保存します。
　　ssid="使用しているルーターのSSID"
　　psk="使用しているルーターのSSIDパスワード"

```ruby:設定例：wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
update_config=1
ap_scan=1

network={
    ssid="Buffalo-G-E320"    #### Your router's SSID
    pairwise=TKIP CCMP
    group=TKIP CCMP
    key_mgmt=WPA-PSK
    psk="r0ot@dmin"          #### Your router's SSID authentication path
}
```

#### 3．P2P Debug 用の認証IDを設定
『P2P_GUID_debug-create.sh』は変更・修正なしで動作するので、microSD に保存します。
　P2P Debug 用の認証IDは、2つのディレクトリにファイルを設定
　　・バックアップ用のディレクトリ　　　　　　　　　　/mnt/backup
　　・OS起動時に読み込まれる設定  　　 　　 　　　　　　/mnt/config
　　・このシェルの実行完了の判定用ファイルを作成　　　touch /mnt/mmc/GUID_create_finish

```ruby:P2P_GUID_debug-create.sh
echo "--- P2P guid create ---------------------"
kill -9 `ps | grep 'testlauncher.sh' | grep -v 'grep' | awk '{print $1;}'`

mount /dev/mtdblock3 /mnt/backup
df -h

echo 1111111111AAAAAAAAAA > /mnt/backup/guid_file
echo a8888888 > /mnt/backup/guid_file_pwd
touch /mnt/backup/reg_info_file

echo 1111111111AAAAAAAAAA > /mnt/config/guid_file
echo a8888888 > /mnt/config/guid_file_pwd
touch /mnt/config/reg_info_file

touch /mnt/mmc/GUID_create_finish

umount /mnt/backup
reboot
echo "-----------------------------------------"
```


#### 4～15．testlauncher.sh ファイルの作成
『4. OSをwrite可能でマウント』～『15. P2P CamLive 接続用に P2Ptutk 起動』を testlauncher.sh に設定します。
こちらもファイルの変更・修正なしで動作するので、microSD に保存します。
（telnet ユーザ Admin を変更するなどは、皆さんでカスタマイズしてください。）

```ruby:testlauncher.sh
mount -w -o remount /dev/root /
ls /mnt/mmc/GUID_create_finish || /mnt/mmc/P2P_GUID_debug-create.sh

echo "--- telnet user setup -------------------"
grep Admin /etc/passwd || cp -p /etc/passwd /etc/passwd_original
grep Admin /etc/passwd || cp -p /etc/shadow /etc/shadow_original
grep Admin /etc/passwd || cp -p /etc/group /etc/group_original
grep Admin /etc/passwd || adduser -h /  -g "maintenance user" -G root -s /bin/ash -D Admin && passwd -d Admin ''

echo "--- telnet sevrer setup -----------------"
ls /sbin/telnetd || ln -s /mnt/mmc/busybox-armv7l /sbin/telnetd
ls -l /sbin/telnetd

echo "--- telnet access-device setup ----------"
echo "pts/0" >> /etc/securetty
mkdir /dev/pts
mount -t devpts none /dev/pts
/sbin/telnetd

echo "--- Admin user -> su - root command -----"
chmod u+s /bin/busybox

echo "--- microSD /mnt/mmc/DCIM record-start --"
/opt/ipnc/avserver_q3.bin &

echo "--- Needed to start p2ptutk process -----"
cp -p /mnt/mmc/wpa_supplicant.conf /tmp/wpa_supplicant.conf
chmod 644 /tmp/wpa_supplicant.conf

echo "--- wifi manual connect command ---------"
/wifi/broadcom_ap6212/wpa_supplicant -Dnl80211 -iwlan0 -c/mnt/mmc/wpa_supplicant.conf &
sleep 10
/wifi/broadcom_ap6212/dhcpcd -d --noipv4ll wlan0
sleep 60                                                     ## CAUTION P2P timing adjustment

route del default

/opt/ipnc/p2ptutk &

echo "--- SETUP LOG ---------------------------"
busybox ifconfig wlan0 > /mnt/mmc/wifi_network_address.txt

echo "--- Script END --------------------------"
```
#### 16．microSD 確認
microSD に 4つのファイルがあれば準備完了です！！


```:FAT32フォーマットのmicroSD
busybox-armv7l
wpa_supplicant.conf
P2P_GUID_debug-create.sh
testlauncher.sh
```
## misfaes D304 起動．．．
『testlauncher.sh』を保存した microSD をカメラに挿入し、POWER OFF/ON するとシェルが自動実行します。
 misfaes D304 の起動完了まで、約120秒かかります。
「WiFi 成功につながって（中国語）」、60秒後に「WiFi 成功につながって（中国語）」と2度の音声ガイダンスがあれば起動成功です！！
![typeC_screen003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/a68b17b0-1112-4acc-83e0-b05e55045f13.png)

telnetd も起動しているので、リモート・ログインが可能です。
misfaes D304 のIPアドレスを確認し、TeraTerm などを使用して telnet を実行します。
　telnet する IPアドレスの確認例
　　　・ルーターから DHCP クライアントのIPアドレス割り当て
　　　・microSD に出力された『wifi_network_address.txt』

```Ruby:Tera_Term：telnet_xxx.xxx.xxx.xxx
(none) login: Admin                       ※ Admin ユーザーは、パスワード無し

$ passwd Admin
Changing password for Admin
New password:    新パスワードを設定
Retype password: 新パスワードを再度入力
Password for Admin changed by Admin

$ su - root
su: can't change directory to '/root'   　※『can't change directory』は /etc/passwd の誤りにより発生

# cat /etc/passwd
root::0:0:root:/root:/bin/sh              ※ root::0:0:root:/:/bin/sh に修正すると、上記警告は表示しません。
                                             修正せず放置でも、問題はありません。
# id
uid=0(root) gid=0(root) groups=0(root),10(wheel)

# /bin/busybox                            ※ BusyBox コマンド一覧
# /mnt/mmc/busybox-armv7l                 ※ microSD にある BusyBox コマンド一覧
```
<font color="Red">注意
/etc、/usr、/opt、/tmp などで、ファイル作成・削除を行うとOSが二度と起動しなくなる可能性があります。
/mnt/mmc（microSD）でファイル作成・削除を行うようにします。
</font>

## TUTK P2P 対応のアプリは．．．
**[TUTK P2P（ThroughTek Co.）](https://www.throughtek.com/privacy_policy.html)**に対応したアプリをインストールして、TUTK P2P 認証を行えば完了です。
![typeC_screen002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/43af468a-0f7b-f915-b961-9f1c97688fde.png)
テスト動作は確認していますが、探せば他にあると思います。
　![TYPEA_screen002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/23d19927-df90-01b6-bd24-fe16034a397d.png)　**[P2P CamLive](https://play.google.com/store/apps/details?id=com.tutk.P2PCamLive&hl=ja)**
　![TYPEA_screen003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/dbcf3780-d556-a5fa-75d7-92ad22df174b.png)　**[tinyCam Monitor FREE - IP camera viewer](https://play.google.com/store/apps/details?id=com.alexvas.dvr&hl=ja)**
**設定例**
P2P CamLive では、『LAN内を検索』を実行すると TUTK P2P 認証ID が表示されます。
『パスワード設定』に TUTK P2P 認証パスワードを入力すれば完了です。
　例
　　　1111111111AAAAAAAAAA　　・・・　TUTK P2P 認証ID
　　　a8888888 　　　　　　　　　 ・・・　TUTK P2P 認証パスワード
![typeC_screen004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/3360b44e-026c-c9fd-b86d-f9aea098efc2.png)


自宅 WiFi 圏内になりますが、リアルタイムの映像が見ることができます。
microSDに録画された映像を再生する時は、[**『再生編：中華カメラをHack!? / miSafes D304 録画を再生』**](https://qiita.com/PIGYO/items/25b71b0c6966a7668847)を参照してください。