Задание 8
Часть 1
Мой код можно найти здесь. Поскольку каждый раз при отправке сообщения генерировался новый хэш, мне приходилось генерировать новый legit
каждый раз, когда я запускал скрипт.
s.recv(BUFF) s.send(b'1\n') s.recv(BUFF) s.send(message + '\n') # a legit hash of secret + message goes here, obtained from signing a message legit = s.recv(BUFF).split("\n")[2].split(" ")[2]
Это значения, которые я получил от одного запуска моего скрипта.
legit: 47108d8247ac0b248327e19b13e9ade4 crafted hash: 7f09c7ad8cd5d6d44cfcf4f45cfad1b0 payload (reformatted): 43:4d:53:43:33:38:39:52:20:52:6f:63:6b:73:21:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:a8:00:00:00:00:00:00:00:49:20:41:4d:20:54:48:45:20:4d:4c:47:20:48:41:43:4b:45:52
Используя эту полезную нагрузку, я смог найти флаг
CMSC389R-{merkle_damgard_unguarded}
Обратите внимание, что иногда сервер не отвечает на соединение, поэтому я иногда получаю следующую ошибку, если это произойдет, просто попробуйте запустить его снова.
$ python stub.py Traceback (most recent call last): File "stub.py", line 25, in <module> legit = s.recv(BUFF).split("\n")[2].split(" ")[2] IndexError: list index out of range
Часть 2
Чтобы сгенерировать свой ключ, я использовал команду gpg --gen-key
в Kali. Я смог экспортировать его как бронированное значение ASCII с gpg --export -a "[email protected]" > public.key
.
Далее я зашифровал сообщение. Мне нужно было использовать флаг -a
, чтобы получить бронированный вывод ASCII, а не необработанные байты.
$ gpg -e -a -u "[email protected]" -r "[email protected]" test.txt
Наконец, я скопировал ответ, полученный от продвинутого ИИ.
$ gpg -d encryptedmessage gpg: encrypted with 3072-bit RSA key, ID 3469763DD1759B31, created 2018-04-13 "Chris Nakamura <[email protected]>" CMSC389R-{u_are_th3_MLG_h4ck3r} gpg: Signature made Fri 13 Apr 2018 06:27:52 PM UTC gpg: using RSA key 6E8604F8752C6ED72548BE13F58FD42FF610B446 gpg: Can't check signature: No public key
Я нашел флаг CMSC389R-{u_are_th3_MLG_h4ck3r}
.