Cómo identificar el algoritmo de cifrado para los datos que vienen en los valores de campo / atributo de un xml [duplicado]

2

Tengo datos que vienen en forma de XML con ciertos atributos XML que están encriptados. Soy muy nuevo en el cifrado / descifrado. Así que me gustaría una explicación detallada sobre cómo encontrar el algoritmo de cifrado, si es que hay alguno aplicado en estos datos. ¿O es alguna otra forma de formato codificado? Por favor haga cualquier pregunta relacionada con los datos, estaría más que feliz de ayudar en eso. Los datos cifrados de muestra tienen este aspecto:

  

7b5c727466315c616e73695c616e7369637067313235325c64656666305c6465   666c616e67313033337b5c666f6e7474626c7b5c66305c666e696c2054696d6573204e657720526f6d616e3b7d7b5c66315c666e696c5c   66636861727365743020417269616c3b7d7b5c66325c666e696c5c6663686172736574302054696d6573204e657720526f6d616e3b7d7d   0d0a7b5c636f6c6f7274626c203b5c726564305c677265656e305c626c7565303b7d0d0a5c766965776b696e64345c7563315c70617264   5c6366315c66305c667332305c7061720d0a5c6366305c6631204c6f74204e696e65202839292c206f66204245415220435245454b2050   4f4c4f2052414e43482c20616e206164646974696f6e20696e20456c6c697320436f756e74792c2054657861732c206163636f7264696e   6720746f20746865206d6170206f7220706c61742074686572656f66207265636f7264656420696e20436162696e657420432c20536c69   6465204e6f2e20343535206f662074686520506c6174205265636f726473206f6620456c6c697320436f756e74792c2054657861732e5c   6366315c66325c7061720d0a7d0d0a00

    
pregunta Joy 06.08.2014 - 10:39
fuente

2 respuestas

2

Esto es simplemente ASCII representado en hexidecimal. Eliminé las nuevas líneas y el siguiente código de Python lo mostrará:

>>> from binascii import unhexlify
>>> ascii = "7b5c727466315c616e73695c616e7369637067313235325c64656666305c6465666c616e67313033337b5c666f6e7474626c7b5c66305c666e696c2054696d6573204e657720526f6d616e3b7d7b5c66315c666e696c5c66636861727365743020417269616c3b7d7b5c66325c666e696c5c6663686172736574302054696d6573204e657720526f6d616e3b7d7d0d0a7b5c636f6c6f7274626c203b5c726564305c677265656e305c626c7565303b7d0d0a5c766965776b696e64345c7563315c706172645c6366315c66305c667332305c7061720d0a5c6366305c6631204c6f74204e696e65202839292c206f66204245415220435245454b20504f4c4f2052414e43482c20616e206164646974696f6e20696e20456c6c697320436f756e74792c2054657861732c206163636f7264696e6720746f20746865206d6170206f7220706c61742074686572656f66207265636f7264656420696e20436162696e657420432c20536c696465204e6f2e20343535206f662074686520506c6174205265636f726473206f6620456c6c697320436f756e74792c2054657861732e5c6366315c66325c7061720d0a7d0d0a00"
>>> unhexlify(ascii)
'{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil Times New Roman;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil\fcharset0 Times New Roman;}}\r\n{\colortbl ;\red0\green0\blue0;}\r\n\viewkind4\uc1\pard\cf1\f0\fs20\par\r\n\cf0\f1 Lot Nine (9), of BEAR CREEK POLO RANCH, an addition in Ellis County, Texas, according to the map or plat thereof recorded in Cabinet C, Slide No. 455 of the Plat Records of Ellis County, Texas.\cf1\f2\par\r\n}\r\n\x00'

Las cosas a reconocer son los caracteres 0x0a, 0x0d ASCII al final que representan un avance de línea y un retorno de carro respectivamente. También una gran parte del texto está entre 0x41 a 0x5A (A-Z), y 0x61 a 0x7A (a-z).

Para responder a su pregunta sobre el reconocimiento del cifrado. A menos que el protocolo de comunicación o el formato de archivo le proporcionen el tipo de algoritmo, generalmente no hay manera de distinguir un algoritmo de cifrado de otro solo basado en datos cifrados. Para archivos se puede proporcionar en un valor de encabezado de archivo. Aún tendría que saber qué valor en el encabezado representa un algoritmo de cifrado, y luego tendría que determinar qué algoritmo representaba el valor. Para protocolos de comunicación seguros, los algoritmos generalmente se negocian durante la inicialización del protocolo.

    
respondido por el RoraΖ 06.08.2014 - 13:29
fuente
1

La mayoría de los métodos de cifrado dejan algo así como una huella digital, por ejemplo: el primer par de caracteres fijos; lenth de hashes; etc. Por eso es posible determinar el algoritmo utilizado ...

No he encontrado una documentación en particular ni un artículo mediante una búsqueda rápida en Google, pero me topé con el siguiente proyecto (simple script de Python):

enlace

Compruébelo, tal vez adivine sus hashes correctamente :-)

    
respondido por el gue 06.08.2014 - 13:33
fuente

Lea otras preguntas en las etiquetas