校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > 用python批量解壓帶密碼的壓縮包

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

熱門(mén)標(biāo)簽:北瀚ai電銷(xiāo)機(jī)器人官網(wǎng)手機(jī)版 小蘇云呼電話(huà)機(jī)器人 北京電銷(xiāo)外呼系統(tǒng)加盟 市場(chǎng)上的電銷(xiāo)機(jī)器人 佛山400電話(huà)辦理 地圖標(biāo)注面積 所得系統(tǒng)電梯怎樣主板設(shè)置外呼 朝陽(yáng)手機(jī)外呼系統(tǒng) 儋州電話(huà)機(jī)器人

項(xiàng)目地址:

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

環(huán)境需求

  • Windows系統(tǒng)
  • Python 3
  • 對(duì)于解壓RAR文件,需要安裝WinRAR
  • 對(duì)于解壓7z/zip等其他7-Zip支持解壓的文件,需要安裝7-Zip

用法 Usage

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

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

參數(shù) Parameters

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

完整代碼

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

# Created by Mario Chen, 04.04.2021, Shenzhen
# My Github site: https://github.com/Mario-Hero

import sys
import os
import subprocess

# you can change it >>>>>

PASSWD     = ["123456","hello"]  # the possible passwords
DELETEIT   = False                                     # DANGER!! If it is True,will delete rar file after extraction
LOC_WINRAR = "C:\\Program Files\\WinRAR\\"              # location of WinRAR
LOC_7Z     = "C:\\Program Files\\7-Zip\\"               # location of 7-Zip
SAVE_MODE  = True                                       # if the suffix of file doesn't look like a compressed file, then do nothing with it.

#  you can change it


PROGRAM_RAR  = "UnRAR.exe" # the program we use
PROGRAM_7Z   = "7z.exe"    # the program we use
LOC_S_WINRAR = ["C:\\Program Files\\WinRAR\\","C:\\Program Files (x86)\\WinRAR\\","./",""] # some possible locations of WinRAR
LOC_S_7Z     = ["C:\\Program Files\\7-Zip\\","C:\\Program Files (x86)\\7-Zip\\","./",""]   # some possible locations of 7-Zip
RAR_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 only
ENABLE_7Z = False          # initial state only

# for guessing >>>
GUESS_FLAG_INIT     = ["密碼", "碼", "password", "Password"]    #0
GUESS_FLAG_START_1  = [":", ":"]                            #1
GUESS_FLAG_START_2  = ["是", "為", "is", "are"," "]          #1
GUESS_FLAG_END      = ["\n","   "]                           #2
GUESS_FLAG_DIVIDE   = ["或是", "或", " or "]                 #3
#  for guessing


def 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:
                    continue
                else:
                    if ps_tempguess_newPs:
                        guess_newPs = ps_temp
                        guess_len = len(initStr)
            if guess_newPs == len(comment):
                if not guess_wd:
                    cutIn = 0
                    cutOut = len(comment)
                    guess_flag = 3
                else:
                    break
            else:
                guess_ps = guess_newPs + guess_len
                guess_flag = 1
        elif 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:
                    continue
                else:
                    if ps_temp  guess_newPs:
                        found_temp = True
                        guess_newPs = ps_temp + len(startStr)
                        guess_flag = 2
            if found_temp:
                guess_ps = guess_newPs
                cutIn = guess_ps
                continue
            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 = 2
        elif guess_flag == 2:
            guess_newPs = len(comment)
            for endStr in GUESS_FLAG_END:
                ps_temp = comment.find(endStr, guess_ps)
                if ps_temp == -1:
                    continue
                else:
                    if ps_temp  guess_newPs:
                        guess_newPs = ps_temp
            guess_ps = guess_newPs
            guess_flag = 3
            cutOut = guess_ps
        elif 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 = 0
        else:
            guess_flag = 0
    return guess_wd


def 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_MODE


def 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 file
        return 2
    elif extM == 11: # wrong password
        return 1
    elif extM != 0:  # error
        return 1
    else:
        return 0


def 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: # error
        return 1
    else:
        return 0


def 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 True
        elif winRarReturn == 2:
            pass
        else:
            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("\n\n")+2):commentM[1].index(folder)]
                    comment = comment[0:comment.rindex("\n\n")]
                    #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 = True
                                break
                            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:
                    continue
                elif winRarReturn == 0:
                    successThisFile = True
                    PASSWD[0],PASSWD[index]=PASSWD[index],PASSWD[0]
                    break
                elif winRarReturn == 2:
                    break
                else:
                    break
            
    if not successThisFile:
        if ENABLE_7Z:
            for index in range(len(PASSWD)):
                z7Return = z7Do(folder, file, PASSWD[index])
                if z7Return == 1:
                    continue
                else:
                    successThisFile = True
                    PASSWD[0],PASSWD[index]=PASSWD[index],PASSWD[0]
                    break
                     
    if not successThisFile: 
        print("Failed:"+file)
    return successThisFile


def 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批量解壓壓縮包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 使用 Python 破解壓縮文件的密碼的思路詳解
  • Python3壓縮和解壓縮實(shí)現(xiàn)代碼
  • python解壓zip包中文亂碼解決方法
  • Python在后臺(tái)自動(dòng)解壓各種壓縮文件的實(shí)現(xiàn)方法
  • python 實(shí)現(xiàn)壓縮和解壓縮的示例
  • Python實(shí)現(xiàn)加密的RAR文件解壓的方法(密碼已知)
  • Python實(shí)現(xiàn)文件壓縮和解壓的示例代碼
  • Python腳本破解壓縮文件口令實(shí)例教程(zipfile)
  • 文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式
  • Python解壓 rar、zip、tar文件的方法
  • python批量解壓zip文件的方法

標(biāo)簽:云南 龍巖 酒泉 江蘇 定西 商丘 寧夏 金融催收

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用python批量解壓帶密碼的壓縮包》,本文關(guān)鍵詞  用,python,批量,解壓,帶,密碼,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用python批量解壓帶密碼的壓縮包》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于用python批量解壓帶密碼的壓縮包的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国内国产精品久久| 99国产精品国产精品毛片| 国产人成亚洲第一网站在线播放| 91免费在线看| 久久99精品久久只有精品| 一区二区三区资源| 日本一区二区三区国色天香 | 国产欧美一区二区在线观看| 在线精品视频小说1| 国产成人免费视频精品含羞草妖精| 亚洲图片欧美色图| 亚洲人成伊人成综合网小说| 久久先锋影音av| 欧美一区二区三区视频在线 | 日韩福利视频导航| 最新高清无码专区| 国产亚洲欧美激情| 日韩视频在线一区二区| 在线精品观看国产| 91免费版在线看| 不卡高清视频专区| 成人午夜大片免费观看| 久久66热偷产精品| 久久精品99国产国产精| 成人av资源站| 国产1区2区3区精品美女| 久久99精品久久久久久| 日韩高清不卡一区二区三区| 午夜影视日本亚洲欧洲精品| 亚洲乱码中文字幕| 中文字幕亚洲在| 国产精品欧美久久久久一区二区 | 欧美日韩日日摸| 欧美在线观看禁18| 日本韩国精品一区二区在线观看| 99re成人在线| 色老汉av一区二区三区| 色婷婷av一区二区| 欧美偷拍一区二区| 欧美美女直播网站| 在线成人高清不卡| 9191久久久久久久久久久| 欧美日韩国产另类不卡| 欧美日韩高清一区| 555www色欧美视频| 日韩一区二区中文字幕| 精品精品国产高清a毛片牛牛| 亚洲精品一区二区精华| 国产婷婷色一区二区三区四区| 久久久久久久久伊人| 国产女人aaa级久久久级| 国产日韩v精品一区二区| 国产精品久久久久久久久久久免费看| 国产欧美精品在线观看| 日本一区二区久久| 一区二区三区日韩| 日韩不卡免费视频| 麻豆国产一区二区| 国产91露脸合集magnet| 91热门视频在线观看| 欧美日韩国产首页| 26uuu成人网一区二区三区| 国产女主播一区| 洋洋成人永久网站入口| 全国精品久久少妇| 777午夜精品免费视频| 精品国产一区二区三区不卡| 中文字幕 久热精品 视频在线| 一区二区三区免费网站| 蜜臀av一区二区在线观看| 国产精品系列在线观看| 91在线免费播放| 在线电影一区二区三区| 国产午夜精品久久| 亚洲精品中文字幕乱码三区 | 成人福利电影精品一区二区在线观看 | 亚洲一区二区三区激情| 美女视频一区二区| 播五月开心婷婷综合| 欧美日韩国产高清一区二区三区 | 国产酒店精品激情| 99视频一区二区| 欧美一区二区三区在| 中文在线一区二区| 日韩综合小视频| 国产99久久久国产精品潘金| 在线亚洲免费视频| 久久久亚洲精华液精华液精华液 | 亚洲精品美国一| 极品少妇一区二区| 欧美中文字幕一二三区视频| 欧美大片免费久久精品三p| 中文字幕日韩精品一区| 欧日韩精品视频| 国产网站一区二区| 日韩va亚洲va欧美va久久| 91在线国产福利| 久久久亚洲精品一区二区三区 | 亚洲色图欧美激情| 极品少妇xxxx精品少妇偷拍| 91久久线看在观草草青青| 久久久国产午夜精品| 午夜精品福利在线| gogo大胆日本视频一区| 欧美成人a∨高清免费观看| 一区二区在线电影| 成人黄色av电影| 久久亚洲一级片| 日韩国产高清在线| 欧洲中文字幕精品| 最新久久zyz资源站| 国产一区二区免费视频| 欧美一区日韩一区| 一区二区三区中文在线观看| 成人sese在线| 国产欧美一区二区三区鸳鸯浴| 奇米影视在线99精品| 欧美日韩一区国产| 亚洲激情自拍偷拍| 91香蕉视频黄| 中文字幕一区在线观看| 国产成人精品影视| www国产精品av| 久久99国产精品免费网站| 欧美精品黑人性xxxx| 亚洲成人av一区二区| 欧美性大战久久| 亚洲制服丝袜在线| 欧洲色大大久久| 亚洲精品免费视频| 91丨九色丨蝌蚪丨老版| 国产精品三级av在线播放| 国产成人av自拍| 欧美国产1区2区| 成人黄色小视频| 亚洲视频一区在线| 色婷婷综合激情| 亚洲精品乱码久久久久久久久 | 91国产福利在线| 夜夜亚洲天天久久| 欧美午夜一区二区三区| 夜夜揉揉日日人人青青一国产精品| 色综合中文字幕国产| 国产精品久久三区| a级精品国产片在线观看| 中文字幕日韩一区| 91国产成人在线| 午夜精品123| 91精品国产91久久综合桃花| 欧美96一区二区免费视频| 日韩美女在线视频| 国模一区二区三区白浆| 久久久久久日产精品| 大白屁股一区二区视频| 亚洲私人黄色宅男| 欧美性猛交xxxx乱大交退制版| 亚洲国产精品久久一线不卡| 欧美乱熟臀69xxxxxx| 麻豆91精品视频| 国产色婷婷亚洲99精品小说| 丁香六月久久综合狠狠色| 中文字幕日本乱码精品影院| 欧美在线啊v一区| 蜜臀av性久久久久蜜臀av麻豆 | 午夜精品久久一牛影视| 日韩你懂的电影在线观看| 国产精品亚洲一区二区三区在线 | 一区二区日韩av| 制服丝袜一区二区三区| 国产伦精品一区二区三区视频青涩| 亚洲国产精品成人综合| 日本韩国欧美国产| 久久狠狠亚洲综合| 亚洲日穴在线视频| 91精品视频网| 波波电影院一区二区三区| 亚洲一区二区三区在线播放| 日韩视频在线永久播放| 99视频精品全部免费在线| 日韩不卡在线观看日韩不卡视频| 久久综合五月天婷婷伊人| 91丨porny丨国产入口| 日韩av中文在线观看| 中文字幕免费一区| 欧美日韩视频一区二区| 国产a久久麻豆| 亚洲成人tv网| 国产精品欧美一级免费| 日韩午夜激情电影| 91一区二区三区在线播放| 看电视剧不卡顿的网站| 亚洲美女视频在线观看| 久久久久国产精品麻豆ai换脸| 欧美三级一区二区| 国产成人一级电影| 日韩精品电影一区亚洲| 亚洲情趣在线观看| 久久亚洲综合色一区二区三区 | 精品国精品自拍自在线| 欧美视频在线观看一区二区|