1

我正在编写一些代码,我依靠文件实用程序来确定任意文件的文件类型,通常是音频文件。在大多数情况下,它工作得很好,例如一个 ogg 文件可能会给出以下输出:

Ogg 数据,Vorbis 音频,单声道,44100 Hz,~80000 bps,创建者:Xiph.Org libVorbis I (1.0.1)

一个简单的正则表达式可以将其归类为 ogg vorbis。但是对于其他一些文件类型,file 会变得更聪明,例如 nsf(NES 声音格式)文件可以产生以下输出:

NES 声音文件(Konchano 的“塞尔达传说”,版权所有 1987 Nintendo),版本 1,8 首曲目,NTSC

“NES Sound File”已经够清晰了,但后面跟着一串非结构化数据,显然是从文件本身复制过来的。恶意用户可以创建一个 nsf 文件,其中该字符串被替换为“Ogg 数据,Vorbis 音频”之类的内容,从而使分类变得更加困难。

现在假设我通过丢弃括号内的任何内容来解决这个问题(忽略曲目标题本身可能包含括号的事实),随之而来的是一个 Protracker 模块:

4 通道 Protracker 模块声音数据标题:“space_debris”

同样,直接来自文件的不受信任的数据位于不同的位置,现在带有前缀“标题:”。我可以尝试将其过滤掉,但实际上这变得很麻烦。

我在手册页中找不到任何帮助。真的没有办法告诉文件不要将这些不安全的字符串混合到它的输出中吗?或者文件根本不是这项工作的正确工具?

4

0 回答 0