Estructura básica del archivo de licencia APRouter
Hace algun tiempo les prometí esta entrega. Con todo no me dediqué a desentrañar la estructura completa del archivo de licencia sino solamente aquellos bytes necesarios para la mac y la llave de 22 bytes.
Sin embargo existe el código fuente en C para el acceso directo a la partición mtd y modificar tanto la configuración, como el firm almacenado en la flash.
En el archivo de licencia identifique tres bloques, que en el caso del APRouter 6.1 son HS02, DS03 y CS03. Cada uno de estos bloques tienen la siguiente estructura:
ID: 4 bytes
Size: 2 bytes (big endian integer)
Data: Size byte
El último byte del Data es el checksum.
Ahora bien, el Data no esta en “texto claro” sino “cifrado”. Para tenerlo en texto claro hay que realizar la siguiente operación binaria: data[i]=~data[i]+0xc8, sobre cada byte en Data. Si quieren hacerlo rápido pueden utilizar cualquier editor hexdecimal.
Una vez que tengan el “texto claro” aparecerá a su vista la MAC y la llave de 22 bytes en los bloques HS y DS. EL bloque CS es el archivo que se almacena en /webs/config.dat dela que ya muchos se dieron cuenta y es la configuración por defecto.
Veamos que datos se deben cambiar para tener una licencia con nuestra MAC:
Bloque HS:
offset dato
7-12 MAC (que en la MTD será WLAN)
13-18 MAC (que en la MTD será WAN)
19-24 MAC( que en la MTD será LAN)
Bloque DS
ofsset data
446-451 MAC
5325-5346 key (que se explica más abajo)
Eso es todo lo que se requiere modificar. Ahora bien, luego de modificados los datos debes corregir el checksum y volver a cifrar.
El key como te imaginarás se obtiene con la función crypt de glib.c y esta basado en MD5 y los caracteres estan en el conjunto: [a–zA–Z0–9./].
Para obtener la key en base a la MAC, ejecuta el siguiente comando, en linux claro (hay tambien versiones para windows):
openssl passwd -1 -salt <SALT> 000e2e8522eb<POSMAC>
En el caso de la versión 6.1, SALT es jfm3kaZ2 y POSMAC es lfR3c67H0aq , además la MAC debe estar con los caracteres hexadecimales en minúsculas.
De dónde saque esos valores?, busquen un poco en /bin/flash y /bin/webs ya saben como obtener esos archivos para revisarlos.
Por ejemplo, si la MAC es 000E2E8522EB deberan ejecutar:
openssl passwd -1 -salt jfm3kaZ2 000e2e8522eblfR3c67H0aq
que devuelve: $1$jfm3kaZ2$AuY6O0yxHd8J7VZw3t5gi.
La key es: uY6O0yxHd8J7VZw3t5gi.
Ahora ya saben cómo se hace, ya no es necesaria las fuentes, ya pueden hacerlo ustedes mismos. Pero les pongo las fuentes libres para quien quiera hacer mejoras, personalmente prefiero el modo comando para asi generas las licencias sin ventanitas que hacen perder el tiempo.
Si quieren saber el SALT y el POSMAC para las otras versiones, es cuestión de ver los archivos flash y webs.
Código fuente en C, compilar con:
gcc -o licencia licencia.c -lcrypt


walter
1 Nov, 2007
Dime en esta parte porque se le agrega &key[12]
strcpy(key, crypt(strcat(MAC, pos_mac),salt));
strcpy(key, &key[12]);
admin
2 Nov, 2007
La función crypt devuelve una cadena como: $1$jfm3kaZ2$AuY6O0yxHd8J7VZw3t5gi. de la que solamente nos interesa 22 bytes comenzando en offset 12.
Walter
2 Nov, 2007
——————
Por ejemplo, si la MAC es 000E2E8522EB deberan ejecutar:
openssl passwd -1 -salt jfm3kaZ2 000e2e8522eblfR3c67H0aq
que devuelve: $1$jfm3kaZ2$AuY6O0yxHd8J7VZw3t5gi.
La key es: uY6O0yxHd8J7VZw3t5gi.
——————
Pero aqui “uY6O0yxHd8J7VZw3t5gi.” le falta el caracter “A”
Walter
3 Nov, 2007
Saludos, he tratado de desarrollar un licenciador desde php, aqui paso el codigo para generar el key,
pero con respecto a la suma de binarios estoy algo confundido
data[i]=~data[i]+0xc8
ya q php toma a 0xc8 como 200
es decir el equivalente en decimal
cuando hago la suma me sale en decimales, pero al tratar de leer no me los resultados esperados.
Si alguien tuviera una idea.
He leido el generador en C. y es muy interesante, pero aun asi no puedo dejar de desarrollar uno en php, es una obsesion, gracias.
Walter
3 Nov, 2007
otra pregunta, la idea de
data[i]=~data[i]+0xc8
se refiere a encriptar o desencriptar la licencia para mostar datos legibles??
Walter
4 Nov, 2007
ok, debo admitir q me fue dificil seguior tus pasos pero finalmente lo consegui.
Hice procesos similares pero un poco terdiosos en php, y el licenciador esta tomando forma.
Lo unico q en la parte de data[i]=~data[i]+0xc8
es donde no entiendo bien, porque le pones eso tomando los bytes de una licencia ya hecha y sumandole 0xc8 = 200 decinal ???
Walter
4 Nov, 2007
ademas otra cosilla, a mi me ha salido lo de las MAC y el key, pero no tan bien, es decir
en la key le he tenido q restar 0xc7 para q me muestre la llave, como te paso mi codigo para q lo revices??
Matia
7 Nov, 2007
Walter, Cuando lo tengas funcionando en php pasá un link.
Gracias! Freddy, lo tuyo una pasada tio! Muchas mas gracias para ti!.
Prison Break
8 Nov, 2007
Hola, me gusta much su trabajo e tienes todo el merito de las platas.
Una cosita, tienes como hacer modificaciones em el firmware y recompilalo ou volver a imagem cambiada?
Necessito cambialar logos e modificaciones en la estructura web e las imagenes del logotipos, tienes como?
Lucho
9 Nov, 2007
Muy bueno la manera en que la explicas,… pero dime una consulta, no se si estoy un poco fuera del tema, pero habiendo revisado tus Blogs anteriores comentas como extraer el codigo fuente del .bin pero … una vez extraido se podra modificar algunos archivos y volverlo a generar un .BIN valido o no, porque estoy haciendo algunas modificacion al firmware y quisiera saber si podria generar nuevamente el binario, y este me sirviera… para probarlo en mi equipo.
btsector
11 Nov, 2007
http://btsector.wordpress.com/
janier500
12 Nov, 2007
Muy bien. Puede bajar el generador .jar. Ahora mi pregunta se puede modificar para bloquear tráfico p2p. Seria Una gran mejora….Quiero colaborar pero no se mucho.. diganme y yo aporto lo que pueda
Gonzalo
18 Nov, 2007
Hola, quería saber si es indiferente el encabezado de la mac para generar la licencia, (me refiero a los 3 primeros octetos) o si siempre tiene que comenzar “000e2e”? porque tengo equipos con mac que comienza en “000a52″ y quiero saber si me serviría igual una licencia generada con este generador.
Muchas gracias,
Gonzalo.
Antonio Augusto
19 Nov, 2007
Olá tentei usar o gerador de licença com o firmware que baixei no site Aprouter 6.1 NG mas não obtive sucesso pois fiquei sabendo que que essa versão não aceita a licença gerada pelo seu site.
Zé Vieira
27 Nov, 2007
fimware WAPPRO
http://www.wappro.com.br
é possivel gerar a licenca?
btsector
28 Nov, 2007
Hi!
New APLicGen 2.0 released. Now it supports AP Router 7.x.
http://btsector.wordpress.com/
Thanks!
Janier
29 Nov, 2007
me conecte via ssh al router y observe que tiene el protocolo l7. Necesito activar el bloqueo del trafico P2P pues desde el administrador web no se puede bloquear a diferencia del la versión 7.x que si lo tiene ” Mi equipo es un EDIMAX br-6204″
Sky
3 Dic, 2007
wow!! tks Bohorquez
Alejandro
8 Dic, 2007
Hola..
esta muy bueno tu desarollo…aunque no lo he probado aún…
Lo que te quiero consultar es respecto de la frecuencia de trabajo.. si existe algún bugs por el cual se pueda modificar en forma manual… la idea es hacer trabajar el equipo fuera de los canales convencionales.
Desde ya gracias.
Juliano Targa
13 Dic, 2007
Walter ou qualquer outro do Blog
será que podem me enviar o codigo do gerador em PHP?
Abraços
Ernesto Paz
13 Mar, 2008
Hola, tengo el ap router con la version 7.3 y necesito bloquear los p2p de mis clientes, entro a la configuracion web del bloqueo, pongo las ip que quiero que se bloqueen y nada, los p2p siguen corriendo,. Vos me podrias ayudar asi lo configuro y queda funcionando el bloqueo. Gracias y Saludos
Hey
23 Jun, 2009
Hi,
Sorry to bother you with an ancient topic. But ive been fiddling with rtl8186 devices a long time, and i just managed to kill one (ive flashed modified linux versions and no problems.. but this ones died in a blockout after saving settings. Using serial port, there is no output)
I wanted to know if there is a way to recover using JTAG. And if so, do you know the way to do this. So far, i have got a few ideas, but none of them working yet.
Chipset is RTL8186soc, and flash memory is MX 29LV160CBTC.
Emily
2 Jun, 2010
me conecte via ssh al router y observe que tiene el protocolo l7. Necesito activar el bloqueo del trafico P2P pues desde el administrador web no se puede bloquear a diferencia del la versión 7.x que si lo tiene ” Mi equipo es un EDIMAX br-6204″