[Source - Download] Port Scanner

Started by Dark_Side, 11 de June , 2006, 01:07:13 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dark_Side

Hi,
Desta vez estou postando um outro programa que tinha feito alguns meses atrás. Trata-se de um portscanner, que possui uma velocidade de escaneamento razoável.

'Port Scanner by Dark_Side.
Option Explicit
Dim porta As Long
Dim ultima As Long
Dim x As Long

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = 1
If iniciar.Enabled = False Then
Dim confirma4 As Integer
confirma4 = MsgBox("Cancelar escaneamento?", vbYesNo, "Confirmação")
If confirma4 = vbYes Then End
Else
End
End If
End Sub

Private Sub iniciar_Click()
If host.Text = Empty Then
MsgBox "Host Inválido!", vbExclamation, "Host"
host.SetFocus
Exit Sub
End If

If Len(host.Text) < 5 Then
MsgBox "Host inválido!", vbExclamation, "Host"
host.SetFocus
Exit Sub
End If

If inicial.Text = Empty Or IsNumeric(inicial.Text) = False Then
MsgBox "Porta inicial inválida!", vbExclamation, "Porta inicial"
inicial.SetFocus
Exit Sub
End If

If Int(inicial.Text) < 0 Or Int(inicial.Text) > 65535 Then
MsgBox "A porta inicial deve estar entre um intervalo de 0 até 65535.", vbExclamation, "Porta inicial"
inicial.SetFocus
Exit Sub
End If

If final.Text = Empty Or IsNumeric(final.Text) = False Then
MsgBox "Porta final inválida!", vbExclamation, "Porta final"
final.SetFocus
Exit Sub
End If

If Int(final.Text) < 0 Or Int(final.Text) > 65535 Then
MsgBox "A porta final deve estar entre um intervalo de 0 até 65535.", vbExclamation, "Porta final"
final.SetFocus
Exit Sub
End If


If Int(inicial.Text) > Int(final.Text) Then
MsgBox "A porta inicial não pode ser maior do que a porta final.", vbExclamation, "Porta inicial"
inicial.SetFocus
Exit Sub
End If

inicial.Text = Int(inicial.Text)
final.Text = Int(final.Text)

status.Visible = True
Call inicio
End Sub

Function inicio()
host.Enabled = False
inicial.Enabled = False
final.Enabled = False
host.Enabled = False
parar.Enabled = True
iniciar.Enabled = False
portas.Clear
Call scan
End Function
Function scan()
porta = inicial.Text
For x = 1 To 65535
DoEvents
If porta = final.Text + 1 Then
Call concluido
Exit For
Exit Function
Else
status.Caption = "Escaneando: " & porta
socket.Close
socket.Connect host.Text, porta
porta = porta + 1
DoEvents
End If
Next
End Function
Function concluido()
host.Enabled = True
inicial.Enabled = True
final.Enabled = True
host.Enabled = True
parar.Enabled = False
iniciar.Enabled = True
MsgBox "Escaneamento concluído!", vbInformation, "Concluído."
status.Visible = False
Dim confirma3 As Integer
confirma3 = MsgBox("Salvar log?", vbYesNo, "Salvar...")
If confirma3 = vbYes Then Call salvar
End Function

Private Sub parar_Click()
Dim confirma As Integer
confirma = MsgBox("Cancelar escaneamento?", vbYesNo, "Confirmação")
If confirma = vbYes Then Call para
End Sub
Function para()
x = 65535
host.Enabled = True
inicial.Enabled = True
final.Enabled = True
host.Enabled = True
parar.Enabled = False
iniciar.Enabled = True
MsgBox "Escaneamento cancelado!", vbExclamation, "Cancelado."
status.Visible = False
End Function

Private Sub portas_dblClick()
Dim confirma2 As Integer
confirma2 = MsgBox("Deseja se conectar na porta " & portas.Text & " ?", vbYesNo, "Conectar-se na porta " & portas.Text)
If confirma2 = vbYes Then Shell "telnet " & host.Text & " " & portas.Text, vbNormalFocus
End Sub

Private Sub socket_Connect()
portas.AddItem socket.RemotePort
portas.ListIndex = portas.ListCount - 1
End Sub

Function salvar()
Open App.Path & "\logs_" & Day(Now) & "-" & Month(Now) & ".txt" For Append As 1
Dim p As Long
Print #1, "Log salvo em: " & FormatDateTime(Now, vbGeneralDate) & vbCrLf
Print #1, "Host: " & host.Text & vbCrLf & "Porta inicial: " & inicial.Text & vbCrLf & "Porta final: " & final.Text & vbCrLf
Print #1, "Portas Abertas:" & vbCrLf
For p = 0 To portas.ListCount - 1
Print #1, portas.List(p)
Next p
Print #1, vbCrLf & "FIM DO ESCANEAMENTO..."
Close 1
MsgBox "Log salvo em: " & App.Path & "\logs_" & Day(Date) & "-" & Month(Date) & ".txt", vbInformation, "Log Salvo."
End Function
Versão compilada: http://geocities.yahoo.com.br/wdfbily/portscanner.zip
Bye.

Shady



Mundus Vult Decipi

branco

dark, vc comparou o scan com outro e viu se ta tudo normal ? me lembro de chamar uns 10 doevents e ainda não ficava 100%
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?

Dark_Side

Hi,
não entendi muito bem o que você quis dizer, poderia ser mais específico :D?
Bye.

branco

yo,
Teve uma epoca, que eu fis um scan tambem, só que 10 function com doevents ainda não eram suficientes para que a conecção fosse concluida e a comparação dos sockets fosse 100%.

tipo acho que no seu source não está dando tempo para a conecção ser concluida, fazendo assim que o scan não pegue todas as portas abertas, queria saber se você já testou e se ele está pegando todas as portas como qualquer outro bom scan

have fun  ;)
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?

Dark_Side

Hi,
ah sim, confesso que não cheguei a compará-lo com outros scans, ao testá-lo, coloquei portas locais em modo listen e o scanner consegiu pegá-las sem problemas. Testei remotamente também em um servidor que eu sabia da existência de portas abertas, novamente o scanner consegiu identificá-las. Quanto à hipótese do programa não conseguir pegar todas as portas, pode ser verdadeira, vou providenciar um outro scanner e fazer a comparação, caso o meu programa esteja deficiente adianto para pedir desculpas.
Obrigado pelo aviso. :D
Bye.

branco

Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?