Изменил(а) на 'tasks/jojo1/readme.md'

This commit is contained in:
dvwinner 2023-05-08 18:26:47 +00:00
parent c26c114b2d
commit 1dc8e4c845

View file

@ -2,7 +2,7 @@
Для начала, посмотрим что происходит на странице. Для этого, зайдем в исходный код. На странице выполняется скрипт, который сначала открывает WebSocket. Чтобы узнать что это, загуглим. Это соединение с сервером, которое обменивается текстовыми данными. Все что есть в скрипте помимо этого является оберткой над этим соединением, по типу добавления сообщения в страницу. Так что дальше исследовать страницу мало пользы, можно исследовать соединение. Для начала, посмотрим что происходит на странице. Для этого, зайдем в исходный код. На странице выполняется скрипт, который сначала открывает WebSocket. Чтобы узнать что это, загуглим. Это соединение с сервером, которое обменивается текстовыми данными. Все что есть в скрипте помимо этого является оберткой над этим соединением, по типу добавления сообщения в страницу. Так что дальше исследовать страницу мало пользы, можно исследовать соединение.
Погуглив, можно узнать что общение по вебсокетам доступно в python3, что мы и будем использовать. Программа дальше отрывает соединение, отправляет 'init' и печатает все ответы от сервера. Погуглив, можно узнать что общение по вебсокетам доступно в python3, что мы и будем использовать. Программа дальше отрывает соединение, отправляет 'init' и печатает все ответы от сервера.
``` ```python
import websocket as ws import websocket as ws
c=ws.create_connection('wss://jojo1.ctfmay.sch9.ru/ws/') c=ws.create_connection('wss://jojo1.ctfmay.sch9.ru/ws/')
c.send('b') c.send('b')
@ -27,7 +27,7 @@ while(1):
277, 42, 130, 514, 919, 926 277, 42, 130, 514, 919, 926
Можно заметить, что номер первого глагола изменяется на одинаковое число каждый раз, возвращаясь в 0 если увеличивается до 999, т.е. "ходит по кругу из чисел от 1 до 999" (), то же верно и для остальных номеров. Можно ещё несколько раз позапускать соединение чтобы убедиться что это всегда так и что номер (?????) глагола - всегда 514. Теперь, с помощью этого замечания попробуем угадать одну фразу. Кроме того, попробуем автоматически генерировать ответ, т.к. в дальнейшем это придется сделать 1000 раз. Можно заметить, что номер первого глагола изменяется на одинаковое число каждый раз, возвращаясь в 0 если увеличивается до 999, т.е. "ходит по кругу из чисел от 1 до 999" (), то же верно и для остальных номеров. Можно ещё несколько раз позапускать соединение чтобы убедиться что это всегда так и что номер (?????) глагола - всегда 514. Теперь, с помощью этого замечания попробуем угадать одну фразу. Кроме того, попробуем автоматически генерировать ответ, т.к. в дальнейшем это придется сделать 1000 раз.
``` ```python
import websocket as ws #подключаем библиотеку import websocket as ws #подключаем библиотеку
a=open('glags.txt','r').read().split('\n')[:-1] #Загружаем файл, записываем в массив a=open('glags.txt','r').read().split('\n')[:-1] #Загружаем файл, записываем в массив
@ -80,7 +80,7 @@ while(1):
print(c.recv()) #Выводим остаток ответов от сервера. print(c.recv()) #Выводим остаток ответов от сервера.
``` ```
Видим, что на этот раз вывод другой и ХП снялись уже не у ДжоДжо, поэтому продолжаем отгадывать фразы таким же образом. Начальный код остается таким же, но после выбора нужных глаголов код будет: Видим, что на этот раз вывод другой и ХП снялись уже не у ДжоДжо, поэтому продолжаем отгадывать фразы таким же образом. Начальный код остается таким же, но после выбора нужных глаголов код будет:
``` ```python
for i in range(1000): #Повторяем столько раз, сколько ХП у противника for i in range(1000): #Повторяем столько раз, сколько ХП у противника
c.send(f'Я хочу { words[0] } чтобы \ #Отправляем сгенерированную фразу c.send(f'Я хочу { words[0] } чтобы \ #Отправляем сгенерированную фразу
{ words[1] }, а потом { words[2] } и, будучи \ { words[1] }, а потом { words[2] } и, будучи \