DHT,种子转磁力算法 种子info_hash 代码亲测
遇到的坑:
坑1:
python3 bencode讀種子解析老是出錯;虛擬環境裝了python2.7試驗;
坑2:pip bencode算出來的SHA1不對;
pip BitTorrent-bencode-5.0.8.1? ;成功;
#coding:utf-8 #! /usr/local/bin/pythonimport bencode import sys import hashlib import base64 import urllibtorrentName = "c:\\2.torrent"import sys, os, hashlib, StringIO import bencodedef main():# Open torrent filetorrent_file = open("C:\\2.torrent", "rb")print "1:解讀原文件去b代碼:torrent"metainfo = bencode.bdecode(torrent_file.read())print metainfoprint "2提出info信息4字段:"info = metainfo['info']print infoprint "還原info為B碼:即為4字段的BEN碼,相當于還原了"print bencode.bencode(info)print "最后把還原的4項B碼SHA1打印出來"print hashlib.sha1(bencode.bencode(info)).hexdigest()if __name__ == "__main__":main() d8:announce44:udp://tracker.openbittorrent.com:80/announce13:announce-listll44:udp://tracker.openbittorrent.com:80/announce42:udp://tracker.opentrackr.org:1337/announceee10:created by15:BitTorrent/7.1013:creation datei1570436813e8:encoding5:UTF-84:infod6:lengthi2008e4:name9:boost.txt12:piece lengthi16384e6:pieces20:fKáH-qUYlaz?ú?Maee64 38 3A 61 6E 6E 6F 75? 6E 63 65 34 34 3A 75 64
 70 3A 2F 2F 74 72 61 63? 6B 65 72 2E 6F 70 65 6E
 62 69 74 74 6F 72 72 65? 6E 74 2E 63 6F 6D 3A 38
 30 2F 61 6E 6E 6F 75 6E? 63 65 31 33 3A 61 6E 6E
 6F 75 6E 63 65 2D 6C 69? 73 74 6C 6C 34 34 3A 75
 64 70 3A 2F 2F 74 72 61? 63 6B 65 72 2E 6F 70 65
 6E 62 69 74 74 6F 72 72? 65 6E 74 2E 63 6F 6D 3A
 38 30 2F 61 6E 6E 6F 75? 6E 63 65 34 32 3A 75 64
 70 3A 2F 2F 74 72 61 63? 6B 65 72 2E 6F 70 65 6E
 74 72 61 63 6B 72 2E 6F? 72 67 3A 31 33 33 37 2F
 61 6E 6E 6F 75 6E 63 65? 65 65 31 30 3A 63 72 65
 61 74 65 64 20 62 79 31? 35 3A 42 69 74 54 6F 72
 72 65 6E 74 2F 37 2E 31? 30 31 33 3A 63 72 65 61
 74 69 6F 6E 20 64 61 74? 65 69 31 35 37 30 34 33
 36 38 31 33 65 38 3A 65? 6E 63 6F 64 69 6E 67 35
 3A 55 54 46 2D 38 34 3A? 69 6E 66 6F 64 36 3A 6C
 65 6E 67 74 68 69 32 30? 30 38 65 34 3A 6E 61 6D
 65 39 3A 62 6F 6F 73 74? 2E 74 78 74 31 32 3A 70
 69 65 63 65 20 6C 65 6E? 67 74 68 69 31 36 33 38
 34 65 36 3A 70 69 65 63? 65 73 32 30 3A 66 4B C1
 48 2D 11 71 55 DD 6C E2? 7A D8 0F DA 87 D1 4D 9C
 61 65 65
?
以上為種子文件內容;
F:\DHT\maga\venv\Scripts\python.exe F:/DHT/maga/main.py 1:解讀原文件去b代碼:torrent {'info': {'length': 2008, 'piece length': 16384, 'name': 'boost.txt', 'pieces': 'fK\xc1H-\x11qU\xddl\xe2z\xd8\x0f\xda\x87\xd1M\x9ca'}, 'encoding': 'UTF-8', 'creation date': 1570436813, 'announce-list': [['udp://tracker.openbittorrent.com:80/announce', 'udp://tracker.opentrackr.org:1337/announce']], 'created by': 'BitTorrent/7.10', 'announce': 'udp://tracker.openbittorrent.com:80/announce'} 2提出info信息4字段: {'length': 2008, 'piece length': 16384, 'name': 'boost.txt', 'pieces': 'fK\xc1H-\x11qU\xddl\xe2z\xd8\x0f\xda\x87\xd1M\x9ca'} 還原info為B碼:即為4字段的BEN碼,相當于還原了 d6:lengthi2008e4:name9:boost.txt12:piece lengthi16384e6:pieces20:fK�H-qU�l�z�?�M�ae 最后把還原的4項B碼SHA1打印出來 dc4f72c5a12e43ea1035aff589166fd4b268b85aProcess finished with exit code 0運行結果;
磁力鏈接:magnet:?xt=urn:btih:~加上上面的DC碼就是了;
d6:lengthi2008e4:name9:boost.txt12:piece lengthi16384e6:pieces20:fKáH-qUYlaz?ú?Mae
把這段SH1就是種子的info_hash了;
?
總結
以上是生活随笔為你收集整理的DHT,种子转磁力算法 种子info_hash 代码亲测的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: java实现医嘱管理系统_Chis5.0
 - 下一篇: 超详细linux部署ecshop流程