- Visual Basic / VB.NET : Scanner de port vb.net - CodeS SourceS
- Visual Basic / VB.NET : Port scanner - CodeS SourceS
- Visual Basic / VB.NET : Psyco-scan scanner de port - updated - CodeS SourceS
- Visual Basic / VB.NET : Port scanner - open source - CodeS SourceS
- Visual Basic / VB.NET : Scanner de port ultra rapide et parametrable ( version beta ) - CodeS Source
24 juin 2009 à 15:46
4 oct. 2007 à 17:52
Je suis un débutant, mon code va vous sembler bien pourave.... mais il a l'air de bien fonctionner.
Il est tres lent, vous vous occuperez du threading ( car j'y comprends encore rien )
voila:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'definition des variables
Dim i As Integer
Dim ip As String=textbox1.text
Dim port As Integer = 130 ' Port de départ
For i = 1 To 15 ' NB de ports a scanner
Dim s As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, _
System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
Try
s.Connect(ip, port)
Catch
End Try
If s.Connected Then ' si le port est ouvert
ListBox1.Items.Add("Port N°= " & port & " Ouvert")
s.Close() 'Permet de reutiliser le socket / inutile en l'etat
Else
ListBox1.Items.Add("Port N°= " & port & " Fermé")
ListBox1.Refresh()
End If
port = port + 1
Next
End Sub
2 juil. 2007 à 00:55
2 juil. 2007 à 00:53
Il me dit que le port 80 est fermé alors que je suis sur ce site et d'autres sites.
Commentaire de : fdiedler2000 le 30/06/2007 14:08:42 Chez moi aussi ca marche pas les resultats ne sont pas conformes... Exemple port 21 fermé alors que je suis connecté sur mon Ftp !"
(+ d'autres commentaires plus haut)
Heuu un port ouvert, ça sous-entend un port qui attend une connexion entrante... vous parlez de connexions sortantes là.
"Et l'IP FAI(dite publique)."
Une webrequest sur whatismyip.org, ou sur un script php qui fait un bete echo de ton host et le tour est joué.
Enfin pour le threading, c'est le temps de reponse qui est long, pas le traitement du code, donc oui, lancer 5 ou 6 connexions en même temps pourrait être un gros gain de temps.
30 juin 2007 à 17:10
Ensuite vais essayer que le programme puisse détecter l'IP locale(pas l'IP dans le programme qui est une IP locale résau je crois)
Et l'IP FAI(dite publique).
Je vous tiens au courant.
30 juin 2007 à 16:23
30 juin 2007 à 16:23
multithreading oui mais où ?
merci encore pour la source très utile ^^
30 juin 2007 à 14:08
30 juin 2007 à 13:48
Il me dit que le port 80 est fermé alors que je suis sur ce site et d'autres sites.
30 juin 2007 à 13:48
Je vais essayer de l'améliorer. Je te tiens au courant.
30 juin 2007 à 11:47
exactement ce que je cherchais !
(bon pour mon utilisation faut modifier des trucs mais ça fonctionne parfaitement !)
merci bien @++
17 juin 2007 à 13:05
17 juin 2007 à 13:00
Je n'ai pas travailler le design, je l'ai simplifier au maximum afin de faciliter la compréhension.
17 juin 2007 à 11:26
17 juin 2007 à 11:19
17 juin 2007 à 09:15
16 juin 2007 à 19:55
16 juin 2007 à 18:33
Dans la semaine je vais refaire le code du début et surement changer de méthode de connéxion, faire une classe et/ou autre chose...
15 juin 2007 à 23:46
++
15 juin 2007 à 21:26
15 juin 2007 à 11:36
14 juin 2007 à 18:01
14 juin 2007 à 13:56
14 juin 2007 à 13:48
65000 ?? pourquoi pas 65535 ? (ou encoremieux, parcourir entre MinPort et MaxPort
je pense que si c'est lent, c'est parce que tu instancie 65000 objets IPEndPoint
instancie en un, et utilises ses propriétés pour modifier le port, ensuite
voir la doc :
http://msdn2.microsoft.com/fr-fr/library/system.net.ipendpoint_members(VS.80).aspx
NB. prendre mes conseils avec des pincettes, je ne code pas en .Net ^^
14 juin 2007 à 13:42
CompScan = CompScan + 1
ScanPort = ScanPort + 1 'ScanPort est pour le timer
port = BoucleScan
Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
Try
Scan.Connect(EPhost)
Catch
End Try
ThreadProgress.ReportProgress(1)
Next BoucleScan
Merci, en effet j'avais oublié d'assigner cette variable, mais il y a 2 problème, le scanner est presque aussi lent qu'avec le Timer (2 port/s), et dès qu'il trouve le premier port ouvert il recommence à speedé sans vérifier si les port sont ouvert :/
J'avais pourtant réussi à faire un très bon scanner en VB6 (plus de 175 ports/s) mais pour l'instant je n'ai pas une assez bonne connaissance en VB.Net afin d'améliorer se scanner et à mon avis j'utilise une mauvaise méthode...
Je me pencherai sur le problème ce soir ou demain soir et si cela ne marche pas j'essayerai de trouver une source toute faite, parfois sa fait pas de mal de copier :) afin de mieux comprendre.
PS: Le scanner marche mais est très lent (2 a 3 ports/s)
14 juin 2007 à 13:08
For BoucleScan = 0 To 65000
CompScan = CompScan + 1
ScanPort = ScanPort + 1 'ScanPort est pour le timer
Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
Try
Scan.Connect(EPhost)
Catch
End Try
ThreadProgress.ReportProgress(1)
Next BoucleScan
?
14 juin 2007 à 11:40
Peut-être va t-il trop vite et il n'as pas le temps de monter une connéxion sauf la première, je sais pas...
Dim StartScan As Integer
'Variable du scanner
Dim ScanPort As Integer
Dim Scan As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, _
System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
Private Sub BackgroundWorkerScan_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorkerScan.DoWork
'Définition des variables du Scanner
Dim host As String
Dim port As Integer
Dim BoucleScan As Integer
Dim CompScan As Integer
Dim ThreadProgress As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker)
Dim ThreadResult As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker)
'Définition ou incrémentation des variables pour le scanner
host = TextBoxScanIP.Text
port = TextBoxScanPort.Text
TextBoxScanPort.Text = ScanPort
CompScan = 0
For BoucleScan = 0 To 65000
CompScan = CompScan + 1
ScanPort = ScanPort + 1 'ScanPort est pour le timer
Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
Try
Scan.Connect(EPhost)
Catch
End Try
ThreadProgress.ReportProgress(1)
Next BoucleScan
End Sub
Private Sub BackgroundWorkerScan_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorkerScan.ProgressChanged
ProgressBarMain.Value = e.ProgressPercentage / 650
'Définition des variables du Scanner
Dim host As String
Dim port As Integer
Dim CompScan As Integer
'Définition ou incrémentation des variables pour le scanner
host = TextBoxScanIP.Text
port = TextBoxScanPort.Text
TextBoxScanPort.Text = ScanPort
CompScan = 0
If Not Scan.Connected Then
ListBoxScan1.Items.Add("Port " + port.ToString + " est fermé...")
Else
ListBoxScan1.Items.Add("Port " + port.ToString + " est ouvert !")
ListBoxScan2.Items.Add(port.ToString)
End If
lblScanOpenPort.Text = "Ports ouvert : " + ListBoxScan2.Items.Count.ToString
End Sub
14 juin 2007 à 10:01
14 juin 2007 à 08:10
Je pensais plutôt à System.Threading.Thread .
Fais une recherche dans les sources avec le mot "thread", tu verras, tout y est indiqué.
13 juin 2007 à 21:05
Pouriez-vous me dire si je suis sur la bonne voix ?
13 juin 2007 à 19:04
13 juin 2007 à 18:31
je vais essayer de le changer comme sa je verrai si cela augmente la rapidité du scanner.
Si cela marche je réactualiserai ma source :)
13 juin 2007 à 16:27
A la place d'utiliser un Timer, utilise un thread (System.Threading), si tu veux un exemple, recherche sur VBFrance, ou va voir sur mon site :
http://nhen0039.chez-alice.fr/