Открыть список
Как стать автором
Обновить

Комментарии 39

У меня, возможно, тупой вопрос, но: почему не гуглить на другом физическом устройстве?
Вопрос очень логичный! Конечно, проще было бы сделать так! :) Но нам стало интересно, насколько «дыряв» SEB с программной стороны, отсюда, из «хакерского» энтузиазма, и родилась эта статья, которая носит скорее развлекательный характер :)
Конечно, для находчивых студентов и это не препятствие — ведь можно гуглить ответы на тест и на втором компьютере (или попросить погуглить друга).

Ну и веб-камера. Есть софт, который определяет направление взгляда и обращает внимание проктора на это. Также при сдаче экзаменов часто требуют снимать руки.


Вероятно, такие жёсткие меры не применяются вместе с SEB, но это лишь мое предположение

Оу, я каким-то образом пропустил эти строки в статье. Моя кульпа.
Да, вы правы, но наш опыт (среди российских ВУЗов) показал, что во время именно прохождения тестов веб-камеры не были задействованы. А при устных ответах на вопрос с использованием веб-камер находчивые студенты смотрят в разные стороны, вспоминая материал :) Возможно, где-то действительно применяются более жесткие меры (например, для выпускников школ), но пока что в ВУЗах мы такого не встречали!

В этом году я писал олимпиаду по математике дистанционно. Там я впервые встретил шайтан-технологию захвата экрана из браузера. Ещё нужно было включать вебки, но у камеры моего ноутбука скромные углы обзора — видно либо лицо и плечи, либо руки и стол.


Олимпиаду не списывал, если кому-то это важно :)

Вот уж правда, шайтан-технология! :)
Слышал про технологию ответа учителю с закрытыми глазами. Не практиковали? )
видно либо лицо и плечи, либо руки и стол

Просят снимать стол второй камерой, например телефоном.

Честно скажу, что для обывателя установить SEB — уже проблема (наблюдал, помогал). Какое уж там хакерство.

Лично у меня сразу возникла идея форкнуть код и сделать свою "хакерскую" версию. Времени на это, к сожалению, пока нет, но идея отправилась в мой TODO лист.
Логика подсказывает, что эта идея возникла не только у меня.

Поставить второй комп рядом, подключить компы, клаву с мышкой и монитор через КВМ и под столом педалькой переключать )))
НЛО прилетело и опубликовало эту надпись здесь
«Сегодня экзамен по компьютерной безопасности, Вам всем поставлены неудовлетворительные оценки на сервере, у вас есть два часа, чтобы это исправить.»

По сути, карантин и потуги в ограничении гугла на экзамене в очередной раз напомнили о том, как же ущербна система, требующая зазубривания, в принципе.
Ну вот не нужна в современном мире зубрежка.
Да, можно по всему миру развернуть экзаменационные центры с глушилкой радиосвязи, сертифицированными компами с запечатанными usb и армией прокторов.
Но вот, кому это все надо? Что это даст миру кроме бессоных ночей студентов?

Да без проблем, предлагайте. У меня университетский курс по предмету в нашей области (ну т.е., условно, "программирование"). Имею полную свободу устраивать экзамены как хочу. Вот посоветуйте, что бы такое сделать, чтобы каждый получил в итоге честную оценку.

Понимаю, что вопрос с подвохом. Но вот подвоха в упор не вижу. Написали бы все тоже, но по линейной алгебре, и это был бы вызов)
А по программированию, в чем проблема? Прежде всего, надо принять факт, что цель не в том, чтобы максимально точно отранжировать студентов, а том, чтобы дать навык, хз, как перевести, real world programming, решать свои задачи при помощи написания кода, уметь говорить на одном языке с профессиональными программистами.


Поэтому, я за личные маленькие проекты. Которые не должны в себе содержать вещи типа алгоритма Дейкстры, но должны
1) не повторять друг друга
2) быть написанными на мейнстримном языке. В идеале js, как для фронта, так и бека, можно python, но точно не C++ или Delphi
3) иметь хотябы микроскопическую, но пользу.
4) иметь побольше интеграций готовых компонент, API, готового ПО (СУБД, например)
5) размещены на github, и быть запущеными не на ноутбуке студента из под дебага, а на free tier публичного облака.


Ну вот, как-то так. Если человек все это успешно сделал и может прокомментировать каждый шаг и строчку кода, то он молодец. Если при этом есть тесты и ci, то он молодец вдвойне. А если появилось три калеки реальных пользователей, то это вообще что-то выдающееся. И если при этом человек, который хуже знает теорию, получит выше балл, то это тоже ок. Он лучше понял, как использовать программный код себе во благо.


Если же надо что-то на пару часов, то задача типа "спарсить курс биткойна и послать по имейл" с разрешенным гуглежом. Если опытные синиоры с SO не слазят, то зачем студенту запрещать?


PS: я сам на факультете с профильным программированием учился, видел много странного, включая задачу "написать решатель кубика рубика с визуализацией на open gl", и потуги людей, которые ее таки решили, но при этом забили на все остальные предметы.
PPS: явление, когда люди сдали прогу на 5, но без коммерческих курсов программирования не были способны закодить вообще ничего тоже видел

дать навык, хз, как перевести, real world programming, решать свои задачи при помощи написания кода

Этим часто занимаются курсы. Результат не всегда радует.


не повторять друг друга

Повторение — мать учения. Не совсем понятно, что вы имели ввиду. Иногда полезно одну и ту же вещь написать на разных технологиях, чтобы прочувствовать все достоинства и недостатки на себе, а не обращаться за чужим опытом (читай: зазубривать чужие статьи).


но точно не C++ или Delphi

За Дельфи ничего сказать не могу, но плюсы дают низкоуровневое понимание. Кстати, поэтому иногда преподают чистый C. Часто люди пишут и не понимают, что происходит под капотом. Эти знания могут быть применены, например, для оптимизации программ.


быть написанными на мейнстримном языке

Мейнстримные языки быстро учатся, особенно если вы уже освоили древний и могучий C. К тому же, многие ВУЗы предлагают изучение мейнстримных языков в качестве факультатива.


иметь хотябы микроскопическую, но пользу.

Тактично молчу.


иметь побольше интеграций готовых компонент, API, готового ПО (СУБД, например)

С СУБД студенты работают. Есть даже факультативы и пары по ним.
Но вы справедливо отметили, что они не всегда используются в проектах.


размещены на github, и быть запущеными не на ноутбуке студента из под дебага, а на free tier публичного облака.

Не очень понимаю, чем вызвано это требование. Умение собрать софт локально — полезный скилл, который, как мне кажется, нужен почти любому программисту. А если студент не может запустить проект с курса, который он посещает, то у меня возникают вопросы к студенту.


Он лучше понял, как использовать программный код себе во благо.

Во благо — очень странное понятие. Вот, например, TikTok сейчас популярен. Можно ли сказать, что это хороший продукт, раз рынок так решил? У меня язык не повернется.


Со всем остальным, в принципе, согласен

Не совсем понятно, что вы имели ввиду.

Чтобы не мигрировали проекты от предыдущего курса, параллельного потока. Чтобы все проекты были разными.


знания могут быть применены, например, для оптимизации программ

В том то и дело, что оптимизировать все по окончанию курса знатоки, а вот сделать с 0, начиная от сбора требований и заканчивая деплоем прода, могут очень немногие.


С СУБД студенты работают. Есть даже факультативы и пары по ним.

Да, SQL запросы на клетчатых листках пишут. Но вот целостной системы фронт-бек-субд не видят.


Во благо

Во благо себе. Ещё раз повторю — себе. TikTok дал благо его создателям.


Умение собрать софт локально — полезный скилл

Разумеется. Но без прода софта нет. Поэтому умение поднять прод — скилл необходимый.

Но вот подвоха в упор не вижу.

Подвоха тут никакого нет, но есть некоторая недоговорённость с моей стороны. Действительно, у нас есть курсы вида «веб-программирование», где студентам предлагается поднять свой проект. И в таком случае мы действительно даём им свободу: пишете такое-то задание, фреймворк любой, язык любой.

Но не каждый предмет под одну гребёнку можно причесать. Я веду, например, многопоточное и параллельное программирование. У меня нет цели заставить студента написать полноценную многопоточную систему (это сложно, да и не так я вижу курс). Мне нужно дать им ряд технологий и убедиться, что они усвоили. Например, есть задание на семафоры, на MPI, на разруливание всяких deadlocks/race conditions. Соответственно, есть пул заданий, которые на экзамене решают все. Ну и списать могут, конечно же.

К тому же, экзамен — это лишь последняя часть курса. У меня есть ещё задания к каждой конкретной теме, и здесь тоже списать большой соблазн.
Хорошо, есть задача, которая требует применения семафора. В чем проблема, что студент будет гуглить, решая ее? Если результат достигнут, и решение работает корректно, то, значит, студент сможет решить аналогичную задачу в боевых условиях. В чем проблема, если студент
1) понял, какой примитив синхронизации нужен для решения
2) успел за ограниченное время нагуглить и понять принцип его работы и пример кода
3) написал рабочий код
?
Я готов рассмотреть этот вариант (такое называется open book exam и вполне себе практикуется). Проблема не в том, что студент гуглит, а в том, что он тупо списывает домашнюю работу/экзамен у другого студента. Вот с этим что делать — не представляю.

Ну или бывают крайние случаи типа предмета «основы алгоритмов», когда реализация классических методов типа обхода дерева или сортировки является сутью курса и, стало быть, студент должен сам их писать. Хорошо, что я такое не преподаю, там ещё и не поймёшь, где списал, а где сам делал.

Вот сейчас скажу, наверное, очень непопулярную вещь, но считаю, что подробное изучение подобных вещей (основ алгоритмов) даёт неправильную систему ценностей студентам. И наносимый вред не покрывается пользой от умения писать оптимальный код.


По сути, современное программирование о сборе воедино огромных готовых модулей, умении исследовать их возможности и находить оптимальную комбинацию.


А подобные курсы, наоборот, формируют систему ценностей, в которой надо декопмпозировать задачу до мельчайших модулей, после чего реализовывать их и конструировать готовый продукт. Увы, такой подход не просто неконструктивен, а вреден, и его потом называют велосипедостроением и каленым железом выжигают в коммерческой среде. Думаю, о том, почему, и так очевидно

У курса «Основы алгоритмов» (который я, к счастью, не веду) нет цели привить какую бы то ни было систему ценностей. И уж точно нет задачи заставить студента везде и всегда писать свою сортировку. Там цели совсем другие: 1) сформировать в голове «индекс» методов и структур данных, которые вообще в природе бывают, ну чтобы студент в принципе знал, что можно найти маршрут между двумя точками на карте или найти подстроку в строке; 2) сформировать представление о том, какой ценой (память/процессор) это в принципе даётся и как иногда получается одно купить ценой другого — чтобы студент примерно понимал, что если здесь у него будет поиск, это работать будет, скорее всего, с такой скоростью/сложностью/расходом памяти; 3) понимал бы на примерах как оно устроено изнутри, чтобы всё это не было какой-то чёрной магией и колдунством.

Я, если надо, сам и дерево напишу, и сортировку запрограммирую, и вообще что нужно. Но мне однако не приходит в голову всё это писать самому, если можно взять готовое (а взять готовое не всегда есть где, кстати). Так что вряд ли курс тут виноват, систему ценностей формирует вся система обучения целиком, а в ней должны быть разные предметы, в том числе заточенные, например, на быструю сборку продукта из готовых компонентов, почему бы и нет.

Но мы опять же ушли от исходной темы.

Кстати, когда я проходил "параллельное программирование" в роли студента, курс был необязательным и на него пришли только те студенты, которым курс был интересен. Нас было немного, но зато списывать никто и не собирался.

У нас он тоже необязательный, но по факту студентам надо набрать так много кредитных юнитов, что им всё равно приходится набирать некоторые курсы по принципу «уж лучше это, чем другое», так что выбор не совсем свободен.
Например, обилие домашних заданий и проектов, и какая-нибудь устная защита (если не ошибаюсь, в Школе анализа данных так делают).
Предположим, что курс разбит на темы, и стало быть, нельзя дать один итоговый проект, который бы студент пилил весь курс. Есть «семафоры», есть «дедлоки», есть «распределённые вызовы» и т.п., и каждую тему надо проверить отдельно. Итоговый экзамен, получается, должен быть очным (необязательно «устным», но на месте, стало быть, уже с удалёнкой проблемы). А домашние задания они списывают друг у друга, с этим боремся с переменным успехом.
Какое веселье я пропустил, сдавая в этом году переходные экзамены на второй курс колледжа. Всё, что у нас было, платформа moodle(настроенная кое-как с одной стороны, и учителя, не разбирающиеся в ней с другой) и никакого бреда с вебками, шпионскими браузерами и прочим)
Отслеживает ли seb удаленный доступ? если подключиться к устройству с seb по удаленке через anydesk или teamviewer и гуглить с другого физ устройства?
Да, к сожалению, такой способ SEB пресекает. Как удалось выяснить, Teamviewer входит в список запрещенных приложений, также как и Skype, Discord.
Помимо этого, SEB отключает процессы и сервисы, связанные с RDP, так что другими программами, которые используют удаленный рабочий стол, воспользоваться не получится.
Обойти это можно перекомпиляцией SEB:)
Странно, что при запуске SEB с включенным TeamViewer, Skype или Discord, он сразу выдает ошибку, что запуск с этими программами невозможен.Однако с включенным AnyDesk или DeskTool он спокойно включается и позволяет проходить пробные тесты в университетах:) Больше интересует именно не процесс отключения таких процессов, а может ли seb уведомить экзаменаторов о их использовании:)
Спасибо за информацию про anydesk, это очень интересно! В конфигураторе SEB стоит запрет на процессы RDP (рабочий конфиг одного из университетов), но, видимо, всё же не на все)
По поводу уведомления — предполагаем, что если SEB запустился и работает с включенным приложением, то экзаменатор об этом может узнать только в том случае, если собирает логи — а стандартная версия SEB логгирует все включенные приложения:)
Parsec в запрещенном списке? (потому что его можно вполне себе как систему удаленного управления использовать, хотя он скорее для удаленной игры).
Steam? (потому что Steam In-Home Streaming)
Как быть с песочницами вроде Sandboxie (если есть версия под Win10)?
Остается только догадываться, логгирует ли seb процессы и действительно, просматривает ли экзаменатор логи процесссов seb'a каждого отдельного взятого абитуриента:)

Ещё, как вариант, делать проверку студентами логов друг друга + выборочная преподом.
Разумеется, с использованием алгоритмов, аналогичных Amazon mechanical turk, для работы с исполнителями, к которым нет доверия

Вообще все эти кросспроверки ничем хорошим не заканчиваются, как по мне. Либо создают атмосферу нездоровой конкуренции, либо кто-то кого-то покрывает.
Мне больше нравится идея паноптикума (не совсем уверен, что термин использован правильно) — студентам неизвестно, когда за ними наблюдают, поэтому они себя ведут хорошо всегда. Эта тема популярно освещена на канале ТОПЛЕС вот в этом видео.

NWOcs, посмотрев на исходный код проверок запусков процесса, кажется, может быть ещё один достаточно простой способ обхода: переименовать исполняемый файл блокируемого ПО (так как проверки завязаны на него, а не на заголовки окон ClassName-ы). Например, переименовать Skype.exe в Explorer.exe (проверил: скайпу всё равно как называется его исполняемый файл).


PS. К сожалению, с данным софтом не знаком от слова совсем — потому не могу оперативно проверить сам.

Спасибо за предложенный простой и изящный способ :) Скорее всего, он сработает, нужно будет только убедиться, что Skype в ходе работы не открывает дополнительные запрещенные процессы (например, при демонстрации рабочего стола), иначе SEB может взбунтоваться)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.