IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> BT种子文件以及磁力文件 解析 -> 正文阅读

[网络协议]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'])            #还原info
    print('------------------------------')
    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后,就是磁力链接

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:33:55  更:2021-08-09 10:34:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:42:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码