Page 1 sur 1

[..]Freeze Scanner de port

Posté : ven. 30 avr. 2010 14:15
par ptifou78
Bonjour tout le monde.
Ceci est mon tout premier post sur ce forum qui ma souvent était d'une grande aide.

Voila je suis en train de faire un scanneur de port(regarde si le port x est ouvert).Pour cela j'envoie une requête TCP grâce a la fonction TCPConnect() mais je rencontre un petit problème.
Quand le port est ouvert la aucun problème la réponse se fait très vite mais lorsque qu'il est fermé le programme freeze puis au bout de 10/15 sec il me dit que le port est fermé ;)

Voici mon code source

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("TCPTimeout",10)
Opt("TrayIconHide",1)
#Region ### START Koda GUI section ### Form=C:\Users\Ptifou78\Desktop\Créa\GUI Scanner.kxf
$Scanner = GUICreate("Scanner By Ptifou78 V0.01", 487, 282, -1, -1)
GUISetFont(8, 400, 0, "Gisha")
$Banniere = GUICtrlCreateLabel("PORT SCANNER BY PTIFOU78", 0, 0, 539, 41)
GUICtrlSetFont(-1, 25, 400, 0, "Neo Bopollux : The Remix")
GUICtrlSetBkColor(-1, 0x800000)
$ip = GUICtrlCreateInput("IP à scanner", 88, 88, 313, 32)
GUICtrlSetFont(-1, 15, 400, 0, "Gisha")
GUICtrlSetCursor (-1, 5)
$Boutton_depart = GUICtrlCreateButton("Commencer à scanner", 160, 200, 185, 49, $WS_GROUP)
GUICtrlSetFont(-1, 12, 400, 0, "Gisha")
GUICtrlSetCursor (-1, 0)
$Port_scann = GUICtrlCreateInput("Port à scanner", 152, 144, 201, 32)
GUICtrlSetFont(-1, 15, 400, 0, "Gisha")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

Case $Boutton_depart
    MsgBox(0, "GUI Event", "Scan en cours de l'ip: "&GUICtrlRead($ip)&" du port "&GUICtrlRead($Port_scann)& "")
    TCPStartup()
    $port_scanner = TCPConnect( GUICtrlRead($ip), GUICtrlRead($Port_scann))
    if $port_scanner = -1 Then
    MsgBox(0,"Port Fermé","Le port "&GUICtrlRead($Port_scann)&" de l'ip "&GUICtrlRead($ip)&" est fermé")
    ElseIf @error = 1 Then
    MsgBox(0,"Adresse ip invalide","L'adresse ip "&GUICtrlRead($ip)&" n'est pas valide merci de mettre une bonne ip ")
    ElseIf @error = 2 Then
    MsgBox(0,"Port invalide","Le port "&GUICtrlRead($Port_scann)&" n'est pas valide merci de mettre un port entre 0 et 65535")
    Else
    MsgBox(0,"Port Ouvert","Le port "&GUICtrlRead($Port_scann)&" de l'ip "&GUICtrlRead($ip)&" est ouvert")
    EndIf
    EndSwitch
WEnd
 
C'est mon 1er programme utilisant les sockets en autoit :P
D'avance merci de votre aide :)

Re: [..]Freeze Scanner de port

Posté : ven. 30 avr. 2010 14:46
par peuchere83
Bonjour,

Peut être plus d'infos ici :
http://www.autoitscript.com/forum/index ... opic=39807

Cordialement

Re: [..]Freeze Scanner de port

Posté : ven. 30 avr. 2010 14:49
par ptifou78
j'ai déjà essayé regarde dans mon code

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
[color=#BF0000]Opt("TCPTimeout",10)[/color]
Opt("TrayIconHide",1)
 

Re: [..]Freeze Scanner de port

Posté : ven. 30 avr. 2010 18:07
par peuchere83
:oops: j'avais juste fait une recherche sans regarder ton code.

Alors j'ai pas d'idée. Désolé.

Re: [..]Freeze Scanner de port

Posté : ven. 30 avr. 2010 18:38
par Voodoo
Attention à l'utilisation d'un scanner de port. Il ne vaut mieux pas scanner n'importe quel machine.

Ensuite, la fonction TCPstartup() est a appelé UNE seule foi dans ton script, et tu dois penser à fermer proprement les sockets en utilisant TcpCloseSocket. Une fois que tu n'as plus besoin des fonctions Tcp, il faut que tu appelles TCPshutdown().

Re: [..]Freeze Scanner de port

Posté : ven. 30 avr. 2010 23:39
par ptifou78
Comment utiliser la fonction TcpCloseSocket() ???

dans mon cas je devrais mettre entre parenthèse ceci?

Code : Tout sélectionner

TcpCloseSocket($port_scanner)
(j'essaye de comprendre l'aide en anglais mais je galère un peux ^^)

Re: [..]Freeze Scanner de port

Posté : sam. 01 mai 2010 11:05
par Voodoo
Oui, dans l'aide tu as un petit bout de code exemple qui peut t'être utile si tu ne comprends pas du tout l'anglais.

Re: [..]Freeze Scanner de port

Posté : sam. 01 mai 2010 13:28
par ptifou78
Toujours le même freeze voici mon code

Code : Tout sélectionner

Case $Boutton_depart
    MsgBox(0, "GUI Event", "Scan en cours de l'ip: "&GUICtrlRead($ip)&" du port "&GUICtrlRead($Port_scann)& "")
    TCPStartup()
    $port_scanner = TCPConnect( GUICtrlRead($ip), GUICtrlRead($Port_scann))
    TcpCloseSocket($port_scanner)
    TCPShutdown()
    if $port_scanner = -1 Then
    MsgBox(0,"Port Fermé","Le port "&GUICtrlRead($Port_scann)&" de l'ip "&GUICtrlRead($ip)&" est fermé")
    ElseIf @error = 1 Then
    MsgBox(0,"Adresse ip invalide","L'adresse ip "&GUICtrlRead($ip)&" n'est pas valide merci de mettre une bonne ip ")
    ElseIf @error = 2 Then
    MsgBox(0,"Port invalide","Le port "&GUICtrlRead($Port_scann)&" n'est pas valide merci de mettre un port entre 0 et 65535")
    Else
    MsgBox(0,"Port Ouvert","Le port "&GUICtrlRead($Port_scann)&" de l'ip "&GUICtrlRead($ip)&" est ouvert")
    EndIf
    EndSwitch
WEnd
De plus je ne sait pas si cela est possible car j'ai un peux regardé sur le forum US mais pareil le même freeze
http://www.autoitscript.com/forum/index ... opic=50236

Donc je pense que soit je n'applique pas la bonne manière pour testé si le port est ouvert soit c'est impossible ^^

Re: [..]Freeze Scanner de port

Posté : sam. 01 mai 2010 18:25
par Sh4dows
Entre tu une IP qui existe ?
Perso j'en est fais un il y a très peu de temps : http://www.megaupload.com/?d=TF2EM1HR
Et je peux t'affirmer que si l'IP n'existe pas effectivement le code plante/freeze !

Donc voilà, pour Google la même chose.
Ils bloquent certainent connexions entrantes...

Cordialement Sh4dows

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 00:02
par ptifou78
Shadows c'est le même concours ^^

J'ai regardé ton code source mais oui l'ip existe bien.

Mais j'ai testé que sur mon ip public donc sa pourrais venir de ça? car même ton code freeze quand je teste avec mon ip

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 09:25
par Sh4dows
Xd Comme on se retrouve :lol:
Perso moi il freeze quasiment pas :mrgreen:

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 12:21
par ptifou78
Ba finalement comme t'a pu le voir je l'ai fait en VB6 mais j'aurais aimé savoir pourquoi il freezé mais a mon avis sa doit venir d'autoit lui même ^^

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 13:37
par Tlem
Je trouve que votre code est un peut trop superficiel.

Déjà, les champs de saisie pourraient être très nettement améliorés en utilisant un masque de saisie pour l'IP (il existe un contrôle pour cela) et pour le port à scanner, n'autoriser que des nombres positif de 1 à 65556.
Déjà, cela limiterait quelques erreurs possible.

Une barre de status avec l'information sur l'action en cours sera sans nul doute préférable à des boites de dialogue sur lesquelles il faut cliquer. :roll:

Ensuite, une vérification de la validité de l'IP saisie.
Ensuite, une vérification de la disponibilité de l'IP grâce à la commande Ping (qui permet un timeout court).

Une fois toutes ces vérifications faites, vous pourrez utiliser TCPConnect() sans avoir des freezes de malade ...

Amusez vous bien.

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 19:29
par ptifou78
Justement j'ai rendu ce code superficiel pour pouvoir l'écrire ici ^^

Pour la progresse bar je voit pas trop en quoi ceci peut faire baisser le freeze et pour le masque de saisie de l'IP je vient de voir qu'il y avait plusieurs partit dans Koda mais je ne vois toujours pas en quoi cela va changé le freeze ^^

Après pour voir si l'ip est valide je suis d'accord que sa serait bien de vérifié mais quand ça freeze l'ip est bien valide mais je vais essayé avec et je vous tien au courant ^^

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 22:44
par jchd
Il y a effectivement un problème avec les timeout sur Ping et les fonctions TCP* qui ne respectent pas vraiment (ou pas du tout) les timeouts définis.

Il y a des tickets en cours sur ces sujets et je pense (j'espère) que l'on verra une résolution rapide de ces soucis.

Re: [..]Freeze Scanner de port

Posté : dim. 02 mai 2010 22:59
par Tlem
ptifou78 a écrit :Pour la progresse bar je voit pas trop en quoi ceci peut faire baisser le freeze
Je n'ai jamais parlé de ProgressBar !!!!
ptifou78 a écrit :pour le masque de saisie de l'IP je vient de voir qu'il y avait plusieurs partit dans Koda mais je ne vois toujours pas en quoi cela va changé le freeze ^^
Je n'ai jamais dit que ca changerait quelque chose sur le freeze !!!