Взлом ZIP методом перебора на Python

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Продолжим изучать и использовать Python в ИБ. В этой статье мы напишем программу на Python для взлома пароля zip-архива, с помощью брутфорса (перебор пароля).

Еще по теме: Асимметричное шифрование с помощью Python

Иногда попадаются защищенные паролем архивы Zip. Если был использован простой ненадежный пароль, то его легко взломать с помощью атаки брутфорс.

Брутфорс (от англ. brute force — грубая сила) — метод подбора пароля (или ключа, используемого для шифрования), предполагающий систематический перебор всех возможных комбинаций символов. Он может занять много времени, если используется большой словарь, с большим количеством возможных вариантов пароля.

Для перебора будем использовать популярный словарь для брута «rockyou».

Использование Python для взлома пароля ZIP

  1. Сначала импортируйте библиотеку zipfile.
  2. Инициализируйте объект ZipFile, который помогает извлекать содержимое zip-файла.
  3. Подсчитайте количество слов, присутствующих в файле «rockyou.txt», и отобразите его в терминале.
  4. Вызовите функцию «crack_password», которая возвращает true, если пароль найден, иначе возвращает false. Передайте имя текстового файла и объект ZipFile в качестве параметров.
  5. Переменная idx используется для отслеживания номеров строк.
  6. Откройте текстовый файл «rockyou.txt» в режиме « rb», чтобы обрабатывать содержимое файла в двоичной форме. Это связано с тем, что файл содержит некоторые специальные символы, которые не могут быть обработаны, если файл открыт в режиме « r» и будет генерировать UnicodeDecodeError.
  7. После открытия файла извлеките строку из файла, а затем отделите от нее слово.
  8. В блоке try извлеките содержимое zip-файла, указав пароль в поле pwd метода extractall. Метод extractall() извлечет все содержимое zip-файла в текущий рабочий каталог. Вышеупомянутая программа извлекает zip-файл с именем «gfg.zip» в том же каталоге, что и этот скрипт Python.
  9. Если пароль неверный, будет сгенерировано исключение. В блоке exclude продолжите цикл, чтобы проверить другие слова в файле.
  10. Если пароль найден, верните true, или false и отобразите желаемое сообщение.

Ниже приведен полный код:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

import zipfile

def crack_password(password_list, obj):

    # tracking line no. at which password is found

    idx = 0

    # open file in read byte mode only as "rockyou.txt"

    # file contains some special characters and hence

    # UnicodeDecodeError will be generated

    with open(password_list, 'rb') as file:

        for line in file:

            for word in line.split():

                try:

                    idx += 1

                    obj.extractall(pwd=word)

                    print("Password found at line", idx)

                    print("Password is", word.decode())

                    return True

                except:

                    continue

    return False

password_list = "rockyou.txt"

zip_file = "gfg.zip"

# ZipFile object initialised

obj = zipfile.ZipFile(zip_file)

# count of number of words present in file

cnt = len(list(open(password_list, "rb")))

print("There are total", cnt,

      "number of passwords to test")

if crack_password(password_list, obj) == False:

    print("Password not found in this file")

На этом все. Надеюсь статья была полезна и вы разобрались с кодом.


Источник: spy-soft.net

Комментарии: