我想解碼一個混淆的Android應用程序。反編譯後,我可以看到幾個字符串以這種方式混淆:Python 2.7中的Unicode字符串XOR
static char[] java_decode(char[] cArr, char[] cArr2) {
int i = 0;
for (int i2 = 0; i2 < cArr.length; i2++) {
cArr[i2] = (char) (cArr2[i]^cArr[i2]);
i++;
if (i >= cArr2.length) {
i = 0;
}
}
return cArr;
}
str2 = new String(epgwmgrwgrdvzck("浶㫻ᒍ夓䌎箜湛泰Ⳮ䯣倝".toCharArray(), new char[]{'浌', '㫛', 'ᓮ', '奼', '䍻', '篲', '港', '沂', 'Ⲕ', '𩣑', '倧'})).intern();
# java.lang.String str2 = ": country :"
爲了更好地理解和快速審查,我想改變所有這些字符串進入平原之一;我選擇了Python,因爲它只是一種快速且快速的腳本語言。
不幸的是,我對這些多字節字符有些困難。這是我試着寫功能:
# coding=utf-8
def decode(string1, string2):
string1 = list(string1)
i = 0
i2 = 0
while i2 < len(string1):
string1[i2] = chr(ord(string2[i])^ord(string1[i2]))
i += 1
if i >= len(string2):
i = 0
i2 += 1
string1 = str("".join(string1))
print string1
return string1
decode("浶㫻ᒍ夓䌎箜湛泰Ⳮ䯣倝", ['浌', '㫛', 'ᓮ', '奼', '䍻', '篲', '港', '沂', 'Ⲕ', '𩣑', '倧'])
# TypeError: ord() expected a character, but string of length 3 found
這裏的主要問題是:ord()
只接受一次一個字符,而這些字符串是由多字節字符的。
有關如何解決此問題的任何建議?
我使用Python 2.7.11 |蟒蛇4.0.0(x86_64的)。我知道Python 3比Python 2有更好的Unicode支持;如果該解決方案僅適用於Python 3,我可以毫無問題地使用它,因爲它只是一次性腳本。
該死的,我要補充的Python版本,然後我點擊上「詢問」而不發佈。感謝您提醒 – tampe125
使用Python 3.這些Python 2字符串類似於Java byte []',其中包含unicode字節。 –