Códigos de barras al descubierto


La información aquí expuesta a sido traducida de uno de los magníficos tutoriales de +ORC, por lo tanto yo sólo me he limitado a traducirla y formatearla, no puedo hacerme responsable de las ideas y "locuras" expresadas por el autor original :-).


+ORC, Lección C.1"How to crack, Cracking as an art"

[CÓDIGOS DE BARRAS]


" Antes de empezar, deja que insista en la importancia que el cracking tiene en nuestra vida cotidiana. El cracking no sólo tiene que ver con el software, sino con la información, crackear es no aceptar ser controlado ni ser utilizado por otros, crackear es ser libre. Pero debes abandonar ciertas convicciones para poder realizarlo correctamente.

Debes aprender a discernir cualquier posibilidad para crackear que pueda estar a tu alrededor, y creeme, el desarrollo de la nuestra patética sociedad, nos brinda nuevos códigos a diario, nuevas protecciones y mecanismos de ocultación.

Todo lo que nos rodea genera un mundo de códigos y secretos y algunos patrones no tan secretos. Los códigos a veces nos resultan tan familiares que incluso ni les prestamos atención... y están hay para engañarnos, y ciertamente ofrecen maravillosas posibilidades de crackearlos.

Cojamos como ejemplo los códigos de barras... esas pequeñas líneas que puedes ver en los libros que compras, en las botellas que cojes, en cualquier objeto que tengas a tu alrededor... Sabes cómo funcionan? Si no lo sabes estas disculpado, pero no lo estas si alguna vez sentiste el impulso de saberlo... los crackers son curiosos por naturaleza... herederos de una raza de buscadores casi extinta que no tiene nada en común con los esclavos de la televisión y de la publicidad ni con los zombies que nos rodean. Un cracker debe ser capaz de ir más haya de lo que es obvio, ver conocimiento donde otros ni tan siquiera pueden ver ni aventurarse. "


[HISTORIA DE LOS CÓDIGOS DE BARRAS]


Empezemos con un poco de historia, el Universal Product Code (UPC) fue adoptado para uso comercial por la industria de la alimentación en USA. Sus ventajas eran su rapidez, precisión y fiabilidad al entrar información de stock en las computadoras y posibilidad de despedir a más de un trabajador. Este triunfo tan repentino llevo al desarrollo del European Article Numbering System (EAN), una simbologia similar a la UPC, que está ampliamente difundidad por Europa y el resto del mundo. Te enseñaré como crackear esta codificación, ya que afortunadamente no vivo en los Estados Unidos. Recuerda por eso, que existen diferentes simbologias para los códigos de barras, cada una con un patrón de barras diferente.La codificación UPC/EAN se usa en productos de bajo coste, existe tambien el Entrelazado de la codificación 2 de 5. La codificación 39 incluye letras mayúsculas, dígitos, y varios simbolos. La codificación 128 incluye todos los caracteres ASCII ya sean imprimibles o no. La codificación más moderna es la codificación 2-D. Esta se basa en códigos rectangulares, llamados códigos de barras apilados o códigos matriz. Estos contienen mucha más información que los códigos estandar y requieren de un scanner especial que resulta más caro que uno estandar. El límite práctico para un código de barras estandar depende de varios factores, pero oscila entre unos 20 o 25. Para las aplicaciones que precisan más datos se utilizan los códigos de matriz. Por ejemplo, la proxima vez que recibas un paquete de UPS busca una pequeña etiqueta rectangular con un motivo de puntos y un pequeño ojo de buey en el centro. Esta etiqueta se denomina MaxiCode, y la utilizan en UPS para ordenar automaticamente los destinos de los envios.

El ID del fabricante en el código de barras solamente identifica los productos. Estos números son gestionados por la Uniform Code Council en Daytona, Ohio para USA y Canada y por la EAN (International Article Numbering Association) en Bruselas,para el resto de Europa y el mundo.

El identificador del fabricante viene dado en varios digitos del código, lo cual deja el resto para ser assignados de la manera que el productor desee.Este provee salidas limitatadas con listas de sus productos y sus respectivos códigos para que puedan ser introducidos en la máquina registradora. Muchos de estos códigos no están marcados en el producto y son añadidos por los supermercados, usando un esquema de códigos interno que puede ser no estandar. Ya es suficiente... Vamos a crackear.

Los códigos de barras son la única cosa que un cajero automático precisa para calcular el coste de un producto y automaticamente catalogar este producto como vendido... imaginate (solo imaginate :=) porque sería extramadamente ilegal actuar de esta manera) que alguien pega un adhesivo hecho en casa directamente sobre la etiqueta del supermercado, digamos por ejemplo en una botella de Pomerol (este es un buen vino Francés pero resulta algo caro).

La nueva etiqueta significaría lo siguiente para el cajero "vino barato de Burdeos, Francia, cuesta X y X, todo esta Ok, no se preocupe" Crees que alguien puede pensar que hay algo que no cuadra con la botella o contigo? He estado realizando esta actividad durante años y solo he tenido un problema, mi impresora tenia poca tinta y el scanner del supermercado no podia leer la etiqueta...y entonces que? Actua de manera desinteresada, lleva siempre chaquetas de la mejor calidad, y zapatos caros y bonitos...(todo los articulos en los que realizes esto también deben serlo), en esta sociedad la apariencia cuenta mucho más que el conocimiento sustancial... PUES VAMOS A APROVECHARLO PARA NUESTRO PROVECHO! Nadie pensará que tú conoces el esquema.. pues los códigos de barras son bastante complicados y no es algo que sea de saber publico. En la Web hay mucha información sobre esto, pero la mayoría no sirve para nada, amenos que sepas como buscar la mayoria de las veces encontrarás cosas como esto:

"El dígito de comprobación es el doceavo digito y último en la codificación UPC. Su cálculo se basa on un algoritmo específico, y es necesario para certificar que el número es leido o introducido correctamente"

Pero el bueno de +ORC explicará ahora todo lo que necesitas saber para crackearlo.


[LOS CÓDIGOS DE BARRAS DE 13 DÍGITOS]


Cada código de barras contiene 13 valores, desde las posiciones #0 a la #12 (este es el código EAN, el UPC solo tiene 12, de #0 a #11)

Las posiciones #0 y #1 indican el origen del producto.
Las posiciones de la #2 a la #11 contienen el código del articulo
La posición #12 y #13 son la suma de comprobación, la cual verifica la validez del resto de los números.

Como se cálcula esta suma? Pues se calcula en 4 pasos.

VALOR A: Se suman todos los numeros de las posiciones pares (#0+#2+#4+#6+#8+#10) sin incluir la #12 ya que pertenece a la suma.
VALOR B: Se suman todos los numeros de las posiciones impares sin incluir la posición #13 ya que pertenece a la suma de comprobación y se multiplica el resultado por 3 ((#1+#3+#5+#7+#9+#11)*3)
VALOR C: Se suman los valores de A y B dando como resultado C
VALOR D: Se calcula el módulo de C (se divide entre 10 y te quedas con las unidades restantes, como podrás comprobar este metodo está bastante extendido)

Si el resultado no es 0 se le resta a 10 y se obtiene el dígito de comprobación. Ahora mira en un código de barras, comprueba varios libros u otros objetos y *observa* ...

Se supone que los códigos de barras tiene "zonas muertas" a cada lado del simbolo. Las zonas muertas son areas en blanco, libres de cualquier marca de impresión, tipicamente este espacio suele ser 10 veces el ancho de la barra más delgada o de un espacio en el código. Un fallo al dejar este espacio a cada lado del simbolo puede hacer que sea imposible leer el código de barras.

En el código de barras existen dos "bordes", izquierdo y derecho, y una linea intermedia más larga, estas tres lineas son más largas que el resto y son usadas para "regular" el scanner a la dimensión del código de barras.

La posición #0 cae a la izquierda del borde izquierdo y tiene un significado especial, los otros doce dígitos estan escritos "dentro" del código y están divididos en dos grupos por la linea intermedia.Cada valor esta codificado a través de SIETE barras: negro=1 y blanco=0.

Esto forma dos parejas de barras "opticas" de diferentes gruesos. Ahora viene la parte "mágica": Para distraer a las mentes más simples, los códigos de barras usan tres juegos diferentes de caracteres representados por valores de 0 a 9. Esto hace que te sea imposible entender que es lo que esta sucediendo, como es típico, en esta sociedad, los esclavos no deben preocuparse por el funcionamiento real de las cosas.

Aquí están los códigos gráficos para cada uno de los tres diferentes juegos de caracteres (1=negro, 0=blanco):

 CODIFICACIÓN ACODIFICACIÓN B (XOR C)CÓDIFICACIÓN C (NOT A)
00001101 (13)0100111 (39)1110010 (114)
10011001 (25)0110011 (51)1100110 (102)
20010011 (19)0011011 (27)1101100 (108)
30111101 (61)0100001 (33)1000010 (066)
40100011 (35)0011101 (29)1011100 (092)
50110001 (49)0111001 (57)1001110 (078)
60101111 (47)0000101 (05)1010000 (080)
70111011 (59)0010001 (17)1000100 (068)
80110111 (55)0001001 (09)1001000 (072)
90001011 (11)0010111 (23)1110100 (116)

Los bordes siempre son: 101
y la barra intermedia : 01010

- El conjunto de caracteres C equivale a realizar una operación "NOT" sobre el conjunto A.
- El conjunto B equivale a realizar un XOR del conjunto C (o darle la vuelta al numero de izquierda a derecha).
- cada valor tiene dos parejas de barras con diferentes gruesos.

N. del T.: A consequencia de lo anterior, todos los caracteres del conjunto B y C son de paridad par, mientras que los del A son de paridad impar, esto es deducible ya que los numeros en A y B no son divisibles entre 2 y los de C si.

Ahora observa algunos códigos de barras..., Ves las diferencias entre los numeros de la izquierda y los de la derecha? La primera mitad del código de barras esta códificada usando los conjunto de caracteres A y B, la segunda mitad solo usa el conjunto C, Como si no hubiera bastante, a y B son usados dentro de la primera mitad en una combinación que varia dependiendo del valor del dígito en la posición #0.

Estas son las posibles combinaciones según el valor del dígito:

 #1#2#3#4#5#6
0AAAAAA
1AABABB
2AABBAB
3AABBBA
4ABAABB
5ABBAAB
6ABBBAA
7ABABAB
8ABABBA
9ABBABA

"Ah! El estupido consumidor nunca entenderá porque los mismos valores dan códigos de barras diferentes! Nada es más fiable que los códigos de barras :=)

Cojamos un ejemplo, el código de barras de un Martini Seco:



Código: 8 0 00570 00425 7
Veamos: tenemos un 8 0 0 = alcohol
Patrón = 8 = ABABBA CCCCCC
Luego un 000570 como ABABBA (ya que así lo indica la posición #0) y un 004257 como C
La suma de las posiciones inpares: 8+0+5+0+0+2 = 15 (suma inpar)
Luego la suma de las posiciones pares 0+0+7+0+4+5= 16 y 16 *3 = 48 (suma par)
Luego el resultado 15+48=63
calculamos el módulo 63 mod 10 = 3
Se lo restamos a 10, 10 - 3 = 7 = suma de comprobación

OK, un ejemplo más : Osborne Windows programming series Volume 2 General purpose API functions (siempre aquí sobre mi mesa)...

Código: 9 7 80078 81991 9
Veamos: tenemos 9 7 8 = libro
Patrón = 9 = ABBABA
Luego a 780078 como ABBABA y 819919 como C
La suma impar: 9+8+5+8+8+4 = 42 (suma impar)
Luego la suma par 7+1+5+2+4+4= 23 y 23 * 3 = 69 (suma impar)
sumando 42+69=111
y el modulo 111 mod 10 == 1
10 - 1 = 9 = suma de comprobación

Bien..., y que valor tiene todo esto?

El valor, mis pupilos, es que AQUEL QUE NO SABE es como si se lo llevaran en un barco, aquel QUE SABE y APRENDE puede usar sus conocimientos para romper con la sociedad de oligarquia y consumo en la que estamos obligados a vivir. Pruebalo por ti mismo... si lo haces correctamente, las facturas de tu supermercado se veran reducidas casi a cero.
Escribe un pequeño programa que te permita imprimir cualquier código de barras que desees, o cualquiera que use tu supermercado, en el tamaño que desees o en cualquier tipo de etiqueta que prefieras... esto se puede realizar rapidamente en Visual Basic o Delphi... pero no encontrarás mucho en la red. Alternativamente puedes escribir tambien, como yo hice tiempo atrás, un pequeño programa en C bajo DOS, usando un conjunto de caracteres en mayúsculas modificado...y ahí estarás, tienes etiquetas... mira el mundo.

Un pequeño consejo de precaución..., crackea solo un objeto y prueba primero que funciona con la misma etiqueta que este tiene pero hecha por ti mismo. Si funciona tu programa va de perlas, si no, nadie podrá culparte de nada. De cualquier manera, nunca pasa nada, nunca: los escanners tienen una gran tolerancia, ya que deben poder reconocer los códigos que suelen estar impresos en diferentes soportes. Debes coger etiquetas similares a las que se esten utilizando, tan solo para no levantar sospechas, ya que al escanner le da lo mismo que tu etiqueta sea rosa y con los numeros pintados a mano. Te recuerdo, que estamos imaginando situaciones hipoteticas, ya que actuar de esta manera sería extremadamente ilegal.



You are inside Reversed Minds pages.

por Mr. Silver / WKT!
La información aquí vertida es exclusivamente para uso educacional, no puedo hacerme responsable del uso que se haga de esta, por lo que atiendo a la honradez de cada uno :), recuerda que debes comprar el software que utilices :)