午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:16日期:2022-06-17 18:46:25
目錄項(xiàng)目地址:環(huán)境需求用法 Usage參數(shù) Parameters完整代碼項(xiàng)目地址:

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

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

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

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

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

#!/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批量解壓帶密碼的壓縮包的詳細(xì)內(nèi)容,更多關(guān)于python批量解壓壓縮包的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日本www黄| 久久久久在线视频 | 日本在线一级 | 国产第6页 | 久久久久黄色片 | 99精品一区 | 亚洲色图另类 | 国产一区免费看 | 亚欧成人 | 免费网站在线高清观看 | 天堂男人av | 国产在线v | 伊人久久亚洲 | 三级在线观看视频 | 国产精品资源站 | 亚洲综合另类小说 | 欧美日韩二区三区 | 91激情四射| 天天摸天天干 | 欧美激情久久久久久久 | 国产精品一区二区性色av | av 一区二区三区 | 亚洲最大av网 | 国产欧美精品区一区二区三区 | 欧美黄色大全 | 欧美日韩精选 | 亚洲一级黄色片 | 亚洲黄色免费网站 | 欧美一区二区三区在线播放 | 国产精品婷婷 | 免费一级黄 | 一级片高清 | 一级亚洲| 亚洲男人av | 久久国产精彩视频 | 国产色拍| 成人一区二区三区在线观看 | 日韩成人一区 | 亚洲欧美激情精品一区二区 | 国产一区视频在线 | 一区二区视频免费在线观看 |