ファイルはこの特定のファイルをどのように識別しますか?

ファイルはこの特定のファイルをどのように識別しますか?

私はfilewallet.datファイル(ビットコインが秘密鍵を保存するファイル)を実行しており、認識できるヘッダーや文字列がないようですが、file16に減らしても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 番目の列はバイトシーケンスタイプを記述します。long4バイトはプラットフォームを表します。バイト順;lelongbelong4バイトは、それぞれリトルエンディアンとビッグエンディアンの順序を表します。

ルールをコピーする代わりにユーティリティを呼び出すことができますfilePOSIXで指定しかし、認識する形式と出力の説明はそうではありません。または、関数を接続してlibmagic呼び出すこともできます。magic_filemagic_buffer

おすすめ記事