Analyse ip

Contenu du snippet

analyse une adresse ip.
donne le classe de l'adresse ip, ainsi que divers renseignement.
et il traduit aussi l'adresse ip en binaire.

Source / Exemple :


Public Function CBin(ip_dec) As String
    ' initiatlisation des variables
    Ip_Bin_001 = 0
    IP_Bin_002 = 0
    IP_Bin_003 = 0
    IP_Bin_004 = 0
    Ip_Bin_005 = 0
    Ip_Bin_006 = 0
    Ip_Bin_007 = 0
    Ip_Bin_008 = 0
    Reste = ip_dec

    ' pour le premier bit
    If (ip_dec >= 128) Then
        Ip_Bin_001 = 1
        Reste = ip_dec - 128
    Else
        Ip_Bin_001 = 0
    End If

    ' pour la 2ème
    'MsgBox "Reste=" & Reste
    If (Reste >= 64) Then
        IP_Bin_002 = 1
        Reste = Reste - 64
    Else
        IP_Bin_002 = 0
    End If
        
    ' pour la 3ème
    If (Reste >= 32) Then
        IP_Bin_003 = 1
        Reste = Reste - 32
    Else
        IP_Bin_003 = 0
    End If
    
    ' pour la 4ème
    If (Reste >= 16) Then
        IP_Bin_004 = 1
        Reste = Reste - 16
    Else
        IP_Bin_004 = 0
    End If
    
    ' pour le 5ème
    If (Reste >= 8) Then
        Ip_Bin_005 = 1
        Reste = Reste - 8
    Else
        Ip_Bin_005 = 0
    End If
    
    ' pour le 6ème
    If (Reste >= 4) Then
        Ip_Bin_006 = 1
        Reste = Reste - 4
    Else
        Ip_Bin_006 = 0
    End If
    
    ' pour la 7ème
    If (Reste >= 2) Then
        Ip_Bin_007 = 1
        Reste = Reste - 2
    Else
        Ip_Bin_007 = 0
    End If
        
    ' pour la 8ème et dernière
    If (Reste >= 1) Then
        Ip_Bin_008 = 1
        Reste = Reste - 1
    Else
        Ip_Bin_008 = 0
    End If

    ' on concatène
    CBin = Ip_Bin_001 & IP_Bin_002 & IP_Bin_003 & IP_Bin_004 & Ip_Bin_005 & Ip_Bin_006 & Ip_Bin_007 & Ip_Bin_008
 
End Function
Private Sub Btn_MSR_Click()
    Select Case CInt(IP_Dec_01)
        Case 1 To 126
            MSR_Dec_01 = 255
            MSR_Dec_02 = 0
            MSR_Dec_03 = 0
            MSR_Dec_04 = 0
        Case 128 To 191
            MSR_Dec_01 = 255
            MSR_Dec_02 = 255
            MSR_Dec_03 = 0
            MSR_Dec_04 = 0
        Case 192 To 223
            MSR_Dec_01 = 255
            MSR_Dec_02 = 255
            MSR_Dec_03 = 255
            MSR_Dec_04 = 0
     End Select
End Sub
Public Function IsPrivate(IP_Dec_01, IP_Dec_02) As Boolean
    Dim prive(10)
   ' prive(1) = "10."
   ' prive(2) = "172.16."
   ' prive(3) = "192.168."
   ' adr = "11.0.0.1"
   ' function qui va dire si l'adresse ip passé en paramètres est une adresse privée ou non
   
   'MsgBox ("prive=" & prive(1) & " | ip_dec =" & ip_dec)
   ' strcomp --> -1 si adrese privée
   
   
   ' isegal = StrComp(adr, prive(1), 1)
   ' MsgBox ("isegal=" & isegal)
   'par défaut, on met isprivate à faux
   IsPrivate = False
   Select Case CInt(IP_Dec_01)
        Case 10
            IsPrivate = True
        Case 172
            If CInt(IP_Dec_02) = 16 Then
                IsPrivate = True
            End If
        Case 192
            If CInt(IP_Dec_02) = 168 Then
                IsPrivate = True
            End If
    End Select
   
  '  IsPrivate = isegal
    
End Function

'Public Function Nature(segment As Integer) As String
'    Select Case segment
'    Case 0
'        Nature = "d'un réseau"
'    Case 1 To 254
'        Nature = "d'une carte réseau"
'    Case 255
'        Nature = "de Broadcast"
'    End Select
'End Function
Private Sub Exe_Click()
    Dim classe
    Dim ip_dec
    ip_dec = IP_Dec_01 & "." & IP_Dec_02 & "." & IP_Dec_03 & "." & IP_Dec_04
    ' Conversion de l'adresse Ip en binaire
    IP_Bin_01 = CBin(IP_Dec_01)
    IP_Bin_02 = CBin(IP_Dec_02)
    IP_Bin_03 = CBin(IP_Dec_03)
    IP_Bin_04 = CBin(IP_Dec_04)
    
    ' Conversion du masque de sous réseau en binaire
    MSR_Bin_01 = CBin(MSR_Dec_01)
    MSR_Bin_02 = CBin(MSR_Dec_02)
    MSR_Bin_03 = CBin(MSR_Dec_03)
    MSR_Bin_04 = CBin(MSR_Dec_04)
    
    ' pour les informations :
    ' pour la classe:
    ipn = CInt(IP_Dec_01)
    Select Case ipn
        Case 1 To 126
            classe = "A"
            cl_deb = "1.0.0.1"
            cl_fin = "126.0.0.254"
            nb_ordi_possible = 16777214
        Case 128 To 191
            classe = "B"
            cl_deb = "128.0.0.1"
            cl_fin = "191.0.0.254"
            nb_ordi_possible = 65534
         Case 192 To 223
            classe = "C"
            cl_deb = "192.0.0.1"
            cl_fin = "223.0.0.254"
            nb_ordi_possible = 254
      End Select
      
    ' Tableau contenant les adresses privés
    Dim TabAdPri()
    info = ""
   ' info = "Cette adresse est l'adresse " & Nature(IP_Dec_04) & "." & Chr(13)
    info = info & "Cette adresse IP est de classe " & classe & "." & Chr(13)
    info = info & FormatNumber(nb_ordi_possible, 0, 0, vbFalse) & " adresses maximum dans cette classe, "
    info = info & "dont les adresses vont de " & cl_deb & " à " & cl_fin & "." & Chr(13)
    privo = IsPrivate(IP_Dec_01, IP_Dec_02)
    If privo = True Then
        info = info & " C'est une adresse privée." & Chr(13)
    Else
        info = info & "C'est une adresse publique du réseau internet." & Chr(13)
    End If
End Sub
Public Function ClasseDe(ip_dec) As Integer
    Select Case ip_dec
        Case 1 To 126
            ClasseDe = "A"
        Case 128 To 191
            ClasseDe = "B"
        Case 192 To 223
            ClasseDe = "C"
    End Select
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.