python3ポートスキャンスクリプト

ああ、長い時間はほとんど忘れているか、マルチスレッド考えて、コードを書いていない
、以下の事項について
#1 = UTF-8符号化
インポートスレッドソケット
 からソケットインポート *のデフtcp_connect(IP、ポート):
    tcpsock = ソケット(AF_INET、SOCK_STREAM)
    tcpsock.settimeout( 0.5 してみてください
        結果 = tcpsock.connect_ex((IP、ポート))
         もし(結果が== 0):
             印刷" %sの:%sの开启"(IP、ポート))
         プリント( "%sの:%sの关闭" %(IP、ポート))合格
        (tcpsock.closeを)を除きます


            
    socket.errorがeと:
         印刷" 错误[!] " 、e)の

デフurl_ip(URL):
     もし' :// HTTP '   URL または ' https://で'  URL):
        URL = URL [URL。見つける(' :// ')3 :] 
        targetip = socket.getaddrinfo(URL、' HTTP ')[0] [4 ] [0]
         プリント(targetip)
        port_scan(targetip)
    
        targetipSocket.getaddrinfo =(URL、' HTTP ')[0] [4。] [0]
         印刷(TargetIP)
        port_scan(TargetIP)

DEF port_scan(IP):
      I におけるレンジ(200は):
        tcp_connect(IP、I)

DEFのメイン():
     印刷 " ------------- " 
    印刷 " 1:IPポートスキャン" 
    印刷 " 2:スキャンポートURL " 
    印刷 ------------- " 
    Qは = raw_inputは(" を選択:" IF(INT(Q)1 ==。):
        W = raw_input(" IP = " 
        、T = threading.Thread(対象= port_scan、引数= (W)) 
        ()t.start 
    
        E = raw_input(" URL = " 
        url_ip(e)の
メイン( )
 
 

 



!は/ usr / binに/のpython3 - * -コーディング:UTF-8 - * - からソケットのインポート * インポートスレッド ロック = threading.Lock() openNum = 0 のスレッド = [] defのポートスキャン(ホスト、ポート): グローバルopenNum 試す S = ソケット(AF_INET、SOCK_STREAM) s.connect((ホスト、ポート)) lock.acquire() openNum + = 1 プリント' [+]%Dオープン'%のポート) lock.release() S。CLOSE() を除く通過 DEF メイン(): setdefaulttimeout( 1 のp における範囲(1,6558 ): T = threading.Thread(目標=ポートスキャン、引数=(' 14.215.177.38 ' 、P)) スレッド.append(T) t.start() のためにトンスレッド: t.join() 印刷' [*]スキャンが完了している!' 印刷' [*]%dを開いているポートの合計'(openNum)) であれば __name__ == ' __main__ ' main()の

 

これはコルーチンです

- * -コーディング:UTF-8 - * - @time:2018年9月7日午前11時07分
#1 @author:gumgui 
#1 @file:の.pyポートスキャン
インポート時間
 インポートソケット
 から GEVENT インポートサル
monkey.patch_all()
インポートGEVENTは
 インポートgevent.pool 


DEF tcp_connect(IP、ポート):
     "" " シミュレートされたTCPコネクション" "" 
    TCP_sock = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)
    TCP_sock.settimeout( 0.5)  セットの接続タイムアウト
    試し
        結果 =TCP_sock.connect_ex((IP、INT(ポート)))
         IF結果== 0:
             印刷は、" [*]%Sポートオープン\トン"ポート)
         #の印刷( "%Sポートが閉じられている[!]" %ポート)
            パス
        TCP_sock.close()
    を除くE AS socket.errorが:
         印刷" エラー[!]:" 、E)
 DEF scan_ip():
     "" " スキャン対象IP " "" 
    IPは raw_input(= [+]入力をスキャン対象のIP:" を印刷"[*]スキャン
    Scan_port(IP)

DEF scan_web():
     "" " スキャン先URL " "" 
    ウェブ = raw_input(" [+]入力スキャンURL:" IF  " HTTP:// "  のWeb または " HTTPS:// "  ウェブサイト:
        ウェブ =ウェブ[web.find(' :// ')3 :]
         印刷(ウェブ)
         を印刷" [*]分析しているWebサーバIP " の試行
        SERVER_IP =socket.gethostbyname(STR(ウェブ))
         を印刷" [*] IPサーバS%で"%のSERVER_IP)
        scan_port(SERVER_IP)
    を除くE AS例外:
         印刷" サーバーのIP取得失敗[!] " パス


DEFのscan_port(IP ):
     "" " ポートスキャン" "" 
    印刷" [*]ターゲットポートスキャンを開始する" 
    開始 = )(time.timeを
    G(50)= gevent.pool.Pool #はスレッドの数を設定 
    run_list = []
     のためのポートでのレンジ(1200 ):
        run_list.append(g.spawn(tcp_connect、IP、ポート))
    gevent.joinall(run_list)
    終了 = time.time()
     印刷" [*]加工合計S%"%time.strftime(" %のH:%のM:%S "、time.gmtime(END- スタート)))


DEF メイン():
     印刷" "" 
    IPポートスキャン1. 
    URL 2.ポートスキャンを
    """ 
    UC = INT (raw_inputは(" [+]を選択して入力します。" ))
     IF 1 ==。UC:
        scan_ip()
    のelif 2 ==UC:
        scan_web()
    印刷" [!]あなたが間違いを作る" 

IF  __name__ == " __main__ " 
    main()の

 

おすすめ

転載: www.cnblogs.com/Tkitn/p/11622803.html