Cientos de portátiles,
y ninguno pertenece al centro.

Exam monitoring tool login screen with student number, name, and exam code fields

Karel de Grote Hogeschool buscaba una forma de seguir los ordenadores de los estudiantes durante los exámenes. El profesorado no veía si alguien se conectaba a una red externa, ejecutaba una máquina virtual o abría aplicaciones que no debía.

Hasta entonces todo dependía de la vigilancia en el aula, y eso no escala en salas con cientos de equipos, la mayoría portátiles de los propios estudiantes. KDG necesitaba algo que revise cada equipo antes de empezar, registre lo que importa mientras dura la prueba y se entregue junto con el examen. El estudiante lo ve todo: entra con su usuario, la aplicación le dice qué cambiar y al final es él quien entrega el registro. La supervisión entra en el acuerdo sobre datos de estudio que firma al matricularse.

3
sistemas operativos, una sola base de código
6
señales vigiladas durante el examen
1
registro cifrado, entregado con el examen
0
personas que pueden leerlo sin la clave del docente

Una herramienta de escritorio que capte la actividad del sistema en Windows, macOS y Linux va más allá de lo que Dart hace por sí solo. Capturar paquetes de red, reconocer una máquina virtual y leer el hardware piden código nativo cada vez.

Con nuestro método de seis pasos construimos una aplicación Flutter en neerlandés e inglés que llama a bibliotecas de C y C++ mediante dart:ffi, cifra lo que registra en el propio equipo y da al profesorado una herramienta de línea de comandos para abrir esos registros después.

1. IDENTIFICAR Y VALIDAR

1. IDENTIFICAR Y VALIDAR

Con el equipo de IT de KDG definimos qué significa en la práctica la integridad de un examen. De ahí salieron seis dimensiones: conexiones de red, estado del Bluetooth, adaptadores conectados, aplicaciones en ejecución, presencia de máquinas virtuales y un latido que indica que la aplicación sigue viva. Cada una se contrastó con situaciones reales de examen.

El resultado funciona en cualquier equipo de examen, arranque lo que arranque y sea de quien sea. Lleva al estudiante por una comprobación previa, registra seis tipos de actividad del sistema mientras dura la prueba y deja un único registro cifrado que solo un docente puede abrir.

¿Un reto parecido?

Primero una comprobación, luego seis cosas que vigila

Antes de empezar, la herramienta enseña lo que todavía está mal y no deja arrancar hasta que se arregla. Durante el examen mira el sistema desde seis ángulos, con marca de tiempo en cada evento y cifrado donde ocurre.

Pre-exam warnings showing connected WiFi and Bluetooth that need to be disabled
Exam monitoring tool login screen with student number, name, and exam code fields Pre-exam checklist showing system status checks and session information

Inspección en tiempo real con una biblioteca nativa: TCP, UDP e ICMP, con dirección de origen y destino, puertos e indicadores de protocolo. Se ejecuta en un isolate de Dart aparte para no bloquear la interfaz.

Reconoce VMware, VirtualBox, Hyper-V y otros hipervisores mediante una biblioteca de C++ tras un envoltorio de FFI, e indica el nivel de certeza y qué hipervisor ha encontrado.

Enumera los adaptadores de red físicos y virtuales con sus detalles de hardware, y detecta si durante el examen se conecta o se retira alguno. Cada plataforma se trata como esa plataforma permite.

Sigue los procesos en ejecución y señala las aplicaciones prohibidas. También ve qué se abre o se cierra durante la sesión de examen.

Indica si el Bluetooth está encendido antes de empezar y si vuelve a encenderse durante la prueba. Es lo que más se olvida, así que la lista de comprobación lo menciona por su nombre.

Una señal constante que dice que la aplicación sigue en marcha. Un hueco ahí dice tanto como el resto del registro: así se ve cerrar la herramienta a mitad del examen.

Flutter en escritorio con envoltorios de C y C++, almacenamiento cifrado y una herramienta de línea de comandos para descifrar

La aplicación está organizada como monorepo. La interfaz en Flutter coordina seis servicios de supervisión, todos sobre la misma clase base MonitoringService. Dos de ellos, la captura de paquetes y la detección de máquinas virtuales, pasan por paquetes envoltorio de FFI con enlaces generados. Cada evento atraviesa la capa de cifrado antes de llegar al disco.

Explicamos en detalle el trabajo de FFI que hay detrás. Leer el artículo →

Architecture: Flutter desktop app with C and C++ FFI wrappers, an AES-GCM encryption layer, local encrypted logs and a Dart CLI decryption tool

Construida con Flutter para Windows, macOS y Linux desde una sola base de código, en neerlandés e inglés. El código en C y C++ se compila por plataforma con CMake y CocoaPods.

El estudiante entra con su nombre, su número de estudiante y el código del examen. la herramienta revisa el equipo y dice en lenguaje llano qué hay que cambiar: desactiva ese adaptador Wi-Fi, apaga el Bluetooth. Cuando todo está en orden, empieza el examen. Al terminar, la aplicación señala un único registro comprimido que el estudiante entrega junto con su trabajo. El profesorado los abre con una herramienta de línea de comandos en Dart, que convierte cada uno en una cronología por equipo.

Exam monitoring tool log upload screen for submitting encrypted exam logs

¿Los mismos exámenes en tu propia institución?

Karel de Grote Hogeschool lo construyó para sus propias aulas de examen y está abierto a licenciarlo a otras instituciones. La misma aplicación, tu identidad visual, tus reglas sobre qué se comprueba, adaptada e integrada por el equipo que la construyó. Cuéntanos cómo organizas tus exámenes hoy.

Gratis, sin compromiso 30 minutos Con un consultor senior