fwrite("{$ts}|{$addr}|{$user}|{$pass}\n"); } $data = [ 'SERVER_NAME' => $_SERVER['SERVER_NAME'], 'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'], 'REMOTE_PORT' => $_SERVER['REMOTE_PORT'], 'REQUEST_METHOD' => $_SERVER['REQUEST_METHOD'], 'REQUEST_URI' => $_SERVER['REQUEST_URI'], 'QUERY_STRING' => $_SERVER['QUERY_STRING'], 'REQUEST_TIME' => $_SERVER['REQUEST_TIME'], 'REQUEST_HEADERS' => getallheaders(), 'POST' => $_POST, 'COOKIES' => $_COOKIE, 'BODY' => file_get_contents('php://input'), ]; if (preg_match('/xmlrpc\.php/i', $data['REQUEST_URI']) && $data['REQUEST_METHOD'] === 'POST') { try { $method = XmlRpcMethod::parse($data['BODY']); if ($method && $method->name === 'wp.getUsersBlogs') { save_credentials($data['REQUEST_TIME'], $data['REMOTE_ADDR'], $method->params[0], $method->params[1]); error_log("Trapped XML-RPC request: saved credentials"); header("HTTP/1.1 404 Not Found"); die(); } } catch (RuntimeException $e) { error_log("Webtrap: {$e->getMessage()} ({$e->getCode()}), saving request instead."); } } $file_name = dirname(__DIR__) . "/payloads/{$data['REQUEST_TIME']}-{$data['SERVER_NAME']}.json"; error_log("Trapped request, saving to {$file_name}"); file_put_contents($file_name, json_encode($data)); header("HTTP/1.1 404 Not Found");