X-Git-Url: https://git.ao2.it/crackpop.git/blobdiff_plain/b903e6e0bbbe97d0b77b58c705fbed95e97704a9..refs/heads/master:/crackpop.py?ds=sidebyside diff --git a/crackpop.py b/crackpop.py index 850b13f..d44ed28 100755 --- a/crackpop.py +++ b/crackpop.py @@ -26,26 +26,31 @@ __version = "0.1" __author_info = "Antonio Ospite" +# returns a tuple: (num_passwords, passwords) +# where passwords is an iterable type def generate_passwords(password_pattern, dry_run=False): - passwords = list(exrex.generate(password_pattern)) + num_passwords = exrex.count(password_pattern) + passwords = exrex.generate(password_pattern) if dry_run: - print "Generated %d passwords." % len(passwords) + print "Generated %d passwords." % num_passwords for p in passwords: print p - return [] + return (0, iter([])) - return passwords + return (num_passwords, passwords) +# the passwords parameter is a tuple: (n, L) +# where L is an iterable type and n is the number of elements in L def crackpop(host, port, ssl, user, passwords): if ssl: pop3_connect = poplib.POP3_SSL else: pop3_connect = poplib.POP3 - print "Testing %d passwords." % len(passwords) - for p in passwords: + print "Testing %d passwords." % passwords[0] + for p in passwords[1]: # TODO maybe the same connection can be reused for more than one try, # but some logic needs to be added to detect the maximum allowed # authentication attempts or a disconnection from the server. @@ -79,7 +84,7 @@ def option_parser(): parser.add_argument( '-P', '--port', metavar="", - dest='port', default=110, + dest='port', default=None, help='the port the pop3 server is listening on') parser.add_argument( @@ -102,11 +107,6 @@ def option_parser(): dest='ssl', action='store_const', const=True, help='use SSL to connect to the pop3 server') - parser.add_argument( - '-S', '--ssl-port', metavar="", - dest='ssl_port', default=995, - help='the port the SSL pop3 server is listening on') - return parser @@ -114,8 +114,11 @@ if __name__ == "__main__": parser = option_parser() args = parser.parse_args() - if args.ssl: - port = args.ssl_port + if args.port is None: + if args.ssl: + port = poplib.POP3_SSL_PORT + else: + port = poplib.POP3_PORT else: port = args.port