현재 위치: > 최신 기사 목록> hexdec을 사용하여 네트워크 패킷에서 육각 헤더 정보를 해독합니다.

hexdec을 사용하여 네트워크 패킷에서 육각 헤더 정보를 해독합니다.

gitbox 2025-05-31

HEXDEC 기능 소개

PHP의 HEXDEC 함수는 HEX 문자열 매개 변수를 사용하여 해당 소수 정수를 반환합니다. 예를 들어:

 $port = hexdec("1F90"); // 반품8080

이 기능은 일부 프로토콜 헤더의 TCP/UDP 포트 번호, IP 주소 또는 플래그 비트와 같은 필드를 구문 분석하는 데 이상적입니다.


예 : 구문 분석 사용자 정의 프로토콜 헤더

다음과 같이 헤더가 16 진 양식으로 표시되는 네트워크 패킷이 있다고 가정합니다.

 47 42 01 00 1F 90 00 50

정의는 다음과 같습니다.

  • 바이트 0-1 : 프로토콜 식별자 (ASCII 문자)

  • 바이트 2 : 버전 번호

  • 바이트 3 : 예약 비트

  • 바이트 4-5 : 소스 포트

  • 바이트 6-7 : 대상 포트

PHP를 사용 하여이 헤더 정보를 구문 분석하기를 희망합니다.

 $hexString = "474201001F900050";

// 두 문자로 1 바이트 바이트로 자릅니다
$bytes = str_split($hexString, 2);

// 프로토콜 식별자(캐릭터로 변환하십시오)
$protocol = chr(hexdec($bytes[0])) . chr(hexdec($bytes[1]));

// 버전 번호
$version = hexdec($bytes[2]);

// 소스 포트(바이트4-5,하나로 결합하십시오16비트 수)
$sourcePort = hexdec($bytes[4] . $bytes[5]);

// 목적지 포트(바이트6-7)
$destPort = hexdec($bytes[6] . $bytes[7]);

echo "규약: $protocol\n";
echo "버전: $version\n";
echo "소스 포트: $sourcePort\n";
echo "목적지 포트: $destPort\n";

출력 결과는 다음과 같습니다.

 규약: GB
버전: 1
소스 포트: 8080
목적지 포트: 80

실제 시나리오에 적용됩니다

예를 들어, gitbox.net 의 네트워크 프로브 인터페이스에서 RAW 패킷을 가져 오며, 이는 16 진 양식으로 반환됩니다. 다음 방법을 사용하여 처리 할 수 ​​있습니다.

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

// 그런 다음 사용하십시오 hexdec 필드 별 분석

주목해야 할 것

  • HEXDEC 의 매개 변수는 "0x"로 시작할 필요가 없습니다.

  • 바이트 스트림을 다루는 경우 바이트 순서 (Big Endian 또는 Small Endian)가 구문 분석 결과에 영향을 줄 수 있습니다.

  • 긴 정수 필드 (예 : IPv6 주소의 필드와 같은)의 경우, HEXDEC는 변환 후 정수 범위를 벗어 났을 수 있으며, 이는 많은 수를 처리하기 위해 GMP 또는 BC 수학 확장이 필요합니다.