Задание 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} .