9

私の意図は確かにそうではありませんが、これはグレー エリアのテーマである場合とそうでない場合があります。そのため、リバース エンジニアリングのトピックについて倫理的な議論を巻き起こすことは意図していません。

私は現在ポンプ療法を受けている1型糖尿病患者です。私はOmniPodユーザーです。これは使い捨てのポッドで、体に密着して 3 日間インスリンを投与します。パーソナル糖尿病マネージャー [PDM] (以下を参照) によって制御され、食事中に投与するインスリンの量、血糖測定値を制御し、外出先で炭水化物をカウントするための食品指数が含まれています。

代替テキスト
(ソース: myomnipod.com )

新しい PDM には、データをダウンロードするための USB ポートがあります。このソフトウェアは、Windows ユーザーには無料 (CoPilot と呼ばれるパッケージ) ですが、Mac のサポートはありません。

PDM を Mac に接続すると、他の USB デバイスと同じようにマウントされ、IBF 拡張子が付いた単一のファイルを含む読み取り可能なボリュームが表示されました。重さは16KBです。

私の最初の本能は、それをテキスト エディターに渡すことでした。すると、非常にバイナリに見えるファイルが表示されました。次に、それを文字列に渡し (以下を参照)、16 進エディターで開きました。以下の文字列以外に多くの情報を得ることができませんでしたが; 圧縮形式の詳細などはありません。

$ strings omnipoddata.ibf 
Insulet
OmniPod
basal 1
Post-meal
e-meal
Pre-meal
e-bedtime
Pre-bedtime
.(@P
.(@P
.(@P

このプロセスの次のステップは何ですか? 私は動的言語の専門家なので、Ruby や Python に関するリソースはどれも素晴らしいものです。テスト駆動のリバース エンジニアリング プロセスはありますか?

私が取得しようとしているデータに関する限り、それは私の進捗状況 (インスリン摂取量、血糖測定値、タイムスタンプ) に関するより多くの情報を得るためにチャート化したい情報です。これらはすべて、Windows ソフトウェア パッケージで可能です。

4

3 に答える 3

3

私が次にすることは、いくつかの数字を見つけてみることです。数値をエンコードする方法はたくさんあります。

  • Ints (1、2、4 バイト、さまざまなエンディアン)
  • 浮動小数点 (さまざまなサイズ)
  • 固定小数点またはその他の奇妙な形式

画面上でデータを見ることができるので、そこにあるいくつかの数字を知っているという利点があります。そのため、ファイル内のこれらの数値を (上記のさまざまな形式で) 探します。これにより、少なくともいくつかのデータが得られるはずです。

次に、タイムスタンプについて言及します。タイムスタンプは常に 32 ビット符号なし整数であり、大まかな範囲 (time() +/- 数 100,000) があるため、通常は非常に簡単です。その近くのintを探してください。

これらはすべて、16 進エディターを使用して手動で行うか、小さなスクリプトを作成することができます。データを取得し始めたら、パターンを探します。これは、より興味深い分野を見つけるのに大いに役立つはずです。幸運を!

于 2009-06-10T21:40:21.943 に答える
1

既知の値の 16 進表現を探し始めます。デバイス (写真) にはスクリーンがありますか、それともウィンドウで見ることができますか?

たとえば、Windows バージョン内で見つけた 16 進数の一連の数字を見つけることができれば、「レコード」形式を理解できるかもしれません。それを見ると、ある種のヘッダー/バージョン情報と、16 進数でエンコードされた数値を含む一連のレコードが含まれているようです。

それはあなたに良い出発点を与えるはずです。

于 2009-06-10T21:39:38.607 に答える
1

Windows バージョンの VM を実行し、ollydbg を使用して逆アセンブルします。バイナリ ファイルを見つめて、どの変数がどのオフセットと相関しているかを推測する代わりに、これが最善の策です。

ただし、独自のインスリンポンプを台無しにすることは、おそらく最も賢明なアイデアではありません. ファイルがポンプを操作すると仮定します。

于 2009-06-10T21:47:59.120 に答える