星期日, 6月 16, 2013

Chained XOR Encoding

通常以單一的XOR作為Key,很容易就被發現了。

因此發展另一概念:
1. 以Content的頭或尾作為第一把XOR Key
2. 用這把Key去XOR,產生的OUTPUT作為下一個Byte的Key

PoC Python Code

a = [0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]
key = a[-1]
e = []

for i in range(len(a)):
    out = a[i] ^ key
    e.append(out)
    key = out

print "Encoded Bytes: ", e

d = []
for i in range(len(e)-1, 0, -1):
    d.append(e[i] ^ e[i-1])
d.append(e[0] ^ d[0])
d.reverse()
print "Decoded Bytes: ", d