电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

用python批量解壓帶密碼的壓縮包

瀏覽:6日期:2022-06-17 18:46:25
目錄項目地址:環境需求用法 Usage參數 Parameters完整代碼項目地址:

https://github.com/Mario-Hero/toolUnRar

環境需求 Windows系統 Python 3 對于解壓RAR文件,需要安裝WinRAR 對于解壓7z/zip等其他7-Zip支持解壓的文件,需要安裝7-Zip用法 Usage

直接拖入文件夾或壓縮文件即可批量解壓縮包含密碼的壓縮文件。如果拖入的是文件夾,則會把該文件夾下的壓縮文件解壓縮,但不進入下一級目錄。通過設置PASSWD來設置字典,通過設置DELETEIT來設置解壓后是否刪除被成功解壓的壓縮文件。本腳本會通過文件的后綴識別該文件是否為壓縮文件。

你可以把WinRAR目錄下的Unrar.exe和7-Zip目錄下的7z.exe直接復制到這個toolUnRar.py文件的相同目錄下,這樣就可以攜帶使用了。

參數 Parameters PASSWD = ['hello','123456'] :你的密碼本,該腳本會從這個數組中不斷試驗密碼來解壓縮,直到成功為止。 DELETEIT :一個危險的參數。為真時,該腳本會直接刪除成功解壓的壓縮文件。為假則不會刪除。 LOC_WINRAR = 'C:Program FilesWinRAR' 你的WinRAR安裝位置。就算這個變量的設置的不對,該程序也會在可能的位置來尋找對應的程序。 LOC_7Z:7-Zip的安裝位置。 SAVE_MODE = True:如果該腳本無法通過后綴判斷這是不是壓縮文件,則不對該文件進行操作。完整代碼

#!/usr/bin/python3# -*- coding: UTF-8 -*-# Created by Mario Chen, 04.04.2021, Shenzhen# My Github site: https://github.com/Mario-Heroimport sysimport osimport subprocess# you can change it >>>>>PASSWD = ['123456','hello'] # the possible passwordsDELETEIT = False # DANGER!! If it is True,will delete rar file after extractionLOC_WINRAR = 'C:Program FilesWinRAR' # location of WinRARLOC_7Z = 'C:Program Files7-Zip' # location of 7-ZipSAVE_MODE = True # if the suffix of file doesn’t look like a compressed file, then do nothing with it.# <<<<< you can change itPROGRAM_RAR = 'UnRAR.exe' # the program we usePROGRAM_7Z = '7z.exe' # the program we useLOC_S_WINRAR = ['C:Program FilesWinRAR','C:Program Files (x86)WinRAR','./',''] # some possible locations of WinRARLOC_S_7Z = ['C:Program Files7-Zip','C:Program Files (x86)7-Zip','./',''] # some possible locations of 7-ZipRAR_FILE = ['rar','zip','7z','tar','gz','xz','bzip2','gzip','wim','arj','cab','chm','cpio','cramfs','deb','dmg','fat','hfs','iso','lzh','lzma','mbr','msi','nsis','ntfs','rpm','squashfs','udf','vhd','xar','z']NOT_RAR_FILE = ['jpg','exe','png','mkv','mp4','mp3','avi','mov','jpeg','wav','gif','mpeg','webp','txt','doc','docx','ppt','pptx','xls','xlsx','html','wps','torrent','swf','bmp','crdownload','xltd','downloading']ENABLE_RAR = False # initial state onlyENABLE_7Z = False # initial state only# for guessing >>>GUESS_FLAG_INIT = ['密碼', '碼', 'password', 'Password'] #0GUESS_FLAG_START_1 = [':', ':'] #1GUESS_FLAG_START_2 = ['是', '為', 'is', 'are',' '] #1GUESS_FLAG_END = ['n',' '] #2GUESS_FLAG_DIVIDE = ['或是', '或', ' or '] #3# <<< for guessingdef guessWDComment(comment): guess_flag = 0 guess_wd: list[str] = [] guess_ps = 0 cutIn = 0 cutOut = 0 while True:if guess_flag == 0: guess_newPs = len(comment) guess_len = 0 for initStr in GUESS_FLAG_INIT:ps_temp = comment.find(initStr, guess_ps)if ps_temp == -1: continueelse: if ps_temp<guess_newPs:guess_newPs = ps_tempguess_len = len(initStr) if guess_newPs == len(comment):if not guess_wd: cutIn = 0 cutOut = len(comment) guess_flag = 3else: break else:guess_ps = guess_newPs + guess_lenguess_flag = 1elif guess_flag == 1: found_temp = False found_temp_2 = False guess_newPs = len(comment) for startStr in GUESS_FLAG_START_1:ps_temp = comment.find(startStr, guess_ps, guess_ps + 20)if ps_temp == -1: continueelse: if ps_temp < guess_newPs:found_temp = Trueguess_newPs = ps_temp + len(startStr)guess_flag = 2 if found_temp:guess_ps = guess_newPscutIn = guess_pscontinue else:guess_newPs = len(comment)for startStr in GUESS_FLAG_START_2: ps_temp = comment.find(startStr, guess_ps, guess_ps + 20) if ps_temp == -1:continue else:if ps_temp < guess_newPs: found_temp_2 = True guess_newPs = ps_temp + len(startStr) guess_flag = 2 if found_temp_2:guess_ps = guess_newPs cutIn = guess_ps guess_flag = 2elif guess_flag == 2: guess_newPs = len(comment) for endStr in GUESS_FLAG_END:ps_temp = comment.find(endStr, guess_ps)if ps_temp == -1: continueelse: if ps_temp < guess_newPs:guess_newPs = ps_temp guess_ps = guess_newPs guess_flag = 3 cutOut = guess_pselif guess_flag == 3: found_cut_temp = False for divideStr in GUESS_FLAG_DIVIDE:if comment.find(divideStr, cutIn, cutOut) != -1: found_cut_temp = True for wd in comment[cutIn:cutOut].split(divideStr):guess_wd.append(wd.strip()) break if not found_cut_temp:guess_wd.append(comment[cutIn:cutOut].strip()) guess_flag = 0else: guess_flag = 0 return guess_wddef isCompressedFile(file): file = file.lower() for rar in RAR_FILE:if file.endswith('.' + rar): return True for media in NOT_RAR_FILE:if file.endswith('.' + media): return False return not SAVE_MODEdef utfIsNumber(uchar): return uchar >= u’u0030’ and uchar<=u’u0039’def winRarDo(folder, file, wd): extractStr = ' x -y -p' + wd + ' '' + folder + '' + file + '' '' + folder + ''' extM = subprocess.call('@''+LOC_WINRAR+PROGRAM_RAR+'''+extractStr,shell=True) if extM == 1: # not rar filereturn 2 elif extM == 11: # wrong passwordreturn 1 elif extM != 0: # errorreturn 1 else:return 0def z7Do(folder, file, wd): extractStr = ' x -y -p' + wd + ' '' + folder + '' + file + '' -o'' + folder + ''' extM = subprocess.call('@''+LOC_7Z+PROGRAM_7Z+'''+extractStr,shell=True) if extM !=0: # errorreturn 1 else:return 0def unrarFile(folder, file): successThisFile = False fileNameEncrypted = True if not folder:cutPos = file.rindex('')folder = file[:cutPos]file = file[cutPos+1:]#print(folder)#print(file) if ENABLE_RAR and file.endswith('.rar'):winRarReturn = winRarDo(folder, file, PASSWD[0])#print(winRarReturn)if winRarReturn == 0: #successThisFile = True return Trueelif winRarReturn == 2: passelse: getCommentStr = ' l -p0 -z' + ' '' + folder + '' + file + ''' commentNumber = subprocess.call('@''+LOC_WINRAR+PROGRAM_RAR+'''+getCommentStr,shell=True) #commentNumber = 1 if commentNumber == 0:commentM = subprocess.getstatusoutput('@''+LOC_WINRAR+PROGRAM_RAR+'''+getCommentStr)if commentM[0] == 0: fileNameEncrypted = False comment = commentM[1][(commentM[1].index('nn')+2):commentM[1].index(folder)] comment = comment[0:comment.rindex('nn')] #print(comment) if comment:wdArray = guessWDComment(comment)print('Possible passwords:', wdArray)for wd in wdArray: winRarReturn = winRarDo(folder, file, wd) if winRarReturn == 1:continue elif winRarReturn == 0:successThisFile = Truebreak elif winRarReturn == 2:break else:break if successThisFile:return True for index in range(1,len(PASSWD)):winRarReturn = winRarDo(folder, file, PASSWD[index])if winRarReturn == 1: continueelif winRarReturn == 0: successThisFile = True PASSWD[0],PASSWD[index]=PASSWD[index],PASSWD[0] breakelif winRarReturn == 2: breakelse: breakif not successThisFile:if ENABLE_7Z: for index in range(len(PASSWD)):z7Return = z7Do(folder, file, PASSWD[index])if z7Return == 1: continueelse: successThisFile = True PASSWD[0],PASSWD[index]=PASSWD[index],PASSWD[0] break if not successThisFile: print('Failed:'+file) return successThisFiledef unrar(folder): if os.path.isdir(folder):print(folder)file_list = os.listdir(folder)for file in file_list: if os.path.isdir(folder + '/' + file):#print(folder +'/'+ file)#unrar(folder +'/'+file)pass else:if isCompressedFile(file): if unrarFile(folder, file):if DELETEIT: os.remove(folder + '/' + file) else:if isCompressedFile(folder): if unrarFile('', folder):if DELETEIT: os.remove(folder) if __name__ == ’__main__’: if len(sys.argv) <= 1:sys.exit(1) testRar = os.popen('''+LOC_WINRAR+PROGRAM_RAR+''').read()if not testRar: for loc in LOC_S_WINRAR: testRar = os.popen('''+loc+PROGRAM_RAR+''').read() if testRar: LOC_WINRAR = loc ENABLE_RAR = True break else:ENABLE_RAR = True test7z = os.popen('''+LOC_7Z+PROGRAM_7Z+''').read()if not test7z: for loc in LOC_S_7Z: test7z = os.popen('''+loc+PROGRAM_7Z+''').read() if test7z: LOC_7Z = loc ENABLE_7Z = True break else:ENABLE_7Z = True if (not ENABLE_RAR) and (not ENABLE_7Z):print('Cannot find winRAR and 7-zip')sys.exit(1) while len(PASSWD) < 2:PASSWD.append('0') for folder in sys.argv[1:]:#print(folder)unrar(folder) print('Finish.') #subprocess.call('pause',shell=True) sys.exit(0)

以上就是用python批量解壓帶密碼的壓縮包的詳細內容,更多關于python批量解壓壓縮包的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 首页_中夏易经起名网 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 深圳市源和塑胶电子有限公司-首页 | 电镀标牌_电铸标牌_金属标贴_不锈钢标牌厂家_深圳市宝利丰精密科技有限公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 隧道烘箱_隧道烘箱生产厂家-上海冠顶专业生产烘道设备 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 湖南教师资格网-湖南教师资格证考试网| 北京中创汇安科贸有限公司| 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 钢结构-钢结构厂房-钢结构工程[江苏海逵钢构厂] | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 番茄畅听邀请码怎么输入 - Dianw8.com | 窖井盖锯圆机_锯圆机金刚石锯片-无锡茂达金刚石有限公司 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 天然气分析仪-液化气二甲醚分析仪|传昊仪器| 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 |