2014-03-07 64 views
0

我試圖在腳本中實現--verbose選項。這個想法是打開額外的打印錯誤等調試,但由於某種原因,它似乎沒有工作。我試過了if verbose聲明的一些變體,但沒有喜樂。我希望有人能指出我的方向正確嗎?使用詳細輸出處理錯誤

CLI實施例

./attack2.py -f wordfile.txt -d google.com --verbose 1

CLI OUTPUT

[email protected]:~$ ./attack2.py -f wordfile.txt -d google.com --verbose 1 
173.194.34.149 
173.194.34.130 
[email protected]:~$ 

ARG PRINT

{'--domain': 'google.com', 
'--file': 'wordfile.txt', 
'--help': False, 
'--thread': False, 
'--verbose': True, 
'10': False, 
'<1>': '1'} 

CODE

#!/usr/bin/python 

""" 
Description: 

Basic Domain bruteforcer 

Usage: 
    attack2.py (-f <file>) (-d <domain>) [-t 10] [-v <1>] 
    attack2.py -h | --help 

Arguments: 
    -f --file File to read potential Sub-domains from. (Required) 
    -d --domain Domain to bruteforce. (Required) 
Options: 
    -h --help  Show this screen. 
    -p --proxy Proxy address and port. [default: http://127.0.0.1:8080] (Optional) 
    -t --thread Thread count. (Optional) 
    -v --verbose Turn debug on. (Optional) 
""" 
import socket 
from docopt import docopt 


def fread(dwords): 
     flist = open(dwords).readlines() 
     return [s.replace('\n', '.') for s in flist] 


def subcheck(subdomain, domain, verbose): 

     vdomain = {} 
     for sub in subdomain: 
       try: 
         check = socket.gethostbyname(sub + domain) 
         vdomain[sub + domain] = check 

       except socket.gaierror, e: 
         if verbose == True: 
           print arguments 
           print e, sub + domain 
         else: 
           pass 
     return vdomain 

if __name__ == "__main__": 
     arguments = docopt(__doc__, version='0.1a') 

     fread(arguments['--file']) 
     returned_list = fread(arguments['--file']) 
     returned_domains = subcheck(returned_list, arguments['--domain'], ['--verbose']) 
+1

爲什麼不使用http://docs.python.org/2/library/argparse.html#module-argparse? – funerr

+0

爲什麼你不喜歡使用[argparse](http://docs.python.org/3/library/argparse.html)和[logging](http://docs.python.org/3/library/ logging.html)模塊? – user3159253

+0

@ agam360:因爲關於使用'getopt'的另一個答案向OP推薦'docopt'。這裏有關係嗎? –

回答

1

在功能如下行subcheck

returned_domains = subcheck(returned_list, arguments['--domain'], ['--verbose']) 

應該

returned_domains = subcheck(returned_list, arguments['--domain'], arguments['--verbose']) 

你忘了通過從參數的verbose PARAM,而是你通過了list

+0

ROFL u甜菜我也是它幾秒鐘:) – iNoob

+0

當我自己工作它是不好的做法給自己正確答案? – iNoob

+0

@LearningCode - 您沒有義務將我的答案設置爲正確。 – anuragal

0

看來我錯誤地調用了子檢查。

代碼應該是這個樣子的

工作代碼

if __name__ == "__main__": 
     arguments = docopt(__doc__, version='0.1a') 

     fread(arguments['--file']) 
     returned_list = fread(arguments['--file']) 
     returned_domains = subcheck(returned_list, arguments['--domain'], arguments['--verbose']) 
     print returned_domains