#!/usr/bin/python3 import socket import sys if len(sys.argv) != 4: print ("Usage: " + sys.argv[0] + " ") sys.exit(0) with open(sys.argv[2]) as f: users = f.readlines() # only unique user names used=set() totest=list() i=0 while i <= len(users) and len(used) < int(sys.argv[3]): i += 1 # we will do case-insesitive search enumeration name = users[i].strip().lower() if name in used or len(name) == 0: continue else: totest.append(name) used.add(name) s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) # for the servers which do not reply to HELO/EHLO message s.settimeout(4) connect=s.connect((sys.argv[1],25)) banner=s.recv(1024) print("Banner:") print(banner.decode("ASCII")) s.send(("EHLO acme.local\r\n").encode("ASCII")) try: reply=s.recv(1024) print("Replying to HELO:") print(reply.decode("ASCII")) except: print("Timed out") # enumeration for n in totest: s.send(('VRFY ' + n + '\r\n').encode("ASCII")) result=s.recv(1024).decode("ASCII").strip() # output in a grep-friendly format print(sys.argv[1] + " " + n + " " + result) sys.stdout.flush() s.close()