Python a zdrojové kódy

xyz

Python a zdrojové kódy
« kdy: 08. 06. 2014, 10:49:45 »
Chci se zeptat jestli je možné zdrojové kódy Pythonove webové aplikace zkompilovat tak aby se k nim nedalo dostat a přitom aby samotná aplikace dokázala běžet např. na shared hostingu.


Franta.

Re:Python a zdrojové kódy
« Odpověď #1 kdy: 08. 06. 2014, 10:58:12 »
OMFG zase nějaká lama, co si myslí, že má strašně geniální kód, který jí chtějí všichni ukrást, a přitom nemá ani na vlastní server.

Kód: [Vybrat]
man pycompile

Franta.

Re:Python a zdrojové kódy
« Odpověď #2 kdy: 08. 06. 2014, 10:59:04 »
Případně STFW: python obfuscator

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Python a zdrojové kódy
« Odpověď #3 kdy: 08. 06. 2014, 15:06:17 »
OMFG zase nějaká lama, co si myslí, že má strašně geniální kód, který jí chtějí všichni ukrást, a přitom nemá ani na vlastní server.

Kód: [Vybrat]
man pycompile

Dost hrubé. Bohužel nejspíš pravdivé.

@xyz:

Kód programu se obecně dost dobře zabezpečit nedá. Viz třeba cracky k hrám - v době, kdy jsem se o toto téma více zajímal, stačilo rozkomprimovat exe soubor spakovaný UPXkem, dekompilovat, vyházet volání funkcí na ověřování pravosti, zkompilovat ... návody na toto vč. popisu jak typicky vypadají volání po ověření, se daly najít na netu.

U programů napsaných v jazycích, jejichž programy se typicky kompilují rovnou do nativního kódu, je tento proces těžší v tom, že člověk zpravidla bude muset znát assembler na dobré úrovni, což není sranda a není to "typická znalost". U jazyků, kde se programy typicku distribuují v nějakém mezikódu (to, co běží na .Netu nebo nad JVM), je to jednodušší - po dekompilaci máš mezikód, který je mnohem snazší na přečtení. U jazyků, kdy programy v nich napsané se typicky distribuují ve zdrojovém kódu, tedy PHP, Javascript, velmi často Python apod., není těžké kód přečíst nebo v případě pythonu dekompilovat do čitelného python kódu.

Můžeš zkust obfuscator, který má za cíl vytvořit kód čitelný pro kompilátor a nečitelný pro člověka. Ale občas jsou s tím problémy a výsledek není vždy 100% nečitelný kód. Ve firmě jsme měli desktop aplikaci a použili jsme Dotfuscator na hlavní část aplikace (kde byla zároveň i kontrola licencí a aktualizací) a na modul, ve kterém bylo kritické know-how. Nicméně musím říct, že kdyby někdo opravdu moc chtěl, tak ho to sice významně zdrží, ale stejně nakonec vyhraje.

Pokud máš webovou aplikaci, tak ji prostě nedávej z ruky - pořiď si vlastní server. Pokud opravdu musíš dávat programy někam, kde nad nimi nemáš kontrolu (sdílený hosting, zákaznický server, počítače koncových uživatelů...), je třeba opravdu dobře spočítat, jestli se vyplatí se s tímto štvát - znamená to minimálně další kolo testování (= před každým releasem důkladně přetestovat před obfuskací a to samé po ní) pokud všechno půjde dobře. Pokud se v obfuskovaném kódu objeví bugy, které se v neobfuskovaném nevyskytly, což se stává, máš obtížně řešitelný problém navíc, který zpravidla stojí nemalé množství času a peněz na vyřešení.

Sten

Re:Python a zdrojové kódy
« Odpověď #4 kdy: 09. 06. 2014, 16:19:18 »
OMFG zase nějaká lama, co si myslí, že má strašně geniální kód, který jí chtějí všichni ukrást, a přitom nemá ani na vlastní server.

Kód: [Vybrat]
man pycompile

K pycompile existuje obrácený program decompyle, který umí velmi dobře obnovit zdrojový kód (chybí akorát komentáře). Jde to částečně obfuskovat, ale protože Python používá duct typing, tak to nikdy nebude ani trochu tak účinné jako u jazyků se statickým typováním. Proto taky části kódu, kde je snaha chránit know how, se pro použití v Pythonu píší jako modul v C.


eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Python a zdrojové kódy
« Odpověď #5 kdy: 10. 06. 2014, 12:54:50 »
[off topic]
[bullshit]

duct typing

I am a grammar nazi! Die in a gas chamber! :-)

AFAIK správně je duck typing. (Jestli ne, tak mě plz oprav.)

Does it walk like a duck? Does it quack like a duck? Then consider it a duck without requiring it to show any IDuck papers.

[/bullshit]
[/offtopic]