Verrückte Perlhacks

0 views
Skip to first unread message

Danijel Tasov

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
Hallo,

On Fri, 03 Nov 2000 16:48:34 +0100,
Tina Mueller <tina.m...@pixelpark.com> wrote:
> ich persoenlich kenne keine tricks. mein erstes und bis jetzt einziges
> JAPH hab ich so hingebastelt.

also bei mir funzt dein JAPH net...
danielt@perceval:~/tmp> perl test | hexdump
0000000 0d0a
0000002

Es sei denn, es soll genau das ausgeben :)

> gruss,
> tina


bye,
Da.Ta.

--
Danijel Tasov, Daniel...@CameloT.de. PGP-Fingerprint:
00 3A 65 0C 47 66 46 27 E2 AF 3A C4 1C 2E E8 EE
# College is like a woman -- you work so hard to get in, and nine months
# later you wish you'd never come.

Dietmar Staab

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
In article <8turvk$kr1$1...@wsc10.lrz-muenchen.de>, "Danijel Tasov"

<daniel...@camelot.de> wrote:
> also bei mir funzt dein JAPH net... danielt@perceval:~/tmp> perl test |
> hexdump
> 0000000 0d0a
> 0000002
>
> Es sei denn, es soll genau das ausgeben :)

Das ist ganz nett und funktioniert folgendermaßen ... nee, kann sich
jeder ja mal selbst anschauen.


Dein System unterstützt anscheinend kein select.


Dietmar

Bjoern Hoehrmann

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
* Danijel Tasov wrote in de.comp.lang.perl.misc:

>also bei mir funzt dein JAPH net...

Dein System unterstüzt kein select(), was mich wundert.

>danielt@perceval:~/tmp> perl test | hexdump
>0000000 0d0a
>0000002

Das Script gibt fast 4KB Daten aus.
--
Björn Höhrmann ^ mailto:bjo...@hoehrmann.de ^ http://www.bjoernsworld.de
am Badedeich 7 ° Telefon: +49(0)4667/981ASK ° http://bjoern.hoehrmann.de
25899 Dagebüll # PGP Pub. KeyID: 0xA4357E78 # http://learn.to/quote +{i}
..weaving a secure, well-formed, standard compliant WWW for =everyone=..

Bjoern Hoehrmann

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
* Claus Näveke wrote in de.comp.lang.perl.misc:
>hier gibts ja einige Leute die irgendwelche mehr oder weniger verrückte
>Perlcodes als Signatur haben. Gibts da irgendwelche Tricks um solche Dinger
>zu basteln?

* Du möchtest einen String haben
* Woraus besteht der String?
-> Zeichen die wiederum aus einzelnen Bits bestehen
* Wie kannst du diese Zeichen erzeugen und kombinieren, damit dein
String herauskommt?
-> Deine Aufgabe

Du musst die notwendigen Daten für den String im Script speichern, das
billigste Beispiel dafür wäre

print 'Cl...@Claus-Netz.de'

Nicht sehr kreativ, das kann man steigern:

print scalar reverse 'ed.zteN-sualC@sualC'

Oder vielleicht auch

print map chr hex, qw!43 6C 61 75 73 40 43 6C 61 75 73 2D 4E 65 74 7A
2E 64 65!

Vielleicht auch

print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'

Bei den letzten 3 Beispielen sind die notwendigen Daten besser
versteckt, als beim ersten. Du kannst jetzt die Komplexität nach
belieben steigern, in meinen Beispielen werden ja nicht mehr als 2
Datenquellen verwendet und die Daten sind vorgegeben.

Du kannst die Bestandteile der Daten die du zur Erstellung brauchst
errechnen, durch Reguläre Ausdrücke oder Bitoperationen manipulieren,
etc. pp. der Phantasie sind eigentlich keine Grenzen gesetzt. Du kannst
viele Variablen benutzen, exzessiv vom impliziten $_ Gebrauch machen,
Daten als Oktal- oder Hexadezimalzahlen oder als Binäre Daten speichern
oder binäre Daten erstellen und damit Manipulationen vornehmen, was
immer du willst. Perl bietet genügend "kryptische" Funktionen wie pack,
unpack, map und oft benötigte wie chr, ord, hex, sprintf, eval usw.

Speziell eval bietet dir die Möglichkeit, dass du den Quellcode zur
Laufzeit selber erstellst, was den Code wiederum kleiner machen kann.

Wenn du einen Weg gefunden hast, schreibe alles unmittelbar
hintereinander weg und wenn es <= 4*80 Zeichen sind, hast du was
brauchbares.

Lukas Ertl

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
Bjoern Hoehrmann <bjo...@hoehrmann.de> wrote:
>* Claus Näveke wrote in de.comp.lang.perl.misc:
>>hier gibts ja einige Leute die irgendwelche mehr oder weniger verrückte
>>Perlcodes als Signatur haben. Gibts da irgendwelche Tricks um solche Dinger
>>zu basteln?

Das ganze fällt auch in die Kategorie "Obfuscated Perl", ein Grund, warum
so viele Perl hassen (und andererseits so viele Leute Perl lieben).

Ich persönlich hab erst einen "Obfuscated Code" geschrieben, mit dem Title
"Beatles Revival". Nicht sonderlich kreativ, aber irgendwie bin ich schon
ein wenig stolz auf mein erstes Stück (ok, es is zu lang für eine
Signature :) ):

#!/usr/bin/perl -w

*yellow
=sub#marine?
{$what #yellow
=sub#marine?
{q/
rekcahlreprehtonatsuj/}
;$/
=$what
#is this
->("button")
#good for?
;#Ringo,
%whereis=#the
map{p("lease?")
=>$_}reverse(
#Don't
split//,(
join#us!
"",$/));print
$whereis#John, Ringo?
{$_}for sort{$a<=>$b}
#Where are the
keys#,
%whereis}#the
;sub#marine, Ringo???
p{$p++}
#Ok, let's sing:
#We all live in a
yellow("submarine!");

lg,
le

--
"Bus error -- driver executed."
-- anonymous

Martin Bialasinski

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
* Lukas Ertl <a940...@unet.univie.ac.at> wrote:

> Ich persönlich hab erst einen "Obfuscated Code" geschrieben, mit dem Title
> "Beatles Revival".

Was du geschrieben hast ist eine andere Kategorie, nämlich "Perl
Poetry".

Such mal in google.com nach Perl Poetry nach Beispielen.

Ciao,
Martin

Bjoern Hoehrmann

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
* Lukas Ertl wrote in de.comp.lang.perl.misc:

>Bjoern Hoehrmann <bjo...@hoehrmann.de> wrote:
>>* Claus Näveke wrote in de.comp.lang.perl.misc:
>>>hier gibts ja einige Leute die irgendwelche mehr oder weniger verrückte
>>>Perlcodes als Signatur haben. Gibts da irgendwelche Tricks um solche Dinger
>>>zu basteln?

Wenn du dich nur auf ihn beziehst, antworte doch bitte auch auf sein
Posting und _nicht_ auf meines :-)

>Das ganze fällt auch in die Kategorie "Obfuscated Perl", ein Grund, warum
>so viele Perl hassen (und andererseits so viele Leute Perl lieben).

Schon ein wenig älter, aber...

[...]
From: kar...@ife.ee.ethz.ch (Andreas Karrer)
Newsgroups: de.comp.lang.perl
Subject: Re: perl-Script schuetzen
Date: 26 Aug 1997 14:20:54 GMT

Naja, nachdem doch einige Personen diesen Perl-Code

#!/usr/local/bin/perl4

++$|;$*=$|+
$|;$$=($**$*+$|
)**$**$*;$,=$$*$* ;$'=$,+$|--
;$+=$***($**$*);$;= $,-$*;$'.=',';@_=
(($,-$+-$*-$*).',', $',($,+$+).',',$'
,($;+$+).',',($+ *$*).',',($$+
$+).',',$', $',$;.',',
$',$');

($_,$@,$#)=($]=~
/\$\$.(.)(.)(.):/)
;++$#;$\=$_;$#++ ;$/=++$#;++$\
;$\++;($:, $;,$$,$,)=($]=~
/:.(.)(.)(.)(.)/)
;$^=++$/ ;++$^;++$,;$^++
;$,++;@+=( '"'.$:.$$.$/.
$,++.$@ ,$:. $_.$\.$^++
.'(\''.$\. ($#_+(++$|))
);@==( $;.$\.$#.$,, '`'.$:.$;.
$$.$^,'-'.$; ,@+);@'=(@=,
'\',',@_,$% .')"`',$|.'>&'.
($|+$|));`@'`


verstehen (http://www.perl.org/wits-a2-3a.html), duerfte es schwierig
sein, wirklich unverstaendlichen, aber sinnvollen Perl-Code zu
schreiben.
[...]

Lukas Ertl

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
Martin Bialasinski <agr30...@uni-koeln.de> wrote:
>* Lukas Ertl <a940...@unet.univie.ac.at> wrote:
>
>> Ich persönlich hab erst einen "Obfuscated Code" geschrieben, mit dem Title
>> "Beatles Revival".
>
>Was du geschrieben hast ist eine andere Kategorie, nämlich "Perl
>Poetry".

Naja, ich war mir nicht sicher, ob's Poetry oder Obfuscation ist. Immerhin
läuft's.

Lukas Ertl

unread,
Nov 3, 2000, 3:00:00 AM11/3/00
to
Bjoern Hoehrmann <bjo...@hoehrmann.de> wrote:

[Obfuscation deleted]

Ja, das ist ein Hammer. (Gott sei Dank gibt's Vim und
Syntax-Highlighting :)

Das hier gefällt mir auch sehr gut, von Abigail:

$; # A lone dollar?
=$"; # Pod?
$; # The return of the lone dollar?
{Just=>another=>Perl=>Hacker=>} # Bare block?
=$/; # More pod?
print%; # No right operand for %?

Claus Näveke

unread,
Nov 3, 2000, 9:44:38 AM11/3/00
to
Hallö,

hier gibts ja einige Leute die irgendwelche mehr oder weniger verrückte
Perlcodes als Signatur haben. Gibts da irgendwelche Tricks um solche Dinger
zu basteln? Ich würde nämlich gerne meine Mailadresse in so einen Ein- oder
Zweizeiler packen.

Grüße Claus


--
Claus Näveke ICQ: 24702444 eMail: Cl...@Claus-Netz.de

Tina Mueller

unread,
Nov 3, 2000, 10:48:34 AM11/3/00
to
hi,

"Claus Näveke" schrieb:

> hier gibts ja einige Leute die irgendwelche mehr oder weniger verrückte
> Perlcodes als Signatur haben. Gibts da irgendwelche Tricks um solche Dinger
> zu basteln? Ich würde nämlich gerne meine Mailadresse in so einen Ein- oder
> Zweizeiler packen.

diese nennt man JAPH's, denn im original wird
"Just another Perl hacker," geprintet.
zusaetzlich gilt, dass es in 4 zeilen von je
80 zeichen passen sollte, also fuers usenet gut
lesbar.

ich persoenlich kenne keine tricks. mein erstes und bis jetzt einziges
JAPH hab ich so hingebastelt.

vielleicht gibt es auxh ein tool dafuer; abigail
antwortete jedenfalls in c.l.p.m. mal auf die frage,
ob jemand ein tool zum verschluesseln bzw. unlesbarmachen von
code habe, mit ja... =)

gruss,
tina

--
$|++;@_=map{chr(ord($_)-$|)}split//,"Kvtu!bopuifs!Qfsm!Ibdlfs-";$\="\r";@a=qw(<
^ > v);$§="_"x25;until($§!~m~_~){$o=int(rand 28)+65;next
if$s{$o}++;$o==91?$o=44
:($o==92?$o=32:0);$g=chr$o;for(0..24){if($_[$_]=~m)$g)i){for$m(@a,$_[$_]){substr
$§,$_,$|,$m;print$§;select$/,$/,$/,0.1}}}print$§}print$/ #
http://tinita.de

Claus Näveke

unread,
Nov 4, 2000, 2:44:38 AM11/4/00
to

> Vielleicht auch
>
> print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'
>
Das ist gut, danke. Gibts eine Umkehrfunktion zu ^?
Ich habe nämlich ehrlichgesagt keine Ahnung was ^ bewirkt (hab auch in
meinen schlauen Büchern nichts gefunden), aber ich würde mir auch gerne
selber solche Dinger basteln.

Grüße Claus


Martin Bialasinski

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
* Claus Näveke <cla...@gmx.de> wrote:

>> Vielleicht auch
>>
>> print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'
>>

> Das ist gut, danke. Gibts eine Umkehrfunktion zu ^?

^ ist die Umkehrfunktion.

$ perl
print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'^'a----------b----c--';
"ALX^mnALX^OcHYWMIH$

> Ich habe nämlich ehrlichgesagt keine Ahnung was ^ bewirkt (hab auch
> in meinen schlauen Büchern nichts gefunden),

perldoc perlop

Binary "^" returns its operators XORed together bit by
bit. (See also the section on Integer Arithmetic and the
section on Bitwise String Operators.)


A B A^B
1 0 1
0 1 1
0 0 0
1 1 0

A^B B (A^B)^B = A
1 0 1
1 1 0
0 0 0
0 1 1

XOR wird von schlechten Programmen (AFAIK auch von Windows für manche
Werte in der Registry) zur "Verschlüsselung" benutzt.

Ciao,
Martin

Claus Näveke

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
> >> Vielleicht auch
> >>
> >> print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'
> >>
>
> > Das ist gut, danke. Gibts eine Umkehrfunktion zu ^?
>
> ^ ist die Umkehrfunktion.
>
> $ perl
> print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'^'a----------b----c--';
> "ALX^mnALX^OcHYWMIH$
>
ok, ich habs kapiert.
gibts da jetzt noch irgendwelche tricks, damit $a^$b schön ASCII Zeichen
ergibt?

Grüße Claus

Bjoern Hoehrmann

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
* Lukas Ertl wrote in de.comp.lang.perl.misc:
>Bjoern Hoehrmann <bjo...@hoehrmann.de> wrote:
>
>[Obfuscation deleted]
>
>Ja, das ist ein Hammer. (Gott sei Dank gibt's Vim und
>Syntax-Highlighting :)
>
>Das hier gefällt mir auch sehr gut, von Abigail:
>
>$; # A lone dollar?
>=$"; # Pod?
>$; # The return of the lone dollar?
>{Just=>another=>Perl=>Hacker=>} # Bare block?
>=$/; # More pod?
>print%; # No right operand for %?

Naja, ich weiss nicht, das gemeine ist hier nur die Kommentierung die
einen auf die falsche Fährte bringen soll, wenn man versucht das zu
analysieren. Wenn man `perldoc perlvar` kennt, ist das nicht sehr magic.
Anders geschrieben wäre das:

#!/usr/bin/perl
use English;
$SUBSCRIPT_SEPARATOR = $LIST_SEPARATOR;
$SUBSCRIPT_SEPARATOR{
Just=>another=>Perl=>Hacker
} = $INPUT_RECORD_SEPARATOR;
print %SUBSCRIPT_SEPARATOR;

Martin Vorlaender

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
Claus Näveke (cla...@gmx.de) wrote:
: > Vielleicht auch

: > print '"ALX^mnALX^OcHYWMIH'^'a----------b----c--'
:
: Das ist gut, danke. Gibts eine Umkehrfunktion zu ^?

Ja: ^

: Ich habe nämlich ehrlichgesagt keine Ahnung was ^ bewirkt (hab auch in


: meinen schlauen Büchern nichts gefunden),

XOR (exklusives ODER), logisch oder bitweise, mit der Wahrheitstabelle

x | y | x^y
---+---+-----


0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0

in Perl auch als low-precedence Operator "xor".

Siehe `perldoc perlop', in den Abschnitten
"Bitwise Or and Exclusive Or",
"Logical or and Exclusive Or" und
"Bitwise String Operators" (inkl. JAPH-Beispiele).
Die findet man auch, wenn man nach ^ sucht (und Regexp'e ueberspringt).

cu,
Martin
--
One OS to rule them all | Martin Vorlaender | VMS & WNT programmer
One OS to find them | work: m...@pdv-systeme.de
One OS to bring them all | http://www.pdv-systeme.de/users/martinv/
And in the Darkness bind them.| home: mar...@radiogaga.harz.de

Bjoern Hoehrmann

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
* Claus Näveke wrote in de.comp.lang.perl.misc:
>gibts da jetzt noch irgendwelche tricks, damit $a^$b schön ASCII Zeichen
>ergibt?

Mies formulierte Frage. $a ^ $b hat exakt ein Ergebnis, man kann das
nicht verändern. Was du tun kannst, ist, $a und/oder $b entsprechend zu
wählen. Gehe einfach alle Zeichen des (resultierenden?) Strings durch
(z.B. 'foreach (split '', $string) {} ) und erzuge passende Zeichen,
sprich, "ok" if "$z1"^"$z2" =~ /^[\x20-\x7F]$/;

Philip Newton

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
On Fri, 3 Nov 2000 15:44:38 +0100, "Claus Näveke" <cla...@gmx.de> wrote:

> Gibts da irgendwelche Tricks um solche Dinger zu basteln?

Ja. Abigail, eine der Meister der Kunst, hat mal bei TPC einen Vortrag über
JAPHs gehalten und einige Tricks erläutert. Die Folien sind auch im Netz
irgendwo. Leider habe ich nicht mehr die URL parat (ich vermute, irgendwo unter
http://www.foad.org/~abigail/ , aber ich weiß nicht, ob sie von dort verlinkt
sind.)

Gruß,
Philip
--
Philip Newton <nospam...@gmx.li>
If you're not part of the solution, you're part of the precipitate.

Bjoern Hoehrmann

unread,
Nov 4, 2000, 3:00:00 AM11/4/00
to
* Philip Newton wrote in de.comp.lang.perl.misc:

>On Fri, 3 Nov 2000 15:44:38 +0100, "Claus Näveke" <cla...@gmx.de> wrote:
>
>> Gibts da irgendwelche Tricks um solche Dinger zu basteln?
>
>Ja. Abigail, eine der Meister der Kunst, hat mal bei TPC einen Vortrag über
>JAPHs gehalten und einige Tricks erläutert. Die Folien sind auch im Netz
>irgendwo. Leider habe ich nicht mehr die URL parat

http://www.foad.org/~abigail/Perl/Talks/Japhs/

Christian Lackas

unread,
Nov 4, 2000, 11:28:28 PM11/4/00
to
On Sat, 04 Nov 2000 12:29:22 +0100, Bjoern Hoehrmann
<bjo...@hoehrmann.de> wrote:

Hallo Leute,

mein absoluter Favorit ist:

|@ARGV=split(/\S\n?/,<<EOF);$a+=length(shift),vec($_,$a,1)=1while@ARGV;print;
| :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
| :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
| :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
| :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
| :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
| :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
|EOF

leider nicht von mir ;-)

Gruß
Christian

--
Wir wissen zwar nicht, wo wir hinwollen,
werden aber als erste dabei sein.
http://www.clackas.de/ Perl Delphi Linux MP3 Searchengines Domainchecker
FAQ lesen nicht vergessen: http://www.worldmusic.de/perl/mini-faq.html

Tina Mueller

unread,
Nov 6, 2000, 3:00:00 AM11/6/00
to
hi,
Danijel Tasov <daniel...@camelot.de> wrote:

> On Fri, 03 Nov 2000 16:48:34 +0100,
> Tina Mueller <tina.m...@pixelpark.com> wrote:

>> ich persoenlich kenne keine tricks. mein erstes und bis jetzt einziges
>> JAPH hab ich so hingebastelt.

> also bei mir funzt dein JAPH net...


> danielt@perceval:~/tmp> perl test | hexdump
> 0000000 0d0a
> 0000002

> Es sei denn, es soll genau das ausgeben :)

hm, ich kenne hexdump nicht.
auf welchem system hast du's denn ausprobiert?
wenn es dort nicht funktioniert, ist es keinrichtiges
JAPH, da die eigentlich portabel sein sollten. =(

gruss,
tina

--
http://tinita.de \ enter__| |__the___ _ _ ___
tina's moviedatabase \ / _` / _ \/ _ \ '_(_-< of
search & add comments \ \ _,_\ __/\ __/_| /__/ perception
please don't email unless offtopic or followup is set. thanx

Reply all
Reply to author
Forward
0 new messages