独自のusbウォッチドッグスクリプトを作成する方法

暗号通貨の世界に対する私の関心は、ここ数カ月で高まっています。 この興味に取り組むために、私はついに暗号マイニングリグを手に入れました。
鉱山の掘削装置に精通しているあなた方のものはUSB監視人に晒されています。 これらは、コンピュータを監視し、システムがフリーズした場合にコンピュータを再起動することを目的として、USBポートに接続されている小型デバイスです。

f:id:OliverSpace:20190613184019j:plain

USBウォッチドッグの操作は簡単です。

  1. デバイスを空いているUSBポートに挿入します。 接続する必要がある4つのピンがあります。 他の2本のピンを電源スイッチに接続した状態で、ジャンパー線を使用して2本のピンをリセットボタンに接続します。
  2. デバイスの電源を入れると、コンピュータがまだ正常に機能していることを示すメッセージを受け取るまで、あらかじめ決められた時間待機します。 そのメッセージが指定された時間内に受信されない場合、コンピュータはリセットされます。
  3. ステップ2は無期限に繰り返されます。

f:id:OliverSpace:20190613184030j:plain

ウォッチドッグにメッセージを送信するのは専用のソフトウェアです。 コンピュータがクラッシュまたはフリーズした場合、ソフトウェアはメッセージを中継できません。 メッセージを受信する前に時間間隔を超えた場合、ウォッチドッグはシステムに問題があることを警告されます。 その後、コンピュータのリセットボタンを押すのと同じことになるハードウェアリセットを開始します。
USBウォッチドッグにはこの専用ソフトウェアが付属していますが、私の場合はプログラムは本質的に役に立ちませんでした。 それはWindowsマシン上で使用されるように設計されていて、私は私の採掘用具にLinuxコンピューターを使用しています。 これは対処する必要がある問題を引き起こしました。

f:id:OliverSpace:20190613184040j:plain

Windowsソフトウェアを見てみると、それはかなり単純に見えたので、私はアプリケーションのリバースエンジニアリングを試みることにしました。
 
簡単でした。
まず、接続とウォッチドッグに渡されるデータを監視するために使用できるプログラムが必要でした。 グーグルですばやく検索したところ、私は貴重なツールであるCOM port monitoring に気付いた。

f:id:OliverSpace:20190613184016p:plain

シリアルポートスニファを採用することで、必要なパターンの解読が容易になりました。シリアルポートの設定を確認する必要があります。

  • ボーレート:9600
  • パリティビット:なし
  • ストップビット:1


USBウォッチドッグへのメッセージ送信を開始するために必要なのはこれだけです。
プロトコル:
考慮すべき次の側面は使用中のプロトコルです。ここでもスニファを使用してこの調査を実行できます。
最初に注意することは、ウォッチドッグソフトウェアが起動されると、ウォッチドッグデバイスが(0x81)で応答するパケット(0x80)を送信することです。データがエンコードされる正確な方法がわからないにもかかわらず、この最初の接続メッセージにファームウェアのバージョンが含まれていることは明らかです。
私はそれからバイトのシーケンス(0x10)が1秒あたり1のレートで送信されていることを発見しました。これは160秒のタイムアウト値でした。タイムアウト値を10秒に変更すると、プログラムは異なるバイト(0x01)を送信しました。
1のバイト値が10秒に等しい場合、160秒は16で表されるべきであるといくつかの推論は示しました。そして16は0x10で16進表記で表されます。
リセットボタンを押すと、リレーが作動し、0xffのバイトが送信されます。
私の知る限りでは、利用可能な操作はこれら3つだけです。

  • 現在のタイムアウト値を含むハートビートメッセージを送信します。
  • ファームウェアのバージョンを確認してください。
  • リセットしてください。


スクリプト

f:id:OliverSpace:20190613184010p:plain

完成したスクリプトはかなり基本的なものです。 ソースコードはhttps://github.com/zatarra/usb-watchdogから入手できます。
あなたの想像力によってのみ制限されるいくつかの方法でスクリプトの機能を拡張する余地が確実にあります。 リモートでマイニングリグを開始するか、システムのビデオカードをテストすることをお勧めします。
警告ハートビート間隔を短く設定しすぎると、バックファイアが発生する可能性があります。 1分に設定すると、コンピュータがクラッシュしたときに対応しなければならない時間になります。 その時間内にマシンを起動してスクリプトを起動する必要があります。 これを怠ると、コンピュータが無限ループに陥り、遠隔地にある採掘リグを使用している場合は非常に面倒になることがあります。
 
最新のスクリプトについては、このコードレポジトリを調べてください。
あなたがこれが有益であると思うならば、寄付は大人の飲み物の形で感謝して受け入れられます。