Недавно я посмотрел видео о написании кода для декодирования заголовка и содержимого файла из десятичных чисел в строки. Однако он написан на python2, поэтому я решил переписать код на python3. К сожалению, у меня возникают проблемы с расшифровкой содержимого изображения.
#!/usr/bin/env python
import os
directory = '1262404985085867488371'
def decrypt(number):
return hex(int(number))[2:].replace("L","").decode("hex")
os.chdir(directory)
for i in os.listdir('.'):
try:
print(decrypt(i))
c = open(i).read()
open(decrypt(i),'w').write(decrypt(c))
#o.write(decrypt(c))
except:
print("FAILED WITH",i)
#!/usr/bin/env python3
import os
directory = '1262404985085867488371'
def decrypt(number):
hex_num = hex(int(number))[2:].replace("L","")
return bytes.fromhex(hex_num).decode("ascii")
os.chdir(directory)
for i in os.listdir('.'):
try:
print(decrypt(i))
c = open(i).read()
open(decrypt(i),'w').write(decrypt(c))
#o.write(decrypt(c))
except:
print("FAILED WITH",i)
Может ли кто-нибудь помочь мне посмотреть, как я могу решить эту проблему? Это проблема:
My computer got infected with ransomware and now none of my documents are accessible anymore! If you help me out, I'll reward you a flag! https://static.tjctf.org/7459b0c272ba30c9fea94391c7d7051d78e1732c871c3a6f27070fcb34f9e734_encrypted.tar.gz
По сути, я попытался изменить ascii на utf-8 и открыть файл с режимом «wb» или «rb», но ни один из них не работает ...
Если вы можете включить любую другую информацию, чтобы мы могли воспроизвести проблему, было бы полезно, например создать минимальный, полный и проверяемый пример
редактирование вашего кода с заглавной буквы в переменной directory действительно ли нет улучшает форматирование кода. Синтаксис python поддерживает переменные в нижнем регистре.
@davedwards Хорошо. Спасибо. Я впервые использую переполнение стека, поэтому я еще не слишком хорошо знаком с синтаксисом. Кстати, я перередактировал, чтобы указать источник моей проблемы.
не беспокойся, спасибо. но эта ссылка защищена именем пользователя и паролем, поэтому мы не можем видеть то, что вы видите, изображение, описание проблемы или содержание.
Хорошо. Позвольте мне попытаться разместить вопросы и ссылку здесь !!
хорошо, только не публикуйте конфиденциальную или безопасную информацию. благодаря.
Хорошо. Это просто соревнование по компьютерной безопасности, проводимое старшей школой, которое открыто для публики через Интернет.
Я мало знаю о проблеме, с которой вы столкнулись, но когда я извлек этот файл tar.gz, с которым вы связались, есть файл HAHAHA.txt, который включает "All your files have been encrypted with a uncrackable algorithm. You are now screwed forever.". Вы действительно думаете, что это безопасный вызов? Я был бы очень осторожен. тем более что в ваш вопрос входит "My computer got infected with ransomware "
Да, конечно. Обычно названия файлов и их содержимое зашифрованы десятичными числами. И мой код предназначен для декодирования его в строки.
Хорошо, круто, просто убедился.
Для этого задания есть 1 видео-запись. youtube.com/watch?v=m9FuGso8BE8
Хм, интересно. Для меня это не вызывает никаких ошибок, пока я получаю только пустые файлы. Похоже, это связано с Расшифровать шестнадцатеричную строку в Python 3 или Преобразование (декодирование) шестнадцатеричной строки в ASCII или любой другой понятный формат, но я пока не могу его решить, буду пытаться и обновлять с любым успехом.
Да, для меня это тоже не вызывает ошибок. По сути, у меня были пустые файлы при компиляции с использованием кода python3, но я получил файлы изображений при компиляции с использованием кода python2. Я думаю, что, возможно, проблема заключается в записи байтового объекта или чего-то еще в файл, потому что функция дешифрования действительно отлично работает с именем файла. Это не удается только во время записи преобразования в содержимое файла. Я попытался отладить свой код и обнаружил, что проблема в этой строке, когда функция дешифрования вызывается с аргументом c. открыть (дешифровать (я), 'ш'). написать (дешифровать (с))
Возможно, это из-за новой строки или из-за функции read (), и я попытался заменить новую строку пустой строкой, но она все еще не работает ...






Я собираюсь перейти здесь к делу, и, поскольку вы не включили никаких примеров и \ или ошибок, я предполагаю, что вы получили такую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 0: ordinal not in range(128)
Это вызвано каталогом file \ с именем Unicode, который, в свою очередь, вызывает это исключение, когда вы пытаетесь декодировать с помощью ascii, как в decode("ascii").
Вместо этого попробуйте декодировать с помощью «utf-8».
На самом деле я пробовал это раньше, но это все еще не работает. Я думаю, может быть, это как-то связано с байтовым объектом.
Это здорово, поэтому, если вы уже что-то пробовали, включите это в вопрос, чтобы мы могли сосредоточить нашу помощь вместо того, чтобы делать предположения: P
у вас есть ошибки? если да, включите их.