Tarferi icon

Guessing EUD address

Tarferi | PRO | 10/07/18 01:49:40 PM UTC | 0 ⭐ | 915 👁️ | Never ⏰ | []
PHP |

2.32 KB

|

None

|

0 👍

/

0 👎

 
$fname = "_internal_database.txt";
 
function getPossibilities($arr, $addr)
{
    $res = array();
    foreach ($arr as $t) {
        if ($t["version"]["name"] == "1.16.1") {
            $curAddr = hexdec($t["address"]);
            $mod = $curAddr % 4;
            if ($addr >= $curAddr - $mod) {
                $res[$curAddr] = $t;
            }
        }
    }
    return $res;
}
 
function getActual($arr, $addr)
{
    foreach ($arr as $t) {
        $adr = hexdec($t["address"]);
        $size = $t["size"] * 1;
        $length = $t["length"] * 1;
        $ldr = $adr + ($size * $length);
        if ($addr >= $adr && $addr <= $ldr) {
            return $t;
        }
    }
    foreach ($arr as $t) {
        $adr = hexdec($t["address"]);
        $size = $t["size"] * 1;
        $length = $t["length"] * 1;
        $ldr = $adr + ($size * $length);
        $mod = $addr % 4;
        if ($addr >= $adr - $mod && $addr <= $ldr) {
            return $t;
        }
    }
    // Not direct hit
    return false;
}
 
if (isset($_GET["findPlayerID"])) {
    if(isset($_GET["isHexAddress"])) {
        $pid = ((hexdec($_GET["findPlayerID"]) * 1) / 4) - 1452249;;
    } else {
        $pid = $_GET["findPlayerID"] * 1;
    }
    $num = 1452249;
    $addr = 4 * ($pid + $num);
    $fc = json_decode(file_get_contents($fname), true);
    
    $candidate = false;
    foreach ($fc as $t) {
        if ($t["version"]["name"] == "1.16.1") {
            $adr = hexdec($t["address"]);
            $size = $t["size"] * 1;
            $length = $t["length"] * 1;
            if ($addr >= $adr) {
                $offset = ($addr - $addr) / $size;
                if ($offset < $length) {
                    $candidate = $t;
                    break;
                }
            }
        }
    }
    
    if ($candidate === false) {
        echo "<a href=\"/epd\">Back to main page</a><br />";
        die("Unable to determine the source!");
    }
    $offset = $addr - (hexdec($candidate["address"]));
    $oid = floor($offset / ($candidate["size"] * 1));
    $haddr = "00000000" . strtoupper(dechex($addr));
    $haddr = strrev(substr(strrev($haddr), 0, 8));
    
    $_GET["showadditional"] = array(
        $pid,
        $haddr,
        $oid
    );
    $_GET["details"] = $candidate["address"];
}

Comments