perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 16
Click for quality!




12.02.2012 / 02:39

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragVersuch nachmachen | Ist das überhaupt möglich?
Seitenanfang
Hallo,
ich habe mal im Internet eine Perl programmierung gefunden. Jetzt muss ich dazu sagen: Ich habe eigentlich keine Anhung von perl, programmiere Html und Flash.

Meine Frage: Kann ich das Experiment bei mir auf meinem Server (Ich hab Webspace gemietet und da steht , das das Perl unterstützt) nachmachen?

Ich habe wirklich keine Anhung was der da gemacht hat, kann man das nachmachen? Wie müsste ich das dann programmieren?

Split the network

I'm starting here by splitting the network into two parts, the trusted half and the untrusted half. The trusted half has one netblock, the untrusted a different netblock. We use the DHCP server to identify mac addresses to give out the relevant addresses.
/etc/dhcpd.conf

ddns-updates off;
ddns-update-style interim;
authoritative;

shared-network local {

subnet *.*.*.* netmask 255.255.255.0 {
range *.*.*.* *.*.*.*;
option routers *.*.*.*;
option subnet-mask 255.255.255.0;
option domain-name "XXXXX";
option domain-name-servers *.*.*.*;
deny unknown-clients;

host trusted1 {
hardware ethernet *:*:*:*:*:*;
fixed-address *.*.*.*;
}
}

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1;
allow unknown-clients;

}
}

IPtables is Fun!

Suddenly everything is kittens! It's kitten net.

/sbin/iptables -A PREROUTING -s 192.168.0.0/255.255.255.0 -p tcp -j DNAT --to-destination 64.111.96.38

For the uninitiated, this redirects all traffic to kittenwar.

For more fun, we set iptables to forward everything to a transparent squid proxy running on port 80 on the machine.

/sbin/iptables -A PREROUTING -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1

That machine runs squid with a trivial redirector that downloads images, uses mogrify to turn them upside down and serves them out of it's local webserver.
The redirection script

#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
while (<>) {
chomp $_;
if ($_ =~ /(.*\.jpg)/i) {
$url = $1;
system("/usr/bin/wget", "-q", "-O","/space/WebPages/images/$pid-$count.jpg", "$url");
system("/usr/bin/mogrify", "-flip","/space/WebPages/images/$pid-$count.jpg");
print "http://127.0.0.1/images/$pid-$count.jpg\n";
}
elsif ($_ =~ /(.*\.gif)/i) {
$url = $1;
system("/usr/bin/wget", "-q", "-O","/space/WebPages/images/$pid-$count.gif", "$url");
system("/usr/bin/mogrify", "-flip","/space/WebPages/images/$pid-$count.gif");
print "http://127.0.0.1/images/$pid-$count.gif\n";

}
else {
print "$_\n";;
}
$count++;
}

Then the internet looks like this!

Link:

http://www.ex-parrot.com/%7Epete/upside-down-ternet.html

Ist English, müsste aber kein Problem sein, oder??

Vielen dank für alle antworten

Datum: 25.09.2007-17:35

Beitragre: Versuch nachmachen | Ist das überhaupt möglich?
Seitenanfang
Neben Perl wird noch ein DHCP-Server (dhcpd), Paketfilter (iptables), ImageMagick (mogrify), wget und ein Webserver verwendet.

Die gesamte Operation laesst sich in 3 Teile unterteilen.

--==[ Teil I - Trennung in vertraute und nicht-vertraute Rechner

Der DHCP-Server vergibt IP-Adressen aus zwei verschiedenen Adressbloecken, fuer unbekannte Rechner wird eine IP-Adresse aus dem Bereich 192.168.0.2 - 192.168.0.10 vergeben.
Bekannten/vertrauten Rechnern werden Adressen aus einen anderen Bereich fest zugeteilt, das koennten zum Beispiel Adressen von 10.0.0.1 bis 10.0.0.254 sein.

--==[ Teil II - Umleiten der Anfragen von nicht-vertrauten Rechnern

Mittels Paketfilter und NAT werden alle HTTP-Anfragen (Port 80) der Rechner denen man nicht vertraut, die somit eine IP-Adresse aus dem Bereich 192.168.0.2 - 192.168.0.10 haben, auf den Rechner mit der IP-Adresse 192.168.0.1 umgelenkt. Auf ihn laeuft ein Squid-Proxyserver der auf Port 80 lauscht und die HTTP-Anfragen entgegen nimmt.

--==[ Teil III - Manipulation der Antworten fuer nicht-vertraute Rechner

Squid ruft fuer die Anfragen ein Redirector-Programm auf ([1]), das Perl-Script von oben, das liefert je nach Anfrage eine entsprechende, eventuell andere, URL. Wird nach einer Jpeg- oder Gif-Dateien gefragt, holt das Script die Datei mit dem Kommandozeilenprogramm wget, veraendert sie mit Bildtransformations-Werkzeugen wie mogrify, speichert das Ergebnis in ein Verzeichnis auf das der Webserver zugriff hat und liefert Squid die URL des neu generierten Bildes.

--[[ Fazit

Der letzte Teil, also das Holen und die Manipulation des Bildes laesst sich allein mit Perl erledigen. Dabei koennen die Systemaufrufe von 'wget' und 'mogrify' wegfallen, holen lassen sich die Dateien mit den Modulen LWP::Simple oder LWP::UserAgent und manipulieren lassen sie sich mit dem Modulen PerlMagick oder GD, je nachdem was auf dem Webhost zur Verfuegung steht.

Fuer die ersten zwei Teile ist es notwendig, dass ein DHCP-Server, ein Paketfilter mit DNAT-Funktion und ein Proxyserver wie Squid zur Verfuegung steht um das >Experiment< exakt nachzubauen.

--==[ Kommentar

Das ganze Prozedere laesst sich ein wenig kompakter gestalten.
I. Statt eines Squid-Proxies und eines Redirector-Scripts laesst sich zum Beispiel Apache mit mod_perl verwenden, HTTP-Anfragen werden direkt von mod_perl verarbeitet, die manipulierten Bildern koennen direkt ausgegeben werden (keine Weiterleitung/Umleitung auf andere URL).
II. Da der DHCP-Server an Hand der MAC-Adresse IP-Adressen fuer die >guten< Rechner vergibt, kann der DHCP-Server wegfallen, man stellt den vertrauten Rechner manuell eine feste IP-Adresse ein und erstellt iptables-Regeln die nach MAC-Adresse und nicht IP-Adresse filtern.
III. Externe Befehlsaufrufe durch system() koennen durch Funktionen von Perl-Modulen ersetzt werden, das spart Ressourcen und duerfte wesentlich schneller sein.

Hier kann wirklich nur von einem Spasz-Projekt die Rede sein, an Sicherheit bringt es ueberhaupt nichts. Jeglicher Datenverkehr der keine Anfrage an Port 80 ist, stroemt unveraendert durch, so benoetigt man nur einen offenen Proxy einstellen der auf einen anderen Port als Port 80 laeuft, beziehungsweise, noch viel einfacher, man snifft mit und erhaelt die korrekte MAC-Adresse und traegt die bei sich im System ein.

[1] SquidFAQ - Squid Redirectors
http://wiki.squid-cache.org/SquidFaq/SquidRedirectors

Datum: 25.09.2007-19:59

Beitragre: Versuch nachmachen | Ist das überhaupt möglich?
Seitenanfang
Vielen Dank für die lange und ausführliche Antwort!

Bei dieser Antwort habe sogar ich (als nicht-perl-programmmierer) alles super Verstanden. Vielen Dank.

Also ich werd das vielleicht mal nur mit dem perl-scribt und dem webserver ausprobieren.
Ist in der Tat eher ein Spaß-Projekt, um andere zu ärgern ;-)

Datum: 27.09.2007-23:34

-






-
-