Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Hexdec, um die HEX -Header -Informationen in Netzwerkpaketen zu dekodieren

Verwenden Sie Hexdec, um die HEX -Header -Informationen in Netzwerkpaketen zu dekodieren

gitbox 2025-05-31

Einführung in die HexDec -Funktion

Die HexDEC -Funktion von PHP nimmt einen HEX -String -Parameter aus und gibt ihre entsprechende Dezimalbezahlung zurück. Zum Beispiel:

 $port = hexdec("1F90"); // zurückkehren8080

Diese Funktion ist ideal, um ein Feld wie die TCP/UDP -Portnummer, die IP -Adresse oder die Flag -Bits in einigen Protokollheadern zu analysieren.


Beispiel: Analysieren Sie den benutzerdefinierten Protokollheader

Angenommen, wir haben ein Netzwerkpaket, dessen Header wie folgt in hexadezimaler Form dargestellt ist:

 47 42 01 00 1F 90 00 50

Die Definitionen sind wie folgt:

  • Byte 0-1: Protokollerkennung (ASCII-Zeichen)

  • Byte 2: Versionsnummer

  • Byte 3: Reserviertes Bit

  • Byte 4-5: Quellport

  • Byte 6-7: Zielport

Wir hoffen, PHP zu verwenden, um diese Header -Informationen zu analysieren:

 $hexString = "474201001F900050";

// Schneiden Sie in einem Byte -Byte durch zwei Zeichen
$bytes = str_split($hexString, 2);

// Protokollerkennung(In Zeichen konvertieren)
$protocol = chr(hexdec($bytes[0])) . chr(hexdec($bytes[1]));

// Versionsnummer
$version = hexdec($bytes[2]);

// Quellport(Byte4-5,Kombinieren zu einem16Anzahl der Bits)
$sourcePort = hexdec($bytes[4] . $bytes[5]);

// Zielanschluss(Byte6-7)
$destPort = hexdec($bytes[6] . $bytes[7]);

echo "Protokoll: $protocol\n";
echo "Version: $version\n";
echo "Quellport: $sourcePort\n";
echo "Zielanschluss: $destPort\n";

Das Ausgangsergebnis ist:

 Protokoll: GB
Version: 1
Quellport: 8080
Zielanschluss: 80

Auf tatsächliche Szenarien angewendet

Sie holen beispielsweise ein Rohpaket von einer Netzwerksondenschnittstelle auf Gitbox.net , das in hexadezimaler Form zurückgegeben wird. Sie können es mit der folgenden Methode verarbeiten:

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

// Dann verwenden hexdec Feld-für-Feld-Analyse

Dinge zu beachten

  • Der Parameter von HexDEC muss nicht mit "0x" beginnen.

  • Wenn Sie mit einem Byte -Stream zu tun haben, beachten Sie bitte, dass die Byte -Bestellung (Big Endian oder Small Endian) die Analyseergebnisse beeinflussen kann.

  • Für lange Ganzzahlfelder (z. B. Felder in IPv6 -Adressen) kann HEXDEC nach der Konvertierung nicht mehr integer sein, für die GMP- oder BC -Mathematik -Erweiterung erforderlich ist, um große Zahlen zu verarbeiten.