我正在尝试创建一个bash脚本来模拟对我们的邮件服务器的邮件攻击。出于这个原因,我想创建一个bash脚本来向我们的服务器发送数百封邮件,但是当我启动命令时:
$telnet 192.168.12.1 25
< - 其中192.168.12.1是我们服务器的IP
telnet会话启动以及我后面写的所有命令都没有执行。 我还尝试创建第二个脚本,以便在创建此命令之后在telnet会话上启动命令,但是当我从第二个脚本写入时:
$echo -ne "EHLO domain.com\r\f"
它打印命令但不执行ENTER,因此不执行命令。
有什么想法吗?
答案 0 :(得分:2)
你应该管道stdin脚本
telnet 192.168.12.1 25< filenamewithcommands.txt
这将打开文件中所有字符的telnet命令和管道,包括返回
答案 1 :(得分:2)
试试
echo -ne" EHLO domain.com \ r \ n"
或
echo -e" EHLO domain.com \ r"
或者只是尝试一下这里的内容:http://mailtestingtools.blogspot.hu/(英文版)
答案 2 :(得分:2)
SMTP的结尾是\r\n
,而不是\r\f
,但我不认为这是你的问题。当你做这样的事情时:
telnet mailhost 25 < commands.txt
文本文件中的数据将立即发送到邮件服务器,然后关闭连接,这将阻止看到邮件服务器的响应。你可能会发现:
{ cat commands.txt; sleep 1; } | telnet mailhost.25
可让您查看回复。 (我同意nc
(netcat)比telnet
更适合此类工作的评论。
这可能不是测试邮件炸弹的最佳方式,但它可能会让你开始。
注意:ESMTP(即以EHLO
而不是HELO
开头的会话)可能会使用&#34;流水线&#34;如果服务器通过向250-PIPELINING
回复EHLO
来表明它会接受,但您仍然需要等待服务器回复250 OK
DATA
。有关详细信息,请参阅RFC 2920。
答案 3 :(得分:0)
以上都没有奏效。我找到了解决方案。我用了expect命令。这是我在终端上写的4封邮件:
for i in {1..4}
do
expect ./telnet.exp 192.168.12.1 abc@hotmail.com vmail@ho.tld
done
命令&#34;期待&#34;阅读文件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!
感谢所有人