2014-06-06 79 views
0

我正在尝试创建一个bash脚本来模拟对我们的邮件服务器的邮件攻击。出于这个原因,我想创建一个bash脚本来发送邮件的几百到我们的服务器,但是当我启动命令:从bash脚本发送“ENTER”

$telnet 192.168.12.1 25 < - 其中192.168.12.1是我们的服务器

的远程登录的IP会话启动和我以后编写的所有命令都不会执行。 我也试图创建第二个脚本,之后在telnet会话启动命令这是一个已经创建,但是当我从第二个脚本写:

$echo -ne "EHLO domain.com\r\f" 它打印命令,但不做ENTER所以不采取命令。 有什么想法?

+2

保存自己的一些悲伤和使用'ñ c'而不是'telnet'。 –

回答

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)如果服务器表示它将接受通过响应250-PIPELININGEHLO可以使用“流水线”,但你仍有望等待服务器响应250 OKDATA。详情请参阅RFC 2920

+0

是的,也是这种方法的作品,谢谢 –

2

你应该管的标准输入脚本

的telnet 192.168.12.1 25 < filenamewithcommands.txt

这将在所有字符打开telnet命令和管道从文件,包括退货

+0

我试图在文件“command.txt”字符串 写'EHLO domain.com' 但是,这是输出: '尝试192.168.12.1 ... 连接到192.168.12.1。 转义字符是'^]'。 由外国主机关闭的连接。' 所以不起作用 –

+0

你在最后加了一个空行吗?也设置文件格式为DOS以获得CR + LF换行符结尾 –

+0

由外部主机关闭的连接 - 可能已关闭连接,因为它会检查您的ehlo域已解析为您的IP - 通常以550关闭,但我不知道您使用哪个服务器“继续。还有一件事:当你远程登录邮件服务器时,你应该立即得到一个220响应,而你不会。看起来问题是不通过脚本传递到telnet命令 –

1

尝试出

回波-ne “EHLO domain.com \ r \ n” 个

回声-e “EHLO domain.com \ R”

或者干脆从这里尝试的东西:http://mailtestingtools.blogspot.hu/(这是英文)

0

以上都不奏效。我找到了解决方案。我使用了expect命令。这就是我写我的终端上发送邮件4:

for i in {1..4} do expect ./telnet.exp 192.168.12.1 [email protected] [email protected] done

命令“期望”读取该文件telnet.exp的命令,用ip 192.168.12.1服务器联系,并发送电子邮件从[email protected][email protected]

内容的文件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! 

感谢大家