SMTP 枚举 python

SMTP enum python

我正在 metasploitable 上测试 smtp 枚举,但我没有让它工作。
我使用的代码是:

import socket
import sys


ip = '192.168.1.137'
port = 25
users = ['msfadmin'] # Se deberia hacer leyendo de un fichero los usuarios

try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(5)

    connect = s.connect((ip, port))
    banner = s.recv(1024)

    for user in users:
        if '220' in str(banner):
            s.send(('VRFY ' + user).encode())
            print(ip, s.recv(1024))
    s.close()

except socket.timeout as st:
    print('Timeout:', ip)
except socket.error as sr:
    print('Connection error', sr)

Nmap扫描

Nmap scan report for 192.168.1.137
Host is up (0.00073s latency).

PORT   STATE SERVICE
25/tcp open  smtp

在线打印(ip, s.recv(1024)) 总是给我超时。

        s.send(('VRFY ' + user).encode())
        print(ip, s.recv(1024))

您正在发送 VRFY user。但是你应该发送 VRFY user\r\n 因为命令必须以 CR+LF 结尾。服务器将只等待您未发送的其余命令(缺少的 CRLF)。因此,服务器和客户端都等待对方发送数据。

有关更多信息,请参阅 SMTP standard 因为这就是标准的用途。