Category Archives: Учеба

Старая стотья про взлом институтской программы тестирования

Written by elwood

Конец семестра приблизился как всегда незаметно. И, как водится, начались напряги со сдачей лабораторных работ по информатике. В семестре их всего 3 (надо сдать за 4 занятия), так что я с друзьями не особо сильно беспокоился о них и, в итоге, проспав первые 2 занятия и сдав одну на третьем, оказался в нехорошем положении, узнав о том, что преп свалил на конференцию, а 4ое занятие отменили. Оставалось ещё 1+1доп занятие с другой группой, на которых мне предстояло сдать 2 лабы. С нашим препом задача не из лёгких. Ну со второй я кое-как разобрался, а вот последняя представляла из себя программу, эмулирующую работу простейшей трёхадресной ЭВМ, поддерживающей команды ввода/вывода данных, арифметические операции и даже (!) условные переходы. По ходу выполнения работы студент должен пошагово выполнить несколько команд, указывая действия типа Чтения Счетчика Команд, Запись Адреса Команды на Шину Адреса и т.п. муть. Каждый тип команды (их 8) состоял из последовательности 8-15 операций, которые надо было по порядку запомнить. Шпора по этой лабе занимала лист тетрадного формата и легко палилась препом (из некоторых студенток он вытаскивал по 3 шпоры)) ), так что учить всё это желания не было, и я решил пойти другим путём. Результаты выполнения работы отображались на экране, надпись гласила о том, на каком месте программа завершила работу и о количестве допущенных студентом ошибок плюс общее кол-во ответов. Похожая табличка выводилась в лог проги. Зная, что прогу на компе в аудитории можно без проблем подменить, я составил адский план сдачи работы)).

(more…)

Курсач

Written by elwood

Сегодня неторопясь допинал свой курсач по ОСям. Задание, кстати, было весьма интересное, за мои 2.5 года в институте такое впервые ) А именно наваять чекер листов прокси, на нативных функциях Win32 и с применением многопоточности. Требования очень простые – на входе текстовик с HTTP проксиками, на выходе – такой же, но составленный только из работающих и отсортированный по возрастанию времени отклика + возможность определять, являются ли проверенные прокси транспарентными, либо все-таки скрывают истинный IP. Реализация не сложная, на C++ с использованием виндовых сокетов (сначала пробовал wininet, но оказалось, что он имеет нехорошую способность иногда намертво подвисать, причем поток после этого ведет себя неадекватно). Так что самым оптимальным решением, на мой взгляд, было использование winsock для работы с сокетами в неблокирующем режиме. Появилась возможность самим управлять таймаутом операции, а следовательно, и предотвратить случаи некорректной работы потоков.
При реализации обнаружил интересную задачу, связанную с функциями переменного числа аргументов. Вкратце, она сводилась к тому, чтобы написать свой переходник для printf(char *format, …) – с блекджеком и шлюхами, естественно, скажем, вида LogMessage(char *format, …) – так, чтобы внутренности этого переходника вызывали printf с теми же параметрами. Возможно, стоит написать об этом отдельный пост, а пока просто сообщу, что один способ я нашел и он лежит внутри. 🙂 Не самое лучшее решение, опять же, но для сельской местности сойдет.

К сему прилагаются бинарники и исходники:
Download