Ich muss eine große Anzahl von Tests in Telnet durchführen. Ich arbeite an einigen Möglichkeiten zur automatischen Erkennung von Wörterbuchangriffen auf unseren E-Mail-Server, um sie dann zu drosseln oder auf eine schwarze Liste zu setzen usw.
Ich bin jetzt bereit, einige Tests durchzuführen und zu sehen, ob sich meine Arbeit auszahlt. Ich dachte, ich würde einfach ein Skript kiddy app herunterladen, um die Tests auszuführen. Ich kann keine finden und diejenigen, die ich kann, sind schlecht oder binär und nicht konfigurierbar.
Ich werde eine Liste von Adressen haben, die ich in einer Schleife generiere.
Ich möchte $address als Argument nehmen und dies tun:
telnet mein-server.de 25 helo some-string.com Mail von: me@me.com rcpt an: $Adresse quit
In diesem Zusammenhang muss ich einige Dinge testen, z. B. möchte ich, dass das Skript fehlschlägt, wenn ich Greylisting aktiviere, da dies meine erste Gegenmaßnahme ist. Ich nehme an, in diesem Fall würde ich einfach telnet timeout haben?
-
helo
sollte eine Zeichenkette zurückgeben, die mit 220 beginnt, das ist ungefähr so genau, wie ich für diesen Test brauche. -
mail from
sollte 250 zurückgeben, oder die Suche nach OK würde ausreichen -
rctp to
sollte manchmal 250 oder Ok zurückgeben, wenn ich einen gültigen Benutzer sende, aber die meiste Zeit werde ich eine falsche Adresse senden, also suche ich nach dem Fehlen von 250 oder OK. -
Schließlich werde ich eine
quit
.
Ich bin nicht in der Lage, Bedingungen und Protokollierung in einer interaktiven Situation zu erreichen. Ich habe mir angesehen expect
konnte es aber nicht zum Laufen bringen.
Mein bisheriger Code:
echo -e "helo foo\nmail from: foo.... | telnet example.com 25 | grep -i blah
Dies hat nicht wie erwartet funktioniert.
Was kann ich tun, um mein Ziel zu erreichen?