我正在file针对 wallet.dat 文件(比特币保存其私钥的文件)运行,即使似乎没有任何可识别的标头或字符串,file仍然可以看出这是一个 Berkley DB 文件,即使我将其减少到 16 个字节。
我知道该文件正在应用某种规则或搜索某种序列来识别它。我想知道它在这里应用的规则是什么,以便我可以在我自己的程序中复制它。
Gil*_*il' 16
获取文件命令的来源。大多数(如果不是所有)开源 unice 都使用这个。该file命令随magic数据库一起提供,以其描述的幻数命名。(此数据库也安装在您的实时系统上,但以编译形式。)查找包含您看到的描述文本的文件:
grep 'Berkeley DB' magic/Magdir/*
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)
第一列指定要找到某个字节序列的偏移量。第三列包含字节序列。第二列描述字节序列的类型:long表示平台字节序中的4 个字节;lelong并belong分别以 little-endian 和 big-endian 顺序表示 4 个字节。
与其复制规则,不如调用该file实用程序;它由 POSIX 指定,但它识别的格式和它输出的描述不是。或者,您可以链接libmagic并调用magic_fileormagic_buffer函数。
cas*_*cas 10
你可以:
file从你的程序中运行
使用file为您的编程语言提供功能的库。例如libmagic对于 C,File::Libmagic或File::MMagic对于perl,python-magic对于 python 等。
顺便说一句,file用于识别文件的定义可以在/etc/magic. 有关man 5 magic文件格式的详细信息,请参阅。
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |