Есть вызов Захватить флаг
У меня есть два файла; один с зашифрованным текстом примерно с 550 записями
dnaoyt
cinuertdso
bda
haey
tolpap
...
Второй файл представляет собой словарь с около 9 000 записей
radar
ccd
gcc
fcc
historical
...
Цель состоит в том, чтобы найти правильную, расшифрованную версию слова, содержащегося в файле словаря.
Мой подход состоит в том, чтобы отсортировать символы из первого слова из первого файла и затем посмотреть, имеет ли первое слово из второго файла ту же длину. Если так, то рассортируйте их и сравните.
Это мой полнофункциональный bash-скрипт, но он очень медленный.
#!/bin/bash
while IFS="" read -r p || [ -n "$p" ]
do
var=0
ro=$(echo $p | perl -F -lane 'print sort @F')
len_ro=${#ro}
while IFS="" read -r o || [ -n "$o" ]
do
ro2=$(echo $o | perl -F -lane 'print sort @ F')
len_ro2=${#ro2}
let "var+=1"
if [ $len_ro == $len_ro2 ]; then
if [ $ro == $ro2 ]; then
echo $o >> new.txt
echo $var >> whichline.txt
fi
fi
done < dictionary.txt
done < scrambled-words.txt
Я также пытался преобразовать все символы в целые числа ASCII и суммировать каждое слово, но, сравнивая, я понял, что сумма другого набора символов может иметь одинаковую сумму.
[править]
Для записей:
- в словаре нет анаграмм
- чтобы получить флаг, вам нужно экспортировать расшифрованные слова как один большой двоичный объект и сделать из него SHA-хэш (это флаг)
- ссылка на ctf для парня, который хотел файлы https://challenges.reply.com/tamtamy/user/login.action