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.com 、 ligne.ru

ISSUU.comに公開する

ハッカヌを賌読する




Source: https://habr.com/ru/post/J183760/


All Articles