-
-
[求助]关于ASCIIHexDecode解密算法
-
发表于:
2010-9-10 10:16
7357
-
ASCIIHexDecode的解密算法大致如下:
针对每一对16进制的数据,产生一个字节的二进制数据。所有的空白字符将被忽略。字符“>”表示结束。任何其他字符会导致错误。代码(python)如下:
hex_re = re.compile(r'([a-f\d]{2})', re.IGNORECASE)
trail_re = re.compile(r'^(?:[a-f\d]{2}|\s)*([a-f\d])[\s>]*$', re.IGNORECASE)
def asciihexdecode(data):
"""
ASCIIHexDecode filter: PDFReference v1.4 section 3.3.1
For each pair of ASCII hexadecimal digits (0-9 and A-F or a-f), the
ASCIIHexDecode filter produces one byte of binary data. All white-space
characters are ignored. A right angle bracket character (>) indicates
EOD. Any other characters will cause an error. If the filter encounters
the EOD marker after reading an odd number of hexadecimal digits, it
will behave as if a 0 followed the last digit.
>>> asciihexdecode('61 62 2e6364 65')
'ab.cde'
>>> asciihexdecode('61 62 2e6364 657>')
'ab.cdep'
>>> asciihexdecode('7>')
'p'
"""
decode = (lambda hx: chr(int(hx, 16)))
out = map(decode, hex_re.findall(data))
m = trail_re.search(data)
if m:
out.append(decode("%c0" % m.group(1)))
return ''.join(out)
现在需要写一个加密算法,但是不清楚什么时候加上空格,加几个空格?希望清楚此算法的大侠给予帮助。
拜谢!
附录:
解密实例: input :"65 47 79 41 4c 7a 56 45 4c 76 6e>"
output: "eGyALzV"
现在不知道怎么处理相反的过程,也就是加密过程
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法