自定义magic文件负偏移配置问题:无法识别尾部魔数的企业格式
解决自定义file magic规则匹配文件尾部魔数的问题
问题根源分析
你遇到的核心问题是偏移值错误:-0在file的magic规则解析中会被等价为0(指向文件开头),而非你预期的文件末尾。这就导致规则实际在匹配文件第一个字节而非最后一个,自然无法命中目标文件。
修正方案
将规则中的偏移值从-0改为-1,因为file的负数偏移是从文件末尾反向计数:-1对应最后一个字节,-2对应倒数第二个,以此类推。修正后的完整规则如下:
-1 byte 0xA2 company format !:mime application/custom
验证步骤
测试规则有效性:
执行命令重新测试:file -m <你的magic文件路径> <目标企业文件路径>此时末尾字节为
0xA2的文件应该会被正确识别为company format。检查规则编译结果:
用-c参数验证规则解析是否正确:file -m <你的magic文件路径> -c输出中应该会显示偏移为
-1(或对应文件长度的正向偏移值),不再出现缺失负号的异常。
关于-k -l显示匹配的说明
-k参数会强制file输出所有可能的匹配结果,即使存在优先级更高的内置规则或错误规则的部分匹配;而默认模式下file只会返回最匹配的结果。之前你看到的"有效匹配"其实是规则被错误解析后的无效匹配,并非真正命中了文件尾部的魔数。
内容的提问来源于stack exchange,提问作者Gleydar
相关产品推荐
相关产品推荐

