Ok, não 1000 e 1 caminho, mas existem alguns deles! Sobre o que estamos conversando? O fato de a pandemia COVID-19 ter causado muitas mudanças em nossa vida, inclusive na educação - tanto na escola quanto na universidade. As aulas, palestras e seminários mudaram para o formato online, mas a questão de como lidar com o controle do progresso permanece. Como os professores podem ter certeza de que o aluno que está fazendo o exame não abriu as folhas de referências na próxima guia?
Na Rússia, esse problema foi resolvido com o programa de código aberto Safe Exam Browser (SEB) . Parece que agora nem um único candidato a brinde será capaz de trapacear, mas essa "fortaleza" é realmente tão inacessível? Venha para baixo, hoje vamos contar e mostrar a você um monte de maneiras de trapacear SEB!
Era 2020 ... O mundo inteiro estava em pânico, a taxa de câmbio do rublo estava caindo, os estados estavam entrando em modo de emergência ... Apesar de tudo isso, o principal desejo do aluno médio continua o mesmo - passar na sessão com o mínimo gasto de esforço e tempo de preparação. Parece que com a transição para o ensino a distância, tudo ficou mais fácil para o aluno - você só precisa fazer uma cara inteligente ao responder uma pergunta em uma webcam, e você pode ler o material de um documento paralelo aberto em um computador. Mas não estava lá!
Muitas universidades russas implementaram o programa Safe Exam Browser para verificar o progresso do aluno, o que impede quase todas as tentativas de trapaça. Claro, isso não é um obstáculo para alunos engenhosos - você pode pesquisar no Google as respostas do teste em um segundo computador (ou pedir a um amigo para pesquisar no Google).
Mas, como trabalhamos no fundo, decidimos verificar o quanto esse SEB realmente ajuda na realização de exames e como contornar programaticamente seu controle sensível (desde que o aluno tenha conhecimentos básicos de informática, não se horrorize com as palavras “ máquina virtual ”e sabe como instalar o plug-in para o navegador Mozilla Firefox). Pronto? Ir!
O que é o Safe Exam Browser (SEB)?
O Safe Exam Browser (SEB) é um programa para a realização de exames, testes, etc. no modo online. Oferece proteção contra:
- abertura de aplicativos externos (comunicações de vídeo e voz);
- pesquisa paralela de informações em um navegador da web;
- executando um aplicativo em uma máquina virtual;
- ir a certos sites;
- salvar informações na área de transferência antes de entrar no programa.
A arquitetura do SEB inclui duas partes: um aplicativo de desktop e um navegador. O aplicativo é executado no computador do aluno e bloqueia todos os outros aplicativos, exceto os necessários para o exame. A interação na rede só é possível com o navegador SEB, enquanto o navegador se conecta à plataforma educacional na qual o teste ou exame está hospedado (por exemplo, Moodle ). O examinador pode autorizar o uso de aplicativos de terceiros, como Excel ou calculadora, durante o exame, e então o aluno poderá iniciá-los. Todas essas permissões e outras configurações são feitas usando o configurador SEB e são gravadas em um arquivo de configuração, que é posteriormente iniciado pelo aplicativo de desktop.

O SEB Configurator é um aplicativo com interface intuitiva:

Aqui você pode definir a URL do recurso de exame, a lista de aplicativos e sites permitidos / proibidos, permissões para baixar arquivos da Internet, trabalhar em uma máquina virtual, etc.
Muito espaço para criatividade e imaginação, não é?) Bem, vamos começar.
Para o teste, precisamos de: programa SEB, máquina virtual (VmWare, VirtualBox), navegador Mozilla Firefox, algo para compilar um grande projeto em C # (o autor utilizou Visual Studio Code), algum recurso educacional (por exemplo, um teste Moodle, configurado apenas para trabalhar com SEB).
Disclaimer: Este artigo me ajudou muito ao escrever este artigo .
1. Alterando o user-agent do navegador
Praticamente nenhum conhecimento e ferramentas são necessários para implementar este método. Vamos verificar como o teste Moodle reage quando iniciado através de um navegador da web comum:

Como você pode ver na imagem, o SEB não permite acesso ao teste de um navegador normal.
De acordo com a documentação, o SEB usa o XULRunner , o motor Gecko do navegador Mozilla , como navegador da web . Vamos tentar substituir o agente do usuário do navegador Mozilla pelo agente do usuário especificado no configurador SEB:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0 SEB
Instale um plug-in para substituir o agente do usuário, por exemplo, User-Agent Switcher e adicione a seguinte opção a ele:

Prestidigitação e um pouco de fraude - e agora você pode prosseguir com segurança para o teste, ao mesmo tempo que abre o Google na próxima guia! :)

2. Alterar o arquivo de configuração da máquina virtual
O método anterior, é claro, é muito simples e direto, mas pode surgir uma situação em que o examinador também coleta os logs do exame - e o SEB apenas registra todos os seus eventos: desligar processos não autorizados, limpar a área de transferência e muito mais. Portanto, precisamos encontrar uma maneira de trapacear com o SEB habilitado!
Primeiro, decidimos ver se o SEB poderia ser habilitado em uma máquina virtual. Aqui, infelizmente, falhamos - em tais condições o SEB nem se deixa lançar. Mas de alguma forma ele percebeu que uma máquina virtual está sendo usada!
Havia uma preocupação de que o SEB estava usando métodos que não eram muito agradáveis para um aluno, como detectar processos e serviços de uma máquina virtual (VM) no sistema, mas ao estudar o código-fonte, verificou-se que a verificação do lançamento de uma VM ocorre na função IsInsideVM () do arquivo SEBWindowsClientMain.cs:
private static bool IsInsideVM()
{
using (var searcher = new ManagementObjectSearcher("Select * from Win32_ComputerSystem"))
{
using (var items = searcher.Get())
{
foreach (var item in items)
{
Logger.AddInformation("Win32_ComputerSystem Manufacturer: " + item["Manufacturer"].ToString() + ", Model: " + item["Model"].ToString(), null, null);
string manufacturer = item["Manufacturer"].ToString().ToLower();
string model = item["Model"].ToString().ToLower();
if ((manufacturer == "microsoft corporation" && !model.Contains("surface"))
|| manufacturer.Contains("vmware")
|| manufacturer.Contains("parallels software")
|| manufacturer.Contains("xen")
|| model.Contains("xen"))
|| model.Contains("virtualbox"))
{
return true;
}
}
}
}
return false;
}
Vemos que o SEB é capaz de detectar máquinas virtuais de fabricantes listados no código! Mas e se mudarmos a configuração da máquina virtual, mudando assim o fabricante?
Não antes de dizer que acabou! Abra o arquivo de configuração VmWare e adicione a seguinte linha:
Agora o modelo do fabricante da máquina virtual será o mesmo da máquina principal. Iniciamos a máquina virtual, ligamos o SEB e tentamos acessar o teste - tudo funciona!
3. Compilação de novas versões do SEB
E agora vamos passar para a parte divertida - compilação da “nossa” versão do SEB! O código-fonte está disponível aqui . O mais interessante é que o arquivo de configuração SEB não rastreia a integridade do aplicativo de desktop (ou rastreia de forma que pudéssemos alterar a maior parte do código sem problemas, hee-hee), enquanto a integridade do arquivo de configuração enviado pelo examinador é verificada de forma mais rigorosa.
3.1 Rodando em uma máquina virtual
Já mudamos o fabricante na etapa 2, mas não seria legal criar uma versão do SEB que rodasse em qualquer máquina virtual, certo? Além disso, isso é mais do que fácil de fazer (além de dançar com um pandeiro ao tentar compilar um projeto pela primeira vez - e tudo por causa da dessemelhança das plataformas .NET).
Então, você só precisa comentar a linha com a VM desejada no código acima:
Neste caso, compilamos o programa para que ele não reaja de forma alguma ao ser iniciado na máquina virtual do VirtualBox. Mas há uma observação importante: se nossos leitores decidirem usar este método, é necessário remover / alterar o registro de eventos! A máquina virtual iniciará sem problemas, mas a inicialização através do VirtualBox será refletida nos logs.
3.2 Limpando a área de transferência
Quando o SEB é ligado, ele limpa automaticamente a área de transferência. Assim, tudo o que o aluno copiou antes do lançamento do SEB não entrará no SEB. Bem, o desafio foi aceito!
Existem duas maneiras de ir aqui:
- Explore o arquivo SEBClipboard.cs, remova o registro de erros ou altere ligeiramente o algoritmo de limpeza da área de transferência.
- Comente a linha no arquivo SEBWindowsClientMain.cs:
// Clean clipboard //SEBClipboard.CleanClipboard(); Logger.AddInformation("Clipboard cleaned.", null, null);
Nesse caso, é melhor deixar o registro subsequente - para que o examinador não entenda que com você no SEB você trouxe algo-o-que-não-pode-usar-durante-o exame :)
Usando qualquer um desses métodos, você pode obter o resultado desejado:
Assim, você pode trazer com você para o SEB qualquer texto, uma imagem - em suma, uma folha de dicas que pode ser colocada na área de transferência.
3.3 Ajuda de um amigo ou remova o banimento do Discord
SEB parece uma mulher muito temperamental - com Skype, Discord, etc. ligados. não ligará, mas colocará você diante de uma escolha: ou eu ou eles.
Bem, vamos tentar reduzir o grau de estresse em tal situação.
Há espaço para um vôo da imaginação, mas, em geral, é suficiente comentar as linhas que têm um significado apropriado como "processToClose.Kill ();" no arquivo SEBNotAllowedProcessController.cs.
Também aconselhamos que você considere as linhas "SetForegroundWindow (windowHandle);", "BringWindowToTop (windowHandle);" e o serviço WatchDog. A construção competente de aplicativos e lógica de registro é a chave para o sucesso!
Enquanto isso, colocamos o Discord em execução com o SEB em execução:
O que mais os entusiastas podem tentar?
Restam opções suficientes, o suficiente para 1000 e 1 noite sem dormir no computador. Por exemplo, você pode recompilar o SEB para que ele não seja executado sobre todas as janelas e possa ser minimizado como um aplicativo normal.
Você também pode tentar executar o SEB em outros sistemas operacionais (incrível, mas é verdade: testemunhas oculares afirmam que a configuração padrão da universidade para SEB no OS X não consegue nem interromper a comunicação de voz via Discord!).
Portanto, existem muitas maneiras de montar SEB com funcionalidade reduzida, tudo aqui depende apenas da imaginação de alunos criativos e trabalhadores!
Vamos terminar o artigo com