Як я не склав 4 предмети з НМТ на 200
Отож, кілька місяців тому я переїхав. Спочатку до Німеччини, потім до Кіпру, де я й залишився з планами щойнайменше на рік. Проте, маючи роботу й нестабільний стан, мені довелося прийняти рішення кинути університет, з обіцянкою в майбутньому його все ж закінчити. З того моменту пройшло вже більше пів року, і з'явилась інша проблема - сертифікати НМТ. Вони дійсні всього лише три роки, і мої, на превеликий жаль, якраз закінчились. Тому мені треба буде повернутись до шкільних екзаменів, й пережити це ще один раз.
Я довго не міг визначитись, чи треба мені готуватись. Бо для моєї цілі вистачить просто здати на 100+ балів, і можна було б зовсім ніяк не акцентувати на цьому свою увагу. Але мене сильно непокоїла думка, що востаннє я здав один предмет на 200, і якщо я не буду мати жодного прогресу за 4 роки, то сильно розчарую сам себе. Тому в мою голову прийшла авантюрна ідея - здати 4 предмети НМТ на 200.
Я занадто лінивий для того щоб готуватись звичайними шляхами, але маю достатньо досвіду в програмуванні веб-застосунків, і однією з головних частин розробки таких систем є кібербезпека. Я ніколи не займався зламом, проте мені постійно треба захищати те, що я будую. І от вперше мені доведеться використати цей досвід в протилежну сторону.
Спочатку я пішов шукати сайт НМТ. Це перша проблема, яку я помітив ще 4 роки тому - до нього має доступ будь-хто в інтернеті. Знайшов в старих переписках посилання courses.net.gov.ua, я виявив, що воно вже не дійсне. Я не повірив, що розрбники здогадалися зробити доступ лише за впном, і пішов шукати хоча б якісь зачіпки на інше місцезнаходження платформи. Знайшлося аж два нових посилання first-assessment.net.gov.ua і second-assessment.net.gov.ua. Як я зрозумів, то перше для тестів і інше якраз те, що я шукав. Відкривши посилання тебе одразу перекидує на форму логіну, що мене не сильно цікавило. А цікавило мене те, як працює їх апі. Тому я пішов шукати його опис і знайшов на /api-docs. З цього я зрозумів, що це система openedx з відкритим вихідним кодом, що значно спростить мені життя в майбутньому.
Наступним етапом буде перевірка доступності ендпоінтів. Потрібно дізнатись, що мені дозволено робити на сайті, а що - ні. Я знайшов відкритий список всіх сесій нмт, трохи нецікавих даних, і найголовніше - відкриту форму реєстрації. Її не було на сайті зі зрозумілих причин, але в апі її забули видалити, чим я й зміг скористатись. Створивши кілька аккаунтів мені вдалося потрапити в систему.
Тепер я міг буквально відкрити сайт і залогінитись, де я нажаль спершу нічого не побачив, але це був вже великий успіх. Це відчинило мені дуже багато можливостей, і моєю ціллю було отримати контент з тестів, до чого я й продовжив йти. Наступним кроком я шукав спосіб записатись на сесію нмт, що теж закінчились успіхом, проте на наступному етапі мене чекала перша проблема.
Записавшись на сесію і зайшовши браузером на сайт, я помітив, що проходження доступне лише з браузерів з налаштованим SEB (Safe Exam Browser). І пройти цей тест звичайним шляхом виявилось просто неможливим, бо дістати доступ до конфігу налаштувань SEB не здавалось реальним. Тому моє життя трохи ускладнилось і я пішов шукати інші шляху здобуття контенту. Знаючи, що це openedx система, я точно знав де, як і якими запитами береться контент для курсів. Проте зробивши потрібні запити зі свого новоствореного користувача я виявив, що воно захищено. Захищено дуже жахливо, бо додавши в запиті username=staff, це блокування просто зникло. І таким чином я отримав список айдішників блоків завдань, за якими я зміг зробити інші запити на отримання самого контенту курсу.
Здавалось б, перемога, проте до майбутніх тестів доступу просто не було. Точно не знаю, але можливою причиною було те, що їх в той момент ще просто не завантажили. Проте всі вони стають доступними для проходження о 6 ранку. Тобто буде щонайменше кілька годин на те, щоб вивчити відповіді і мій план зазнає успіху. Проте на наступному кроці я зробив фатальну помилку. Я вирішив написати моніторинг, щоб сповістити себе про відкриття доступу до нового тесту. Побачивши те, як побудований цей сайт, я просто не вірив, що хтось взагалі слідкує за тим, що на ньому відбувається. І, як виявилось, мої дії все ж помітили. В той момент опис апі з /api-docs був видалений, форма реєстрація закрита, а всі мої аккаунти - видалені.
Зрештою, мені не вистачило одного - скритності. Що доводить, те, що я зовсім не хакер, а просто розробник з невеликими знаннями з кібербезпеки. І якщо бути чесним, то до дечого в мене доступ все ж залишився - до картинок. Вони всі лежать з відкритим доступом на іншому сервері, і в кожної з них назва з паттерном. Умовно існує картинка з назвою mat_26_V12_1.jpg, де я можу зрозуміти, що 26 - рік, V12 - варіант, а 1 - номер завдання, і просто перебором знайти картинки до інших варіантів/завдань/предметів. Але на превеликий жаль, цього замало щоб скласти 4 предмети на 200, і бажання навіть дивитись на ті картинки просто не має.
Буду писати своїми силами і насолоджуватись візитом до Нідерландів.