<?php
@unlink('update_antibot.php');

function __getRandomHexString($length = 64)
    {
        if (!__wa_is_int($length) || $length <= 0) {
            $length = 64;
        }

        // we will bin2hex and byte is 2 hex digit, so make a little correction and than, before method returns, make correction back
        $is_even = $length % 2 === 0;
        if (!$is_even) {
            $length += 1;
        }

        if (function_exists('random_bytes')) {
            try {

                $result = bin2hex(random_bytes($length / 2));

                // make a correction back
                if (!$is_even) {
                    $result = substr($result, 1);
                }

                return $result;
            } catch (Exception $e) {
            }
        }

        if (function_exists('openssl_random_pseudo_bytes')) {
            $result = openssl_random_pseudo_bytes($length / 2);
            if ($result) {
                $result = bin2hex($result);

                // make a correction back
                if (!$is_even) {
                    $result = substr($result, 1);
                }

                return $result;
            }
        }

        $bytes = [];
        if (function_exists('random_int')) {
            $fn = 'random_int';
        } elseif (function_exists('mt_rand')) {
            $fn = 'mt_rand';
        } else {
            $fn = 'rand';
        }

        for ($i = 0, $n = $length / 2; $i < $n; $i++) {
            $bytes[] = chr($fn(0, 255));   // gen one byte
        }

        $bytes = join('',$bytes);

        $result = bin2hex($bytes);

        // make a correction back
        if (!$is_even) {
            $result = substr($result, 1);
        }

        return $result;
}

function __wa_is_int($val)
{
    // check against objects to avoid nasty object to int conversion errors
    if (!is_numeric($val)) {
        return false;
    }
    // Test for very large integers
    if (function_exists('ctype_digit')) {
        $val = (string) $val;
        if (ctype_digit($val)) {
            return true;
        } else if ($val && $val[0] == '-' && ctype_digit(substr($val, 1))) {
            return true;
        }
    }
    // typecast trick works fine for anything else except boolean true
    return ($val !== true) && ((string)(int) $val) === ((string) $val);
}

$empty_field_name = serialize('!f'. __getRandomHexString(6));
$filled_field_name = serialize('!f'. __getRandomHexString(6));
$filled_field_value = serialize(__getRandomHexString(32));

echo '<empty_field_name>'.$empty_field_name.'</empty_field_name>';
echo '<filled_field_name>'.$filled_field_name.'</filled_field_name>';
echo '<filled_field_value>'.$filled_field_value.'</filled_field_value>';

?>
