Nuevas notas sobre la conformacion en memoria de los chips de Vot.Ar
Anterior: https://justpaste.it/lw65
ESTRUCTURA DE DATOS EN EL CHIP (idem anterior):
BLOQUES: 28
BYTES X BLOQUES: 4
MODELO:
BLOQUE# BYTES
[00]...KK TT TT LL
[01]...CC CC CC CC
[02]...DD DD DD DD
[03]...DD DD DD DD
[04]...DD DD DD DD
[05]...DD DD DD DD
[06]...DD DD DD DD
[07]...DD DD DD DD
[08]...DD DD DD DD
[09]...DD DD DD DD
[0A]...DD DD DD DD
[0B]...DD DD DD DD
[0C]...DD DD DD DD
[0D]...DD DD DD DD
[0E]...DD DD DD DD
[0F]...DD DD DD DD
[10]...DD DD DD DD
[11]...DD DD DD DD
[12]...DD DD DD DD
[13]...DD DD DD DD
[14]...DD DD DD DD
[15]...DD DD DD DD
[16]...DD DD DD DD
[17]...DD DD DD DD
[18]...DD DD DD DD
[19]...DD DD DD DD
[1A]...DD DD DD DD
[1B]...WW WW WW WW
Esa es la disposición en memoria del chip de los datos.
REFERENCIAS:
KK: Token (1 Byte): Debe elegirse de una tabla. Valores: 1C; (no encontre otro valor posible)
TT: Tipo Tarjeta (2 Bytes en Big Endian): Debe elegirse de una tabla. Valores:
COD_TAG_VACIO = '\x00\x00'
COD_TAG_VOTO = '\x00\x01'
COD_TAG_USUARIO_MSA = '\x00\x02'
COD_TAG_PRESIDENTE_MESA = '\x00\x03'
COD_TAG_RECUENTO = '\x00\x04'
COD_TAG_APERTURA = '\x00\x05'
COD_TAG_DEMO = '\x00\x06'
COD_TAG_VIRGEN = '\x00\x07'
COD_TAG_INICIO = '\x00\x7F' (transmisión)
COD_TAG_ADDENDUM = '\x00\x80'
COD_TAG_DESCONOCIDO = '\xff\xff'
LL: Longitud de datos (1 Byte): Es la cant de bytes del tipo DD.
CC: CRC32 (4Bytes ordenados en Big Endian): CRC32(DD).
DD: Datos (MAX 100 Bytes): Datos.
WW: Verif (4 Bytes): Debe elegirse de una tabla. Valores: 57 5F 4F 4B (W_OK); (no encontre otro valor posible)
De hecho, el soft NO verifica en absoluto este valor, ni tampoco lo escribe.
Aparentemente, es usado por MSA para testear los chips antes de entregar las boletas.
Todas las boletas que vi en blanco tenian este código. Probe si la máquina permitia votar en una boleta que no tuviera este valor y funciono sin problemas.
BOLETAS ESPECIALES
Querés ser técnico? O presidente de mesa?
Te encargas de capacitacion y la empresa no les proveyó de boletas especiales?
las boletas especiales poseen simplemente el valor de TOKEN y el ID de tipo de tarjeta, el resto puede o no estar en blanco, da lo mismo. Quizá resulte conveniente dejarlo en blanco.
De esta manera, la boleta especial de presidente de mesa es:
[00] 1C 03 00 00
El resto en 0 :D
La de técnico sería:
[00] 1C 02 00 00
Y así siguiendo...
DISPOSICION DE LOS DATOS
Para el voto, los datos se disponen de la siguiente manera:
COMIENZO DE LOS DATOS
Se identifica comenzando en el primer bloque de datos [02] la zona o
distrito y ciudad donde transcurren las elecciones, seguido de un valor
separador 0x2E y un número que no logré identificar el siginificado.
Quizá sea identificador de colegio dentro del distrito.
De esta manera: "02CABA 1" donde el espacio entre CABA y 1 es 0x2E
(atenti que no es el ASCII de espacio 0x20).
VOTO
El voto se genera indicando la categoría seguida del nro identificador
de la persona votada.
Estos identificadores se encuentran en:
/cdrom/msa/app/datos_json/<nombre_de_la_eleccion>/<ciudad>.<nro>/Candidatos.json
El valor correspondiente es "codigo", sin incluir el "cod_lista".
Ej.:
{
"asistida": "Mohamed Salem, Ramon",
"cod_categoria": "DIP",
"cod_lista": "102",
"codigo": "102.5337",
"nombre": "Mohamed Salem, Ramon",
"numero_de_orden": 1,
"sexo": "M",
"titular": true
}
El código para ese candidato es 5337.
Si el código es menor a 4 digitos, se completa con un espacio (0x20) en
los primeros caracteres, p.e.: " 233"
Y las categorias en:
/cdrom/msa/app/datos_json/<nombre_de_la_eleccion>/<ciudad>.<nro>/Categorias.json
El valor correspondiente es "codigo": COM JEF LEG en estas elecciones
VOTO EN BLANCO
El voto en blanco se genera dejando un espacio (0x20) entre la
categoría y el string BLC (0x 42 4C 43), y luego continúa la próx
categoría.
P.E.: COM BLCDIP BLCJEF BLC
Este sería un voto en blanco en todas las categorías
P.E.: COM5320DIP5521JEF BLC
Este sería un voto en blanco para JEFe de gob.
EJEMPLO DE VOTO
BLOQUE# BYTES
[00]...1C 01 00 1D
[01]...79 36 3E 7E
[02]...30 32 43 41 02CA
[03]...42 41 2E 31 BA 1
[04]...43 4F 4D 35 COM5
[05]...33 32 31 44 321D
[06]...49 50 20 35 IP 5
[07]...31 31 4A 45 11JE
[08]...46 20 42 4C F BL
[09]...43 00 00 00 C
[0A]...00 00 00 00
[0B]...00 00 00 00
[0C]...00 00 00 00
[0D]...00 00 00 00
[0E]...00 00 00 00
[0F]...00 00 00 00
[10]...00 00 00 00
[11]...00 00 00 00
[12]...00 00 00 00
[13]...00 00 00 00
[14]...00 00 00 00
[15]...00 00 00 00
[16]...00 00 00 00
[17]...00 00 00 00
[18]...00 00 00 00
[19]...00 00 00 00
[1A]...00 00 00 00
[1B]...57 5F 4F 4B W_OK
Recordar que el Tipo de Tarjeta y el CRC32 se escriben al reves
En este ejemplo serian, respectivamente, 0001 y 7E3E3679