[OT] Python like lanugages [was Re: After C++, what with Python?]

Dave Angel davea at ieee.org
Thu Jan 20 05:46:08 EST 2011


On 01/-10/-28163 02:59 PM, Octavian Rasnita wrote:
> From: "geremy condra"<debatem1 at gmail.com>
>> On Wed, Jan 19, 2011 at 2:31 AM, Octavian Rasnita<orasnita at gmail.com>  wrote:
>>> <snip>
>>>
>>> Would it be hard to introduce the possibility of adding encryption of the
>>> bytecode similar to what the Zend encoder does for PHP or Filter::Crypto for
>>> Perl?
>>>
>>> Octavian
>>
>> The iron law of cryptography: there is no cryptographic solution to a
>> problem in which the attacker and intended recipient are the same
>> person.
>>
>> Schemes like this are at most an annoyance to people willing to
>> reverse engineer your code.
>>
>> Geremy Condra
>
>
> I don't know how the Python bytecode works... how it is executed.
>
> I thought that Python parses the .py file and generates the bytecode that doesn't contain all the necessary information for re-creating the source code.
> (But that I agree, that might mean real compilation which is not the case...)
>
> Octavian
>
It's not hard to experiment with.  I've written disassemblers for other 
byte-code formats, but not for Python's.  The following is pasted 
together, so it may not be completely correct.  But it's close.


Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 >>> def test(arg1, arg2):
...     if arg1 < 65:
...         print arg2
...
 >>> import dis
 >>> dis.dis(test)
   2           0 LOAD_FAST                0 (arg1)
               3 LOAD_CONST               1 (65)
               6 COMPARE_OP               0 (<)
               9 JUMP_IF_FALSE            9 (to 21)
              12 POP_TOP

   3          13 LOAD_FAST                1 (arg2)
              16 PRINT_ITEM
              17 PRINT_NEWLINE
              18 JUMP_FORWARD             1 (to 22)
         >>   21 POP_TOP
         >>   22 LOAD_CONST               0 (None)
              25 RETURN_VALUE
 >>>

Now, there are tools which reverse that into something pretty similar to 
python source.  But you can see even from the built-in features that 
lots of information is there.  I'd assume that something very similar is 
in the byte code files themselves.

DaveA




More information about the Python-list mailing list