Poniendome al lado del atacante:
Opción A. "Bot con números aleatorios"
Pofo factible por: El token nunca es igual para dos pasadas. Cada token (que representa una imagen) se calcula a través de un sha1 que se calcula de concatenar #acta+partido+fecha de generación del token. Internamente se guarda una tabla con los hash (tokens) asignados a cada boleta y son refrescados con cada pasada.
A pesar de las colisiones en la generación del hash es muy pero muy pero muy improbable que para la misma boleta obtengás el mismo token. El token solo puede ser utilizado una tan sola vez tiene un tiempo de vida de cinco minutos y luego es considerado inválido.
Como no sabes a que acta corresponde la imágen hacer un bot para llenar con números aleatorios no sería factible porque al hacer el conteo de frecuencias, las digitaciones correctas desplazarían en frecuencia a las incorrectas. Si bien el bot agregaría ruido al sistema el ruido sería fácilmente filtrable de la señal. la frecuencia de muestreo de un dato random para una boleta específica sería de 1 vs 2, 3 o 4 de la digitación correcta.
Opción B. "Bot con un valor fijo"
Medio factible: Digamos que en vez de llenar con números random llenas con un número fijo, digamos 500. El problema es que al igual que en el caso anterior tendrías en la base de datos que todas las boletas tienen 500 con 3, 4 o 5 digitaciones iguales. Aquí es el caso contrario porque en ese caso el ruido sería identificable y por lo tanto filtrable. Sería obvio que todas las boletas tendrían la misma digitación así que tomaríass la siguiente en frecuencia de digitación como válida.
Opcion C. "Bot que llena con valores fijos pero los varía cada cierto bloque de entradas"
Este es el ataque que considero más factible, es el punto intermedio entre Opción A y Opción B. la idea es que en vez de generar un número fijo este numero se esté rotando para bloques de boletas. El problema es que esto igual generaría un patron identificable y nada te garantiza que estés trabajando bajo el mismo bloque de actas. La efectividad de este método depende del ancho de la "ventana" que tomés para atacar el ingreso de datos, mientras más pequeña la ventana menos efectivo por la misma causa que A mientras más ancha la ventana más fácil de identificar por C.
Ahora como dijeron en otros comentarios. Mientras más gente utilice el contador e ingrese datos es más probable que el número identificado en el acta, corresponda al número escrito en la misma. Y esa señores es la "magia" del algoritmo, mientras más gente lo use más confiable será el resultado final.
Para los curiosos, este proyecto no únicamente es Open Source Software, sino también tienen acceso directo y exclusivo a todos los datos, el código fuente de la app está en GitHub:
https://github.com/mxgxw/crowdvalidationY se están colocando dumps de la base de datos approximadamente cada hora en la siguiente dirección:
http://contemosnosotros.org/app/webroot/sqldumps/