2013-05-02 100 views
3

我想知道如果可能的話,有一個torrent收集(IE包含多個文件的torrent)提取單個文件,生成一個幾乎新的torrent /磁鐵鏈接僅下載該單個文件,但使用相同的來源(通告等),而不是下載整個種子,然後選擇要下載或不下載。從torrent集合中的單個文件生成torrent/magnet鏈接

感謝您的任何提示。

回答

4

有時是的,但不是經常的,生成的羣體沒有同齡人。

首先,你需要原始的.torrent文件,所以如果你只有磁鐵URI,你需要使用DHT將它解析爲.torrent。任何支持磁性URI的bittorrent庫都有該任務的代碼。

一旦你有了.torrent,你需要獲得與你感興趣的文件相關的哈希值.torrent文件包含一個非常長的字符串,每個20字節代表每個文件的哈希值。對於洪流,片段長度是固定的,通常在256KB到1MB之間。如果文件從一個偏移量開始,大小等於塊大小的倍數,或者是torrent中的最後一個文件,那麼您可以重複使用這些散列。然後,您可以使用該信息創建一個新的.torrent文件,並從torrent文件生成一個新的磁力URI,重新使用該通告或使用新的。

洪流信息結構:https://wiki.theory.org/BitTorrentSpecification#Metainfo_File_Structure

作爲幸運地獲得該偏移是不可能的,用一塊長度一般爲256KB & 1MB之間變化,你必須獲得該偏移的二十六萬二千一百四十四分之一到268435456分之1機會(因爲一個文件可以從一個地方開始),所以情況不太可能。如果你不能重複使用哈希,你需要生成新的哈希,這意味着你不能重新使用.torrent,並需要下載文件來生成新的哈希。

殺手是最後,創建的洪流有不同的info_hash。 info_hash是描述洪流的信息的散列,它是許多文件的描述,現在在你的新散列中是單個文件的描述,因此是一個新的洪流,所以沒有人可以從中汲取。同行根據info_hash收集成羣,如果您基於多文件洪流中的一個文件創建新的洪流,來自多文件洪流的同伴不知道它,並且不會從中汲取。

即使您有足夠的幸運來獲得正確的零件偏移量,您也可以創建一個沒有任何人共享文件的torrent。

那麼,你可以重新使用磁鐵URI,只需在torrent中指定一個文件名?不,描述BitTorrent如何使用磁性URI的BEP不包括此行爲。 http://www.bittorrent.org/beps/bep_0009.html

+0

謝謝,非常滿意的答案。我以爲是這樣,我只是想確定。 – 2013-05-04 18:32:21