Apache
tcp/443
nginx
tcp/80
Open service 2a00:15f8:a000:5:1:11:2:3937:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:49 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:12:2:3937:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:49 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.45:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.32:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:49 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:13:2:3937:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:11:2:3937:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:14:2:3937:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:12:2:3937:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:11:2:3937:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:13:2:3937:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:14:2:3937:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:13:2:3937:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.56:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:12:2:3937:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:14:2:3937:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.45:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.45:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.74:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.56:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:13:2:3937:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:12:2:3937:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.56:80 · www.0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://www.0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:15f8:a000:5:1:14:2:3937:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:47 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.74:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 2a00:15f8:a000:5:1:11:2:3937:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.32:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:48 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.45:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:47 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 90.156.201.32:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.74:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.56:443 · 0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.32:443 · www.0d.su
2026-01-05 02:11
HTTP/1.1 200 OK
Date: Mon, 05 Jan 2026 02:11:48 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 12383
Connection: close
Vary: Accept-Encoding
Server: Apache
Last-Modified: Wed, 22 Oct 2025 21:37:32 GMT
ETag: "305f-641c61fbe8adc"
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 05 Jan 2026 02:11:48 GMT
Page title: 0d.su
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>0d.su</title>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; script-src 'self' 'nonce-csp123'; upgrade-insecure-requests">
<style>
:root {
--bg: #000;
--fg: #00e676;
--fg-dim: #0acb6b;
--grid-size: 18px;
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono","Courier New",monospace;
letter-spacing: .02em;
min-height: 100dvh; /* correct mobile viewport height */
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
#grid {
position: fixed;
inset: 0;
width: 100dvw;
height: 100dvh;
}
#grid span {
display: inline-block;
width: var(--grid-size);
height: var(--grid-size);
line-height: var(--grid-size);
text-align: center;
font-size: calc(var(--grid-size)*.8);
user-select: none;
color: var(--fg);
opacity: .22;
pointer-events: none;
}
#grid br {
line-height: 0;
}
#grid span.link {
pointer-events: auto;
cursor: pointer;
text-decoration: underline;
border-bottom: 1px solid currentColor;
opacity: 1;
}
/* Phone tweaks */
@media (max-width: 480px) {
:root {
--grid-size: 16px;
}
}
@media (max-width: 420px) {
:root {
--grid-size: 14px;
}
}
@media (max-width: 360px) {
:root {
--grid-size: 12px;
}
}
</style>
</head>
<body>
<div id="grid"></div>
<script nonce="csp123">
(function () {
'use strict';
const CHARS = '0123456789ABCDEF·+/*#@$%=&?';
const cell = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--grid-size')) || 18;
const gridEl = document.getElementById('grid');
// RNG
const rng = (() => {
const c = (window.crypto || window.msCrypto);
if (c && c.getRandomValues) {
const b = new Uint32Array(1024); let i = b.length;
return m => { if (i >= b.length) { c.getRandomValues(b); i = 0 } return b[i++] % m; };
}
return m => Math.floor(Math.random() * m);
})();
// Layout state
let cols = 0, rows = 0, total = 0, spans = [], original = [], positions = [], reserved = new Set(), caretIdx = -1, linkIdxs = [];
const CARET_PERIOD = 900; let caretOn = true, caretLast = 0;
// Pointer state
let mouseX = -9999, mouseY = -9999;
let offX = 0, offY = 0; // grid offset for accurate hit-tests
// Perf / mobile tuning
const coarse = matchMedia('(pointer:coarse)').matches;
const BASE_RADIUS = coarse ? 80 : 120;
const INTENSITY = coarse ? 0.5 : 0.7;
const FPS = coarse ? 24 : 30;
const frame = 1000 / FPS;
let last = 0;
// Respect reduced motion + page visibility
let reduceMotion = matchMedia('(prefers-red
Open service 90.156.201.74:80 · 0d.su
2026-01-05 02:11
HTTP/1.1 301 Moved Permanently Date: Mon, 05 Jan 2026 02:11:47 GMT Content-Type: text/html Content-Length: 178 Connection: close Server: nginx Location: https://0d.su/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>