4

我想知道是否有可能,有一个 torrent 集合(即包含多个文件的 torrent)来提取单个文件,生成一个几乎新的 torrent/magnet 链接以仅下载该单个文件但使用相同的源(公告等) ,而不是下载整个种子然后选择要下载的内容。

感谢您的任何提示。

4

1 回答 1

7

2019 年更新:是的,你现在可以了!2017 年发布了一份 BEP 草案,其中涵盖了磁铁 URI 的问题行为!这很棒,因为它创建了一个标准,在指向多文件 torrent 的磁铁 URI 和指向该多文件 torrent 中的单个文件的磁铁 URI 之间保持一致的 info_hash。他们将共享一个 swarm,这意味着您可以,因为问题要求“[生成] 一个几乎新的 torrent/magnet 链接以仅下载该单个文件但使用相同的源”。

BEP 草案:http: //www.bittorrent.org/beps/bep_0053.html BEP 53:“磁铁 URI 扩展 - 选择特定文件索引以供下载”

请求文件 0、2、4 和 6 到 8 的示例 URI:

magnet:?xt=urn:btih:HASH&dn=NAME&tr=TRACKER&so=0,2,4,6-8

BEP 草案正在进入 bittorrent 库:


2013-MAY-03 原始答案:有时是,但不经常,并且由此产生的群体没有同行。

首先,您需要原始的 .torrent 文件,因此如果您只有一个磁力 URI,则需要使用 DHT 将其解析为 .torrent。任何支持磁铁 URI 的 bittorrent 库都有该任务的代码。

获得 .torrent 后,您需要获取与您感兴趣的文件相关的哈希值。.torrent 文件包含一个很长的字符串,每 20 个字节代表 torrent 中每个片段的哈希值。Torrent 的片段长度是固定的,通常在 256KB 到 1MB 之间。如果文件从一个块偏移量开始,并且大小等于块大小的倍数或者是 torrent 中的最后一个文件,那么您可以重用这些哈希值。然后,您可以使用该信息创建一个新的 .torrent 文件,并从 torrent 文件生成一个新的磁力 URI,重新使用公告或使用新的。

Torrent 信息结构:https ://wiki.theory.org/BitTorrentSpecification#Metainfo_File_Structure

幸运地获得该偏移量是不太可能的,因为一块长度通常在 256KB 和 1MB 之间变化,您有 1/262144 到 1/268435456 的机会获得该偏移量(假设文件可以从一块中的任何位置开始),所以这种情况不太可能。如果您不能重用哈希,则需要生成新的哈希,这意味着您不能重用 .torrent 并且需要下载文件以生成新的哈希。

杀手锏是最终创建的种子有不同的info_hash。info_hash 是描述 torrent 的信息的散列,它是对许多文件的描述,现在在您的新散列中是对单个文件的描述,因此是一个新的 torrent,因此没有人可以从中窃取。对等点根据 info_hash 聚集成群,如果您基于多文件 torrent 中的一个文件创建一个新 torrent,则来自多文件 torrent 的对等点不知道它,也无法从中窃取。

即使您有幸获得了正确的片断偏移量,您也可以创建一个没有任何人共享文件的种子。

那么,您是否可以重新使用磁力 URI 并在种子中指定一个文件名?不,描述 Bittorrent 如何使用磁力 URI 的 BEP 并未涵盖此行为。http://www.bittorrent.org/beps/bep_0009.html

于 2013-05-03T01:08:09.540 回答