我知道 torrent 文件有 hash-check 的功能,但是那些不在 *.torrent 文件本身中的文件怎么办呢?要检查 torrent 文件,需要 torrent 文件本身的原始 hash 校验和值。
例如,任何人都可以通过十六进制编辑(如标记 00 代码或任何内容)来创建 torrent 文件。
Torrent 文件可以通过这种方式更改,但我发现它们可以通过 torrent 客户端运行,没有任何警告。之后,我想知道 torrent 文件是否已被十六进制编辑更改,或者他们是否正在对 torrent 中的哈希文件进行任何类型的更改检查。
答案1
每个种子都有一个唯一的 ID,称为信息哈希,并且您只能从种子信息哈希完全相同的对等点下载文件。如果信息哈希不同,即使文件本身可能相同,这仍然会使其成为一个全新的种子。
infohash 直接基于info
.torrent 文件内的 dict 结构。所有.torrent
文件都是结构化数据,以本编码格式。转换为文本,这个 Ubuntu torrent– 例如 – 看起来像这样:
{ “宣布”:“http://torrent.ubuntu.com:6969/announce” “公告列表”:[ 0:[ 0:“http://torrent.ubuntu.com:6969/announce” ] 1:[ 0:“http://ipv6.torrent.ubuntu.com:6969/announce” ] ] “评论”:“Ubuntu CD releases.ubuntu.com” “创建日期”:“1469103218” “信息”:{ “长度”:“1513308160” “名称”:“ubuntu-16.04.1-desktop-amd64.iso” “件长度”:“524288” “件”:字节[ 92 90 ed e1 86 46 26 1c 7f 40 02 6f 60 e1 17 1f a8 4b 3b ce 81 d2 c2 30 13 d5 9c d3 b7 14 d9 d8 4e e3 21 d8 04 44 be 97 db ce c0 87 b3 d0 26 22 c0 e1 80 d6 ec 83 75 40 86 6b 8d 88 9b bf ea db ad 49 d8 54 e4 69 ba b6 bc ca dd ed b0 02 5c 74 22 1b bf 00 97 89 b1 b3 fa f8 21 45 5e ff 0c 65 8f c3 00 a8 23 cd bd be 5d e5 5e 7e 2f 32 66 e3 0c 68 b3 09 de d3 1d 12 c7 32 6b 92 2e ce 3d 67 79 dc e0 5c 53 f2 a3 a8 84 55 b8 38 c4 26 2d ac ...(另外 57596 字节) ] } }
注意info: { ... }
结构如何描述所有的内容种子信息 – 文件名、大小、每个“片段”的哈希值,有时还包括“私人种子”信息。如果您的编辑以任何方式更改了此部分,这将导致信息哈希值发生变化,您将无法从旧对等点下载它。
但如果你改变一些东西外部但是,如果编辑info
dict,则不会出现任何问题——当然,前提是编辑确实有意义。例如,您可以自由更改 中列出的跟踪器announce-list
,编辑comment
,甚至可以添加其他字段。
话虽如此,与其盲目地对原始文件进行十六进制编辑,为什么不使用真正理解结构的程序 - 例如真正的“torrent 编辑器”?这些肯定存在。
最后,如果你的编辑导致文件不再有效本编码语法,这肯定会“产生问题”,因为程序将无法再加载 .torrent 文件。这包括,例如,使一段文本更长或更短。(在生的十六进制编辑器显示的格式,请注意每个字符串如何以其长度作为前缀,例如5:hello
。它们必须始终匹配。)