Skripte zur Arbeitserleichterung und ein Archiv-Modul
Gepackte Koffer
von Michael Schilli
Erschienen im Linux-Magazin
2004/09
Jeder Programmierer nutzt für die tägliche Arbeit eine Sammlung persönlicher Skripte. Um vier aus dem eigenen Fundus geht es hier. Alle brauchen jedoch Perl-Module, die nicht auf jedem Rechner vorhanden sind. Das Perl Archive Toolkit löst die Abhängigkeit und packt Skripte und Module in ein handliches Archiv.
Wer auf mehreren Rechnern arbeitet, kennt das Problem, dass Perl-Skripte einen Rattenschwanz an Modulen benötigen. Sie zu installieren erfordert eine CPAN-Konfiguration und kostet Zeit. Autrijus Tang hat mit dem CPAN-Modul PAR (Perl Archive Toolkit) eine Möglichkeit geschaffen, Skripte inklusive aller erforderlichen Module in Archive zu verpacken, ähnlich wie das unter Java mit ».jar«-Dateien funktioniert.
Da PAR aber nicht unbedingt auf jeder Maschine verfügbar ist, um ein Archiv zu entpacken, gibt es sogar die Möglichkeit, Executables zu erstellen. Sie enthalten den Interpreter, alle nötigen Module, Bibliotheken sowie die Skripte. So lassen sich auch Perl-Skripte ausführen, denen im Normalfall sämtliche Module fehlen würden.
Auch für Entwickler, die oft einen Werkzeugkoffer voller kleiner Skripte mit sich führen, ist PAR sehr hilfreich. Skripte, die bei der täglichen Arbeit nützlich sind und kleinere Jobs erledigen, verwenden in der Regel Module aus der schier unendlichen Sammlung des CPAN. Die folgenden vier Skripte sind Teil meiner eigenen Werkzeugsammlung.
Passwortschnüffler
Ein kleiner Base-64-(De-)Kodierer zum Beispiel ist immer dann nützlich, wenn man im Web mit Basic-Authentifikation arbeitet. Neulich saß ich nämlich vor einem Dialogfenster wie in Abbildung 1 und hatte das Passwort vergessen. Glücklicherweise besaß der Browser einen Passwortmanager, der die nötigen Felder automatisch ausgefüllt hat. Aber leider besteht das Passwortfeld nur aus Sternchen.

|
Abbildung 1: Ein typisches Browserfenster bei Basic-Authentifikation. Leider ist das automatisch vom Browser ausgefüllte Passwortfeld mit Sternchen verschleiert.
|
Doch ein zwischen Browser und Server geschalteter Proxy (beispielsweise der aus dem Artikel von[1]) lässt schnell erkennen, dass ein String wie »dGVzdDpzZWNyZXQ=« durch die Leitung fließt (siehe Abbildung 2). Dummerweise überträgt der Browser Passwort und Benutzername mit dem Base-64-Algorithmus kodiert. Die Dekodierung ist dank Perl aber sehr einfach, das Skript aus Listing 1 bringt den Klartext zum Vorschein:
$ b64.pl -d dGVzdDpzZWNyZXQ=
test:secret
01 #!/usr/bin/perl
02 ###########################################
03 # b64.pl - Encode and decode Base64
04 # Mike Schilli <m@perlmeister.com>, 2004
05 ###########################################
06 use warnings;
07 use strict;
08
09 use Getopt::Std;
10 use MIME::Base64;
11
12 getopts "d", my %opts;
13
14 die "usage: $0 [-d] string" unless
15 defined $ARGV[0];
16
17 if($opts{d}) {
18 print decode_base64($ARGV[0]), "n";
19 } else {
20 print encode_base64($ARGV[0]);
21 }
|

|
Abbildung 2: Ein Base-64-kodierter Passwortstring aus der Basic-Authentifikation (im Bild rot umrahmt) zwischen Webclient und Server lässt sich relativ einfach mit einem Proxy ausschnüffeln.
|
Der Benutzername ist »test«, das Passwort lautet »secret«. Diese Methode zeigt auch, dass Basic-Auth nur wenig nützt, wenn jemand an der Leitung schnüffelt. Umgekehrt zeigt folgender Aufruf, dass »b64.pl« auch die Kodierung beherrscht:
$ b64.pl test:secret
dGVzdDpzZWNyZXQ=
Weitere nützliche Anwendungen gibt es viele: Base-64-Kodierung kommt immer dann zum Einsatz, wenn es darum geht, binäre Daten in ein anzeigbares Format umzuwandeln. Viele E-Mail-Programme kodieren beispielsweise binäre Attachments mit Base 64.
Prozent-Hex im URL-Wald
Auch in vielen URLs befinden sich kodierte Sequenzen. Wenn der Browser per GET-Request einen Parameter an den Server schickt, sieht das zum Beispiel folgendermaßen aus:
http://host.com/cgi/foo?p=a%20b%2Fc
Der Browser hat jedes Sonderzeichen in das Format »%XX« umgewandelt, wobei »XX« dem Ascii-Hexadezimalwert entspricht. Mit dem Skript in Listing 2 lässt sich der Hex-String leicht dekodieren:
$ urlcode.pl -d a%20b%2Fc
a b/c
01 #!/usr/bin/perl
02 ###########################################
03 # urlcode.pl - URL en/decode
04 # Mike Schilli <m@perlmeister.com>, 2004
05 ###########################################
06 use warnings;
07 use strict;
08
09 use Getopt::Std;
10 use URI::Escape;
11
12 getopts "d", my %opts;
13
14 die "usage: $0 [-d] string" unless
15 defined $ARGV[0];
16
17 if($opts{d}) {
18 print uri_unescape($ARGV[0]), "n";
19 } else {
20 print uri_escape($ARGV[0]), "n";
21 }
|
Auch »urlcode.pl« beherrscht das Kodieren genauso wie das Dekodieren. Um einen String zu Testzwecken zu encoden, wandelt folgender Aufruf eine Zeichenkette ins URL-Format um:
$ urlcode.pl "a b/c"
a%20b%2Fc
Dank des CPAN-Moduls »URI::Escape« ist das Skript trivial, es testet lediglich mit »Getopt::Std«, ob »-d« auf der Kommandozeile angegeben wurde, und ruft dann entsprechend »uri_escape« oder »uri_unescape« aus dem Modul »URI::Escape« auf.
| Whitepaper |
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|