Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11922[/thread]

Perl-Obfuscator Perlguardian (Seite 3)

Leser: 32


<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten
marky
 2008-05-31 12:23
#110513 #110513
User since
2003-08-15
215 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo, das ist aber nur die niedrigste Stufe der Verschlüsselung, wenn man die höchste einstelle, sieht das fast wie byte code aus, ist halt viel langsamer, daher habe ich nur die Stufe gewählt.
xiconfjs
 2008-05-31 15:37
#110517 #110517
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
marky,

wäre es denn möglich, mir mal ein miniscript in der höchsten stufe zu schicken, interessehalber... :)
nichtdort
 2009-08-20 16:39
#124540 #124540
User since
2009-08-20
16 Artikel
BenutzerIn
[default_avatar]
Stunnix (jedenfalls die Demo) greift den Code in 20 Evals rein, in etwa der zehnten ist der Code und in der letzten die Werte. Weiss nicht ob es in der Vollversion besser ist, da die Demo eingeschränkt ist und das nennt sich dann "Testversion" um zu entscheiden ob man es produktiv einsetzt und kauft, die glauben wohl an ihr eigenes Produkt nicht so recht.

Zumindestens scheint es in der Vollversion unterschiedliche Methoden zu geben, wodurch automatisierungen erschwert werden, deren Webserver in Perl war definitiv mit unterschiedlichen Methoden geschützt, aber am Ende bleibt es offener Code da die Lösung immer dabei ist, nur wird es erheblich erschwert. Teuer bleibt es trotzdem dafür wirklich in Perl geschrieben die komplette Software, dafür Respekt!

Bytecode gibt es in Perl(plc) leider nicht wirklich mehr und vorher nur experimentell statt wie in Python(pyc) einfach fest dabei. Bytecode ist kein direkter Schutz aber reicht erstmal und beschleunigt es durchaus auch.

Habe mir das Modul CPAN:Filter::Crypto angeschaut und komme dabei nicht recht weiter. Mit PAR geht es problemlos auch auf anderen Rechnern.

Nur erzeuge ich eine Datei mit dem Modul und will es unter einem anderen System mit einer Perl Installation ausführen erhalte ich nur Fehlermeldungen wie "Unrecognized character \xD9 in column 1 at test.pl line 2." am Binärmode liegt es definitiv nicht, eigene auf dem anderen System erstellten Dateien gehen wieder, aber auf dem anderen System mit ansich gleicher Fehlermeldung auch nicht. An der Hardware liegt es nicht, alles virtuelle Systeme mit exakt gleichen Einstellungen. ;)

Wenn das Modul nur für den Schutz mit der eigenen Perl / System Installation geeignet ist und sonst nur mit PAR, ist es keine Lösung für Webscripte, schade, vielleicht kann einer mal genau nachschauen, bin nicht so fit in xs/c/cpan?

Vielleicht hat ja einer einen Tipp oder Trick.

Beispielcode zum erzuegen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use Filter::Crypto::CryptFile qw(:DEFAULT $ErrStr);
open($out_fh,">test.pl");
binmode($out_fh);
open($in_fh,"<testx.pl");
binmode($in_fh);
crypt_file($in_fh, $out_fh, CRYPT_MODE_ENCRYPTED) or die "crypt_file() failed: $ErrStr\n";
close($in_fh);
close($out_fh);
exit;


Hinzu kommt noch die Problematik wenn das Modul nicht auf dem System installiert ist, es ist kein Problem mit cgipan es "nachzuinstallieren" selbst wenn man wenig Rechte hat aber dann scheint ein use lib "mylib"; zum funktionieren nicht auszureichen, vielleicht fehlte dort noch was. Nuja das war mein Test zum Schützen vom Code vor Laien, vor echten Codern schützt das natürlich nicht. Aber es würde Perl gut tun, wenn es mehr auch in der Öffentlichkeit stehen würde.

Fande es zum Thema passend auch wenn es was älter ist und wollte kein neues aufmachen.
hlubenow
 2009-08-20 22:10
#124557 #124557
User since
2009-02-22
885 Artikel
BenutzerIn
[default_avatar]
nichtdort
Bytecode gibt es in Perl(plc) leider nicht wirklich mehr und vorher nur experimentell statt wie in Python(pyc) einfach fest dabei. Bytecode ist kein direkter Schutz aber reicht erstmal und beschleunigt es durchaus auch.

Mit der Sicherheit von Bytecode geht's so:

http://www.depython.net/
http://users.cs.cf.ac.uk/J.P.Giddy/python/decompil...

Pythons Bytecode gilt ehrlich gesagt im allgemeinen als nicht sehr sicher.

Parrot, die Engine von Perl6, scheint Bytecode zu erzeugen:

http://docs.parrot.org/parrot/latest/html/docs/ove...

Von PAR kenn' ich sonst dieses Modul:

http://search.cpan.org/~smueller/PAR-Packer-0.982/...

Gefiel mir soweit ganz gut, aber keine Ahnung wie sicher das wirkich ist.
Hab' meistens mit PAR ein .exe (= .zip) erzeugt und dann das Perl-Skript rauskopiert. Ist wohl "Bleach", was da werkelt ("pp -f Bleach source.pl"). Wurde oben schon genannt.

Viele Grüße
sid burn
 2009-08-21 09:18
#124563 #124563
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Pythons Bytecode gilt ehrlich gesagt im allgemeinen als nicht sehr sicher.

Sicher heißt bei dir, nicht mehr als Code rückgängig machbar?
Kein Bytecode ist in der Hinsicht sicher. Ein Bytecode ist lediglich eine optimierte Form des Sourcecodes. Anstatt eine if schleife hat er also sagen wir ein einzelnes zeichen das für ihn "if-schleife" bedeutet. Von daher ist es per se Möglich Bytecode stets wieder in die Ursprungssprache zurück zu wandeln. Einziger hinweis. Der muss nicht immer zu 100% identisch sein, weil Bytecode schon eine optimierte Form ist, und so etwas von Quellcode abweichen kann.

Quote
Parrot, die Engine von Perl6, scheint Bytecode zu erzeugen:

Also zuersteinmal ist "Parrot" nicht wirklich die Engine von Perl6. Und zweitens erzeugt es keinen Bytecode sondern nimmt Bytecode entgegen und führt diesen aus.

Parrot ist eine Virtuelle Maschiene, natürlich hängt sie mit Perl 6 zusammen in der hinsischt das es ebenfalls eine Hauptplatform sein soll auf der Perl 6 laufen soll. Trotzdem ist Parrot eine allgemeingültige Virtuelle maschiene und hat sich von anfang an zum Ziel gesetzt eine VM für alle arten von Sprachen optimiert für Dynamisch Typisierte Sprachen zu sein.

Ansonsten erzeugt Parrot gar kein Bytecode sondern nimmt nur Bytecode entgegen und führt es aus. Parrot stellt dir aber eine umgebung zur Verfügung mit der es einfach ist neue Compiler zu entwickeln um den benötigten Bytecode von einer Sprache zu erzeugen. Für Perl 6 wäre der Compiler z.B: Rakudo.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
hlubenow
 2009-08-21 17:54
#124602 #124602
User since
2009-02-22
885 Artikel
BenutzerIn
[default_avatar]
sid burn
Also zuersteinmal ist "Parrot" nicht wirklich die Engine von Perl6. Und zweitens erzeugt es keinen Bytecode sondern nimmt Bytecode entgegen und führt diesen aus.

Ah so, dann hab' ich die Doku falsch verstanden :(.
Vielen Dank für die Aufklärung!

Viele Grüße
MatthiasW
 2009-08-21 18:36
#124603 #124603
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
2009-08-21T07:18:49 sid burn
Ansonsten erzeugt Parrot gar kein Bytecode sondern nimmt nur Bytecode entgegen und führt es aus. Parrot stellt dir aber eine umgebung zur Verfügung mit der es einfach ist neue Compiler zu entwickeln um den benötigten Bytecode von einer Sprache zu erzeugen. Für Perl 6 wäre der Compiler z.B: Rakudo.

Hm.. also ich verstehe es so, dass parrot durchaus Bytecode erzeugt:
2009-08-21T18:26:00 ?
-o outputfile, --output=outputfile
Act like an assembler. Don't run code, unless -r is given too. If the outputfile ends with .pbc, a PBC file is written. If it ends with .pasm, a PASM output is generated, even from PASM input. This can be handy to check various optimizations, including -Op.
http://docs.parrot.org/parrot/latest/html/docs/running.pod.html


MfG

PS: Gibt es eigentlich eine Möglichkeit etwas anderes als einen Membernamen als Referenz bei einem quote anzugeben?

edit: s/Möglichkeiten/Möglichkeit/
Last edited: 2009-08-21 20:08:53 +0200 (CEST)
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
pq
 2009-08-21 18:39
#124604 #124604
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
2009-08-21T16:36:04 MatthiasW
PS: Gibt es eigentlich eine Möglichkeiten etwas anderes als einen Membernamen als Referenz bei einem quote anzugeben?

leider (noch) nicht. aber das wäre sicher ein nettes feature.
vielleicht in der art
Code: (dl )
[quote="Titel" url="http://rfc.example/"]
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
topeg
 2009-08-21 19:30
#124605 #124605
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2009-08-21T16:39:53 pq
aber das wäre sicher ein nettes feature.
vielleicht in der art
Code: (dl )
[quote="Titel" url="http://rfc.example/"]

Das wäre durchaus Parktisch, wenn man fremde Seiten zitiert.
MatthiasW
 2009-08-21 20:09
#124606 #124606
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Gefiele mir auch sehr gut :)
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten



View all threads created 2008-05-27 16:55.