herramientas para https://resultadosconvzla.com/
Este es un conjunto de herramientas desarrollado en poco tiempo para verificar los resultados de las elecciones presidenciales de 2024 en Venezuela, utilizando las imágenes de las actas publicadas por la oposición al gobierno actual.
Javier Smaldone (https://x.com/mis2centavos) Niv Sardi (https://x.com/xaiki)
Archivo con los URL de las actas en https://static.resultadosconvzla.com/
Script que lee y contabiliza las actas. Recibe como parámetro el directorio que contiene las imágenes de las actas y produce el CSV por la salida estándar. Cambiando el parámetro de xargs se puede setear la cantidad de procesos concurrentes.
Script que realiza la lectura del QR de un acta. Requiere zbarimg (https://github.com/mchehab/zbar).
wrapper para wget para pasar los headers como dios manda evita ser bloqueado por el servidor
sh wget.sh -rc 'https://resultadosconvzla.com/'
Script que comprueba la integridad de las actas descargadas con las actas alojadas en https://static.resultadosconvzla.com. Recibe como parámetro la lista de actas y por la salida estándar arroja el resultado de md5sum –check
El script calcula el MD5 hash de cada acta y lo compara con el hash que arroja el servidor https://static.resultadosconvzla.com en el encabezado “etag” sin necesidad de volver a descargar el acta.
Si arroja el error “argument line too long”, se puede solucionar corriendo el script dentro de “find” de la siguiente manera:
find . -type f -name '*.jpg' -exec sh md5check.sh {} \; > md5check.txt
Re-implementacion en Python de todo lo anterior, internamente usa zbar y opencv para intentar leer actas sacando sus resultados en 3 archivos:
decoded.csv
: actas leidas correctamentefailed.csv
: actas que no pudieron ser leidasduplicates.csv
: actas duplicadas (numeros de actas duplicados)
el programa es reentrante, lo que significa que si lo corre varias veces no volvera a intentar leer las actas ya procesadas (decoded
y duplicates
), al menos que le pase el flag -f
.
el programa intenta varios ‘trucos’ para mejorar las chances de leer las imagenes, se pueden personalizar en la linea de comando con el flag -q
o --quirks
, la lista de trucos es:
none
: no hace nadathresh_adaptive
: aplica un limite adaptativothresh_binary
: aplica un limite binariogray
: convierte la imagen a tonos de griscrop
: corta la imagenthresh_white
: convierte los puntos mas blancos de la imagen a negroresize
: redimenciona la imagen
para mas informacion corra:
$ python3 cv.py -h
usage: cv.py [-h] [-v] [-f] [-q QUIRKS [QUIRKS ...]] [-D DECODERS [DECODERS ...]] [-d] [-c CSV] [-F FAILED_CSV]
[-2 DUPLICATES_CSV] [-P MAX_PROCS] [-n]
[filename ...]
positional arguments:
filename
options:
-h, --help show this help message and exit
-v, --verbose
-f, --force
-q QUIRKS [QUIRKS ...], --quirks QUIRKS [QUIRKS ...]
-D DECODERS [DECODERS ...], --decoders DECODERS [DECODERS ...]
-d, --debug
-c CSV, --csv CSV
-F FAILED_CSV, --failed-csv FAILED_CSV
-2 DUPLICATES_CSV, --duplicates-csv DUPLICATES_CSV
-P MAX_PROCS, --max-procs MAX_PROCS
-n, --non-destructive
Los pasos 1) y 2) son opcionales, se puede utilizar la lista de URLs ya incluida en el archivo files.txt.
24.048 actas ya descargadas de resultadosconvzla.com están disponibles en el siguiente Google Drive. https://drive.google.com/drive/folders/1I_Ae22mpHUg4xJGz1WTv_F5J8g2zTwqm
sudo apt install zbar-tools
brew install zbar
En el directorio que contiene los scripts.
sh wget.sh \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--restrict-file-names=windows \
--domains resultadosconvzla.com \
--no-parent \
https://resultadosconvzla.com/
Esto descargará todas las páginas de https://resultadosconvzla.com/ en el directorio resultadosconvzla.com.
se lo puede comparar con https://github.com/xaiki/resultadosvzla.com
grep -re 'static' resultadosconvzla.com/mesa/ \
| cut -d\" -f2 | sort -u > files.txt
(12 Gb, aprox.)
mkdir actas
cd actas
sh wget.sh -i ../files.txt
cd ..
(Ajustar la cantidad de procesos concurrentes en el parámetro “max-procs” de xargs en count.sh, se recomienda ncpu*4).
chmod 755 count.sh
./count.sh actas > actas.csv
Esto generará un archivo en formato CSV llamado actas.csv, conteniendo como campos el número de acta y los votos de cada candidato, y creará un directorio llamado failed conteniendo una copia de las actas que no pudieron ser leídas correctamente.
Comprobar la integridad de las actas descargadas con las actas alojadas en https://static.resultadosconvzla.com.
cd actas
sh md5check.sh **/*.jpg > md5check.txt
Esto generará un archivo de texto plano conteniendo el resultado que arroja md5sum –check para cada acta. Para filtrar las actas que no lograron pasar la verificación, se puede ejecutar:
grep -v OK md5check.txt