Decodificación de SMS en chino extraído de un Blackberry

2

Tengo un montón de SMS en chino de una extracción forense de un blackberry bold 9780 a través de Cellebrite UFED. Si bien los mensajes en inglés son legibles en texto claro (lo que me hace sentir que esto no tiene nada que ver con el cifrado), simplemente no puedo representar estos mensajes (en chino). Obviamente, es un problema con el software de análisis de UFED a largo plazo, pero a corto plazo, solo quiero saber cómo puedo hacer que estos mensajes sean legibles. Estos textos en chino se pueden leer en el teléfono, pero ya no los tengo.

Aquí hay tres textos (a través de una exportación a html):

N mwyûR¨geu5cÐN:'¨g R¡ÿ�0�0�9�0�5�3�2�2�1�3�0�0�8�9S÷xW(�2�0�1�3^t�0�3g�0�6eå�2�3�:�3�8bèbSÇ'¨vbKg:ÿ÷SÊeöVÞu50

Y)s+UFWÎmilýQÀl4VheàPOS[cÿQí¤Áx�8�0�1�1bèbS�4�0�0�8�2�0�2�6�6�7bSÖN÷P<�2�5�8�0QCQÀl4VhN�Sð00milýs¯OÝ0

�(�1�/�3�)NûOUbRONýDg,g'gFÿN mwN¤Y'mwY[fbê�0�6^t_�R0 yÁRß¡gCNN ^D';Ásí0NågeÇ|û~ßþz¾nÿNÎUFN0N¤Y'mwY0

¿Puede alguien decodificar los tres mensajes anteriores? Te daré un millón de accesorios si puedes decirme cómo.

    
pregunta Dan 07.04.2013 - 12:46
fuente

1 respuesta

3

Los datos de origen son claramente UTF-16. En su publicación, se muestra interpretada como ISO-8859-1 y se ha alterado ligeramente en el proceso; algunos bytes se han convertido a .

También hay algunos bytes faltantes causados por copiar y pegar, o hay algunos bytes de control en la mitad de la secuencia, que interrumpen el flujo de dos bytes por carácter. Esperemos que el primero, ¿puede publicar los bytes sin procesar (por ejemplo, como volcado hexadecimal)? Si este es el caso, deberías poder decodificarlos simplemente como UTF-16 (probablemente UTF-16LE).

Para lo que vale, intente recuperar los bytes originales, con interpretado como nulo (como el byte más común en UTF-16) usando Python:

>>> data= ur'''N mwyûR¨geu5cÐN:'¨g R¡ÿ�0�0�9�0�5�3�2�2�1�3�0�0�8�9S÷xW(�2�0�1�3^t�0�3g�0�6eå�2�3�:�3�8bèbSÇ'¨vbKg:ÿ÷SÊeöVÞu50
⁎睭ﭹꡒ敧㕵큣㩎ꡠ⁧ꅒÿ0090532213008匹磷⡗㈀ ㄀㌀瑞 ㌀g0收å23:3戸拨읓ꡠ扶杋Z号旊囶痞〵ぜぜ⥙⭳䙕칗業ﵬ쁑㑬桖佐孓」솤x801戱拨S400820266户홓㱐㈀㔀㠀 䍑쁑㑬桖N〰業ﵬ꽳�尰尰0(1/3丩俻払佒﵎杄本杠f⁎睭ꑎ❙睭孙扦ê0帶彴刀‰셹�枡乃⁎䑞㭠珁ロ敧糇绻ﻟ빺ョ칎䙕ぎꑎ❙睭す
丠海移动来电提为您朠务＀  㤀 㔀㌀㈀㈀㄀㌀  㠀㥓在2013年03最 㙥㈀㌀㨀㌀㡢叇您癢䭧㫿쩥�㔰尰尰天猫商城浩泽净水器无偏卛揿凭꓁砀㠀 ㄀ㅢ匀㐀  㠀㈀ ㈀㘀㘀㝢取价值2580元净水器一台〰浩泽环保ぜぜ ⠀㄀⼀㌀⥎ﭏ啢剏份䑧Ⱨ恧䛿丠海交大海奛晢 㙞瑟R〠私募ꅧ䍎丠幄总셳以来일ﭾ�窾滿从商丰交大海夰
丠海移动来电提为您朠务0090532213008匹在2013年03最0623:38戸Z号旊囶痞㔰尰尰天猫商城浩泽净水器无偏卛揿凭x801戱拨S400820266户取价值2580元净水器N浩泽环保0(1/3啢剏份杄本杠䛿丠海交大海奛晢0帶彴刀私募枡乃⁎䑞㭠珁ロ以来敧糇绻窾滿从商丰交大海夰
Y)s+UFWÎmilýQÀl4VheàPOS[cÿQí¤Áx�8�0�1�1bèbS�4�0�0�8�2�0�2�6�6�7bSÖN÷P<�2�5�8�0QCQÀl4VhN�Sð00milýs¯OÝ0
>>> print '0848674376CA90FD4E0D80FD4FDD969C76845BA26237300262404EE573B05728770B6765FF0C516C53F85B81613F9AD86210672C9AD84E8E6052592971364EF7683C53BB57F9517B6276630151764ED676844F9B5E945546FF0C4ECE957F671F770BFF0C7EE77EED51CF5C11548C605259297136768454084F5C657091CF548C53606BD43002000000084900'.decode('hex').decode('utf-16be')
ࡈ权益都不能保障的客户。所以现在看来,公司宁愿高成本高于恒天然价格去培养扶持其他的供应商,从长期看,继续减少和恒天然的合作数量和占比。䤀
>>> u'q\x8ae\x87cw:N\nk!u5\x8b\xddN_T\x8cO'\x8b\xf4N\x86\xff\x0c'RY)q6v\x84\x88LN:\x8b\xa9QlS\xf8\x8b\xa4N:\xff\x0c'RY)q6N\nf/b\x11N\xecv\x84b\x18ueT\x08O\O\x9b^\x94UF\xff\x0cZ\x03T\xc8T\xc8[\xf9'RY)q6ge\x8b\xf4\xff\x0cN\xc5N\xc5f/NN*fn\x90\x1a[\xa2b7\xff\x0c\x80\x0cN\x14f/kc^8gCv\xca\x90\xfdN\n\x80\xfdO\xdd\x96\x9cv\x84[\xa2b70\x02b@N\xe5s\xb0W(w\x0bge\xff\x0cQlS\xf8[\x81a?\x9a\xd8b\x10g,\x9a\xd8N\x8e'RY)q6N\xf7h<S\xbbW\xf9Q{bvc\x01QvN\xd6v\x84O\x9b^\x94UF\xff\x0cN\xce\x95\x7fg\x1fw\x0b\xff\x0c~\xe7~\xedQ\xcf\\x11T\x8c'RY)q6v\x84T\x08O\ep\x91\xcfT\x8cS'k\xd40\x02\n'
�(�1�/�3�)NûOUbRONýDg,g'gFÿN mwN¤Y'mwY[fbê�0�6^t_�R0 yÁRß¡gCNN ^D';Ásí0NågeÇ|û~ßþz¾nÿNÎUFN0N¤Y'mwY0''' >>> bytes= data.replace(u'\uFFFD', u'
>>> print _.encode('iso-8859-1').decode('utf-16be', 'ignore')
熊文捷㩎੫ⅵ㖋彔豏悋蛿ౠ剙⥱㙶蒈䱎㪋ꥑ汓ꑎ㫿ౠ剙⥱㙎੦⽢ᅎ葢ᡵ敔ࡏ屏魞鑕䛿ౚ͔졔졛怒剙⥱㙧斋౎앎앦⽎
个普通客户,而且是正常权益都上能保障的客户。所以现在看来,公司宁愿高成本高于恒天然价格去培养扶持其他的供应商,从长期看,继续减少和恒天然的合作数量和占比。
').encode('iso-8859-1') >>> print bytes.decode('utf-16le', 'replace') >>> print bytes.decode('utf-16be', 'replace')

Luego, elija los caracteres que le parezcan más apropiados de cada línea de:

話蝥督为權甡謵仝呟侌譠仴ニ怌奒焩瘶袄乌謺冩卬诸交Z怌奒焩丶昊戯丑盬抄甘呥伈作庛喔f娌吃哈寈惹奒焩朶譥￴丌仅曅丯

por ejemplo, algo como:

>>> data= ur'''N mwyûR¨geu5cÐN:'¨g R¡ÿ�0�0�9�0�5�3�2�2�1�3�0�0�8�9S÷xW(�2�0�1�3^t�0�3g�0�6eå�2�3�:�3�8bèbSÇ'¨vbKg:ÿ÷SÊeöVÞu50
⁎睭ﭹꡒ敧㕵큣㩎ꡠ⁧ꅒÿ0090532213008匹磷⡗㈀ ㄀㌀瑞 ㌀g0收å23:3戸拨읓ꡠ扶杋Z号旊囶痞〵ぜぜ⥙⭳䙕칗業ﵬ쁑㑬桖佐孓」솤x801戱拨S400820266户홓㱐㈀㔀㠀 䍑쁑㑬桖N〰業ﵬ꽳�尰尰0(1/3丩俻払佒﵎杄本杠f⁎睭ꑎ❙睭孙扦ê0帶彴刀‰셹�枡乃⁎䑞㭠珁ロ敧糇绻ﻟ빺ョ칎䙕ぎꑎ❙睭す
丠海移动来电提为您朠务＀  㤀 㔀㌀㈀㈀㄀㌀  㠀㥓在2013年03最 㙥㈀㌀㨀㌀㡢叇您癢䭧㫿쩥�㔰尰尰天猫商城浩泽净水器无偏卛揿凭꓁砀㠀 ㄀ㅢ匀㐀  㠀㈀ ㈀㘀㘀㝢取价值2580元净水器一台〰浩泽环保ぜぜ ⠀㄀⼀㌀⥎ﭏ啢剏份䑧Ⱨ恧䛿丠海交大海奛晢 㙞瑟R〠私募ꅧ䍎丠幄总셳以来일ﭾ�窾滿从商丰交大海夰
丠海移动来电提为您朠务0090532213008匹在2013年03最0623:38戸Z号旊囶痞㔰尰尰天猫商城浩泽净水器无偏卛揿凭x801戱拨S400820266户取价值2580元净水器N浩泽环保0(1/3啢剏份杄本杠䛿丠海交大海奛晢0帶彴刀私募枡乃⁎䑞㭠珁ロ以来敧糇绻窾滿从商丰交大海夰
Y)s+UFWÎmilýQÀl4VheàPOS[cÿQí¤Áx�8�0�1�1bèbS�4�0�0�8�2�0�2�6�6�7bSÖN÷P<�2�5�8�0QCQÀl4VhN�Sð00milýs¯OÝ0
>>> print '0848674376CA90FD4E0D80FD4FDD969C76845BA26237300262404EE573B05728770B6765FF0C516C53F85B81613F9AD86210672C9AD84E8E6052592971364EF7683C53BB57F9517B6276630151764ED676844F9B5E945546FF0C4ECE957F671F770BFF0C7EE77EED51CF5C11548C605259297136768454084F5C657091CF548C53606BD43002000000084900'.decode('hex').decode('utf-16be')
ࡈ权益都不能保障的客户。所以现在看来,公司宁愿高成本高于恒天然价格去培养扶持其他的供应商,从长期看,继续减少和恒天然的合作数量和占比。䤀
>>> u'q\x8ae\x87cw:N\nk!u5\x8b\xddN_T\x8cO'\x8b\xf4N\x86\xff\x0c'RY)q6v\x84\x88LN:\x8b\xa9QlS\xf8\x8b\xa4N:\xff\x0c'RY)q6N\nf/b\x11N\xecv\x84b\x18ueT\x08O\O\x9b^\x94UF\xff\x0cZ\x03T\xc8T\xc8[\xf9'RY)q6ge\x8b\xf4\xff\x0cN\xc5N\xc5f/NN*fn\x90\x1a[\xa2b7\xff\x0c\x80\x0cN\x14f/kc^8gCv\xca\x90\xfdN\n\x80\xfdO\xdd\x96\x9cv\x84[\xa2b70\x02b@N\xe5s\xb0W(w\x0bge\xff\x0cQlS\xf8[\x81a?\x9a\xd8b\x10g,\x9a\xd8N\x8e'RY)q6N\xf7h<S\xbbW\xf9Q{bvc\x01QvN\xd6v\x84O\x9b^\x94UF\xff\x0cN\xce\x95\x7fg\x1fw\x0b\xff\x0c~\xe7~\xedQ\xcf\\x11T\x8c'RY)q6v\x84T\x08O\ep\x91\xcfT\x8cS'k\xd40\x02\n'
�(�1�/�3�)NûOUbRONýDg,g'gFÿN mwN¤Y'mwY[fbê�0�6^t_�R0 yÁRß¡gCNN ^D';Ásí0NågeÇ|û~ßþz¾nÿNÎUFN0N¤Y'mwY0''' >>> bytes= data.replace(u'\uFFFD', u'
>>> print _.encode('iso-8859-1').decode('utf-16be', 'ignore')
熊文捷㩎੫ⅵ㖋彔豏悋蛿ౠ剙⥱㙶蒈䱎㪋ꥑ汓ꑎ㫿ౠ剙⥱㙎੦⽢ᅎ葢ᡵ敔ࡏ屏魞鑕䛿ౚ͔졔졛怒剙⥱㙧斋౎앎앦⽎
个普通客户,而且是正常权益都上能保障的客户。所以现在看来,公司宁愿高成本高于恒天然价格去培养扶持其他的供应商,从长期看,继续减少和恒天然的合作数量和占比。
').encode('iso-8859-1') >>> print bytes.decode('utf-16le', 'replace') >>> print bytes.decode('utf-16be', 'replace')

que es lo más cerca que puedo llegar a inteligible dada la entrada mutilada.

ETA:

  

Aquí hay un volcado hexadecimal de un SMS más largo:

OK, esto es sencillo, es UTF-16BE (con un par de bytes de control de plomo y algunos finales):

話蝥督为權甡謵仝呟侌譠仴ニ怌奒焩瘶袄乌謺冩卬诸交Z怌奒焩丶昊戯丑盬抄甘呥伈作庛喔f娌吃哈寈惹奒焩朶譥￴丌仅曅丯
  

El SMS.Body codificado / analizado correspondiente era:

Bien, entonces esa es otra cadena de bytes UTF-16BE que se ha interpretado como ISO-8859-1. Recuperando los caracteres de control de tu publicación obtenemos:

%pre%

Deshacer la codificación errónea:

%pre%

Como puede ver, la segunda parte de esta cadena es el mensaje completo del cual lo anterior fue una codificación hexadecimal parcial.

La primera parte (antes de 个普通客户... ) es un misterio. Se decodifica como UTF-16LE válido (es decir, no es necesario para 'ignore' ), lo que normalmente sería una indicación de que la alineación del byte se ha deslizado (de nuevo, tal vez como resultado de la mutilación de caracteres al publicarlo en SO?). El resultado de esta decodificación incluso cabe principalmente dentro del bloque de caracteres han, pero es:

%pre%

que, por mi limitada comprensión del texto chino, parece ser una tontería.

No estoy muy impresionado con esta cosa de Cellebrite, ¡especialmente si incluye esos códigos de control directamente en XML! (Esto no está bien formado.)

    
respondido por el bobince 07.04.2013 - 15:31
fuente

Lea otras preguntas en las etiquetas