Многопоточный сканер портов от \/IRUS

Discussion in 'Инструменты' started by \/IRUS, 13 Jun 2013.

  1. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    Консольный многопоточный сканер портов

    Аналог NMAP, AngryIPScanner но более узко специализирован, не одной лишней строчки кода, просто и эффективно. Поддержка любых размеров файлов, очень высокая скорость проверки. Указываем файл с исходными IP, файл для сохранения результатов и порт.

    [​IMG]

    Использование:

    Code:
    scanner.exe <input_filename> <output_filename> <port> <type=tcp> <threads=100> <timeout=1000>
    
    пример:
    scanner.exe ips.txt ip-good.txt 3389 tcp 50 1000
    
    Исходный код (PureBasic):
    Code:
    InitNetwork()
    
    Global ths.i=Val(ProgramParameter(4)), timeout.i=Val(ProgramParameter(5)), port.i=Val(ProgramParameter(2)), threads.i=0, type.i
    
    If ths=0
      ths.i=100
    EndIf
    If timeout=0
      timeout.i=1000
    EndIf
    If ProgramParameter(3)="udp"
      type.i=#PB_Network_UDP
    Else
      type.i=#PB_Network_TCP
    EndIf
    
    Global filein.s=ProgramParameter(0), fileout.s=ProgramParameter(1), good.l=0, bad.l=0
    Global Dim ip.s(ths)
    Global mx.l=CreateMutex()
    
    Procedure check(x)
      ConnectionID = OpenNetworkConnection(ip(x),port,type,timeout)
      If ConnectionID
        good+1
        LockMutex(mx)
        fl.l=OpenFile(#PB_Any,fileout)
        FileSeek(fl,Lof(fl))
        WriteStringN(fl,ip(x))
        FlushFileBuffers(fl)
        CloseFile(fl)
        UnlockMutex(mx)
        CloseNetworkConnection(ConnectionID)
      Else
        bad+1
      EndIf
      ip(x)=""
      threads-1
    EndProcedure
    
    
    OpenConsole("Port scanner ("+ProgramParameter(3)+":"+ProgramParameter(2)+") (c) \/IRUS ([email protected])")
    If CountProgramParameters()<3
      PrintN("Multi-thread port scanner.")
      PrintN("(c) \/IRUS ([email protected])")
      PrintN(GetFilePart(ProgramFilename())+" <input> <output> <port> <type=tcp> <threads=100> <timeout=1000>")
      PrintN("Press ENTER to continue.")
      Input()
    Else
      EnableGraphicalConsole(1)
      OpenFile(0,filein)
      Repeat
        str.s=ReadString(0)
        
        Repeat
          Delay(10)
        Until threads<ths
        
        i+1
        If Not i%100
          ConsoleLocate(0,0)
          Print("Checked: "+Str(i)+" Bad: "+Str(bad)+" Good: "+Str(good))
          ConsoleLocate(0,1)
          Print("Threads: "+Str(threads)+" Last IP: "+str+"   ")
        EndIf
        
        For x=1 To ths
          If ip(x)=""
            threads+1
            ip(x)=str
            CreateThread(@check(),x)
            Break
          EndIf
        Next x
        
      Until Eof(0)
    EndIf
    CloseConsole()

    Компилировать нужно самим.
     
    #1 \/IRUS, 13 Jun 2013
    Last edited: 20 Jul 2013
  2. T710MA

    T710MA Banned

    Joined:
    14 Feb 2013
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    спасибо, как раз искал !
     
  3. Highteq

    Highteq New Member

    Joined:
    9 Jul 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    кодеру аве
     
  4. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    UPD: неправильное отображение последнего проверенного айпишника, исходник пофиксил
     
    1 person likes this.