[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