Schreiben Sie das kürzeste Programm, das versucht, eine Verbindung zu offenen Ports auf einem Remotecomputer herzustellen, und prüfen Sie, ob diese geöffnet sind. (Es heißt Port Scanner )
Nehmen Sie Eingaben von Befehlszeilenargumenten entgegen.
your-port-scanner host_ip startPort endPort
Angenommen, startPort <endPort (und endPort - startPort < 1000
)
Ausgabe: Alle offenen Ports zwischen diesem Bereich sollten durch Leerzeichen oder Komma getrennt sein.
Antworten:
sh / netcat, 39
Netcat führt das Scannen durch und gibt bei Standardfehlern Ergebnisse in dieser Form zurück:
cut
undxargs
extrahieren Sie die Portnummer und machen Sie eine einzelne Zeile daraus.Erinnern Sie mich daran, SMTP auf diesem Knoten herunterzufahren.
quelle
Perl, 92
Perl 5.10 oder höher ausführen mit
perl -E 'code here'
.Uses Regexes zu komprimieren , dass lange
IO::Socket::INET
, danneval
; endgültige Formatierung mit Array-Interpolation.Auf Anfrage eine ausführlichere Erklärung. Lassen Sie uns zum ersten Mal eine Pause einlegen:
Die Zeile vor dem
eval
ersetzt alle (zwei) Vorkommen von 'I' durch 'IO :: Socket :: INET'. Dies ist ein Standard-Perl-Golftrick, um die Auswirkungen unvermeidbarer langer Kennungen zu verringern. Wenn Sie einige der Provisorien benennen, entspricht der Code dem folgenden:Kurz gesagt: Lesen Sie die Argumente für den Host- und Portbereich über die Befehlszeile. versuche nacheinander eine Verbindung zu allen herzustellen (
IO::Socket::INET->new()
); eine Liste derjenigen führen, die erfolgreich waren (grep
); zeige das Ergebnis schön an (say
).quelle
sh / nmap / GNU grep / xargs - 36
Folgt den Eingabe- und Ausgabespezifikationen:
quelle
nmap
als gültige Antwort gilt, aber es ist definitiv nichtsh
:)your-port-scanner host_ip startPort endPort
Schnittstelle, die nmap aufruft ;-)nmap
mit Linux gebündelt? : - \ Ich wusste nicht, dass ... :(Rubin - 85
quelle
BASH - 105
In reinem BASH (dh ohne nmap oder netcat).
Bei Verwendung mit einer anderen Adresse als localhost ist das Zeitlimit ziemlich lang (in der Größenordnung von Minuten), wenn ein geschlossener Port auftritt, sodass aller Wahrscheinlichkeit nach eine Art Zeitlimit- / Alarmfunktion erforderlich ist.
quelle
PHP - 70
quelle
$p++
in anderen Erwähnungen von drücken$p
, wird einPerl, 178
Ich bin neu bei Perl, jeder Rat zur Verkürzung ist willkommen!
quelle