Techniken der Programmierung in Perl: Writing Checker accsess log
Techniken der Programmierung in Perl: Writing Checker accsess Protokoll.(Von Rel4nium | ngh.void.ru)
In diesem Artikel möchte ich Sie über die Grundlagen der Programmierung in Perl auf einem konkreten Beispiel zu erzählen.
Das erste, was Sie brauchen, ist ein Dolmetscher perla.V linuksopodobnyh Systeme, hat es
deflot auf, aber wenn Sie auf unter Programme entscheiden * gewinnen, dann werden Sie brauchen: ActivePerl.Skachivay,
Sets, Probleme entstehen nicht dolzhno.Ne wird rassusolivat lang, und uns an die Arbeit,
Lassen Sie uns beginnen.
Skript Zweck - Server Erfassen der Anwesenheit von Muscheln in einem Web-Systemleistung
Teams durch die anfälligen Skripten.
Sobald wir mit dem Zweck des Skripts kam, um herauszufinden, was er in der Lage sein sollte,
machen den Algorithmus zu arbeiten.
Fähigkeiten:
- Mit den Dateien zu umgehen, öffnen / schließen / lesen / schreiben
- Um die notwendigen Informationen berücksichtigen müssen Sie die Auswahlregeln zu organisieren
- Suche nach der richtigen Datei
- Speichern Sie die Suchergebnisse in einer Protokolldatei
Algorithmus:
1) benötigen Sie den Server-Log-Datei zu öffnen
2) zu sammeln, die Suchbasis auf den gewünschten Dateinamen, Befehle, Anfragen
3) eingeben es in der Anordnung
4) eine große Anordnung von Namen von Skripts, und andere, in einer anderen Anordnung zu bringen,
5) zu organisieren, um die vollständige Palette von Such
6) Ein Suchergebnis wird angezeigt
7) Geben Sie ein Suchergebnis in Datei
Starten Sie jetzt das Script-Code zu schreiben, die sich aus den oben genannten Elemente.
#! / Usr / local / bin / perl
^^^^^^^^^^^^^^^^^^^^^
Die erste Zeile im Skript, teilt es dem Interpreter, dass diese Perl-App.
# Chequer Apache-Logs
^^^^^^^^^^^^^^^^^^^
Grillsymbol wird verwendet, in den Körper eines Skriptkommentars einfügen
print "\ n";
^^^^^^^^^^^
Zweck dieses Befehls keine Informationen über den Bildschirm zu bringen, oder zeigen Sie es in
fayl.V diesem Fall wird dieser Befehl verwendet wurde einfach weggelassen
Linie, das heißt \ n für Zeilenumbrüche verwendet.
drucken "[Log prüfen für Apache \ t";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Zeigen Sie den Ausdruck [Log prüfen für Apache, nachdem der Satz, den wir Registerkarten (dh wie
Verwenden Sie Tab-Taste) Beachten Sie die Syntax der das Schreiben von Code, nach dem Druckbefehl
wir sind doppelte Anführungszeichen, und in ihnen wir vorschreiben, was wir auf den Bildschirm zu bringen müssen,
und ein Feldcode Band wird verwendet zapyatoy.Esli nicht einige dieser Elemente zu zeigen,
Perl-Interpreter mögen es nicht, und es wird nur dann einen Fehler ausspucken.
Der Fehler kann in folgender Form vorliegen:
Syntaxfehler bei /patch/to/script.pl Linie 9, in der Nähe von "print"
Ausfürung von /patch/to/script.pl wegen Übersetzungsfehlern abgebrochen.
Aufgrund dieses Fehlers, können wir folgendes verstehen:
Fehler in der Syntax, in Linie 9 in der Druckfunktion wurde das Skript wegen Übersetzungsfehlern unterbrochen.
Dh Dolmetscher sagt uns, dass er nicht mag, können wir nur beheben einen Fehler in
9 Linie.
print "(C) Next Generation Hacker-Gruppe> durch rel4nium codiert]";
print ">>> Vielen Dank an Cr4sh und Gotius \ n \ n";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Auf typische Bündel von Code habe ich erwähnt oben.
$ File = "access.log"; # Log-Datei
^^^^^^^^^^^^^^^^^^^^^
Betrachten wir nun den Code ein bisschen komplizierter ist. In diesem Zusammenhang wird die Variable $ file, weisen ich einen Wert
access.log (auf Ich werde nicht mit dem Dateinamen, in diesem Fall die ACCESS.LOG arbeiten und variable
$ File, die erheblich die Benutzerfreundlichkeit des Codes verbessert)
###########################
# Web Schalen:
@search [0] = "nstview"; @search [1] = "remview"; @search [2] = "r57shell";
@search [3] = "nghshell"; @search [4] = "c99shell"; @search [5] = "dump_price";
@search [6] = "phpMyAdmin"; @search [7] = "bd.pl"; @search [8] = "KA_uShell";
@search [9] = "phpshell"; @search [10] = "r57pws"; @search [11] = "WebShell";
@search [12] = "shell"; @search [13] = "cmd ="; @search [31] = "telnet.cgi";
Team #:
@search [14] = "ls -al"; @search [15] = "wget"; @search [16] = "curl";
@search [17] = "uname";
# Shell-Anfragen:
@search [19] = "ac = shell"; @search [20] = "work_dir = /"; @search [21] = "tmp";
@search [22] = "img = 1"; @search [23] = "img = 2"; @search [24] = "d =";
@search [25] = "& ef ="; @search [26] = "& shell = 1"; @search [27] = "c = l & d =";
@search [28] = "c = d & d ="; @search [29] = "PHP & var ="; @search [30] = "c = v & d =";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In diesem Code-Schnipsel, verwende ich ein Array @search Variable von [0] bis [30] in einem Array .T.e
Ich bringe 30 Stück, in meinem Fall 30 slov.OBYaZATELNO variable Nummerierung muss
Es beginnt mit 0.
############################
open (FILE, "$ file") || sterben "Apache-Log-Datei nicht gefunden \ n"; # Fehler? Überprüfen Sie den angegebenen Pfad in die Protokolldatei, Apache
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^
Ich öffne die Datei (Sie erinnern sich am Anfang Ich sprach über die Variable $ file gleich, Schlucht access.log Datei hier
Nun, das ist, was wir brauchten, wie Sie sehen können, ich passen nicht in den Dateinamen, und verwenden Sie die Variable).
Datei öffnen Design ist einfach: open (FILE, "$ file")
öffnen - einen Befehl zum Öffnen der Datei
FILE - Datei-Handle (der Griff wieder der Einfachheit halber verwendet wird, das heißt in der Zukunft können wir nicht arbeiten mit
die Variable $ file, und verwenden Sie den Griff einfach) .Opyat auch auf die Rechtschreibregeln des Bandes zahlen
koda.A || sterben "Apache-Log-Datei nicht gefunden \ n"; wird verwendet, um einen Fehler, wenn die Datei ableiten
Nicht gefunden.
while (
^^^^^^^^^^^^^^
Führen Sie den Griff FILE Schleife während (dh am Anfang wurde access.log -> $ file -> FILE) .Tsikl - es
wiederkehrende Transaktionen. In unserem Fall haben wir hingen nur access.log Datei bis zu finden
es stammt slova.T.e Schleife ausgeführt wird, bis alle der Wörter (von @search array) nicht gefunden werden,
{Wenn (/ (@ search [0] | @search [1] | @search [2] | @search [3] | @search [4] | @search [5] | @search [6] | @search [ 7] | @search [8]
| @search [9] | @search [10] | @search [11] | @search [12] | @search [13] | @search [14] | @search [5] | @search [16] | @ Suche
[17] | @search [19] | @search [20] | @search [21] | @search [22] | @search [23] | @search [24] | @search [25] | @search [25 ] |
@search [26] | @search [27] | @search [28] | @search [29] | @search [30] | @search [31]) / i) {Push @Matches, $ _;}}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
Verwenden Sie dann eine logische Operation, wenn (if), der Gefangene in {} skobki.Sdes und die Lookup-Prozess
Array-Variablen @ search.T.e Zustand geht wie folgt: wenn einige der Variablen Array @search
gefunden wird, wird es in einem anderen Array von benannten @Matches gespeichert.
das Ergebnis ist ein Array von 1 @Matches mit variabler ACCESS.LOG gefunden Array @search diejenigen, die in der Datei.
Druck @Matches;
^^^^^^^^^^^^^^^
Wir leiten den Inhalt des Arrays auf den Bildschirm @Matches
print "Die Arbeit ist \ n fertig!";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Anzeige eine Arbeit ist fertig!
offen (LogFile, '>> logfile.txt');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Anlegen und Öffnen von logfile.txt Datei (mit dem einrichten Dateinamen >>, diese Klammern
dass die Notwendigkeit, eine Datei zum Schreiben und öffnen Sie sie) .tut zuweisen auch Griff LogFile zu erstellen
Druck Logfile "IP-Adresse \ t Zeit \ t \ t \ t \ t Skripts \ n";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
eine offene Protokolldatei (dh direkt in logfile.txt Datei) schreiben
Druck LogFile @Matches;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
Sind in der Protokolldatei bei der Array-@Matches gedruckt, dh die gefundenen Abfrage / Name @search Array.
Druck Logfile "Die Arbeit ist \ n fertig!";
^^^^^^^^^^^^^^^^^^^^^^^^
Das Schreiben in die Protokolldatei, die die Arbeit beendet ist
Datei schließen;
^^^^^^^^^^^^^^^^^^^^^^^^
schließen Sie die Log-Datei (mit dem er läuft das Skript)
schließen LogFile;
^^^^^^^^^^^^^^^^^^^^^^^^
Schließen Sie die Protokolldatei
EOF
^^^^^^^^^
Ende der Programmlinie
Jetzt ist das Skript betriebsbereit ist, und wird für die Bedürfnisse des Systemadministrator nützlich sein))
Ich denke, mit Hilfe meiner Artikel, die Sie in der Syntax ein wenig verstanden sind, werden die grundlegenden Funktionen von Perl,
und jetzt kann es studierte weiter und tiefer Juwel werden.
> Ich rate Ihnen zu lesen:
Clinton Pierce Sams Teach Yourself Perl innerhalb von 24 Stunden
Perl-Sprachspezifikation
> URL:
www.wmate.ru
www.codenet.ru
ps die in diesem Artikel beschriebenen Skript herunterladen ngh.void.ru/soft/d/checklog.rar sein
Kommentare
Kommentar nicht vergessen , dass der Inhalt und der Ton Ihrer Nachrichten , die Gefühle von echten Menschen verletzen können, Respekt und Toleranz gegenüber seinen Gesprächspartnern, auch wenn Sie Ihr Verhalten in Bezug auf die Meinungsfreiheit ihre Meinung nicht teilen, und die Anonymität des Internets, ändert sich nicht nur virtuell, sondern realen Welt. Alle Kommentare werden aus dem Index, Spam - Kontrolle versteckt.