AmazonS3
tcp/443
CloudFront
tcp/80
Open service 18.172.112.108:80 · ua-static.com
2025-12-22 05:10
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 05:10:22 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://ua-static.com/ X-Cache: Redirect from cloudfront Via: 1.1 fd9d525f4633063393693172d96013ca.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P8 Alt-Svc: h3=":443"; ma=86400 X-Amz-Cf-Id: 4W1BU2nDMMt7ut5ycPr-knpTAkQmKRCwaOkBH0S5F1EbLjBy18s5LQ== Vary: Origin Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.172.112.96:80 · ua-static.com
2025-12-22 05:10
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 05:10:23 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://ua-static.com/ X-Cache: Redirect from cloudfront Via: 1.1 1fa5d8f57b04797d33d03ff93cb7543e.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P8 Alt-Svc: h3=":443"; ma=86400 X-Amz-Cf-Id: 3L3nDMfnz5bVP8jtleZ-RVQfbNlnZoS9ybGELzM01vOMVb7mTy6Ndw== Vary: Origin Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.172.112.27:443 · ua-static.com
2025-12-22 05:10
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 6884
Connection: close
Date: Mon, 22 Dec 2025 05:10:23 GMT
Last-Modified: Fri, 12 Dec 2025 17:57:47 GMT
ETag: "ac6bc6c4c3c31e6f28edd0cfe38d3ab7"
x-amz-server-side-encryption: AES256
x-amz-version-id: wNIqtDBuFgRYolpnEVcaf6vO1lU3zpqd
Accept-Ranges: bytes
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 65f647a85e0d39dc9a468588d0d66886.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P8
Alt-Svc: h3=":443"; ma=86400
X-Amz-Cf-Id: 6DbdJiiZwbLWvbiAf1wIUc--jE825CE5kaTJoBmSFSaMlPRgeleoeg==
Vary: Origin
Page title: Game Launcher
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1, width=device-width" />
<title>Game Launcher</title>
<link href="favicon.ico" rel="icon" type="image/x-icon">
<style>
body {
margin: 0;
}
/* Черный фон по умолчанию */
#auth-wrapper {
background-color: black;
color: white; /* Чтобы текст был виден на черном фоне */
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* Высота экрана */
}
/* Прячем кнопку авторизации по умолчанию */
#auth-button {
display: none;
text-align: center; /* Центрируем текст в блоке */
}
.footer {
position: absolute;
bottom: 30px;
right: 10px;
font-size: 12pt;
color: #544;
height: 30px;
width: 96%;
text-align: right;
}
</style>
<script>
function loadContent(token) {
let xhr = new XMLHttpRequest();
xhr.open("POST", "https://uh9vuic81e.execute-api.eu-central-1.amazonaws.com/auth");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ token: token }));
xhr.onload = () => {
// If text is html and not an error
if (/<\/?[a-z][\s\S]*>/i.test(xhr.responseText)) {
replaceHTML();
localStorage.setItem('authToken', JSON.stringify({
token, timestamp: new Date().getTime()
}));
} else {
window.location.reload();
}
}
}
function base64UrlDecode(str) {
// Преобразуем из Base64Url в стандартную Base64
let base64 = str.replace(/-/g, '+').replace(/_/g, '/');
// Добавляем символы заполнения `=` для соответствия Base64 формату
switch (base64.length % 4) {
case 2: base64 += '=='; break;
case 3: base64 += '='; break;
}
return atob(base64); // Декодируем строку
}
function isTokenExpired(token) {
try {
const parts = token.split('.');
if (parts.length !== 3) {
throw new Error('Invalid token format');
}
// Декодируем вторую часть JWT-токена (payload) с использованием base64UrlDecode
const payload = JSON.parse(base64UrlDecode(parts[1]));
const currentTime = Math.floor(Date.now() / 1000); // Текущее время в секундах
// Проверяем, истек ли срок действия токена
return payload.exp < currentTime;
} catch (error) {
console.error('Ошибка при проверке токена:', error);
return true; // Если произошла ошибка, считаем, что токен истек
}
}
function handleCredentialResponse(response) {
// Декодируем токен, чтобы получить имя пользователя
const payload = JSON.parse(base64UrlDecode(response.credential.split('.')[1]));
const userName = payload.name; // Получаем имя пользователя
// Создаем текстовый узел с приветствием
var usertext = document.createTextNode(`Hello, ${userName}`);
document.body.appendChild(usertext); // Добавляем приветстви
Open service 18.172.112.49:80 · ua-static.com
2025-12-22 05:10
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 05:10:22 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://ua-static.com/ X-Cache: Redirect from cloudfront Via: 1.1 7b2737d1601ba8c676e6f68b6aa113d8.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P8 Alt-Svc: h3=":443"; ma=86400 X-Amz-Cf-Id: aEjKE-RVSZ0itmS-NzF7tkZPdJ1EbeBgLJFqqgHf0IIDhNFK46CBOQ== Vary: Origin Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.172.112.49:443 · ua-static.com
2025-12-22 05:10
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 6884
Connection: close
Date: Mon, 22 Dec 2025 05:10:24 GMT
Last-Modified: Fri, 12 Dec 2025 17:57:47 GMT
ETag: "ac6bc6c4c3c31e6f28edd0cfe38d3ab7"
x-amz-server-side-encryption: AES256
x-amz-version-id: wNIqtDBuFgRYolpnEVcaf6vO1lU3zpqd
Accept-Ranges: bytes
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 725f43139b6c583d9defb7c5029a8928.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P8
Alt-Svc: h3=":443"; ma=86400
X-Amz-Cf-Id: rUJh3ExgODUkBWYAjt6KclFrV4WwPRsFsa0DpotS8hnL80-wLHoU5w==
Vary: Origin
Page title: Game Launcher
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1, width=device-width" />
<title>Game Launcher</title>
<link href="favicon.ico" rel="icon" type="image/x-icon">
<style>
body {
margin: 0;
}
/* Черный фон по умолчанию */
#auth-wrapper {
background-color: black;
color: white; /* Чтобы текст был виден на черном фоне */
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* Высота экрана */
}
/* Прячем кнопку авторизации по умолчанию */
#auth-button {
display: none;
text-align: center; /* Центрируем текст в блоке */
}
.footer {
position: absolute;
bottom: 30px;
right: 10px;
font-size: 12pt;
color: #544;
height: 30px;
width: 96%;
text-align: right;
}
</style>
<script>
function loadContent(token) {
let xhr = new XMLHttpRequest();
xhr.open("POST", "https://uh9vuic81e.execute-api.eu-central-1.amazonaws.com/auth");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ token: token }));
xhr.onload = () => {
// If text is html and not an error
if (/<\/?[a-z][\s\S]*>/i.test(xhr.responseText)) {
replaceHTML();
localStorage.setItem('authToken', JSON.stringify({
token, timestamp: new Date().getTime()
}));
} else {
window.location.reload();
}
}
}
function base64UrlDecode(str) {
// Преобразуем из Base64Url в стандартную Base64
let base64 = str.replace(/-/g, '+').replace(/_/g, '/');
// Добавляем символы заполнения `=` для соответствия Base64 формату
switch (base64.length % 4) {
case 2: base64 += '=='; break;
case 3: base64 += '='; break;
}
return atob(base64); // Декодируем строку
}
function isTokenExpired(token) {
try {
const parts = token.split('.');
if (parts.length !== 3) {
throw new Error('Invalid token format');
}
// Декодируем вторую часть JWT-токена (payload) с использованием base64UrlDecode
const payload = JSON.parse(base64UrlDecode(parts[1]));
const currentTime = Math.floor(Date.now() / 1000); // Текущее время в секундах
// Проверяем, истек ли срок действия токена
return payload.exp < currentTime;
} catch (error) {
console.error('Ошибка при проверке токена:', error);
return true; // Если произошла ошибка, считаем, что токен истек
}
}
function handleCredentialResponse(response) {
// Декодируем токен, чтобы получить имя пользователя
const payload = JSON.parse(base64UrlDecode(response.credential.split('.')[1]));
const userName = payload.name; // Получаем имя пользователя
// Создаем текстовый узел с приветствием
var usertext = document.createTextNode(`Hello, ${userName}`);
document.body.appendChild(usertext); // Добавляем приветстви
Open service 18.172.112.27:80 · ua-static.com
2025-12-22 05:10
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 05:10:22 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://ua-static.com/ X-Cache: Redirect from cloudfront Via: 1.1 1fa1c6285afcbdedfbb042a0993ed182.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P8 Alt-Svc: h3=":443"; ma=86400 X-Amz-Cf-Id: sLoOUocNh_RhDsukOlTxY4fzdiDVH9872eD7rjPe7KKFem0u3WMK9g== Vary: Origin Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 18.172.112.108:443 · ua-static.com
2025-12-22 05:10
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 6884
Connection: close
Date: Mon, 22 Dec 2025 05:10:23 GMT
Last-Modified: Fri, 12 Dec 2025 17:57:47 GMT
ETag: "ac6bc6c4c3c31e6f28edd0cfe38d3ab7"
x-amz-server-side-encryption: AES256
x-amz-version-id: wNIqtDBuFgRYolpnEVcaf6vO1lU3zpqd
Accept-Ranges: bytes
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 10f6ed997c15c1439b3ae1db258c7d16.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P8
Alt-Svc: h3=":443"; ma=86400
X-Amz-Cf-Id: cpScckWVMI7ld9Hy04y_GIfF3KZi1s9Z-NmaRvizSfeXK87uq6GvWQ==
Vary: Origin
Page title: Game Launcher
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1, width=device-width" />
<title>Game Launcher</title>
<link href="favicon.ico" rel="icon" type="image/x-icon">
<style>
body {
margin: 0;
}
/* Черный фон по умолчанию */
#auth-wrapper {
background-color: black;
color: white; /* Чтобы текст был виден на черном фоне */
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* Высота экрана */
}
/* Прячем кнопку авторизации по умолчанию */
#auth-button {
display: none;
text-align: center; /* Центрируем текст в блоке */
}
.footer {
position: absolute;
bottom: 30px;
right: 10px;
font-size: 12pt;
color: #544;
height: 30px;
width: 96%;
text-align: right;
}
</style>
<script>
function loadContent(token) {
let xhr = new XMLHttpRequest();
xhr.open("POST", "https://uh9vuic81e.execute-api.eu-central-1.amazonaws.com/auth");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ token: token }));
xhr.onload = () => {
// If text is html and not an error
if (/<\/?[a-z][\s\S]*>/i.test(xhr.responseText)) {
replaceHTML();
localStorage.setItem('authToken', JSON.stringify({
token, timestamp: new Date().getTime()
}));
} else {
window.location.reload();
}
}
}
function base64UrlDecode(str) {
// Преобразуем из Base64Url в стандартную Base64
let base64 = str.replace(/-/g, '+').replace(/_/g, '/');
// Добавляем символы заполнения `=` для соответствия Base64 формату
switch (base64.length % 4) {
case 2: base64 += '=='; break;
case 3: base64 += '='; break;
}
return atob(base64); // Декодируем строку
}
function isTokenExpired(token) {
try {
const parts = token.split('.');
if (parts.length !== 3) {
throw new Error('Invalid token format');
}
// Декодируем вторую часть JWT-токена (payload) с использованием base64UrlDecode
const payload = JSON.parse(base64UrlDecode(parts[1]));
const currentTime = Math.floor(Date.now() / 1000); // Текущее время в секундах
// Проверяем, истек ли срок действия токена
return payload.exp < currentTime;
} catch (error) {
console.error('Ошибка при проверке токена:', error);
return true; // Если произошла ошибка, считаем, что токен истек
}
}
function handleCredentialResponse(response) {
// Декодируем токен, чтобы получить имя пользователя
const payload = JSON.parse(base64UrlDecode(response.credential.split('.')[1]));
const userName = payload.name; // Получаем имя пользователя
// Создаем текстовый узел с приветствием
var usertext = document.createTextNode(`Hello, ${userName}`);
document.body.appendChild(usertext); // Добавляем приветстви
Open service 18.172.112.96:443 · ua-static.com
2025-12-22 05:10
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 6884
Connection: close
Date: Mon, 22 Dec 2025 05:10:23 GMT
Last-Modified: Fri, 12 Dec 2025 17:57:47 GMT
ETag: "ac6bc6c4c3c31e6f28edd0cfe38d3ab7"
x-amz-server-side-encryption: AES256
x-amz-version-id: wNIqtDBuFgRYolpnEVcaf6vO1lU3zpqd
Accept-Ranges: bytes
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 67697a0060e2336f6ffa8579d528820e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P8
Alt-Svc: h3=":443"; ma=86400
X-Amz-Cf-Id: zBvgoRp8BLK3_qE1VbV5DHmHk8i6QPmRjBbyhI7avEFt597jBbRIPg==
Vary: Origin
Page title: Game Launcher
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1, width=device-width" />
<title>Game Launcher</title>
<link href="favicon.ico" rel="icon" type="image/x-icon">
<style>
body {
margin: 0;
}
/* Черный фон по умолчанию */
#auth-wrapper {
background-color: black;
color: white; /* Чтобы текст был виден на черном фоне */
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* Высота экрана */
}
/* Прячем кнопку авторизации по умолчанию */
#auth-button {
display: none;
text-align: center; /* Центрируем текст в блоке */
}
.footer {
position: absolute;
bottom: 30px;
right: 10px;
font-size: 12pt;
color: #544;
height: 30px;
width: 96%;
text-align: right;
}
</style>
<script>
function loadContent(token) {
let xhr = new XMLHttpRequest();
xhr.open("POST", "https://uh9vuic81e.execute-api.eu-central-1.amazonaws.com/auth");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ token: token }));
xhr.onload = () => {
// If text is html and not an error
if (/<\/?[a-z][\s\S]*>/i.test(xhr.responseText)) {
replaceHTML();
localStorage.setItem('authToken', JSON.stringify({
token, timestamp: new Date().getTime()
}));
} else {
window.location.reload();
}
}
}
function base64UrlDecode(str) {
// Преобразуем из Base64Url в стандартную Base64
let base64 = str.replace(/-/g, '+').replace(/_/g, '/');
// Добавляем символы заполнения `=` для соответствия Base64 формату
switch (base64.length % 4) {
case 2: base64 += '=='; break;
case 3: base64 += '='; break;
}
return atob(base64); // Декодируем строку
}
function isTokenExpired(token) {
try {
const parts = token.split('.');
if (parts.length !== 3) {
throw new Error('Invalid token format');
}
// Декодируем вторую часть JWT-токена (payload) с использованием base64UrlDecode
const payload = JSON.parse(base64UrlDecode(parts[1]));
const currentTime = Math.floor(Date.now() / 1000); // Текущее время в секундах
// Проверяем, истек ли срок действия токена
return payload.exp < currentTime;
} catch (error) {
console.error('Ошибка при проверке токена:', error);
return true; // Если произошла ошибка, считаем, что токен истек
}
}
function handleCredentialResponse(response) {
// Декодируем токен, чтобы получить имя пользователя
const payload = JSON.parse(base64UrlDecode(response.credential.split('.')[1]));
const userName = payload.name; // Получаем имя пользователя
// Создаем текстовый узел с приветствием
var usertext = document.createTextNode(`Hello, ${userName}`);
document.body.appendChild(usertext); // Добавляем приветстви