私はfile
wallet.datファイル(ビットコインが秘密鍵を保存するファイル)を実行しており、認識できるヘッダーや文字列がないようですが、file
16に減らしてもBerkley DBファイルであることがわかります。バイト。
私はそのファイルがどのような規則を適用しているのか、それを識別するためにどのシーケンスを検索しているのかを知っています。私のプログラムでこれを複製できるように、ここにどのルールが適用されるかを知りたいです。
ベストアンサー1
ファイルコマンドのソースを取得します。すべてのUnixではなくても、ほとんどオープンソースを使用します。これ。このfile
コマンドはmagic
データベースに付属しています。マジックナンバーそれが説明するもの。 (このデータベースはライブシステムにもインストールされますが、コンパイルされた形式です。)表示される説明テキストを含むファイルを見つけます。
grep 'Berkeley DB' magic/Magdir/*
これmagic
マニュアルページファイルの形式を説明します。 「Berkeley DB」のトリガーラインは次のとおりです。
0 long 0x00061561 Berkeley DB
0 belong 0x00061561 Berkeley DB
12 long 0x00061561 Berkeley DB
12 belong 0x00061561 Berkeley DB
12 lelong 0x00061561 Berkeley DB
12 long 0x00053162 Berkeley DB
12 belong 0x00053162 Berkeley DB
12 lelong 0x00053162 Berkeley DB
12 long 0x00042253 Berkeley DB
12 belong 0x00042253 Berkeley DB
12 lelong 0x00042253 Berkeley DB
12 long 0x00040988 Berkeley DB
12 belong 0x00040988 Berkeley DB
12 lelong 0x00040988 Berkeley DB
最初の列は、特定のバイトシーケンスを見つけるオフセットを指定します。 3番目の列にはバイトシーケンスが含まれています。 2 番目の列はバイトシーケンスタイプを記述します。long
4バイトはプラットフォームを表します。バイト順;lelong
とbelong
4バイトは、それぞれリトルエンディアンとビッグエンディアンの順序を表します。
ルールをコピーする代わりにユーティリティを呼び出すことができますfile
。POSIXで指定しかし、認識する形式と出力の説明はそうではありません。または、関数を接続してlibmagic
呼び出すこともできます。magic_file
magic_buffer