BT种子文件以及磁力文件 解析
新建一个文本文件 ,文件 内容 为123456,用Bittorrent客户端制作种子文件 :
d8:announce44:udp://tracker.openbittorrent.com:80/announce13:announce-listll44:udp://tracker.openbittorrent.com:80/announceel42:udp://tracker.opentrackr.org:1337/announceee7:comment18:this is a comment.10:created by17:BitTorrent/7.10.513:creation datei1628327795e8:encoding5:UTF-84:infod6:lengthi6e4:name7:dos.txt12:piece lengthi16384e6:pieces20:|J Ê7b¯aå• ”=Âd”ø”ee
64 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 65 6C 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 37 3A 63 6F 6D 6D 65 6E 74 31 38 3A 74 68 69 73 20 69 73 20 61 20 63 6F 6D 6D 65 6E 74 2E 31 30 3A 63 72 65 61 74 65 64 20 62 79 31 37 3A 42 69 74 54 6F 72 72 65 6E 74 2F 37 2E 31 30 2E 35 31 33 3A 63 72 65 61 74 69 6F 6E 20 64 61 74 65 69 31 36 32 38 33 32 37 37 39 35 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 36 65 34 3A 6E 61 6D 65 37 3A 64 6F 73 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 7C 4A 8D 09 CA 37 62 AF 61 E5 95 20 94 3D C2 64 94 F8 94 1B 65 65
上面为对应文本,下面为对应的16进制源;可见,种子文件是bencode编码的,这个种子文件的info_hash磁力算法:涉及以下几个字段,就是info字典,但要重新sha1,需要解码
infod6:lengthi6e4:name7:dos.txt12:piece lengthi16384e6:pieces20:|J Ê7b¯aå• ”=Âd”ø”ee
def torrent_file_to_magnet(torrent_file):data = open(torrent_file, 'rb').read() #读文件 metadata = bencode.bdecode(data) #bcode解码还原print('------------------------------')print(metadata['info']) #还原infoprint('------------------------------')name = metadata['info']['name']#metadata['info']['name']='x' #假设更改name字段,看是否变,事实上,变了print(metadata['info']['name'])dn = quote(name)info_bts = bencode.bencode(metadata['info'])info_hash = hashlib.sha1(info_bts).hexdigest()return f'magnet:?xt=urn:btih:{info_hash}&dn={dn}'#输出的metadate['info']
OrderedDict([('length', 6), ('name', 'dos.txt'), ('piece length', 16384), ('pieces', b'|J\x8d\t\xca7b\xafa\xe5\x95 \x94=\xc2d\x94\xf8\x94\x1b')])
也就是说,种子文件是 length,name,pice length,pieces这几个字段经过bencode后,最后sha1算法得到的;解,编,实际上,就是info字段sha1后的结果;
d6:lengthi2715254784e4:name30:ubuntu-20.04-desktop-amd64.iso12:piece lengthi1048576e6:pieces51800:
在种子文件中,从info后开始,尾部去e(多了一个e;);这段内容,经sha1编码,就是info_hash;就是磁力链接
res = '123456'print(hashlib.sha1(res.encode('utf-8')).hexdigest())
//输出:
7c4a8d09ca3762af61e59520943dc26494f8941b
上面的输出 就是文本文件 123456的piceces内容对应:7C 4A 8D 09 CA 37 62 AF 61 E5 95 20 94 3D C2 64 94 F8 94 1B ,也就是最上面的种子文件 的内容;
把d6:lengthi6e4:name7:dos.txt12:piece lengthi16384e6:pieces20:|J Ê7b¯aå• ”=Âd”ø”这段内容sha1后,就是磁力链接
BT种子文件以及磁力文件 解析相关推荐
- python编程入门指南磁力下载-实战Python语言实现BT种子转化为磁力链接
本文主要向大家介绍了实战Python语言实现BT种子转化为磁力链接,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力 ...
- Python实现BT种子转化为磁力链接【实战】
经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...
- 用Python实现BT种子转化为磁力链接
经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...
- python编程入门指南磁力下载-Python实现BT种子转化为磁力链接【实战】
经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...
- Python基础项目实战:实现BT种子转化为磁力链接
经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...
- 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别
文章目录 参考资料 序言 中心化下载 http/https下载 ftp/sftp下载 http与ftp下载方式的不同 中心化下载的缺点 去中心化下载 BT种子下载 磁力下载 ed2k下载 推荐的下载器 ...
- 一文读懂Bt种子、磁力链接、直链、p2p这些下载的区别
什么是直链 什么是Bt种子 什么是磁力 什么是p2p 它们有什么区别,原理分别是什么 我们先说什么是直链 直链就是直接从服务器下载数据 他是我们日常生活中最最最常见的下载方式 我们从应用商店下载软件 ...
- # 解析bt文件_磁力链接和BT种子使用方法
目前用的最多的是磁力链接和BT种子,不过好多人并不太会使用,因此写个教程给大家说明一下. 何为磁力链接:简单地说,磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如http://x ...
- B编码与BT种子文件分析,以及模仿json-cpp写一个B编码解析器
B编码与BT种子文件分析,以及模仿json-cpp写一个B编码解析器 1.什么是B编码 2.B编码格式 3.种子文件结构 3.1.主文件结构 3.2.info结构 4.简单的例子了解一下种子文件和B编 ...
- python下载bt文件_python获取bt种子的详细信息
bt种子具体文件结构如下: 全部内容必须都为bencoding编码类型. 整个文件为一个字典结构,包含如下关键字 announce:tracker服务器的URL(字符串) announce-list( ...
最新文章
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
- Visual Studio“Orcas”October 2006 CTP版下载
- Vue + SpringBoot跨域
- NERDTree 快捷键辑录
- 智能优化算法:世界杯优化算法-附代码
- en55032最新标准下载_欧盟新EMC标准EN55032将强制实施
- linux打印机驱动教程视频,Linux打印机配置wmv视频教程
- EEGLAB预处理脑电数据
- SecureCRT无法使用Zmodem上传下载文件
- 如何设置html背景,如何给html设置背景
- sigar(System Information Gatherer And Reporter)简介
- Windows下自动云备份思源笔记到Gitee
- wamp5数据库密码修改
- Vue 项目处理每次发版后要清理浏览器缓存
- 单模、多模有什么区别
- one-hot表示和分布式表示
- 【FFmpeg】做一个抖音/快手视频模板常用哪些功能
- [30期] 个人职业规划
- nanomsg(4) :pub/sub 模式
- 软件设计师(软件工程)
热门文章
- 【EPS精品教程】EPS2016三维测图版安装教程(附EPS2016安装包下载地址)
- 南方cass简码识别大全_cass简码识别教程.doc
- 程序设计语言编译原理-陈火旺(第三版)简答题复习
- git代码比较,没有差异却显示出来
- Repast——Agent对象换成图标和显示属性问题
- 《机器人学基础》整理(1)
- mysql数据库程序设计实例_mysql数据库编程精华案例347个(知此347个例子,便是高手矣)...
- Flash MX 认证考试(样题)
- 互联的情怀 凝成一股绳共同成长
- 计算机那种专业包括vr,VR技术的大学专业有哪些