B状態：中華カメラをHack!? / WiFi、P2P 接続と telnetd、miSafes D304

## はじめに．．．
準備編で次の状態であったものが対象になります。
**[準備編：中華カメラをHack!? / P2P 通信と miSafes D304](https://qiita.com/PIGYO/items/12632147f73ddf12965c)**
**B状態：『Misafecam』サービス終了までカメラの映像を見られた。<font color="Red">カメラの RESET ボタンを押した。</font>**

RESET ボタンを押すと WiFi ルーターへの設定が削除されています。
しかし、WiFi ルーターに接続して**[TUTK P2P Server（ThroughTek Co.）](https://www.throughtek.com/privacy_policy.html)**に接続するだけでは面白く(!?)ないので、<font color="Red">telnetd（telnetサーバ）</font>を追加してみましょう！！

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

## 概要．．．
準備編で取得した microSD のファイル『misfaes_D304_config_sportdv_sysenv.out』を**『[サクラエディタ](https://sakura-editor.github.io/)』**などで開くと、ルーターの TUTK P2P 認証情報だけ表示されます．．．
　例
　　　No Wifi Select　　　　　　　・・・WiFi 接続設定は、なし
　　　PEN367A9D3803MX2381A 　・・・TUTK P2P 認証ID
　　　87931362 　　　　　　　 　・・・TUTK P2P 認証パスワード


```ruby:準備編_参照：misfaes_D304_config_sportdv_sysenv.out

75F39C45A7CF
No Wifi Select                 ※ ルーターのSSID名が表示されない
admin
admin
PEN367A9D3803MX2381A           ※ TUTK P2P 認証ID / 20桁のコード
87931362                       ※ TUTK P2P 認証パスワード / 8桁のパスワード
SY_MCP_IPC
INFOTM
```
『reg_info_file』が削除されているので、microSD へのループ録画が動作しない。
録画するための『reg_info_file と qiwocloud 認証ID』が必要．．．では無く、
<font color="Red">reg_info_fileファイルがあれば microSD へのループ録画が動作します。</font>
　　ループ録画の動作（qiwocloud 認証ID）：　touch /mnt/config/reg_info_file

```ruby:準備編_参照：config-reg_info_file　が無い
VTPITz3wN4UTLkO2Qi4iZAa3d2Hm4GfebnwOSEwMhM8MiE3MdQvMaYpKTS1RT3yDD51Y1E68CeMOEzFJ      ※ 文字列も無い
```

misfaes D304 ですが、/(root)領域の使用が <font color="Red">99%</font> 程度のはずです!!（新品の時から98%だったような．．．）
さて、telnetd は何処におきましょうか．．．

```
# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                18.9M     17.7M    187.0K  99% /　　　　　　　　※ /(root) の使用が 99%
devtmpfs                 37.3M         0     37.3M   0% /dev
tmpfs                   101.4M     60.0K    101.3M   0% /tmp
/dev/mtdblock2          499.0K     29.0K    445.0K   6% /mnt/config
```
## 何が必要か整理してみます．．．
詳細は省きますが、１～10 を用意して misfaes D304 を動作させてみます。

```
　1．telnetd がある、BusyBox を準備　　　　　　 ・・・ busybox-armv7l を microSD に保存
```
```:wpa_supplicant.conf
　2．WiFi ルーターへ接続する設定　　　　　　    ・・・ wpa_supplicant.conf
```
```:testlauncher.sh
　3．OSをwrite可能でマウント					 ・・・ mount -w -o remount /dev/root /
　4．ループ録画・認証ファイルを作成			 ・・・ touch /mnt/config/reg_info_file
　5．telnet ユーザ作成				  		  ・・・ adduser... Admin
　6．telnetd デバイス設定、プロセス起動		   ・・・ /sbin/telnetd
　7．telnet ユーザが su - root 実行可能にする	 ・・・ chmod u+s /bin/busybox
　8．P2P TUTK 接続プロセスの起動準備			 ・・・ /tmp/wpa_supplicant.conf
　9．WiFi 起動、ルーターへ接続					・・・ /wifi/broadcom_ap6212/wpa_supplicant
　10．misfaes D304 サービス・プロセス起動		 ・・・ /opt/ipnc/avserver_q3.bin
```
## 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～10．testlauncher.sh ファイルの作成
『3．OSをwrite可能でマウント』～『10．misfaes D304 サービス・プロセス起動』までを testlauncher.sh に設定します。
下記、2つのファイルは変更・修正なしで動作するので、microSD に保存します。
（telnet ユーザ Admin を変更するなどは、皆さんでカスタマイズしてください。）
　・testlauncher.sh
　・P2P_GUID_ERROR.sh

```ruby:testlauncher.sh
! /bin/sh

mount -w -o remount /dev/root /

strings /mnt/config/sportdv_sysenv.cfg | grep -i a8888888 && /mnt/mmc/P2P_GUID_ERROR.sh

echo "--- Authentication file for recording ---"
echo "Create reg_info_file if it doesn't exist!"
ls /mnt/config/reg_info_file || touch /mnt/config/reg_info_file

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/sh -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 "--- telnet Admin -> su - root command ---"
chmod u+s /bin/busybox

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

echo "--- recording start ,and ... ------------"
echo "--- app_qiwo、p2ptutk process auto-strat "
/opt/ipnc/avserver_q3.bin &

echo "--- SETUP LOG ---------------------------"
busybox ifconfig wlan0 > /mnt/mmc/wifi_network_address.txt
strings /mnt/config/sportdv_sysenv.cfg > sportdv_sysenv.txt

echo "--- Script END --------------------------"

```

```ruby:P2P_GUID_ERROR.sh
! /bin/sh

strings /mnt/config/sportdv_sysenv.cfg > /mnt/mmc/sportdv_sysenv.txt

echo "-----------------------------------------" >> /mnt/mmc/sportdv_sysenv.txt
echo "TUTK P2P authentication may have been deleted." >> /mnt/mmc/sportdv_sysenv.txt
echo "Check sportdv_sysenv.txt for TUTK P2P authentication information." >> /mnt/mmc/sportdv_sysenv.txt
echo "If there is no problem, delete the third line (strings ..) and try again." >> /mnt/mmc/sportdv_sysenv.txt

echo '50' > /sys/devices/platform/pwm_led.0/leds/led/brightness
```
#### 11．microSD 確認
microSD に 4つのファイルがあれば準備完了です！！


```:FAT32フォーマットのmicroSD
busybox-armv7l
wpa_supplicant.conf
testlauncher.sh
P2P_GUID_ERROR.sh
```

## misfaes D304 起動．．．
『testlauncher.sh』を保存した microSD をカメラに挿入し、POWER OFF/ON するとシェルが自動実行します。
「WiFi 成功につながって」と音声ガイダンスがあれば起動成功です！！
![TYPEB_screen01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/48967342-abd7-a6ee-ee56-28c61105b083.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 認証を行えば完了です。
![TYPEA_screen001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/7ec892a4-3876-bbfc-a8b8-02e47573cb9a.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 認証パスワードを入力すれば完了です。
　例
　　　PEN367A9D3803MX2381A 　・・・TUTK P2P 認証ID
　　　87931362 　　　　　　　 　・・・TUTK P2P 認証パスワード
![TYPEA_screen004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502610/64cec52b-2f2b-2bcd-c998-78e21d35d613.jpeg)

TUTK P2P サーバを経由するので外出先(自宅WiFi圏外）からも、映像は見ることができます。
microSDに録画された映像を再生する時は、[**『再生編：中華カメラをHack!? / miSafes D304 録画を再生』**](https://qiita.com/PIGYO/items/25b71b0c6966a7668847)を参照してください。