¿Pueden darme algún consejo? XOR

Iniciado por Hamburguers, 26 Abril 2019, 17:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Hamburguers

Buenas, me han dado un código que parece ser base64 ya que tiene dos signos de igual al final.
Y a su vez me han dado una palabra con mayúsculas y minúsculas.
Me han dicho que es está en XOR y que esa es la clave con la que está cifrado, ¿alguien me puede ayudar/orientar? , puesto que no consigo descifrarla. :P
Por motivos varios no puedo mandar las palabras. :silbar:

Machacador

"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

Hamburguers

Cita de: Machacador en 26 Abril 2019, 18:41 PM
Usa esto a ver que tal: https://md5decrypt.net/en/Xor/

:rolleyes: :o :rolleyes:

Saludos.
Verás soy nuevo y no sé que tipo de tipo debo seleccionar, :P ¿Podrías ayudarme?, ¿es Hexadecimal, Binario o Texto con salida Hexadecimal?  :-\ :-\ :-\

Machacador

Cita de: Hamburguers en 26 Abril 2019, 19:54 PM
Verás soy nuevo y no sé que tipo de tipo debo seleccionar, :P ¿Podrías ayudarme?, ¿es Hexadecimal, Binario o Texto con salida Hexadecimal?  :-\ :-\ :-\

Amigo... por aquí hay muchos informáticos, pero magos creo que no... como van a saber lo que es sino publicas el bendito código???

:rolleyes: :o :rolleyes:

Saludos
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

Hamburguers

#4
Cita de: Machacador en 26 Abril 2019, 20:27 PM
Amigo... por aquí hay muchos informáticos, pero magos creo que no... como van a saber lo que es sino publicas el bendito código???

:rolleyes: :o :rolleyes:

Saludos
:( :o No había caído, el código sería este: UGFzc3dvcmQ6IHhvFzYMACEfBiAgIA==
Y la key: encryptXOR
A lo mejor para vostros puede que sea fácil, pero yo llevo ya dos días intentando descifrarla  :-\

Machacador

Esta son las 3 posibilidades queda ese descifrador:

302925081a43102e2c3f34582a3a11063222161f242d26143b19353f06135853

4841378266716464463528842581765034223136453820592553636198883

0e03c30d0c080c000f00a2e30b0a0a0e



Y te puedo decir que yo se menos de estas cosas que tu... solo soy curioso de Google... por lo tanto no se de que te pueda servir esto (creo que de nada)... pero ya llegara en cualquier momento alguien que si sepa del asunto y te de orientación mas certera...

:rolleyes: :o :rolleyes:

Saludos.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

Hamburguers

Cita de: Machacador en 26 Abril 2019, 21:34 PM
Esta son las 3 posibilidades queda ese descifrador:

302925081a43102e2c3f34582a3a11063222161f242d26143b19353f06135853

4841378266716464463528842581765034223136453820592553636198883

0e03c30d0c080c000f00a2e30b0a0a0e



Y te puedo decir que yo se menos de estas cosas que tu... solo soy curioso de Google... por lo tanto no se de que te pueda servir esto (creo que de nada)... pero ya llegara en cualquier momento alguien que si sepa del asunto y te de orientación mas certera...

:rolleyes: :o :rolleyes:

Saludos.


Gracias pero no me funcionan  :-\ puesto que al pasar el código a texto en algunos sitios me salen una especie de cuadros blancos que ponen 0017 y algo así.
No se lo que son pero sea lo que sea me han dicho que eso no debe de salir.
Gracias de antemano por toda la ayuda :D
Si alguien sabe algo sigo a la espera impaciente   :silbar:

MCKSys Argentina

Hola!

El string UGFzc3dvcmQ6IHhvFzYMACEfBiAgIA== decodeado es:

'Password: xo\x176\x0c\x00!\x1f\x06   ' (sin las comillas simples)

Esto muestra que se encodeó la cadena 'Password: ' y a continuación se pusieron los bytes que se deberian XORear (segun lo que has dicho).

Si tomamos desde la 'x' hasta el ultimo, que es un espacio, el largo de ese string es de 12 caracteres.

Ahora, la clave que has dado ('encryptXOR') tiene 10 caracteres.

Haciendo un XOR 1 a 1, aplicariamos la key a los primeros 10 bytes (ignorando los ultimos 2 que son espacios).

Esto revuelve el string: '\x1d\x01tDupUGIr'

Notar que lo que comienza con '\x' es el valor hexa del caracter. Normalmente se coloca asi cuando es un caracter no imprimible.

El codigo que use para decodear es este:

Código (python) [Seleccionar]

import base64

def main():
    data = 'UGFzc3dvcmQ6IHhvFzYMACEfBiAgIA=='
    datadec = base64.b64decode(data)
    datadec = datadec[10:]
    print repr(datadec)
    key = 'encryptXOR'
    ret = ''
    for i in range(len(key)):
        ret += chr(ord(datadec[i]) ^ ord(key[i]))
    print repr(ret)

if __name__ == '__main__':
    main()


Por supuesto, esa string devuelta no tiene mucho sentido para mi, asi que debe estar usandose otro tipo de encriptacion, o bien, la key es incorrecta.

Puedes hacer un analisis criptografico sobre el texto cifrado con XOR usando Cryptool; pero vas a tener que investigar sobre el misma.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Hamburguers

Cita de: MCKSys Argentina en 26 Abril 2019, 23:16 PM
Hola!

El string UGFzc3dvcmQ6IHhvFzYMACEfBiAgIA== decodeado es:

'Password: xo\x176\x0c\x00!\x1f\x06   ' (sin las comillas simples)

Esto muestra que se encodeó la cadena 'Password: ' y a continuación se pusieron los bytes que se deberian XORear (segun lo que has dicho).

Si tomamos desde la 'x' hasta el ultimo, que es un espacio, el largo de ese string es de 12 caracteres.

Ahora, la clave que has dado ('encryptXOR') tiene 10 caracteres.

Haciendo un XOR 1 a 1, aplicariamos la key a los primeros 10 bytes (ignorando los ultimos 2 que son espacios).

Esto revuelve el string: '\x1d\x01tDupUGIr'

Notar que lo que comienza con '\x' es el valor hexa del caracter. Normalmente se coloca asi cuando es un caracter no imprimible.

El codigo que use para decodear es este:

Código (python) [Seleccionar]

import base64

def main():
    data = 'UGFzc3dvcmQ6IHhvFzYMACEfBiAgIA=='
    datadec = base64.b64decode(data)
    datadec = datadec[10:]
    print repr(datadec)
    key = 'encryptXOR'
    ret = ''
    for i in range(len(key)):
        ret += chr(ord(datadec[i]) ^ ord(key[i]))
    print repr(ret)

if __name__ == '__main__':
    main()


Por supuesto, esa string devuelta no tiene mucho sentido para mi, asi que debe estar usandose otro tipo de encriptacion, o bien, la key es incorrecta.

Puedes hacer un analisis criptografico sobre el texto cifrado con XOR usando Cryptool; pero vas a tener que investigar sobre el misma.

Saludos!

Ok muchas gracias investigaré sobre el tema más a fondo a ver si consigo resolverlo. :rolleyes:
En cuanto consiga resolverlo pongo como lo haga y lo damos por resuelto. ;-)
En cuanto a una duda mía acerca de esto es : ¿Es usual encontrar este codificado? Puesto que en internet no viene mucha información. :-\

Serapis

#9
Como son 32 caracteres, lo divides entre 8 y lo multiplicas por 3, el resultado luego debe tener exactamente: ((32/4)*3) = 24 caracteres
Los signos igual al final, son de relleno para la alineación, eso indica que a los 24 caracteres hay que restarle esta cantidad de signos 24-2 = 22 Ese será el largo final...

1 - El primer paso es como te señala McKSyS
Tomas el dato y lo decodificas en base64, que te devuelve exactamente esto:
"Password: xo_6_ �!__   " (hay 3 espacios al final) (los caracteres de guión bajo, señalan que ahí yace un carácter no imprimible, y que el foro se traga el enviar el contenido (así que debes tomarlo desde el código que uses para decodificar el base64, y no hacer un copy-paste desde aquí).

2 - Como te señalan que uses XOR, entiendo que tienes ahí mismo, un segundo paso y un segundo texto, de hecho, leyendo en el resultado anterior, de alguna manera ahí te están indicando la clave, que debes usar para terminar de descifrarlo.

Pero no podemos terminar de ayudarte porque tu dices:
Citarme han dado:
A - un código que parece ser base64 ya que tiene dos signos de igual al final.
B - Y ... una palabra con mayúsculas y minúsculas.

Como solo has proporcionado 'A' y no 'B', te toca hacer el resto, simplemente debes tomar un carácter/byte de cada uno y hacer un xor entre ellos, la clave como te he dicho antes parece que debes tomarla del texto previo (MCKSys, te da los valores de los bytes), y meterlos en el array.


Array bytes = funcion codificarXor(array bytes Txt, array bytes Key)
   int cantidad = size(txt)
   
   array bytes salida
   asignar espacio para Salida(cantidad)

   Bucle desde 0 hasta cantidad -1
       salida(k) = ( txt(k) XOR key(k) )
   Siguiente
 
   Devolver salida
fin funcion

Nota que si los arrays txt y key no son del mismo tamaño, es solo un pelín más complicado, el índice para key debe ser entonces una variable aparte... que se deb incrementar y modular aparte:

   salida(k) = ( txt(k) XOR key(j) )
   j = ((j + 1) modulo size(key) )


Por último, nota que una cadena de texto, es básicamente un array, solo cambia en la práctica el tipo de datos en función de la codificación del texto, si usa 1, 2 o 4 por caractere, el array igualmente debe usar un tipo de datos en consonancia.