Skip to content

Instantly share code, notes, and snippets.

@amjith
Created July 24, 2013 05:22
Show Gist options
  • Save amjith/6068238 to your computer and use it in GitHub Desktop.
Save amjith/6068238 to your computer and use it in GitHub Desktop.
Obfuscate/Deobfuscate
from __future__ import print_function
import base64
import six
#def _encode(name, key):
#s = []
#for i in range(len(name)):
#s.append(chr(ord(name[i]) ^ ord(key[i % len(key)])))
#return s
def _encode(name, key):
s = []
for i, c in enumerate(six.iterbytes(name)):
s.append(chr(c ^ key[i % len(key)]))
return s
def obfuscate(name, key):
if name is None:
return ''
return six.text_type(base64.b64encode(six.b(''.join(_encode(name, key)))),
encoding='Latin-1')
def deobfuscate(name, key):
if name is None:
return ''
#return ''.join(_decode(base64.b64decode(six.b(name)), key))
return ''.join(_encode(base64.b64decode(six.b(name)), key))
if six.PY3:
def _decode(name, key):
s = []
for i in range(len(name)):
s.append(chr(name[i] ^ key[i % len(key)]))
return s
else:
_decode = _encode
if __name__ == '__main__':
print (obfuscate('abcd', '0123456789'))
#import ipdb; ipdb.set_trace()
print (deobfuscate('UVNRVw==', '0123456789'))
@GrahamDumpleton
Copy link

import six
import base64

def _encode(name, key):
    s = []
    key = list(six.iterbytes(six.b(key)))
    for i, c in enumerate(six.iterbytes(six.b(name))):
        s.append(chr(c ^ key[i % len(key)]))
    return s

def obfuscate(name, key):
    if name is None:
        return ''
    return six.text_type(base64.b64encode(six.b(''.join(_encode(name, key)))),
            encoding='Latin-1')

def deobfuscate(name, key):
    if name is None:
        return ''
    return ''.join(_encode(six.text_type(base64.b64decode(six.b(name)),
            encoding='Latin-1'), key))

print(obfuscate('123456789', '1234'))
print(deobfuscate(obfuscate('123456789', '1234'), '1234'))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment