質問: リバースエンジニアリングのレガシシリアルポート通信 私はそのクリエイターによって日没されてきたレガシー(20+ y.o)ソフトウェアを持っています。医療機器とのシリアルポート通信を行います。私は今、通信をリバース「エンジニアリング」し、それを新しいソフトウェアで再現することを検討中です。 を使用して、ソフトウェアとデバイス間で発生したシリアル通信を記録することができました。シリアルポートモニタ レガシーソフトウェアのデータテーブルを見て、受信データがそこにどのように格納されているかを見ることができます。私が抱えている問題は、受信したデータストリームの先頭や末尾を作ることができず、シリアルポート通信についてこれまで経験したことがないためです。この時点で、これが正しい方法でデータをデコードするのと同じくらい簡単なことであり、ストリームを理解できるようにするにはレガシーソフトウェアの内部動作が必要だと考え始めているという希望をほとんど諦めています。 技術的な詳細: * 9600ボーレート * 8語の長さ * 0パリティ ペイロードは2つの異なるストリームで到着します。 ``` [17/05/2017 01:28:30] Written data (COM3) 16 06 13 06 00 01 00 00 ca ........Ê [17/05/2017 01:28:30] Read data (COM3) 16 06 13 06 00 02 00 72 0a a7 03 00 00 04 4b 7a .......r.§....Kz 00 70 78 42 00 00 00 00 00 00 00 0f 02 1d 07 e0 .pxB...........à 04 1b 07 e1 00 9b 0b 1e 00 2e 8d 98 c6 0c 00 00 ...á.›.... ̃Æ... 00 00 0b 1b 00 21 00 00 1e b1 1e ae 00 03 00 00 .....!...±.®.... 61 39 00 00 02 c6 00 57 00 00 00 02 00 00 00 01 a9...Æ.W........ 00 08 00 03 00 00 4e 4f 50 51 52 53 54 55 56 57 ......NOPQRSTUVW 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 XYZ[\]^_`abcdefg 68 69 6a 6b 6c 6d 6e 6f b0 71 51 hijklmno°qQ [17/05/2017 01:28:30] Written data (COM3) 16 06 13 06 04 01 00 00 c6 ........Æ [17/05/2017 01:28:30] Read data (COM3) 16 06 13 06 04 02 00 ce 00 03 08 1c 11 05 07 e1 .......Î.......á 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .2.............. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 01 00 03 00 01 00 03 ................ 00 00 00 00 00 00 00 00 00 32 00 06 00 06 00 08 .........2...... 00 06 00 06 00 06 00 06 00 06 00 06 00 06 00 07 ................ 00 07 00 06 00 08 00 07 00 06 00 06 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 02 00 03 00 02 ................ 00 03 00 00 00 00 00 00 00 00 00 2d 00 06 00 07 ...........-.... 00 06 00 06 00 08 00 06 00 08 00 06 00 06 00 07 ................ 00 06 00 06 00 06 00 06 00 06 00 06 00 06 00 00 ................ 00 00 00 00 00 00 56 ......V ``` 印刷物はシリアルポートモニタからのものです、そして私は多くの制御文字が単に「ドット」に設定されていることを認識しています。私は言うことができる限り彼らはまた何が起こっているのかの明確な絵を与えていないようです。 私はすでにソフトウェアとデバイスの製造元と連絡を取り合い、彼らが手助けしようとしていると彼らの功績に触れたが、関連情報を掘り下げることができなかったことに注意すること。 私はまた、バイナリの補完物を調べようとしましたが、それでも意味がありません。 この時点で、すべての役立つヒント、トリック、またはポイントが評価されます。 **編集:** For clarification; What I am hoping someone with knowledge about serial port communication might know of, and perhaps recognize the usage of, a common compression technique or encoding that I don't know off that might cause the stream to resolve into something matching the data set I can see in the legacy software. **No code is being requested**
回答: 他の人が言ったようにこれは推測的な作業であり、それはバイナリプロトコルです、オリジナルの通信プロトコルだけがあなたに正確な詳細を教えてくれるでしょう。 上記のデータから把握できることは、それだけです。 * ヘッダーバイトがいくつかあります:16 06 13 06 * その後、いくつかのコマンドバイト:00 01または04 01 * その後にいくつかのデータが続きます:'00 00 'または'00 .... 00' * 最後のバイトに2の補数を含む8ビットCRCが続く:CA