网站首页
手机版

从种子文件中提取SHA1哈希,种子哈希怎么转

更新时间:2023-05-13 16:42作者:网友发布

从种子文件中提取SHA1哈希,种子哈希怎么转

我写了一段python代码,根据 .torrent文件 中的内容验证 下载文件 的哈希值。假设您要检查下载是否损坏,则可能会发现此功能有用。 __

您需要benpre包才能使用它。Benpre是.torrent文件中使用的序列化格式。它可以封送列表,字典,字符串和数字,就像JSON。

该代码采用info[‘pieces’]字符串中包含的哈希值:

torrent_file = open(sys.argv[1], “rb”)metainfo = benpre.bdepre(torrent_file.read())info = metainfo[‘info’]pieces = StringIO.StringIO(info[‘pieces’])

该字符串包含连续的20个字节的哈希值(每段一个)。然后,将这些哈希与磁盘文件碎片的哈希进行比较。

此代码的唯一复杂部分被处理多文件种子因为单个洪流 片 可以跨越多于一个文件 (内部BitTorrent的治疗多文件下载作为单个连续文件)。我正在使用生成器函数pieces_generator()将其抽象化。

您可能需要阅读BitTorrent规范以更详细地了解这一点。

完整代码如下:

import sys, os, hashlib, StringIO, benpredef pieces_generator(info): “””Yield pieces from download file(s).””” piece_length = info[‘piece length’] if ‘files’ in info: # yield pieces from a multi-file torrent piece = “” for file_info in info[‘files’]: path = os.sep.join([info[‘name’]] + file_info[‘path’]) print path sfile = open(path.depre(‘UTF-8’), “rb”) while True: piece += sfile.read(piece_length-len(piece)) if len(piece) != piece_length: sfile.close() break yield piece piece = “” if piece != “”: yield piece else: # yield pieces from a single file torrent path = info[‘name’] print path sfile = open(path.depre(‘UTF-8’), “rb”) while True: piece = sfile.read(piece_length) if not piece: sfile.close() return yield piecedef corruption_failure(): “””Display error message and exit””” print(“download corrupted”) exit(1)def main(): # Open torrent file torrent_file = open(sys.argv[1], “rb”) metainfo = benpre.bdepre(torrent_file.read()) info = metainfo[‘info’] pieces = StringIO.StringIO(info[‘pieces’]) # Iterate through pieces for piece in pieces_generator(info): # Compare piece hash with expected hash piece_hash = hashlib.sha1(piece).digest() if (piece_hash != pieces.read(20)): corruption_failure() # ensure we’ve read all pieces if pieces.read(): corruption_failure()if __name__ == “__main__”: main()

为您推荐

传智播客培训机构官网,传智播客培训机构官网阜阳

传智播客培训机构官网:https://www.itcast.cn。传智教育致力于高素质软件开发人才培养。旗下已涵盖黑马程序员、博学谷、传智汇、酷丁鱼少儿编程、传智专修学院、院校邦子品牌。现开设JavaEE、大数据、HTML&JS+前端、Python+数据分析、人工智能开发、UI/UE设计、软件测试、新媒体+短视频直播运营、产品经理、Linux云计算+运维开发智能机器人软件开发、电商视觉运营设计等

2023-05-13 16:43

2022年布莱顿大学艺术学院世界排名高不高,英国布莱顿大学艺术专业

英国布莱顿大学是一所古老的公立大学,建校史基本可以追溯到十九世纪,最初全称为布莱顿艺术学校,直到二十一世纪才正式更名为布莱顿大学,说明布莱顿艺术学院由来已久。布莱顿大学艺术学院世界排名2019年QS世界大学艺术设计学科排名第49名,英国排名第8位。2022年QS世界大学艺术设计学科排名第51-100位次,2021年QS世界大学艺术设计学科排名第51-100位次布莱顿大学艺术学院不仅仅是该校的王牌院

2023-05-13 16:22

如何报考报检员资格考试,报检员资格考试在哪报名

报检员资格考试主要测试应试者从事报检工作必备的业务知识水平和能力。考试合格人员取得《报检员资格证书》,可注册为代理报检单位报检员或自理报检单位报检员。那么如何报考报检员资格考试呢?一、报名流程报考人员须在网上提交报名申请,并到各地检验检疫机构公布的报考资格确认地点进行报考资格确认后,方可参加考试。(一)网上提交报名申请。(二)报考资格确认。1.考生可在各地检验检疫机构公布的地点办理报考资

2023-05-13 16:21

去马来西亚需要办理什么手续

品牌型号:HUAWEIMate40EPro系统版本:HarmonyOS3.0.0软件版本:支付宝10.3.26.8210马来西亚签证可在支付宝的更多进行办理。具体步骤如下:使用支付宝的更多进行办理1、点击更多打开支付宝,点击“首页-更多”。2、选择政务点击“政务”。3

2023-05-13 16:21

考研专业课考试时间,考研专业课考试时间安排

2021年考研时间是哪天?2022考研的小伙伴们,根据最新出台的《2022年全国硕士研究生招生工作管理规定》,2022年硕士研究生招生考试初试将在12月25日-12月26日举行,小编已为大家整理考研时间科目具体安排。2022年全国硕士研究生招生考试(初试)科目及时间安排:12月25日上午 思想政治理论、管理类综合能力12月25日下午 外国语12月26日上午 业务课一12月26日下午 业务

2023-05-13 15:32

湖北历年高考状元名单汇总,湖北历年高考状元名单汇总查询

百大专升本小编为您整理了湖北历年高考状元名单汇总(学校+分数)相关的内容如下:湖北历年高考状元名单汇总(学校+分数):2022-10-26 16:17:56 湖北历年高考状元名单:2022年湖北省状元分别是,华中师范大学附属第一中学理科(物理类)状元余文凯,702分;武汉外国语学校文科(历史类)状元王峥旭,673分。一、2022年湖北高考状元名单(学校+分数)2022湖北省高考状元出炉,裸分

2023-05-13 15:32

加载中...