Algoritmo DEC->HEX

Si, exacto.

Reply to
KT88
Loading thread data ...

Gracias, probaré desensamblando.

Reply to
KT88

No, lo que ha dicho Miguel Gimenez, es correcto.

Reply to
KT88

Eso depende de la velocidad con la que puedas meter cifras en la calculadora.

Si la calculadora permite obtener varias conversiones por segundo podrías intentar obtener el mapa de codigos completo y deducir el algoritmo. Pero si no lo permite te aconsejo la opcion de desensamblar el codigo.

Para el tema de los útiles necesarios para desensamblarlo, si conoces el lenguaje asm de los x86 no deberías tardar mas de 3 o 4 días para hacerte con el metodo de trabajo adecuado.

Hace varios años que no desensamblo programas, pero supongo que el esquema no ha cambiado. Con un desensamblador bueno (tipo softice de Numega o similar) obtienes el codigo desensamblado. Este a su vez te da una lista de rutinas. Si el programa es para windows, los desensambladores buenos pueden identificarte ciertos eventos (cajas de dialogo, botones, etc). Si la calculadora no ha sido programada de forma "ofuscada" puedes obtener de forma relativamente facil la subrutina para calcular el numero.

Creo que si es una aplicacion confidencial deberías intentar tu mismo esta opcion. Si esta opcion no te parece interesante creo que no podremos ayudarte mientras tengamos un mapa tan reducido de las muestras. Si tuvieramos al menos un 80% de muestras quizás podriamos tener una base para deducir el algoritmo.

Saludos.

PD: Si vas a desensamblar, evita los foros. Busca directamente en google por "SoftICE Numega", "IDA" o "W32Dasm".

Reply to
RF

Buenas

Me tiene intrigado el tema este, y será por que no tengo cosas para hacer..... pero me he pasado ya un buen par de horas haciendo numeritos jejeje

Lo del múltiplpo de 5000 parece swer que si, pero falla "algo" y no acxabo de ver el que.

Lo del desplazamiento de 1B no es así: este desplazamiento constante es realmente de 27.4725274725275, o lo que es lo mismo, de 5000 (tu desplazamiento) dividido entre 182 (que es la base de calculo de las 3 cifras hexadecimeles de menor peso como ya se ha dicho en otro mensaje) Si te fijas bien, calculando para toda la serie 2500, 7500, 12500, 17500, ... verás que no siempre la diferencia es 1B, sino que alguna vez es 1C, y eso es debido a estos decimales que estás despreciando al contar como desplazamiento constante 27 (1B) Si te montas una tabla en excel (por decir algo) y vas haciendo pruebas verás rápidamente esto que te digo.

Con lo de la "lookup-table" a que te refieres?? Que es una lookup-table??

Saludos

Whiter

"RF" escribió en el mensaje news:YJKvd.182014$ snipped-for-privacy@news-reader.eresmas.com...

Reply to
Whiter

"KT88" wrote in news: snipped-for-privacy@individual.net:

Luego la respuesta a las pregunas anteriores resulta que era "si" y que es un generador de llaves y no andaba yo tan desencaminado, no?

Mira que eres... Te digo que sea legal o ilegal es una cosa, y crackear/hackear es otra, no van necesariamente juntas. Que me da igual si es legal o no, eso te atañe a ti, y si es ilegal tambien a vete a saber quien, pero desde luego no a mi (espero).

Y efectivamente cuanto mas lo miro mas claro esta que es un generador de llaves, sin entrar a juzgar porque coño necesitas tu reproducir un generador de llaves. Si me quieres contar que el tipo que lo hizo se murio y tienes los derechos, que si, que si, que me da igual... ahorratelo porque no es asunto mio. Yo he hecho estas cosas legalmente tambien alguna vez.

Si se cumple siempre (que no es seguro) la periodicidad de los ultimos tres digitos modulo 182, y ademas como me parecio que decias, el primer digito hexadecimal es funcion solo de estos tres ultimos, probablemente sea un "checksum" o similar, lo que no se me ocurre que otra cosa puede ser que no una llave de verificacion.

Y que hay de la comodidad de extraer el algoritmo? En otros caso puede no ser tan facil. Este, para estar intencionadamente ofuscado no parecer estarlo mucho, la verdad.

Pero cuantos resultados? Si se trata de acortarlo, en ese caso lo que buscas es un sistema de compresion de datos, aunque parezca raro. Se puede generar un algoritmo (no unico) para generar la serie de datos, en este caso, el primer digito a partir de los ultimos 3, que deberia ser "optimizable". Sabes que como mucho va a tener 150 o 200 "instrucciones" pero puede ser menos si se encuentra un patron.

Si hablas de numeros grandes, es otra historia.

Lo que ya es una pista... Efectivamente no lo puede ser, y estas llaves no suelen serlo o si lo son son endiabladamente dificiles. Probablemente sea un simple checksum, pero no es dificil de reproducir, eso si, analizando todos y cada uno de los datos, sino nunca estaras seguro.

Asumiendo que lo es, deberias generar una lista lo mas larga posible de todos los numeros cada 182 y buscar la correlacion entre los ultimos tres digitos y el primero. Si se cumple tambien que el primero es siempre par (quiza para numeros grandes no lo sea), tienes un juego de 8 posibles valores, 0, 2, 4, 6, 8, 10, B, D, a generar a partir de una lista de posibles valores del 1 al 202020 (numero arbitrario que tambien "huele" a generador de llaves) en pasos de 182

Contar el numero de bits puede ser una opcion. Si han aplicado rotaciones de bits, inversiones, suma e invierte, o cosas asi, puede costar dar con ello. Si quieres que el ordenador trabaje por ti genera la lista completa, agrupa los numeros que dan 0, los que dan 2, los que dan 4, etc, e intenta comoprimir el fichero con zip, gz, rar, ace, o cualquier otro sistema similar. Si te lo comprime mucho es señal de que puedes encontar un algoritmo muy corto, sino, no es concluyente.

Pero date cuenta que para sacar de un numero de 3 cifras (hexadecimales),

7 bits se puede hacer de muchas maneras diferentes. Si alguien por "idea feliz" da con ello puede servirte, pero puede que cuando compruebes mas numeros ya no valga.

Y son las tipicas de generacion de llaves.

Claro, pero solo quitando grupos, lo enviavas a tres muy distintos y no todos los leo siempre.

Lo que funciona solo en algunos casos, como este, pero aun no tengo claro si te interesa este problema o el problema general.

Si, como finalmente has teminado soltando, es un sistema de ofuscacion intencionada, entonces puede que te encuentres que el desensamblado no es trivial, puesto que los generadores de llave suelen ir protegidos para evitar que los desensambles. Siempre se puede, pero puede no ser trivial por estar muy ofuscado. Solo si es un sistema donde no se ofusca intencionadamente puedes estar seguro de que el desensamblado deberia ser trivial.

Sabes quienes saben de estas cosas? los crackers... :)

Solo sabes que ese patron ha funcionado con las muestras que lo has probado, no es seguro que funcione con todos. Ahora, si es un sistema de generacion de llaves, que a estas alturas no solo sospecho que lo es, sino que estoy casi absolutamente seguro, puede perfectamente variar imprevisiblemente si esta medianamente bien hecho. Eso de dividir por

182, es decir, un numero que no tiene especial significado, es bastante tipico, pero es mucho mas efectivo a efectos de ofuscacion si el numero es primo, asi que no parece que sea un sistema muy currado, pero en esto nunca se sabe.

En cualquier caso si el patron se mantiene, es redundante, ya que el primer digito se saca de los otros tres, lo que de nuevo es tipiquismo de una llave (que sentido tiene almacenar un checksum de un numero tan corto sino?) Si desde el principio hubieses soltado que es una llave probablemente facilitarias las cosas, aunque eso no quita que sirva siempre.

No voy a insistir mas en eso, porque eso esta discutido hasta la saciedad, pero esos terminos estan bien definidos en el Jargon que es por definicion la fuente adecuada para estas cosas, desde luego mucho mejor que el RAE, y si te lo lees puede que te aclarare muchas cosas.

El uso mas extendido de esos terminos, es precisamente el de los que no saben nada de esos temas. Yo te aseguro que hacking/cracking es algo completamente separado de la legalidad/ilegalidad por mucho que lo quieras asociar y por muchos "lamers" (no suelo usar ese termino pero viene al pelo) que se autodenominen "hackers" y por mucho que la prensa, cine y tal insista en llamar hacker a un chavalete pirateando cedeses. Hacker es mas o menos sinonimo de "experto" y "cracker" de experto en ingenieria inversa (y eso no son solo de claves del photoshop).

Da exactamente igual para que lo uses. La ingenieria inversa es una forma de hacking, te guste o no te guste a ti el nombre.

Reply to
Antonio Martos

KT88 escribió en mensaje ...

es así, como se

Es bastante sencillo y si quieres puedes preguntar en es.comp.cracks, que últimamente anda necesitado de temas interesantes "on topic". Por cierto que también la obtención del algoritmo a partir de las muestras que publicaste tiene allí su razón de ser por tratarse de una actividad que en ingeniería inversa se realiza habitualmente y hay rutinas de encriptación que son más fáciles de identificar por un cracker.

Un saludo. M4N010.

P.D.: Pongo el "Follow up to" a es.ciencia.misc que es donde he leído el hilo.

Reply to
M4N010

KT88 escribió en mensaje ...

implementar el mismo

nada ilegal.

Creo que no deberías relacionar tan a la ligera el "hacking" o el "cracking" con comportamientos necesariamente ilegales ya que es simplificar mucho la cuestion. Si bien el algoritmo que buscas parece sencillo de implementar, el recurrir a la extracción de la rutina del ejecutable en muchos casos es lo más habitual por su sencillez (en los generadores de claves se hace constantemente) y no es necesario un gran conocimiento de la programación en ASM para hacerlo.

M4N010.

Follow up to es.ciencia.misc.

Reply to
M4N010

RF escribió en mensaje ...

similar)

SoftIce es un debugger (depurador) y complicadillo para los principiantes; para Windows es mucho más sencillo OllyDbg.

por

W32Dasm o Ida sí son desensambladores (WDasm también debugger en 32 bits), y el Ida es mejor si bien más complicado. Dependiendo del lenguaje de programación utilizado en el ejecutable del que quiere extraer la rutina de codificación también puede usar descompiladores específicos (Dede para Delphi, Numega Smartcheck para VisualBasic, ...).

Un saludo. M4N010.

Reply to
M4N010

"KT88" escribió en el mensaje news: snipped-for-privacy@individual.net...

Una cosa que sería interesante y que creo que nadie ha planteado todavía es saber si necesitas recuperar los valores "exactos" o te puede servir hallar un valor aproximado. Supongamos que la tabla sea el valor de una temperatura encriptado, por decir algo. ¿Necesitas, al desencriptarlo, recuperar la temperatura original exacta o te serviría una función que diese una aproximación?

Un saludo Joan

Reply to
ReSeT

El valor debe ser exacto. Si se reprograma el dispositivo, con un código erroneo, puede quedar inservible, y creo que incluso irrecuperable.

De todas formas, probaré con el desensamblado y si lo veo muy complejo, crearé tablas.

Reply to
KT88

No conozco el termino exacto en castellano que lo describe.

Suele denominarse "Look-up table" o "Lookup table". Se utiliza cuando el algoritmo para generar la codificacion consume demasiado tiempo y se necesita mayor rapidez.

Por ejemplo:

Si se necesita generar los valores de una señal senoidal de frecuencia fija, en vez de generar los valores por software utilizando senos (que consume mucho tiempo) para atacar al conversor digital-analogico (DAC), se utiliza una memoria EPROM que contiene los valores periodicos.

En informatica se emplean mucho. Los que se dedican a la programacion gráfica las utilizan desde hace muchos años para acelerar las imagenes. Suelen ser tablas de funciones trigonometricas (tablas de senos) que son las operaciones mas usales para graficos tridimensionales.

En matematicas no se que ejemplo poner. Un ejemplo que se me ocurre son las tablas de logaritmos que hay al final de algunos libros. O si alguien se acuerda, las antiguas calculadoras mecanicas que funcionaban desplazando una guia de plastico (o madera) y según la posicion se obtenía un valor.

Mi primera impresion fue que la codificacion es una señal senoidal con frecuencia multiplo de 5000. Aunque tambien pudiera ser que el bit mas significativo hexadecimal sea un digito de control, comprobacion, paridad, etc ...

(16^3) * 182 = 745472

Con 3 digitos nos sobra para un espacio de 202020. Para obtener el cuarto digito, el digito mas significativo (MSB), necesitamos muchas mas muestras, y aún así no creo que sea facil de adivinar.

Saludos.

Reply to
RF

"KT88" escribió en el mensaje news: snipped-for-privacy@individual.net...

simplicidad.

Las apariencias engañan. Para hacer tal afirmación, deberias conocer la solución.

Reply to
Fulgen

"RooT" escribió en el mensaje news: snipped-for-privacy@individual.net...

debugeador o

palabrejas ),

Eso es mucho decir. Como sea un algoritmo complejo, sacarlo puedes sacarlo, pero unos minutos es algo muy optimista.

Saludos

Reply to
Fulgen

"Antonio Martos" escribió en el mensaje news:Xns95C0B99C82D89antoniomartosterraes@130.133.1.4...

No sera reventar. Sera probablemente realizar un sistema electronico alternativo (probablemente portatil) en lugar de usar esa calculadora software. Y no sera tecnicamente ilegal porque probablemente es un encargo de alguien que utiliza ese sistema y que pago en su momento a otra empresa para desarrollarselo pero ahora no quiere tener que llamarles de nuevo.

Voy acertando ?. Caliente o frio ?

Saludos

Reply to
Fulgen

José María González Ondina escribió:

Hola, José María:

Imagino que habrás cometido algún error en esa expresión, o no la acabo de enteneder.

Tomando como ejemplo que para la entrada 1000, nos tiene que devolver 4005

N=1000 M=5 ; M=0101 K=1100000000000101 ; K=C005 4005

Saludos.

Reply to
Francisco Gayá

"Francisco Gayá" escribió en el mensaje news: snipped-for-privacy@wanadoo.es...

un

Tienes razón, olvidé negar también el primer bit.

En el ejemplo que pones, los "nibble" C y 4 sólo se diferencian en el bit más significativo.

José María González Ondina.

Reply to
José María González Ondina

Puedes repetir estas dos ultimas con la calculadora, ¿No serán?

3640 = 0014 3822 = 8015

Secuencia del cuarto dígito:

E 6 A 2 C 4 8 0 6 E 2 A 4 C 0 8 ^-------------------^ ^-------------------^

1ª parte 2ª parte (intercambiada)

LSB...MSB (Inversion del Peso de los digitos) E 6 1110 0110 7 6 A 2 1010 0010 5 4 C 4 1100 0100 3 2

8 0 1000 0000 1 0

6 E 0110 1110 6 7

2 A 0010 1010 4 5 4 C 0100 1100 2 3 0 8 0000 1000 0 1

Secuencia: 7 6 5 4 3 2 1 0 6 7 4 5 2 3 0 1

¿Podrías continuar con otros 15 consecutivos mas? Si el algoritmo es confidencial lo dices. Me quedar¡a con las ganas de adivinarlo, pero no pasa nada.

Saludos.

Reply to
RF

Otra curiosidad:

Si E6A2C480 es un numero de 32 bits:

0000 0001 0010 0011 0100 0101 0110 0111 MSB.................................LSB --> 01234567 hexadecimal LSB.................................MSB --> E6A2C480(hexadecimal

MSB = Digito mas significativo ("Most significant bit") LSB = Digito menos significativo ("Least significant bit")

Saludos.

Reply to
RF

RF escribió en news:KY0wd.182199$ snipped-for-privacy@news-reader.eresmas.com:

Claro que me acuerdo, salía una en los picapiedra, en la hamburguesería ;-) A mi edad *podría* ser tranquilamente abuelo, pero cada vez estoy más convencido que tú podrías ser, como mínimo, bisabuelo.

Reply to
Franois

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.