Well, since there was no option for "tutorial" in the type of post, it has been created as a simple thread...
Obfuscation - confusion resulting from failure to understand
obfuscated code - Code that is hard to read
In this tutorial, I will show you how to convert something readable, to something completely unreadable, but it still works, exactly the same. There are multiple thing you can do in Python to achieve obfuscation, one of the main ones being one-liners and exec(). I have not understood the lambda function yet, but you can still pull off loops and if statements that have one statement, by putting them on the same line; I.e.:

x = 1
# This:
if x == 1:
    print("x is equal to 1")
# Becomes this:
if x == 1: print("x is equal to 1")

Both work exactly the same.
Next, we shall take a look at a string:

toexec = '''x = 0
if x == 0:
    print("Hello world")
'''

You might be asking, well, what does this have to do with anything? Here's the answer, the exec() can execute this string as actual code. If you type in toexec in the interpreter, you're shown this: 'x = 0\nif x == 0:\n print("Hello world")\n' Now, if you type this: exec(toexec) You are now presented with this: 'Hello world' Nifty, eh? Another way of obfuscating your code is through use of ord() and chr(). That toexec code can also be represented this way: chr(120)+chr(32)+chr(61)+chr(32)+chr(48)+chr(10)+chr(105)+chr(102)+chr(32)+chr(120)+chr(32)+chr(61)+chr(61)+chr(32)+chr(48)+chr(58)+chr(10)+chr(32)+chr(32)+chr(32)+chr(32)+chr(112)+chr(114)+chr(105)+chr(110)+chr(116)+chr(40)+chr(34)+chr(72)+chr(101)+chr(108)+chr(108)+chr(111)+chr(32)+chr(119)+chr(111)+chr(114)+chr(108)+chr(100)+chr(34)+chr(41)+chr(10) Any idea of what that is? That is a numerical representation of the string toexec. If you type in exec(chr(120)+chr(32)+chr(61)+chr(32)+chr(48)+chr(10)+chr(105)+chr(102)+chr(32)+chr(120)+chr(32)+chr(61)+chr(61)+chr(32)+chr(48)+chr(58)+chr(10)+chr(32)+chr(32)+chr(32)+chr(32)+chr(112)+chr(114)+chr(105)+chr(110)+chr(116)+chr(40)+chr(34)+chr(72)+chr(101)+chr(108)+chr(108)+chr(111)+chr(32)+chr(119)+chr(111)+chr(114)+chr(108)+chr(100)+chr(34)+chr(41)+chr(10)) , you are presented with "Hello world" once again. Again, pretty nifty. However, you could also type in print(chr(120)+chr(32)+chr(61)+chr(32)+chr(48)+chr(10)+chr(105)+chr(102)+chr(32)+chr(120)+chr(32)+chr(61)+chr(61)+chr(32)+chr(48)+chr(58)+chr(10)+chr(32)+chr(32)+chr(32)+chr(32)+chr(112)+chr(114)+chr(105)+chr(110)+chr(116)+chr(40)+chr(34)+chr(72)+chr(101)+chr(108)+chr(108)+chr(111)+chr(32)+chr(119)+chr(111)+chr(114)+chr(108)+chr(100)+chr(34)+chr(41)+chr(10)) and be presented with your code. D: Pretty bad. So, what we do, is turn those \n into \x01, and then make another function to turn the \x01 into \n, and then execute that. D: Sounds, difficult, right? Yeah, it kinda is. I would actually stay away from the chr(i) way of obfuscating for right now, it takes up a lot of space. However, we still need to replace those \n's within our code to make sure we cannot just print(toexec) to see what it is. So, we do this before saving our source code:

toexec = toexec.replace('\n', '\x01')

Now, we cannot just do a print(). Although we could, but it would still be on one line. Here is where we can use the chr() to run that code to replace the '\x01' with '\n' when running the code:

s = ''
for x in "toexec = toexec.replace('\x01', '\n')":
    s += 'chr(' + str(ord(x)) + ')+'

So, we now have this code: toexec = chr(116)+chr(111)+chr(101)+chr(120)+chr(101)+chr(99)+chr(32)+chr(61)+chr(32)+chr(116)+chr(111)+chr(101)+chr(120)+chr(101)+chr(99)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(1)+chr(39)+chr(44)+chr(32)+chr(99)+chr(104)+chr(114)+chr(40)+chr(49)+chr(48)+chr(41)+chr(41) , which will convert our toexec code's \x01's back to \n.
Now, here is our almost completely obfuscated code, which we can place all on one line, thanks to the semicolon for defining things:

toexec = 'x = 0\x01if x == 0:\x01    print("Hello world")\x01'; exec(chr(116)+chr(111)+chr(101)+chr(120)+chr(101)+chr(99)+chr(32)+chr(61)+chr(32)+chr(116)+chr(111)+chr(101)+chr(120)+chr(101)+chr(99)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(1)+chr(39)+chr(44)+chr(32)+chr(99)+chr(104)+chr(114)+chr(40)+chr(49)+chr(48)+chr(41)+chr(41)); exec(toexec)

This will run exactly the same as this:

x = 0
if x == 0:
    print("Hello world")

Ah, but wait! There's more!
We can now go and replace all of the variables with an underscore! So, our x will now be '_'. If we had more, each one would be '_'*number of the variable. So if we had 'x', 'y', 'z', then they would now be: '_', '__', '___'. This also works for classes and functions as well. So, our code is now this:

toexec = '_ = 0\x01if _ == 0:\x01    print("Hello world")\x01'; exec(chr(116)+chr(111)+chr(101)+chr(120)+chr(101)+chr(99)+chr(32)+chr(61)+chr(32)+chr(116)+chr(111)+chr(101)+chr(120)+chr(101)+chr(99)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(1)+chr(39)+chr(44)+chr(32)+chr(99)+chr(104)+chr(114)+chr(40)+chr(49)+chr(48)+chr(41)+chr(41)); exec(toexec)

Even more unreadable, right!? Well, put that in your interpreter, it still runs :D Amazing, right?
Well, for those who think it's a bit unnecessary to obfuscate printing "Hello world", I have attached two files that run exactly the same, and one has been obfuscated. You tell me if you can read the obfuscated version :D Of course, this won't stop the truly determined who want to read your source code, it should scare off a lot of people xDDD Not to mention that if you compile it, making it into a .pyc, if someone has an uncompiler, they'll think it's broken xD
Anyways, that concludes my highly informal tutorial, if you have any questions, feel free to ask :)

Recommended Answers

All 7 Replies

Okay, it wouldn't let me add an attachment, so to confuse the tutorial with my files, here are the two files:
Un-obfuscated:

class _Encryption():

    class NoEncryptValue(Exception):
        def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value)

    def tobin(self, s):
        '''
        Converts a string to a binary string
        '''
        binary = ''
        for letter in s:
            e = bin(ord(letter)).replace('0b', '')
            if len(e) != 8:
                if len(e) == 1:
                    e = '0000000' + e
                if len(e) == 2:
                    e = '000000' + e
                if len(e) == 3:
                    e = '00000' + e
                if len(e) == 4:
                    e = '0000' + e
                if len(e) == 5:
                    e = '000' + e
                if len(e) == 6:
                    e = '00' + e
                if len(e) == 7:
                    e = '0' + e
            binary += e
        return binary

    def bintostr(self, b):
        '''
        Converts a binary string to a normal string/ BINARY NOW
        '''
        s = ''
        for letter in range(0, len(b), 8):
            s += chr(int(b[letter:letter+8], 2))
        return s

    def tohex(self, s):
        '''
        Converts a string to a hex string
        '''
        encrypted = ''
        for letter in s:
            e = hex(ord(letter)).replace('0x', '')
            if len(e) == 1:
                e = '0' + e
            encrypted += e
        return encrypted

    def hextostr(self, h):
        '''
        Converts a hex string to a normal string
        '''
        s = ''
        for letter in range(0, len(h), 2):
            s += chr(int(h[letter:letter+2], 16))
        return s

    def get_key(self, key):
        '''
        Turns a string into a number for shifting
        '''
        k = []
        for x in key:
            k.append(ord(x))
        return (sum(k) + len(key)) / 2

    def shift(self, string, key):
        '''
        Takes the str, and shifts the odd values according to int key;
        returns the shifted values and the even values
        '''
        val = []
        for x in string[0::2]:
            val.append(x)
        if abs(key) > len(val):
            key %= len(val)
        val = val[-key:] + val[:-key]
        return val, string[1::2]

    def combine(self, (mov, string)):
        '''
        mov is a list of strings, string is a string;
        Takes each pair of indicies of the string and list,
        then combines them into one string
        '''
        encrypted = ''
        strval = []
        for x in string:
            strval.append(x)
        string = strval[:]
        del strval
        while len(string) > 0:
            encrypted += mov[0]
            encrypted += string[0]
            del mov[0]
            del string[0]
        return encrypted

    def hex_run(self, string, key, encrypt=1):
        if encrypt == 1:
            return self.hextostr(
                self.combine(
                    self.shift(
                        self.tohex(string), self.get_key(key)
                        )
                    )
                )
        elif encrypt == 0:
            return self.hextostr(
                self.combine(
                    self.shift(
                        self.tohex(string), -self.get_key(key)
                        )
                    )
                )

    def bin_run(self, string, key, encrypt):
        if encrypt == 1:
            return self.bintostr(
                self.combine(
                    self.shift(
                        self.tobin(string), self.get_key(key)
                        )
                    )
                )
        elif encrypt == 0:
            return self.bintostr(
                self.combine(
                    self.shift(
                        self.tobin(string), -self.get_key(key)
                        )
                    )
                )

    def bin_hex_run(self, string, key, encrypt):
        return self.bin_run(
                self.hex_run(
                    self.bin_run(string, key, encrypt),
                    key, encrypt
                    ),
                key, encrypt)
        
E = _Encryption()

Obfuscated 1:

_ = "class _():\x01\x01    def _(_, s):\x01        b = ''\x01        for l in s:\x01            e = bin(ord(l)).replace('0b', '')\x01            if len(e) != 8:\x01                if len(e) == 1: e = '0000000' + e\x01                if len(e) == 2: e = '000000' + e\x01                if len(e) == 3: e = '00000' + e\x01                if len(e) == 4: e = '0000' + e\x01                if len(e) == 5: e = '000' + e\x01                if len(e) == 6: e = '00' + e\x01                if len(e) == 7: e = '0' + e\x01            b += e\x01        return b\x01\x01    def __(_, b):\x01        s = ''\x01        for l in range(0, len(b), 8): s += chr(int(b[l:l+8], 2))\x01        return s\x01\x01    def ___(_, s):\x01        __ = ''\x01        for ___ in s:\x01            ____ = hex(ord(___)).replace('0x', '')\x01            if len(____) == 1: ____ = '0' + ____\x01            __ += ____\x01        return __\x01\x01    def ____(_, h):\x01        __ = ''\x01        for ___ in range(0, len(h), 2): __ += chr(int(h[___:___+2], 16))\x01        return __\x01\x01    def _____(_, ___):\x01        __ = []\x01        for ____ in ___: __.append(ord(____))\x01        return (sum(__) + len(___)) / 2\x01\x01    def ______(______, _, __):\x01        ___ = []\x01        for x in _[0::2]: ___.append(x)\x01        if abs(__) > len(___): __ %= len(___)\x01        ___ = ___[-__:] + ___[:-__]\x01        return ___, _[1::2]\x01\x01    def _______(__________, (_, __)):\x01        ___ = ''; ____ = []\x01        for _____ in __: ____.append(_____)\x01        __ = ____[:]; del ____\x01        while len(__) > 0:\x01            ___ += _[0]\x01            ___ += __[0]\x01            del _[0]\x01            del __[0]\x01        return ___\x01\x01    def hex_run(self, string, key, encrypt=1):\x01        if encrypt == 1:\x01            return self.____(\x01                self._______(\x01                    self.______(\x01                        self.___(string), self._____(key)\x01                        )\x01                    )\x01                )\x01        elif encrypt == 0:\x01            return self.____(\x01                self._______(\x01                    self.______(\x01                        self.___(string), -self._____(key)\x01                        )\x01                    )\x01                )\x01\x01    def bin_run(self, string, key, encrypt):\x01        if encrypt == 1:\x01            return self.__(\x01                self._______(\x01                    self.______(\x01                        self._(string), self._____(key)\x01                        )\x01                    )\x01                )\x01        elif encrypt == 0:\x01            return self.__(\x01                self._______(\x01                    self.______(\x01                        self._(string), -self._____(key)\x01                        )\x01                    )\x01                )\x01    def bin_hex_run(self, string, key, encrypt):\x01        return self.bin_run(\x01                self.hex_run(\x01                    self.bin_run(string, key, encrypt),\x01                    key, encrypt\x01                    ),\x01                key, encrypt)\x01        \x01\x01E = _()"; __ =  chr(95)+chr(32)+chr(61)+chr(32)+chr(95)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(1)+chr(39)+chr(44)+chr(99)+chr(104)+chr(114)+chr(40)+chr(49)+chr(48)+chr(41)+chr(41); exec(__); exec(_)

Obfuscated 2:

_ = chr(99)+chr(108)+chr(97)+chr(115)+chr(115)+chr(32)+chr(95)+chr(40)+chr(41)+chr(58)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(40)+chr(95)+chr(44)+chr(32)+chr(115)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(98)+chr(32)+chr(61)+chr(32)+chr(39)+chr(39)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(108)+chr(32)+chr(105)+chr(110)+chr(32)+chr(115)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(98)+chr(105)+chr(110)+chr(40)+chr(111)+chr(114)+chr(100)+chr(40)+chr(108)+chr(41)+chr(41)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(48)+chr(98)+chr(39)+chr(44)+chr(32)+chr(39)+chr(39)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(33)+chr(61)+chr(32)+chr(56)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(49)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(48)+chr(48)+chr(48)+chr(48)+chr(48)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(50)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(48)+chr(48)+chr(48)+chr(48)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(51)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(48)+chr(48)+chr(48)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(52)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(48)+chr(48)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(53)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(48)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(54)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(101)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(55)+chr(58)+chr(32)+chr(101)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(98)+chr(32)+chr(43)+chr(61)+chr(32)+chr(101)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(98)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(95)+chr(40)+chr(95)+chr(44)+chr(32)+chr(98)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(32)+chr(61)+chr(32)+chr(39)+chr(39)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(108)+chr(32)+chr(105)+chr(110)+chr(32)+chr(114)+chr(97)+chr(110)+chr(103)+chr(101)+chr(40)+chr(48)+chr(44)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(98)+chr(41)+chr(44)+chr(32)+chr(56)+chr(41)+chr(58)+chr(32)+chr(115)+chr(32)+chr(43)+chr(61)+chr(32)+chr(99)+chr(104)+chr(114)+chr(40)+chr(105)+chr(110)+chr(116)+chr(40)+chr(98)+chr(91)+chr(108)+chr(58)+chr(108)+chr(43)+chr(56)+chr(93)+chr(44)+chr(32)+chr(50)+chr(41)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(115)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(95)+chr(95)+chr(40)+chr(95)+chr(44)+chr(32)+chr(115)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(39)+chr(39)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(105)+chr(110)+chr(32)+chr(115)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(104)+chr(101)+chr(120)+chr(40)+chr(111)+chr(114)+chr(100)+chr(40)+chr(95)+chr(95)+chr(95)+chr(41)+chr(41)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(48)+chr(120)+chr(39)+chr(44)+chr(32)+chr(39)+chr(39)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(95)+chr(95)+chr(95)+chr(95)+chr(41)+chr(32)+chr(61)+chr(61)+chr(32)+chr(49)+chr(58)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(39)+chr(48)+chr(39)+chr(32)+chr(43)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(32)+chr(43)+chr(61)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(95)+chr(95)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(95)+chr(44)+chr(32)+chr(104)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(39)+chr(39)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(105)+chr(110)+chr(32)+chr(114)+chr(97)+chr(110)+chr(103)+chr(101)+chr(40)+chr(48)+chr(44)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(104)+chr(41)+chr(44)+chr(32)+chr(50)+chr(41)+chr(58)+chr(32)+chr(95)+chr(95)+chr(32)+chr(43)+chr(61)+chr(32)+chr(99)+chr(104)+chr(114)+chr(40)+chr(105)+chr(110)+chr(116)+chr(40)+chr(104)+chr(91)+chr(95)+chr(95)+chr(95)+chr(58)+chr(95)+chr(95)+chr(95)+chr(43)+chr(50)+chr(93)+chr(44)+chr(32)+chr(49)+chr(54)+chr(41)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(95)+chr(95)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(95)+chr(44)+chr(32)+chr(95)+chr(95)+chr(95)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(91)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(32)+chr(105)+chr(110)+chr(32)+chr(95)+chr(95)+chr(95)+chr(58)+chr(32)+chr(95)+chr(95)+chr(46)+chr(97)+chr(112)+chr(112)+chr(101)+chr(110)+chr(100)+chr(40)+chr(111)+chr(114)+chr(100)+chr(40)+chr(95)+chr(95)+chr(95)+chr(95)+chr(41)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(40)+chr(115)+chr(117)+chr(109)+chr(40)+chr(95)+chr(95)+chr(41)+chr(32)+chr(43)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(95)+chr(95)+chr(95)+chr(41)+chr(41)+chr(32)+chr(47)+chr(32)+chr(50)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(44)+chr(32)+chr(95)+chr(44)+chr(32)+chr(95)+chr(95)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(91)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(120)+chr(32)+chr(105)+chr(110)+chr(32)+chr(95)+chr(91)+chr(48)+chr(58)+chr(58)+chr(50)+chr(93)+chr(58)+chr(32)+chr(95)+chr(95)+chr(95)+chr(46)+chr(97)+chr(112)+chr(112)+chr(101)+chr(110)+chr(100)+chr(40)+chr(120)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(97)+chr(98)+chr(115)+chr(40)+chr(95)+chr(95)+chr(41)+chr(32)+chr(62)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(95)+chr(95)+chr(95)+chr(41)+chr(58)+chr(32)+chr(95)+chr(95)+chr(32)+chr(37)+chr(61)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(95)+chr(95)+chr(95)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(95)+chr(95)+chr(95)+chr(91)+chr(45)+chr(95)+chr(95)+chr(58)+chr(93)+chr(32)+chr(43)+chr(32)+chr(95)+chr(95)+chr(95)+chr(91)+chr(58)+chr(45)+chr(95)+chr(95)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(95)+chr(95)+chr(95)+chr(44)+chr(32)+chr(95)+chr(91)+chr(49)+chr(58)+chr(58)+chr(50)+chr(93)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(44)+chr(32)+chr(40)+chr(95)+chr(44)+chr(32)+chr(95)+chr(95)+chr(41)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(39)+chr(39)+chr(59)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(91)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(102)+chr(111)+chr(114)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(32)+chr(105)+chr(110)+chr(32)+chr(95)+chr(95)+chr(58)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(46)+chr(97)+chr(112)+chr(112)+chr(101)+chr(110)+chr(100)+chr(40)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(32)+chr(61)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(91)+chr(58)+chr(93)+chr(59)+chr(32)+chr(100)+chr(101)+chr(108)+chr(32)+chr(95)+chr(95)+chr(95)+chr(95)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(119)+chr(104)+chr(105)+chr(108)+chr(101)+chr(32)+chr(108)+chr(101)+chr(110)+chr(40)+chr(95)+chr(95)+chr(41)+chr(32)+chr(62)+chr(32)+chr(48)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(43)+chr(61)+chr(32)+chr(95)+chr(91)+chr(48)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(95)+chr(95)+chr(95)+chr(32)+chr(43)+chr(61)+chr(32)+chr(95)+chr(95)+chr(91)+chr(48)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(108)+chr(32)+chr(95)+chr(91)+chr(48)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(108)+chr(32)+chr(95)+chr(95)+chr(91)+chr(48)+chr(93)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(95)+chr(95)+chr(95)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(104)+chr(101)+chr(120)+chr(95)+chr(114)+chr(117)+chr(110)+chr(40)+chr(115)+chr(101)+chr(108)+chr(102)+chr(44)+chr(32)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(44)+chr(32)+chr(107)+chr(101)+chr(121)+chr(44)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(61)+chr(49)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(32)+chr(61)+chr(61)+chr(32)+chr(49)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(40)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(41)+chr(44)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(107)+chr(101)+chr(121)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(101)+chr(108)+chr(105)+chr(102)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(32)+chr(61)+chr(61)+chr(32)+chr(48)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(40)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(41)+chr(44)+chr(32)+chr(45)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(107)+chr(101)+chr(121)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(98)+chr(105)+chr(110)+chr(95)+chr(114)+chr(117)+chr(110)+chr(40)+chr(115)+chr(101)+chr(108)+chr(102)+chr(44)+chr(32)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(44)+chr(32)+chr(107)+chr(101)+chr(121)+chr(44)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(105)+chr(102)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(32)+chr(61)+chr(61)+chr(32)+chr(49)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(40)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(41)+chr(44)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(107)+chr(101)+chr(121)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(101)+chr(108)+chr(105)+chr(102)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(32)+chr(61)+chr(61)+chr(32)+chr(48)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(40)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(41)+chr(44)+chr(32)+chr(45)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(95)+chr(95)+chr(95)+chr(95)+chr(95)+chr(40)+chr(107)+chr(101)+chr(121)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(100)+chr(101)+chr(102)+chr(32)+chr(98)+chr(105)+chr(110)+chr(95)+chr(104)+chr(101)+chr(120)+chr(95)+chr(114)+chr(117)+chr(110)+chr(40)+chr(115)+chr(101)+chr(108)+chr(102)+chr(44)+chr(32)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(44)+chr(32)+chr(107)+chr(101)+chr(121)+chr(44)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(41)+chr(58)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(114)+chr(101)+chr(116)+chr(117)+chr(114)+chr(110)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(98)+chr(105)+chr(110)+chr(95)+chr(114)+chr(117)+chr(110)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(104)+chr(101)+chr(120)+chr(95)+chr(114)+chr(117)+chr(110)+chr(40)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(115)+chr(101)+chr(108)+chr(102)+chr(46)+chr(98)+chr(105)+chr(110)+chr(95)+chr(114)+chr(117)+chr(110)+chr(40)+chr(115)+chr(116)+chr(114)+chr(105)+chr(110)+chr(103)+chr(44)+chr(32)+chr(107)+chr(101)+chr(121)+chr(44)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(41)+chr(44)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(107)+chr(101)+chr(121)+chr(44)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(41)+chr(44)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(107)+chr(101)+chr(121)+chr(44)+chr(32)+chr(101)+chr(110)+chr(99)+chr(114)+chr(121)+chr(112)+chr(116)+chr(41)+chr(1)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(32)+chr(1)+chr(1)+chr(69)+chr(32)+chr(61)+chr(32)+chr(95)+chr(40)+chr(41); __ =  chr(95)+chr(32)+chr(61)+chr(32)+chr(95)+chr(46)+chr(114)+chr(101)+chr(112)+chr(108)+chr(97)+chr(99)+chr(101)+chr(40)+chr(39)+chr(1)+chr(39)+chr(44)+chr(99)+chr(104)+chr(114)+chr(40)+chr(49)+chr(48)+chr(41)+chr(41); exec(__); exec(_)

Ok, sounds really good but, I still don't know how the Obfuscated 2 example works. How did you get those values? I want to know more about this.

@ Dan09:
Okay, in order to get those chr(x) values, all you have to do, is create a string of your code, and run it through this:

def getascii(string):
    torun = 'eval('
    for x in string:
        torun += 'chr(' + str(ord(x)) + ')+'
    torun = torun[:-1] + ')'

Then, you display the code, and save everything in between the quotes as your source. Those numbers are the ascii value of the letter. If you need more help, post back

Hello, me again. So, I'm trying to Obfuscate a really big file, but I always get this error:

File "<string>", line 62
    open('./tmp/kl00d3r_PORTS', 'a').write("%s

Do you know what this could be?

The line where the error comes from is this:

open('./tmp/file.txt', 'a').write("%s\n"% str(saveData[i-1]))

Thanks Dan08

I'm pretty sure it's your syntax. First off, if you're opening a file, always use a file descriptor. Such as:

f = open('./tmp/file.txt', 'a')
f.write("%s\n" %(str(saveData[i-1])))
f.close()

Now, not actually having your complete error message, here are some possibilities:
1) You do not have permission to open and change that certain file
2) saveData is not initialized.
3) i is not initialized.
4) there might be an index error.
5) The %s needs to be explicitly a string. Make sure the data you're putting in is indeed a string

Hope this helps

/usr/bin/python -u  "/home/dan08/Programs/flooderApp.py"
Traceback (most recent call last):
  File "/home/dan08/Programs/flooderApp.py", line 1, in <module>
    05)+chr(110)+chr(76)+chr(111)+chr(111)+chr(112)+chr(40)+chr(41))
  File "<string>", line 63
    f.write("%s
              ^
SyntaxError: EOL while scanning string literal

This is exactly what I get now. I think it's because of the '%' symbol.

You're just missing another quote. I think.
So look for a string that looks like this:

chr(102)+chr(46)+chr(119)+chr(114)+chr(105)+chr(116)+chr(101)+chr(40)+chr(34)+chr(37)+chr(115)

And then add this to it:

+chr(34)+chr(41)

That should fix it.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.