Pythonのバナーで書かれたコードを取得するには、2つの方法があります

1、オプションを指定しないと、ヘルプ情報

!は/ usr / binに/パイソンのenv コード:UTFを8 

インポートソケット
 インポートSYS
 インポートOS
 からスレッディングインポートスレッド
 インポートモジュール
のIF(sys.argvの)= 2 lenを!印刷 " 入力モード:"、sysargv [0] 、" IPliebiaoは、" 
    印刷 " の例を:./test.py /root/ip.txt " 
    sys.exit()

DEF getBanner(IP、ポート):
    socket.setdefaulttimeout( 2 #は、タイムアウト時間が2秒で設定 
    S = ソケット。ソケット()
この方法は、ソケットモジュールソケット呼び出しを
    試して
        s.connect((IP、ポート)) 
    受信IPとポートの 
        結果= s.recv(1024 前のデータ情報に1024Bリターン受信
        S。CLOSEを()
    切断
        リターン結果
     #の出力
    を除いパス

DEF checkVulns(IP、ポート):
    バナー = getBanner(IP、ポート)
     IF バナー:
         IF" 2.0 "  バナー):
             印刷 IP +は、" 脆弱である" 
        印刷 IP +は" unvulnerable IS " 
    印刷 IPを、" 未バナーGET " 
    #1 の決意の結果かどうかサーバーバージョン2.0 
DEF メイン():
    ないようモジュール 
    ファイル名= STR(sys.argvのを、[1。.strip()])
     IF  ないos.path.exists(ファイル名):
         印刷 ファイルが存在しない
        sys.exit() 
    閉鎖が存在しない、ファイルの導入が存在するか否かを判定する 
    F =オープン(ファイル名、R&LT のための I におけるf.readlines() :
        IPi.strip =(" \ N- " 
        ポート 22がある= 
        T =スレッド(対象= checkVulns、引数= (IP、ポート))
        t.start()
    f.close() 
    輸入書類、および削除休憩

IF  __name__ = = " __main__ " 
    メイン() 
    出力

 

2、オプションとヘルプ情報があります

!は/ usr /ビン/ ENVのpython のコード:UTF-8 

輸入ソケット
 輸入SYS
 輸入OS
 からスレッド輸入スレッド
 から optparseは輸入のOptionParser 

デフgetBanner(IP、ポート):
    socket.setdefaulttimeout( 2 
    S = socket.socket()
     試す
        s.connectを((IP、ポート))
        結果 = s.recv(1024 
        S。CLOSE()
        の戻り結果
     除く渡す

デフcheckVulns(IP、ポート):
    バナー = getBanner(IP、ポート)
     場合はバナー:
         場合" 2.0 "  バナー):
             プリント IP + " 脆弱である" 
        プリント IP +は" unvulnerableです" 
    プリント IP、バナーを取得できません" 
DEF メイン():
    使用法 = " 使用法:%PROG -f <ファイル名> -i <IPアドレス> " 
    パーサ =はOptionParser(使用=用法)
    parser.add_option(" -f "" --file "、タイプ= " 文字列"、DEST = " ファイル名"、ヘルプ= " IPアドレスファイル" 
    parser.add_option(" -i "" --ip "タイプ= " 文字列"DEST = " アドレス"ヘルプ= " IPアドレス" 
    (オプション、引数) = パーサ。
    parse_args() 設定オプションは-fと-iとヘルプ-h 
    
    ファイル名 = options.filenameの
    アドレス = options.address 

    IF(ファイル名==なしアドレス== なし):
         印刷 IPアドレスまたはIPリストファイルを指定してください
        sys.exit( )
        入力が空でないと判断
    IF 名:
         IF  ないos.path.exists(ファイル名):
             プリント " bucunzai " 
            sys.exit()
        F =オープン(ファイル名、" R&LT " のために I f.readlines():
            IP= i.strip(" \ nは" 
            ポート = 22 
            トン =スレッド(対象= checkVulns、引数= (IP、ポート))
            t.start()
        f.close() 
    设置-f参数引入的方式

    であればアドレス:
        接頭辞 = address.split(" ")[0] + " " + address.split(" ")[1] + " " + address.split(" ")[2] + " " のための I の範囲(1、255
        ):
            IP =接頭辞+ STR(I)
            ポート = 22である
            T =スレッド(対象= checkVulns、引数= (IP、ポート))
            t.start() 
    配置は、-iパラメータを導入

IF  __name__ == " __main__ " 
    メイン()

 

おすすめ

転載: www.cnblogs.com/liujizhou/p/11924965.html