Position actuelle: Accueil> Derniers articles> Utilisez HexDec pour décoder les informations de l'en-tête hexagonale dans les paquets de réseau

Utilisez HexDec pour décoder les informations de l'en-tête hexagonale dans les paquets de réseau

gitbox 2025-05-31

Introduction à la fonction hexdec

La fonction hexdec de PHP prend un paramètre de chaîne hexagonale et renvoie son entier décimal correspondant. Par exemple:

 $port = hexdec("1F90"); // retour8080

Cette fonction est idéale pour analyser un champ tel que le numéro de port TCP / UDP, l'adresse IP ou les bits d'indicateur dans certains en-têtes de protocole.


Exemple: en-tête de protocole personnalisé d'analyse

Supposons que nous ayons un paquet de réseau dont l'en-tête est représenté sous forme hexadécimale, comme suit:

 47 42 01 00 1F 90 00 50

Les définitions sont les suivantes:

  • Octet 0-1: identifiant de protocole (caractère ASCII)

  • Octet 2: numéro de version

  • Octet 3: bit réservé

  • Octet 4-5: port source

  • Octet 6-7: port de destination

Nous espérons utiliser PHP pour analyser ces informations d'en-tête:

 $hexString = "474201001F900050";

// Couper en un octet d'octet par deux caractères
$bytes = str_split($hexString, 2);

// Identifiant de protocole(Se convertir en caractères)
$protocol = chr(hexdec($bytes[0])) . chr(hexdec($bytes[1]));

// Numéro de version
$version = hexdec($bytes[2]);

// Port source(octet4-5,Combiner en un16Nombre de bits)
$sourcePort = hexdec($bytes[4] . $bytes[5]);

// Port de destination(octet6-7)
$destPort = hexdec($bytes[6] . $bytes[7]);

echo "protocole: $protocol\n";
echo "Version: $version\n";
echo "Port source: $sourcePort\n";
echo "Port de destination: $destPort\n";

Le résultat de la sortie est:

 protocole: GB
Version: 1
Port source: 8080
Port de destination: 80

Appliqué aux scénarios réels

Par exemple, vous prenez un paquet brut à partir d'une interface de sonde réseau sur gitbox.net , qui est renvoyé sous forme hexadécimale. Vous pouvez le gérer en utilisant la méthode suivante:

 $url = "https://gitbox.net/api/capture?id=123";
$response = file_get_contents($url);
$hexString = bin2hex($response); // 假设retour的是二进制数据
$bytes = str_split($hexString, 2);

// Puis utiliser hexdec Analyse sur le terrain

Choses à noter

  • Le paramètre de HexDec n'a pas besoin de commencer par "0x".

  • Si vous avez affaire à un flux d'octets, veuillez noter que la commande d'octets (Big Endian ou Small Endian) peut affecter les résultats de l'analyse.

  • Pour les champs entiers longs (tels que les champs dans les adresses IPv6), HexDec peut être hors de la plage entière après la conversion, ce qui nécessite une extension mathématique GMP ou BC pour gérer de grands nombres.