PHP 编码和解码

PHP Encoding and Decode

我有一段 php 编码代码,但我不知道它是如何编码的 我的意思是为什么当我使用 unphp.net 成功解码代码并得到真正的代码 简单的编码代码 define("\x53\x54733\x5f3\x485\x433", false) 我的问题是我如何将另一个代码编码成这样以及它为什么被编码请任何有知识的人告诉我或知道任何建议的工具

我需要更多信息才能辨别实际使用什么混淆器对其进行编码,但对于这个特定的字符串,它似乎是十六进制和八进制编码字母的混合

"\x53\x54733\x5f3\x485\x433"
  • \xFF - 十六进制
  • \000 - 八进制

上面的序列编码如下(其中x是十六进制,8是八进制):xx888x8x8x8

这个顺序可能是随机的,也可能是故意的。假设它是随机的,可以使用以下函数以类似的方式对任何字符串进行编码,使用 random_int() 随机选择编码方法。

<?php
function hex_octal_rand_encode($s) {
  $result = '';

  foreach (str_split($s) as $c) {
    $d = ord($c);

    // select encoding method at random (0 = hex, 1 = oct)
    $result .= (random_int(0, 1) === 0)
                ? '\x' . dechex($d)
                : '\'  . decoct($d);
  }

  return $result;
}

// Test
$input = "STOCK_CHECK";

$encoded = hex_octal_rand_encode($input);
echo sprintf("Encoded: %s\n", $encoded);

$cmd = sprintf('return "%s";', $encoded);
echo sprintf("Decoded: %s\n", eval($cmd));
?>

示例输出(注意编码值的变化):

Encoded: \x53\x5473\x4b7\x43\x48\x45\x43\x4b
Decoded: STOCK_CHECK
Encoded: \x534\x4f\x433\x5f\x430\x45\x43\x4b
Decoded: STOCK_CHECK
Encoded: 34\x4f\x4337\x43\x485\x433
Decoded: STOCK_CHECK