begin process at 2012 05 27 22:05:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > CHECKSUMS ET IPV4

CHECKSUMS ET IPV4


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Débutant Date de création :17/06/2004 Date de mise à jour :17/06/2004 16:45:06 Vu :2 315

Auteur : Isoth0p

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Voici deux fonctions très simples :
- ip2checksum(): calcule la checksum d'une IP
- checksum2ip(): restrouve l'IP à partir de la checksum

Source

  • function ip_checksum($ip)
  • {
  • // Récupère les 4 segments de l'IP
  • $seg = explode('.', $ip);
  • // Calcule la checksum
  • $ret = 0;
  • $ret += ( $seg[0] * pow(256, 3) ) ;
  • $ret += ( $seg[1] * pow(256, 2) ) ;
  • $ret += ( $seg[2] * pow(256, 1) ) ;
  • $ret += ( $seg[3] * pow(256, 0) ) ;
  • return $ret;
  • }
  • function checksum2ip($checksum)
  • {
  • // Vérifie qu'il s'agit bien d'une chaine de chiffres
  • if(!ereg('^[[:digit:]]+$', $checksum))
  • return false;
  • $seq = array();
  • // Convertit la chaine en hexadecimal
  • $checksum = base_convert($checksum, 10, 16);
  • // Vérifie que la checksum pourra bien etre resituée en IP
  • if(strlen($checksum) != 8)
  • return false;
  • // Récupération des segments puis reconvertion en décimal
  • $seq[] = base_convert(substr($checksum, 0, 2), 16, 10);
  • $seq[] = base_convert(substr($checksum, 2, 2), 16, 10);
  • $seq[] = base_convert(substr($checksum, 4, 2), 16, 10);
  • $seq[] = base_convert(substr($checksum, 6, 2), 16, 10);
  • // Formattage de l'IPv4
  • return printf('%s.%s.%s.%s', $seq[0], $seq[1], $seq[2], $seq[3]);
  • }
function ip_checksum($ip)
{
    // Récupère les 4 segments de l'IP
    $seg = explode('.', $ip);

    // Calcule la checksum
    $ret = 0;
    $ret += ( $seg[0] * pow(256, 3) ) ;
    $ret += ( $seg[1] * pow(256, 2) ) ;
    $ret += ( $seg[2] * pow(256, 1) ) ;
    $ret += ( $seg[3] * pow(256, 0) ) ;

    return $ret;
}


function checksum2ip($checksum)
{
    // Vérifie qu'il s'agit bien d'une chaine de chiffres
    if(!ereg('^[[:digit:]]+$', $checksum))
        return false;

    $seq = array();

    // Convertit la chaine en hexadecimal
    $checksum = base_convert($checksum, 10, 16);

    // Vérifie que la checksum pourra bien etre resituée en IP
    if(strlen($checksum) != 8)
        return false; 

    // Récupération des segments puis reconvertion en décimal
    $seq[] = base_convert(substr($checksum, 0, 2), 16, 10);
    $seq[] = base_convert(substr($checksum, 2, 2), 16, 10);
    $seq[] = base_convert(substr($checksum, 4, 2), 16, 10);
    $seq[] = base_convert(substr($checksum, 6, 2), 16, 10);

    // Formattage de l'IPv4	
    return printf('%s.%s.%s.%s', $seq[0], $seq[1], $seq[2], $seq[3]);
}

 Conclusion

Rien de bien compliqué.
Je ne prends pas la peine de commenter le code parfaitement.


 Sources du même auteur

[PHP4] AJOUTER UN COPYRIGHT DANS UNE IMAGE - CLASS ADDCOPYR...
ALGORITHME DE CRYPTAGE SIMPLE

 Sources de la même categorie

INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836
Source avec Zip Source avec une capture GÉOLOCALISATION par pgl10
Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj

Commentaires et avis

Commentaire de Mechanicman le 17/06/2004 20:00:25

cool...par contre je vois le but...peut tu m'éclairer? Ce serait bien qu'il supporte IPv6...

Commentaire de Isoth0p le 18/06/2004 12:21:42

Bah ... dans le IP header, pour les raw sockets par exemple, la checksum de l'IP doit etre founie. De plus il est assez courant de tomber sur des checksums d'IP dans un réseau, et ce script est donc une petite astuce pour la résoudre :)

Commentaire de matrey le 21/06/2004 10:23:53

çà m'est très utile en tt cas ! merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales