Exemplo n.º 1
0
def parse_args(self):
    parser = argparse.ArgumentParser(
        prog='htpwdScan',
        formatter_class=argparse.RawTextHelpFormatter,
        description='* An HTTP weak pass scanner. By LiJieJie *',
        usage='htpwdScan.py [options]')

    target = parser.add_argument_group('Target')
    target.add_argument(
        '-u',
        metavar='REQUESTURL',
        type=str,
        help=
        'Explicitly set request URL, e.g.\n-u="https://www.test.com/login.php"'
    )
    target.add_argument('-f',
                        metavar='REQUESTFILE',
                        type=str,
                        help='Load HTTP request from file')
    target.add_argument(
        '-https',
        default=False,
        action='store_true',
        help=
        'Explicitly set -https when load request from file and \nSSL enabled')
    target.add_argument('-get',
                        default=False,
                        action='store_true',
                        help='Force method GET when -u was set. default: POST')
    target.add_argument(
        '-basic',
        metavar='',
        type=str,
        nargs='+',
        help='HTTP Basic Auth brute, \ne.g. -basic users.dic pass.dic')

    dictionary = parser.add_argument_group('Dictionary')
    dictionary.add_argument('-d', metavar='Param=DictFile', type=str, nargs='+',
                        help='Set dict file for parameters, \n' + \
                        'support hash functions like md5, md5_16, sha1. \n' + \
                        'e.g. -d user=users.dic pass=md5(pass.dic)')

    detect = parser.add_argument_group('Detect')
    detect.add_argument('-no302',
                        default=False,
                        action='store_true',
                        help='302 redirect insensitive, default: sensitive')
    detect.add_argument(
        '-err',
        metavar='ERR',
        default='',
        type=str,
        nargs='+',
        help=
        'String indicates fail in response text, \ne.g. -err "user not exist" "password wrong"'
    )
    detect.add_argument(
        '-suc',
        metavar='SUC',
        default='',
        type=str,
        nargs='+',
        help=
        'String indicates success in response text, \ne.g. -suc "welcome," "admin"'
    )
    detect.add_argument(
        '-ssuc',
        metavar='SSUC',
        default='',
        type=str,
        nargs='+',
        help='String indicates success in status code, \ne.g. -ssuc "303" "404"'
    )
    detect.add_argument('-herr',
                        metavar='HERR',
                        default='',
                        type=str,
                        help='String indicates fail in response headers')
    detect.add_argument('-hsuc',
                        metavar='HSUC',
                        default='',
                        type=str,
                        help='String indicates success in response headers')
    detect.add_argument(
        '-rtxt',
        metavar='RetryText',
        type=str,
        default='',
        help='Retry when it appears in response text, \ne.g. -rtxt="IP blocked"'
    )
    detect.add_argument(
        '-rntxt',
        metavar='RetryNoText',
        type=str,
        default='',
        help=
        'Retry when it does not appear in response text, \ne.g. -rntxt="<body>"'
    )
    detect.add_argument(
        '-rheader',
        metavar='RetryHeader',
        type=str,
        default='',
        help=
        'Retry when it appears in response headers, \ne.g. -rheader="Set-Cookie:"'
    )
    detect.add_argument(
        '-rnheader',
        metavar='RetryNoHeader',
        type=str,
        default='',
        help=
        'Retry when it didn\'t appear in response headers, \ne.g. -rheader="HTTP/1.1 200 OK"'
    )

    proxy_spoof = parser.add_argument_group('Proxy and spoof')
    proxy_spoof.add_argument(
        '-proxy',
        metavar='Server:Port',
        default='',
        type=str,
        help=
        'Set several HTTP proxies \ne.g. -proxy=127.0.0.1:8000,8.8.8.8:8000')
    proxy_spoof.add_argument(
        '-proxylist',
        metavar='ProxyListFile',
        default='',
        type=str,
        help=
        'Load HTTP proxies from file, one proxy per line, \ne.g. -proxylist=proxys.txt'
    )
    proxy_spoof.add_argument(
        '-checkproxy',
        default=False,
        action='store_true',
        help=
        'Check the usability of loaded proxy servers.\nOutput file is 001.proxy.servers.txt'
    )
    proxy_spoof.add_argument('-fip',
                             default=False,
                             action='store_true',
                             help='Spoof source IP by random X-Forwarded-For')
    proxy_spoof.add_argument(
        '-fsid',
        type=str,
        help='Use a random session ID. e.g. -fsid PHPSESSID')
    proxy_spoof.add_argument(
        '-sleep',
        metavar='SECONDS',
        type=str,
        default='',
        help=
        'Sleep some time after each request,\navoid IP blocked by web server')

    database = parser.add_argument_group('Database attack')
    database.add_argument(
        '-database',
        type=str,
        help=
        'Load leaked passwords to attack. \ne.g. -database user,pass=csdn.txt')
    database.add_argument(
        '-regex',
        type=str,
        help='Regex used to extract values. \ne.g. -regex="(\S+)\s+(\S+)"')

    general = parser.add_argument_group('General')
    general.add_argument('-t',
                         metavar='THREADS',
                         type=int,
                         default=50,
                         help='50 threads by default')
    general.add_argument(
        '-o',
        metavar='OUTPUT',
        type=str,
        default='000.Cracked.Passwords.txt',
        help='Output file. default: 000.Cracked.Passwords.txt')
    general.add_argument('-debug',
                         default=False,
                         action='store_true',
                         help='Enter debug mode to test request and response')
    general.add_argument(
        '-nov',
        default=False,
        action='store_true',
        help='Do not print verbose info, only print cracked ones')
    general.add_argument('-v', action='version', version='%(prog)s 0.0.3')

    if len(sys.argv) == 1:
        sys.argv.append('-h')
    args = parser.parse_args()

    if args.err:
        for i in range(len(args.err)):
            args.err[i] = system_decode(args.err[i])
    if args.suc:
        for i in range(len(args.suc)):
            args.suc[i] = system_decode(args.suc[i])
    if args.rtxt:
        args.rtxt = system_decode(args.rtxt)
    if args.rntxt:
        args.rntxt = system_decode(args.rntxt)

    check_args(args)
    self.args = args

    if self.args.debug:
        self.args.t = 1  # thread set to 1 in debug mode
        self.lock.acquire()
        print '*' * self.console_width
        print '[Parsed Arguments]\n'
        pprint.pprint(self.args.__dict__)
        print '\n' + '*' * self.console_width
        self.lock.release()

    self.request_thread_count = self.args.t
Exemplo n.º 2
0
def parse_args(self):
    parser = argparse.ArgumentParser(
        prog='f****e',
        formatter_class=argparse.RawTextHelpFormatter,
        description='* f****e By redrain *',
        usage='f****e.py [options]')

    target = parser.add_argument_group('Target')
    target.add_argument(
        '-u',
        metavar='REQUESTURL',
        type=str,
        help='Set URL, e.g.\n-u="https://www.hackdog.me/login.php"')
    target.add_argument('-f',
                        metavar='REQUESTFILE',
                        type=str,
                        help='Load request file')
    target.add_argument('-https',
                        default=False,
                        action='store_true',
                        help='Load request file when the SSL enable')
    target.add_argument('-get',
                        default=False,
                        action='store_true',
                        help='Set method GET. default: POST')
    target.add_argument(
        '-basic',
        metavar='',
        type=str,
        nargs='+',
        help='HTTP Basic Auth, \ne.g. -basic users.dic pass.dic')

    dictionary = parser.add_argument_group('Dictionary')
    dictionary.add_argument('-d', metavar='Param=DictFile', type=str, nargs='+',
                        help='Set dict file for parameters, \n' + \
                        'support hash functions like md5, 16_md5. \n' + \
                        'e.g. -d user=users.dic pass=md5(pass.dic)')

    proxy_spoof = parser.add_argument_group('Spoof')
    proxy_spoof.add_argument('-fip',
                             default=False,
                             action='store_true',
                             help='random XFF')
    proxy_spoof.add_argument('-fsid', type=str, help='random session')
    proxy_spoof.add_argument('-sleep',
                             metavar='SECONDS',
                             type=str,
                             default='',
                             help='delay(防止server ban请求)')

    detect = parser.add_argument_group('爆破标记(编不下去英文了。。。)')
    detect.add_argument('-no302',
                        default=False,
                        action='store_true',
                        help='忽略302条转')
    detect.add_argument('-err',
                        metavar='ERR',
                        default='',
                        type=str,
                        nargs='+',
                        help='爆破失败标记, \ne.g. -err "密码错误"')
    detect.add_argument('-suc',
                        metavar='SUC',
                        default='',
                        type=str,
                        nargs='+',
                        help='爆破成功标记, \ne.g. -suc "登录成功"')
    detect.add_argument('-herr',
                        metavar='HERR',
                        default='',
                        type=str,
                        help='http头中的失败标记')
    detect.add_argument('-hsuc',
                        metavar='HSUC',
                        default='',
                        type=str,
                        help='http头中的成功标记')

    general = parser.add_argument_group('Other')
    general.add_argument('-t',
                         metavar='THREADS',
                         type=int,
                         default=50,
                         help='Threads. default:50')
    general.add_argument('-o',
                         metavar='OUTPUT',
                         type=str,
                         default='fucku.passwd.txt',
                         help='Output file. default: fucku.passwd.txt')
    general.add_argument('-debug',
                         default=False,
                         action='store_true',
                         help='Go to debug mode to check request and response')
    general.add_argument('-nov',
                         default=False,
                         action='store_true',
                         help='quiet mode')
    general.add_argument('-v', action='version', version='%(prog)s 0.0.3')

    if len(sys.argv) == 1:
        sys.argv.append('-h')
    args = parser.parse_args()

    if args.err:
        for i in range(len(args.err)):
            args.err[i] = system_decode(args.err[i])
    if args.suc:
        for i in range(len(args.suc)):
            args.suc[i] = system_decode(args.suc[i])

    check_args(args)
    self.args = args

    if self.args.debug:
        self.args.t = 1  # thread set to 1 in debug mode
        self.lock.acquire()
        print '*' * self.console_width
        print '[Parsed Arguments]\n'
        pprint.pprint(self.args.__dict__)
        print '\n' + '*' * self.console_width
        self.lock.release()

    self.request_thread_count = self.args.t
Exemplo n.º 3
0
def parse_args(self):
    parser = argparse.ArgumentParser(prog='f****e',
                                     formatter_class=argparse.RawTextHelpFormatter,
                                     description='* f****e By redrain *',
                                     usage='f****e.py [options]')

    target = parser.add_argument_group('Target')
    target.add_argument('-u', metavar='REQUESTURL', type=str,
                        help='Set URL, e.g.\n-u="https://www.hackdog.me/login.php"')
    target.add_argument('-f', metavar='REQUESTFILE', type=str,
                        help='Load request file')
    target.add_argument('-https', default=False, action='store_true',
                        help='Load request file when the SSL enable')
    target.add_argument('-get', default=False,
                        action='store_true',
                        help='Set method GET. default: POST')    
    target.add_argument('-basic', metavar='',type=str, nargs='+',
                        help='HTTP Basic Auth, \ne.g. -basic users.dic pass.dic')

    dictionary = parser.add_argument_group('Dictionary')
    dictionary.add_argument('-d', metavar='Param=DictFile', type=str, nargs='+',
                        help='Set dict file for parameters, \n' + \
                        'support hash functions like md5, 16_md5. \n' + \
                        'e.g. -d user=users.dic pass=md5(pass.dic)')

    proxy_spoof = parser.add_argument_group('Spoof')
    proxy_spoof.add_argument('-fip', default=False, action='store_true',
                        help='random XFF')
    proxy_spoof.add_argument('-fsid', type=str,
                        help='random session')
    proxy_spoof.add_argument('-sleep', metavar='SECONDS', type=str, default='',
                        help='delay(防止server ban请求)')

    detect = parser.add_argument_group('爆破标记(编不下去英文了。。。)')
    detect.add_argument('-no302', default=False, action='store_true',
                        help='忽略302条转')
    detect.add_argument('-err', metavar='ERR', default='', type=str, nargs='+',
                        help='爆破失败标记, \ne.g. -err "密码错误"')
    detect.add_argument('-suc', metavar='SUC', default='', type=str, nargs='+',
                        help='爆破成功标记, \ne.g. -suc "登录成功"')
    detect.add_argument('-herr', metavar='HERR', default='', type=str,
                        help='http头中的失败标记')
    detect.add_argument('-hsuc', metavar='HSUC', default='', type=str,
                        help='http头中的成功标记')

    general = parser.add_argument_group('Other')
    general.add_argument('-t', metavar='THREADS', type=int, default=50,
                        help='Threads. default:50')
    general.add_argument('-o', metavar='OUTPUT', type=str, default='fucku.passwd.txt',
                        help='Output file. default: fucku.passwd.txt')
    general.add_argument('-debug', default=False, action='store_true',
                        help='Go to debug mode to check request and response')
    general.add_argument('-nov', default=False, action='store_true',
                        help='quiet mode')
    general.add_argument('-v', action='version', version='%(prog)s 0.0.3')


    if len(sys.argv) == 1:
        sys.argv.append('-h')
    args = parser.parse_args()

    if args.err:
        for i in range(len(args.err)):
            args.err[i] = system_decode(args.err[i])
    if args.suc:
        for i in range(len(args.suc)):
            args.suc[i] = system_decode(args.suc[i])

    check_args(args)
    self.args = args

    if self.args.debug:
        self.args.t = 1    # thread set to 1 in debug mode
        self.lock.acquire()
        print '*' * self.console_width
        print '[Parsed Arguments]\n'
        pprint.pprint(self.args.__dict__)
        print '\n' + '*' * self.console_width
        self.lock.release()

    self.request_thread_count = self.args.t
Exemplo n.º 4
0
def parse_args(self):
    parser = argparse.ArgumentParser(
        prog="htpwdScan",
        formatter_class=argparse.RawTextHelpFormatter,
        description="* An HTTP weak pass scanner. By LiJieJie *",
        usage="htpwdScan.py [options]",
    )

    target = parser.add_argument_group("Target")
    target.add_argument(
        "-u",
        metavar="REQUESTURL",
        type=str,
        help='Explicitly set request URL, e.g.\n-u="https://www.test.com/login.php"',
    )
    target.add_argument("-f", metavar="REQUESTFILE", type=str, help="Load HTTP request from file")
    target.add_argument(
        "-https",
        default=False,
        action="store_true",
        help="Explicitly set -https when load request from file and \nSSL enabled",
    )
    target.add_argument(
        "-get", default=False, action="store_true", help="Force method GET when -u was set. default: POST"
    )
    target.add_argument(
        "-basic", metavar="", type=str, nargs="+", help="HTTP Basic Auth brute, \ne.g. -basic users.dic pass.dic"
    )

    dictionary = parser.add_argument_group("Dictionary")
    dictionary.add_argument(
        "-d",
        metavar="Param=DictFile",
        type=str,
        nargs="+",
        help="Set dict file for parameters, \n"
        + "support hash functions like md5, md5_16, sha1. \n"
        + "e.g. -d user=users.dic pass=md5(pass.dic)",
    )

    detect = parser.add_argument_group("Detect")
    detect.add_argument(
        "-no302", default=False, action="store_true", help="302 redirect insensitive, default: sensitive"
    )
    detect.add_argument(
        "-err",
        metavar="ERR",
        default="",
        type=str,
        nargs="+",
        help='String indicates fail in response text, \ne.g. -err "user not exist" "password wrong"',
    )
    detect.add_argument(
        "-suc",
        metavar="SUC",
        default="",
        type=str,
        nargs="+",
        help='String indicates success in response text, \ne.g. -suc "welcome," "admin"',
    )
    detect.add_argument("-herr", metavar="HERR", default="", type=str, help="String indicates fail in response headers")
    detect.add_argument(
        "-hsuc", metavar="HSUC", default="", type=str, help="String indicates success in response headers"
    )
    detect.add_argument(
        "-rtxt",
        metavar="RetryText",
        type=str,
        default="",
        help='Retry when it appears in response text, \ne.g. -rtxt="IP blocked"',
    )
    detect.add_argument(
        "-rntxt",
        metavar="RetryNoText",
        type=str,
        default="",
        help='Retry when it does not appear in response text, \ne.g. -rntxt="<body>"',
    )
    detect.add_argument(
        "-rheader",
        metavar="RetryHeader",
        type=str,
        default="",
        help='Retry when it appears in response headers, \ne.g. -rheader="Set-Cookie:"',
    )
    detect.add_argument(
        "-rnheader",
        metavar="RetryNoHeader",
        type=str,
        default="",
        help='Retry when it didn\'t appear in response headers, \ne.g. -rheader="HTTP/1.1 200 OK"',
    )

    proxy_spoof = parser.add_argument_group("Proxy and spoof")
    proxy_spoof.add_argument(
        "-proxy",
        metavar="Server:Port",
        default="",
        type=str,
        help="Set several HTTP proxies \ne.g. -proxy=127.0.0.1:8000,8.8.8.8:8000",
    )
    proxy_spoof.add_argument(
        "-proxylist",
        metavar="ProxyListFile",
        default="",
        type=str,
        help="Load HTTP proxies from file, one proxy per line, \ne.g. -proxylist=proxys.txt",
    )
    proxy_spoof.add_argument(
        "-checkproxy",
        default=False,
        action="store_true",
        help="Check the usability of loaded proxy servers.\nOutput file is 001.proxy.servers.txt",
    )
    proxy_spoof.add_argument(
        "-fip", default=False, action="store_true", help="Spoof source IP by random X-Forwarded-For"
    )
    proxy_spoof.add_argument("-fsid", type=str, help="Use a random session ID. e.g. -fsid PHPSESSID")
    proxy_spoof.add_argument(
        "-sleep",
        metavar="SECONDS",
        type=str,
        default="",
        help="Sleep some time after each request,\navoid IP blocked by web server",
    )

    database = parser.add_argument_group("Database attack")
    database.add_argument(
        "-database", type=str, help="Load leaked passwords to attack. \ne.g. -database user,pass=csdn.txt"
    )
    database.add_argument("-regex", type=str, help='Regex used to extract values. \ne.g. -regex="(\S+)\s+(\S+)"')

    general = parser.add_argument_group("General")
    general.add_argument("-t", metavar="THREADS", type=int, default=50, help="50 threads by default")
    general.add_argument(
        "-o",
        metavar="OUTPUT",
        type=str,
        default="000.Cracked.Passwords.txt",
        help="Output file. default: 000.Cracked.Passwords.txt",
    )
    general.add_argument(
        "-debug", default=False, action="store_true", help="Enter debug mode to test request and response"
    )
    general.add_argument(
        "-nov", default=False, action="store_true", help="Do not print verbose info, only print cracked ones"
    )
    general.add_argument("-v", action="version", version="%(prog)s 0.0.3")

    if len(sys.argv) == 1:
        sys.argv.append("-h")
    args = parser.parse_args()

    if args.err:
        for i in range(len(args.err)):
            args.err[i] = system_decode(args.err[i])
    if args.suc:
        for i in range(len(args.suc)):
            args.suc[i] = system_decode(args.suc[i])
    if args.rtxt:
        args.rtxt = system_decode(args.rtxt)
    if args.rntxt:
        args.rntxt = system_decode(args.rntxt)

    check_args(args)
    self.args = args

    if self.args.debug:
        self.args.t = 1  # thread set to 1 in debug mode
        self.lock.acquire()
        print "*" * self.console_width
        print "[Parsed Arguments]\n"
        pprint.pprint(self.args.__dict__)
        print "\n" + "*" * self.console_width
        self.lock.release()

    self.request_thread_count = self.args.t
Exemplo n.º 5
0
def parse_args(self):
    parser = argparse.ArgumentParser(prog='htpwdScan',
                                     formatter_class=argparse.RawTextHelpFormatter,
                                     description='* An HTTP weak pass scanner. By LiJieJie *',
                                     usage='htpwdScan.py [options]')

    target = parser.add_argument_group('Target')
    target.add_argument('-u', metavar='REQUESTURL', type=str,
                        help='Explicitly set request URL, e.g.\n-u="https://www.test.com/login.php"')
    target.add_argument('-f', metavar='REQUESTFILE', type=str,
                        help='Load HTTP request from file')
    target.add_argument('-https', default=False, action='store_true',
                        help='Explicitly set -https when load request from file and \nSSL enabled')
    target.add_argument('-get', default=False,
                        action='store_true',
                        help='Force method GET when -u was set. default: POST')
    target.add_argument('-basic', metavar='',type=str, nargs='+',
                        help='HTTP Basic Auth brute, \ne.g. -basic users.dic pass.dic')

    dictionary = parser.add_argument_group('Dictionary')
    dictionary.add_argument('-d', metavar='Param=DictFile', type=str, nargs='+',
                        help='Set dict file for parameters, \n' + \
                        'support hash functions like md5, md5_16, sha1. \n' + \
                        'e.g. -d user=users.dic pass=md5(pass.dic)')

    detect = parser.add_argument_group('Detect')
    detect.add_argument('-no302', default=False, action='store_true',
                        help='302 redirect insensitive, default: sensitive')
    detect.add_argument('-err', metavar='ERR', default='', type=str, nargs='+',
                        help='String indicates fail in response text, \ne.g. -err "user not exist" "password wrong"')
    detect.add_argument('-suc', metavar='SUC', default='', type=str, nargs='+',
                        help='String indicates success in response text, \ne.g. -suc "welcome," "admin"')
    detect.add_argument('-ssuc', metavar='SSUC', default='', type=str, nargs='+',
                        help='String indicates success in status code, \ne.g. -ssuc "303" "404"')
    detect.add_argument('-herr', metavar='HERR', default='', type=str,
                        help='String indicates fail in response headers')
    detect.add_argument('-hsuc', metavar='HSUC', default='', type=str,
                        help='String indicates success in response headers')
    detect.add_argument('-rtxt', metavar='RetryText', type=str, default='',
                        help='Retry when it appears in response text, \ne.g. -rtxt="IP blocked"')
    detect.add_argument('-rntxt', metavar='RetryNoText', type=str, default='',
                        help='Retry when it does not appear in response text, \ne.g. -rntxt="<body>"')
    detect.add_argument('-rheader', metavar='RetryHeader', type=str, default='',
                        help='Retry when it appears in response headers, \ne.g. -rheader="Set-Cookie:"')
    detect.add_argument('-rnheader', metavar='RetryNoHeader', type=str, default='',
                        help='Retry when it didn\'t appear in response headers, \ne.g. -rheader="HTTP/1.1 200 OK"')

    proxy_spoof = parser.add_argument_group('Proxy and spoof')
    proxy_spoof.add_argument('-proxy', metavar='Server:Port', default='', type=str,
                        help='Set several HTTP proxies \ne.g. -proxy=127.0.0.1:8000,8.8.8.8:8000')
    proxy_spoof.add_argument('-proxylist', metavar='ProxyListFile', default='', type=str,
                        help='Load HTTP proxies from file, one proxy per line, \ne.g. -proxylist=proxys.txt')
    proxy_spoof.add_argument('-checkproxy', default=False, action='store_true',
                        help='Check the usability of loaded proxy servers.\nOutput file is 001.proxy.servers.txt')
    proxy_spoof.add_argument('-fip', default=False, action='store_true',
                        help='Spoof source IP by random X-Forwarded-For')
    proxy_spoof.add_argument('-fsid', type=str,
                        help='Use a random session ID. e.g. -fsid PHPSESSID')
    proxy_spoof.add_argument('-sleep', metavar='SECONDS', type=str, default='',
                        help='Sleep some time after each request,\navoid IP blocked by web server')

    database = parser.add_argument_group('Database attack')
    database.add_argument('-database', type=str,
                          help='Load leaked passwords to attack. \ne.g. -database user,pass=csdn.txt')
    database.add_argument('-regex', type=str,
                          help='Regex used to extract values. \ne.g. -regex="(\S+)\s+(\S+)"')

    general = parser.add_argument_group('General')
    general.add_argument('-t', metavar='THREADS', type=int, default=50,
                        help='50 threads by default')
    general.add_argument('-o', metavar='OUTPUT', type=str, default='000.Cracked.Passwords.txt',
                        help='Output file. default: 000.Cracked.Passwords.txt')
    general.add_argument('-debug', default=False, action='store_true',
                        help='Enter debug mode to test request and response')
    general.add_argument('-nov', default=False, action='store_true',
                        help='Do not print verbose info, only print cracked ones')
    general.add_argument('-v', action='version', version='%(prog)s 0.0.3')


    if len(sys.argv) == 1:
        sys.argv.append('-h')
    args = parser.parse_args()

    if args.err:
        for i in range(len(args.err)):
            args.err[i] = system_decode(args.err[i])
    if args.suc:
        for i in range(len(args.suc)):
            args.suc[i] = system_decode(args.suc[i])
    if args.rtxt:
        args.rtxt = system_decode(args.rtxt)
    if args.rntxt:
        args.rntxt = system_decode(args.rntxt)

    check_args(args)
    self.args = args

    if self.args.debug:
        self.args.t = 1    # thread set to 1 in debug mode
        self.lock.acquire()
        print '*' * self.console_width
        print '[Parsed Arguments]\n'
        pprint.pprint(self.args.__dict__)
        print '\n' + '*' * self.console_width
        self.lock.release()

    self.request_thread_count = self.args.t