Программа ACO Avrora почти полностью написана на JS. В основе лежит QT WebEngine, который предоставляет средства для отображения html страниц. Мы немного поковыряли этот улей, и вот что нам удалось найти.
Всего авроры использует вроде как 3 сервера, основные запросы отправляются по веб сокетам.
Сервера:
mirea2.aco-avrora.ru
|| ds-servers.com
|| node-9.ds-servers.com
Сама аврора грузится с mirea2.aco-avrora.ru. Там находится вроде все файл, которые требуются для работы авроры, но просто так зайти или скачать их не выйдет - ошибка доступа. В данном файле находятся исходники клиентской части авроры (там в том числе есть onCopy/onPaste ивенты)
avrora.rar (962.7 КБ)
Главный вопрос - можно ли открыть аврору в браузере, как, например, это делают преподаватели? Ответ - да. Нужно перейти на https://mirea2.aco-avrora.ru/student/, но User-Agent должен стоять такой, какой стоит в авроре в QtWebEngine. Нам подойдет такой:
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.14.2 Chrome/77.0.3865.129 Safari/537.36
Взаимодействовать вам вряд ли удастся, так как аврора использует qrc:///qtwebchannel/qwebchannel.js
для вызова Qt-шных функций. Быть может стоит попробовать скомпилить свою аврору?
Кстати, можно попробовать сделать некий прокси-сервер с помощью host, либо подменять URL. Я уже это реализовать, URL авроровской index.html находится в программе по смещению 0x0000db70 в UNICODE формате. Вот, к примеру, я заставил Аврору грузить форум mirea.ninja. По-моему это хорошее DLC для данной программы.
Как же вставлять код в аврору?
Способ №1
В app.js (посмотреть этот файл можете в архиве, который выше) реализован основной механизм проверки буфера и сохранения в буфер. Если коротко, то у программы реализован в JS внутренний буфер обмена. Это простая переменная, которая хранит то, что пользователь скопировал из авроры в HTML формате. При вставке чего-либо аврора проверяет, является ли это что-то HTML текстом, и совпадает ли текст с тем, что сейчас в буфере. Если да - вставляем. Но есть у этой механики некоторые недоработки, которые нам удалось найти.
Шаги действий, как обойти систему:
- Копируем что-либо из исходного кода, чтобы заполнить внутренний буфер. Например, я скопирую букву
r
- Открываем текстовый редактор, пишем туда следующее:
<p class=' '>r
Буква r
, которую мы скопировали, обязательно должна находиться в теле тега, чтобы проверка на соответствие внутреннего буфера и вставляемого текста прошла успешно. В классе пишем всё что угодно. В нём должно находиться то, что мы хотим вставить в аврору. Например:
3. Копируем это из текстового документа, вставляем в аврору. Код вставлен:
Способ №2
- Заходите в папку с Авророй, в адресной строке вводите cmd, нажимаете Enter
- В открывшейся коммандлайн пишете:
start .\ARM_Student.exe --remote-debugging-port=8023
- Входите в Аврору.
- Открываете любой хромоподобный браузер
- Идете по адресу http://127.0.0.1:8023/
- Нажимаете на единственную кнопку
- Идёте в пункт console сверху
- Пишете вниз, где синяя стрелочка в консоли браузера, вот это:
DS.page.cb.canPaste = ()=>{return true;};
Это разрешает вставку обычным ctrl+v
setInterval(()=>{window.dispatchEvent(new MouseEvent(‘mousemove’, {}));},133337);
Это отключает автокик за афк
Как редактировать и открывать любые работы (даже закрытые)
- Открываем аврору в режиме отладки.
- Открываем файл
module.js?6
из модуля task
- Идём на строку 400, выносим click-листенер из проверки. Было так:
Стало так:
- Нажимаем ctrl + s, чтобы сохранить. Кликаем на рандомную страницу в Авроре, чтобы изменения обновились.
- Теперь вы можете открывать и редактировать закрытые работы, работы на проверке и даже те работы, которые у вас уже зачтены.