簡體   English   中英

從bash腳本發送“ ENTER”

[英]Send the “ENTER” from a bash script

我正在嘗試創建一個bash腳本來模擬對我們郵件服務器的郵件攻擊。 因此,我想創建一個bash腳本以將數百封郵件發送到我們的服務器,但是當我啟動命令時:

$telnet 192.168.12.1 25 <-其中192.168.12.1是我們服務器的IP

telnet會話開始,以后我寫的所有命令都沒有執行。 創建此腳本后,我還嘗試創建第二個腳本以在telnet會話上啟動命令,但是當我從第二個腳本編寫時:

$echo -ne "EHLO domain.com\\r\\f"它打印命令,但不執行ENTER鍵,因此不接受命令。 任何想法?

你應該用管道輸送標准輸入腳本

telnet 192.168.12.1 25 <filenamewithcommands.txt

這將打開telnet命令並輸入文件中的所有字符,包括返回

試用

echo -ne“ EHLO domain.com \\ r \\ n”

要么

echo -e“ EHLO domain.com \\ r”

或只是嘗試從此處嘗試以下內容: http : //mailtestingtools.blogspot.hu/ (英語)

SMTP的行尾是\\r\\n ,而不是\\r\\f ,但是我認為這不是您的問題。 當您執行以下操作時:

telnet mailhost 25 < commands.txt

文本文件中的數據將立即發送到郵件服務器,然后連接將關閉,這將防止看到郵件服務器的響應。 您可能會發現:

{ cat commands.txt; sleep 1; } | telnet mailhost.25

讓您查看響應。 (我同意nc (netcat)比telnet更好的工具用於這種類型的工作)。

那可能不是測試郵件炸彈的最佳方法,但是它可能會讓您入門。


注意:如果服務器指示通過對EHLO響應250-PIPELINING來接受它,則ESMTP(即,以EHLO而不是HELO開頭的會話)可以使用“流水線”,但是仍然希望您等待服務器執行以下操作:對DATA響應250 OK 有關詳細信息,請參見RFC 2920

以上都不起作用。 我找到了解決方案。 我用了Expect命令。 這是我在終端上寫的以發送4封郵件的內容:

for i in {1..4} do expect ./telnet.exp 192.168.12.1 abc@hotmail.com vmail@ho.tld done

命令“期望”讀取文件telnet.exp中的命令,使用IP 192.168.12.1與服務器聯系,並將電子郵件從abc@hotmail.com發送到vmail@gmail.com

文件telnet.exp的內容:

#! /usr/bin/expect

set timeout 20
set server [lindex $argv 0]
set sndr_mail [lindex $argv 1]
set rcpt_mail [lindex $argv 2]
set ts [timestamp -format "%Y-%m-%d %H:%M:%S"]

spawn telnet $server 25

expect "Connected to "
expect "220 "
send "HELO galaxy\n"
expect "250 "
send "MAIL FROM:<$sndr_mail>\n"
expect "250 "
send "RCPT TO:<$rcpt_mail>\n"
expect "250 "
send "DATA\n"
expect "354 "
send "From:$sndr_mail\n"
send "To:$rcpt_mail\n"
send "Subject:Testing $server\n\n"
send "Testing: $server\n"
send "Timestamp: $ts\n"
send ".\n"
expect "250 "
send "quit\n"
expect "221 "

# TIAF!

謝謝大家

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM