红菊直播官方版-红菊直播免费版app下载-红菊直播永久免费版下载

從種子文件中提取SHA1哈希,種子哈希怎么轉

更新時間:2023-05-13 16:42作者:網(wǎng)友發(fā)布

從種子文件中提取SHA1哈希,種子哈希怎么轉

我寫了一段python代碼,根據(jù) .torrent文件 中的內容驗證 下載文件 的哈希值。假設您要檢查下載是否損壞,則可能會發(fā)現(xiàn)此功能有用。 __

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

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

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

該字符串包含連續(xù)的20個字節(jié)的哈希值(每段一個)。然后,將這些哈希與磁盤文件碎片的哈希進行比較。

此代碼的唯一復雜部分被處理多文件種子因為單個洪流 片 可以跨越多于一個文件 (內部BitTorrent的治療多文件下載作為單個連續(xù)文件)。我正在使用生成器函數(shù)pieces_generator()將其抽象化。

您可能需要閱讀BitTorrent規(guī)范以更詳細地了解這一點。

完整代碼如下:

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()

為您推薦

傳智播客培訓機構官網(wǎng),傳智播客培訓機構官網(wǎng)阜陽

傳智播客培訓機構官網(wǎng):https://www.itcast.cn。傳智教育致力于高素質軟件開發(fā)人才培養(yǎng)。旗下已涵蓋黑馬程序員、博學谷、傳智匯、酷丁魚少兒編程、傳智專修學院、院校邦子品牌?,F(xiàn)開設JavaEE、大數(shù)據(jù)、HTML&JS+前端、Python+數(shù)據(jù)分析、人工智能開發(fā)、UI/UE設計、軟件測試、新媒體+短視頻直播運營、產(chǎn)品經(jīng)理、Linux云計算+運維開發(fā)智能機器人軟件開發(fā)、電商視覺運營設計等

2023-05-13 16:43

2022年布萊頓大學藝術學院世界排名高不高,英國布萊頓大學藝術專業(yè)

英國布萊頓大學是一所古老的公立大學,建校史基本可以追溯到十九世紀,最初全稱為布萊頓藝術學校,直到二十一世紀才正式更名為布萊頓大學,說明布萊頓藝術學院由來已久。布萊頓大學藝術學院世界排名2019年QS世界大學藝術設計學科排名第49名,英國排名第8位。2022年QS世界大學藝術設計學科排名第51-100位次,2021年QS世界大學藝術設計學科排名第51-100位次布萊頓大學藝術學院不僅僅是該校的王牌院

2023-05-13 16:22

如何報考報檢員資格考試,報檢員資格考試在哪報名

報檢員資格考試主要測試應試者從事報檢工作必備的業(yè)務知識水平和能力??荚嚭细袢藛T取得《報檢員資格證書》,可注冊為代理報檢單位報檢員或自理報檢單位報檢員。那么如何報考報檢員資格考試呢?一、報名流程報考人員須在網(wǎng)上提交報名申請,并到各地檢驗檢疫機構公布的報考資格確認地點進行報考資格確認后,方可參加考試。(一)網(wǎng)上提交報名申請。(二)報考資格確認。1.考生可在各地檢驗檢疫機構公布的地點辦理報考資

2023-05-13 16:21

去馬來西亞需要辦理什么手續(xù)

品牌型號:HUAWEIMate40EPro系統(tǒng)版本:HarmonyOS3.0.0軟件版本:支付寶10.3.26.8210馬來西亞簽證可在支付寶的更多進行辦理。具體步驟如下:使用支付寶的更多進行辦理1、點擊更多打開支付寶,點擊“首頁-更多”。2、選擇政務點擊“政務”。3

2023-05-13 16:21

考研專業(yè)課考試時間,考研專業(yè)課考試時間安排

2021年考研時間是哪天?2022考研的小伙伴們,根據(jù)最新出臺的《2022年全國碩士研究生招生工作管理規(guī)定》,2022年碩士研究生招生考試初試將在12月25日-12月26日舉行,小編已為大家整理考研時間科目具體安排。2022年全國碩士研究生招生考試(初試)科目及時間安排:12月25日上午 思想政治理論、管理類綜合能力12月25日下午 外國語12月26日上午 業(yè)務課一12月26日下午 業(yè)務

2023-05-13 15:32

湖北歷年高考狀元名單匯總,湖北歷年高考狀元名單匯總查詢

百大專升本小編為您整理了湖北歷年高考狀元名單匯總(學校+分數(shù))相關的內容如下:湖北歷年高考狀元名單匯總(學校+分數(shù)):2022-10-26 16:17:56 湖北歷年高考狀元名單:2022年湖北省狀元分別是,華中師范大學附屬第一中學理科(物理類)狀元余文凱,702分;武漢外國語學校文科(歷史類)狀元王崢旭,673分。一、2022年湖北高考狀元名單(學校+分數(shù))2022湖北省高考狀元出爐,裸分

2023-05-13 15:32

加載中...