Автоматическая распаковка защищенных паролем rar-файлов в python

недавно начал изучать python и возникла проблема.... Мне нужно разархивировать файл rar, который защищен паролем, но пароль прописан в имени файла, который в архиве. И так ~300 раз. Как, чем и где это можно реализовать? Например, есть архив 383442389.rar, в нем два файла, pass-1337643656.data (имя содержит пароль архива) и следующий архив)


person Igor Bezrodnyy    schedule 17.05.2020    source источник


Ответы (1)


Я не уверен во всем контексте вашего вопроса, но я постараюсь ответить вам.

  1. Вы сказали, что вам нужно разархивировать файл .rar, но это невозможно, если файл .rar, вам нужно разархивировать

  2. Если вам нужно просто разархивировать .zip

что-то вроде этого должно работать

from zipfile import ZipFile
with ZipFile('test1.zip', 'r') as myzip:
    myzip.extractall(pwd='<password>')
  1. В случае .rar

pip install rarfile (устанавливается только в python 3)

from rarfile import RarFile
with RarFile('test2.rar', 'r') as myrar:
    myrar.extractall(pwd='<password>')
  1. you mention that the password comes in the .rar like a name of file
    • pass-1337643656.data
    • вы можете перечислить имена файлов, используя

RarFile.namelist() Возвращает список членов архива по имени.

Таким образом, вы можете извлечь пароль, используя split

s = 'pass-1337643656.data'
s.split('-')[1].split('.')[0]
print(s)

'1337643656'

вы также можете использовать регулярное выражение для извлечения этого

Заключение.

Полное решение с использованием .rar может быть

from rarfile import RarFile
with RarFile('test2.rar', 'r') as myrar:
    file_names = myrar.namelist()
    pass_file = list(filter(lambda k: 'pass' in k, l))[0]
    pass = pass_file.split('-')[1].split('.')[0]
    myrar.extractall(pwd=pass)

Справочник.

person Cyberguille    schedule 17.05.2020
comment
Привет! Да, я немного ошибся со словами, нужен чехол с .rar. При этом мне еще нужно сделать выполнение кода до 300 раз (чтобы в C:\Users\Usero\Desktop появился только конечный результат). Все-таки как указать путь к test2.rar? Вот пример такого rar-файла, можете посмотреть по ссылке: myfile.is/h0325b00o8/Enclosed_rar (Также при компиляции возникает ошибка: Syntax error in C:\Users\Usero\script.py File C:\Users\script.py, строка 5 pass=pass_file..split('-')[1 ] .split ('.') [0] ^ SyntaxError: неверный синтаксис - person Igor Bezrodnyy; 18.05.2020
comment
@IgorBezrodnyy Я устанавливаю путь относительно текущей папки, где у меня есть мой скрипт, в этой строке с RarFile('test2.rar', 'r') as myrar:``, I you read the referece that I let you regarding to rarfile you can see the specification of the constructor of the object RarFile, as you can see here rarfile.RarFile(file[, mode='r'])```, где file должен быть путем к файлу - person Cyberguille; 18.05.2020
comment
По поводу синтаксической ошибки в сообщении видно 2 ненужных пункта pass_file..split ('-') [1] .split ('.') [0], возможно ошибка копирования и вставки, т.к. в ответе я не увидел этой ошибки, должно быть pass_file.split ('-') [1] .split ('.') [0] - person Cyberguille; 18.05.2020
comment
@IgorBezrodnyy Идея stackoverflow не в том, чтобы решить всю вашу проблему, просто уточнить что-то более конкретно, что, возможно, вы не знаете или странно, я знаю, что вы новый пользователь stackoverflow, я думаю, что вам нужно перепроверить эта страница stackoverflow.com/tour - person Cyberguille; 18.05.2020
comment
Это идеальный способ решить мою проблему! - person blueman010112; 16.06.2021