From 1dc8e4c84511ec8da24606ca6045ac295680597c Mon Sep 17 00:00:00 2001 From: dvwinner Date: Mon, 8 May 2023 18:26:47 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'tasks/jojo1/readme.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/jojo1/readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/jojo1/readme.md b/tasks/jojo1/readme.md index 1b0bc07..e8acbc1 100644 --- a/tasks/jojo1/readme.md +++ b/tasks/jojo1/readme.md @@ -2,7 +2,7 @@ Для начала, посмотрим что происходит на странице. Для этого, зайдем в исходный код. На странице выполняется скрипт, который сначала открывает WebSocket. Чтобы узнать что это, загуглим. Это соединение с сервером, которое обменивается текстовыми данными. Все что есть в скрипте помимо этого является оберткой над этим соединением, по типу добавления сообщения в страницу. Так что дальше исследовать страницу мало пользы, можно исследовать соединение. Погуглив, можно узнать что общение по вебсокетам доступно в python3, что мы и будем использовать. Программа дальше отрывает соединение, отправляет 'init' и печатает все ответы от сервера. -``` +```python import websocket as ws c=ws.create_connection('wss://jojo1.ctfmay.sch9.ru/ws/') c.send('b') @@ -27,7 +27,7 @@ while(1): 277, 42, 130, 514, 919, 926 Можно заметить, что номер первого глагола изменяется на одинаковое число каждый раз, возвращаясь в 0 если увеличивается до 999, т.е. "ходит по кругу из чисел от 1 до 999" (), то же верно и для остальных номеров. Можно ещё несколько раз позапускать соединение чтобы убедиться что это всегда так и что номер (?????) глагола - всегда 514. Теперь, с помощью этого замечания попробуем угадать одну фразу. Кроме того, попробуем автоматически генерировать ответ, т.к. в дальнейшем это придется сделать 1000 раз. -``` +```python import websocket as ws #подключаем библиотеку a=open('glags.txt','r').read().split('\n')[:-1] #Загружаем файл, записываем в массив @@ -80,7 +80,7 @@ while(1): print(c.recv()) #Выводим остаток ответов от сервера. ``` Видим, что на этот раз вывод другой и ХП снялись уже не у ДжоДжо, поэтому продолжаем отгадывать фразы таким же образом. Начальный код остается таким же, но после выбора нужных глаголов код будет: -``` +```python for i in range(1000): #Повторяем столько раз, сколько ХП у противника c.send(f'Я хочу { words[0] } чтобы \ #Отправляем сгенерированную фразу { words[1] }, а потом { words[2] } и, будучи \