Page 1 sur 1

Petit code pour surveiller les Ports UDP et TCP.

Publié : sam. 15/sept./2007 17:55
par Mytic
J’avais créer ce code il y’a bien longtemps, et je l’ai trouvé par hasard dans mon DD en cherchant un fichier.
Voilà je le poste si ça intéresse quelqu’un.
:idea:

Code : Tout sélectionner

InitNetwork()
OpenConsole()
PrintN("-----------: Ports actifs :------------")
For i = 0 To 65000
t$ = Inkey()
If t$ <> "":Goto ex:EndIf
ConsoleTitle(Str(i)+" / 65000")
If CreateNetworkServer(0,i,#PB_Network_TCP)
CloseNetworkServer(0)
Else
ConsoleColor(9,0)
PrintN("TCP : " + Str(i))
EndIf
If CreateNetworkServer(0,i,#PB_Network_UDP)
CloseNetworkServer(0)
Else
ConsoleColor(10,0)
PrintN("UDP : " + Str(i))
EndIf
Next i
ex:
ConsoleColor(12,0)
PrintN("Analyse interrompue")
Delay(2000)
CloseConsole()
End
:)

Publié : dim. 16/sept./2007 8:21
par Kwai chang caine
Petit, simple mais utile. :D
Je le met dans ma hotte.

Merci

Publié : dim. 16/sept./2007 16:58
par Ar-S
Idem, très sympa ce petit code :D

Publié : dim. 16/sept./2007 19:46
par Mytic
:)

Publié : dim. 21/oct./2007 20:03
par Fortix
Bonsoir à tous

Mytic, je me suis permis de créer une variante qui me semble plus interéssante, cette version permet de scanner tous les ports des site ou ordinateurs distants et en prime il capture la vraie adresse locale de la cible avec un petit plus: il donne le non du pay de la cible scanné:

Code : Tout sélectionner

Procedure.s left_right_cut(valeur.s)
 
    If Len(valeur)>2 
        valeur = Left(valeur,Len(valeur)-1) 
        valeur = Mid(valeur,2,Len(valeur)) 
            ProcedureReturn valeur 
    EndIf 

EndProcedure 


Procedure.s ip_to_country (db_file.s,ip.s) 

    Protected f.l, ip_val1.l, ip_val2.l ,line.s, ip_string1.s, ip_string2.s, ip_val.l,code_.s 
    
    If ReadFile(f,db_file) 
    
        ip_val = Val(StringField(ip,1,"."))*16777216 + Val(StringField(ip,2,"."))*65536+ Val(StringField(ip,3,"."))*255 +Val(StringField(ip,4,".")) 
        
        
        While Eof(f) = 0 
        
            line = ReadString(f,#PB_Ascii) 
            ip_string1 = left_right_cut(StringField(line,1,",")) 
            ip_string2 = left_right_cut(StringField(line,2,",")) 
            ip_val1 = Val(ip_string1) 
            ip_val2 = Val(ip_string2) 
            
            If ip_val >= ip_val1 And ip_val <= ip_val2 
                ;Debug ip_val 
                code_.s = left_right_cut(StringField(Line,3,",")) 
                    ProcedureReturn code_.s   
            EndIf 
          
        Wend 
        CloseFile(f) 
        
    EndIf 

EndProcedure 



If InitNetwork()

    site_$=InputRequester("Site ciblé","Inscrivez le l'adresse du site que vous ciblez","www.tf1.fr")
 
    OpenConsole()
    ConsoleCursor(10) 
    PrintN("-----------: Ports actifs :------------") 
    PrintN("")
    PrintN(UCase(site_$))
    PrintN("")
    
    For i = 20 To 65000 
        t$ = Inkey() 
        
        If t$ <> ""
            Goto ex
        EndIf
         
        ConsoleTitle("Port :"+Str(i-1)+" / 65000") 
        
        link=OpenNetworkConnection(site_$, i,#PB_Network_TCP)
        
        If link 
            If d=0
                 IP_$=IPString(GetClientIP(link))
                 
                 If IP_$
                    PrintN("IP : "+IP_$)
                    PrintN("pay: "+ip_to_country("C:\BD\ip-to-country.csv",IP_$) )
                    PrintN("")
                    d=1
                 EndIf 
            EndIf
                   
            ConsoleColor(9,0) 
            PrintN("TCP: " + Str(i))
            
            *buffer=AllocateMemory(1000)
            
                If *buffer   
                    ReceiveNetworkData(link, *buffer, 1000)   
                    Block$ = PeekS(*buffer)
                    
                    If Block$
                        ;AddGadgetItem(#Editor_0, -1, Block$)
                        PrintN(Block$)
                    EndIf
                EndIf   
            
            FreeMemory(*buffer)
            PrintN("")
            CloseNetworkConnection(link)         
        EndIf
     
     
     
     
;         link=OpenNetworkConnection(site_$, i,#PB_Network_UDP)
;         
;         If link 
;             If d=0
;                  IP_$=IPString(GetClientIP(link))
;                  
;                  If IP_$
;                     PrintN("IP :"+IP_$)
;                     d=1
;                  EndIf 
;             EndIf
;                    
;             ConsoleColor(10,0) 
;             PrintN("UDP : " + Str(i))
;             
;             *buffer=AllocateMemory(1000)
;             
;                 If *buffer   
;                     ReceiveNetworkData(link, *buffer, 1000)   
;                     Block$ = PeekS(*buffer)
;                     
;                     If Block$
;                         ;AddGadgetItem(#Editor_0, -1, Block$)
;                         PrintN(Block$)
;                     EndIf
;                 EndIf   
;             
;             FreeMemory(*buffer)
;             PrintN("")
;             CloseNetworkConnection(link)         
;         EndIf
    Next i
     
    ex: 
    ConsoleColor(12,0) 
    PrintN("Analyse interrompue") 
    Delay(2000) 
    CloseConsole()
EndIf

End 
par contre il faut récupérer la base de donnée présente: http://ip-to-country.webhosting.info/d ... .csv.zip

que vous placerez dans votre répertoire et une éventuelle modif dans le code pour le chemin de la BD :D

tu m'en diras des nouvels :D

Publié : mar. 23/oct./2007 20:01
par Mytic
@Fortix
Merci pour cette variante, elle apporte un plus énorme (l’IP), et je te félicite pour ça.
Mais y’a un petit inconvénient, cette fois le programme est ciblé, et moins général, Bon ! C’est le travail du par feu ça.
J’ai une petite remarque à faire, c’est très lent ?!

Je pense que tu gagneras en vitesse si tu garde le principe du CreateNetworkServer , et si le server n’arrive pas à se crée ,donc à ce moment il ouvre un OpenNetworkConnection.
Pour un GetData.
Sinon pour le reste Bravo.
:)

Publié : mar. 23/oct./2007 20:18
par Mytic
Le seul problème avec les commandes de connexion de PureBasic , c’est le temps d’attente de 10s.
Si seulement on pouvait le désactivé.

Je vais crée un autre code avec l’API Winsock.
:?

Publié : mer. 24/oct./2007 17:18
par Fortix
Ha, très bonne idée "Winsock" :D ,