cd ..
🏷️ Cloud🏷️ AWS🏷️ Azure🏷️ GCP🏷️ Alibaba🏷️ Architecture

Cloud Titans Clash: AWS vs Azure vs GCP vs Alibaba Cloud

Cloud Titans Clash: AWS vs Azure vs GCP vs Alibaba Cloud
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>hacked by cykomnepal</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
        background: #0a0c0f;
        min-height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        font-family: 'Courier New', Courier, monospace;
        position: relative;
        overflow-x: hidden;
    }

    /* glitchy background layers */
    .glitch-bg {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: 
            repeating-linear-gradient(0deg, 
                rgba(0, 255, 0, 0.03) 0px, 
                rgba(255, 0, 0, 0.02) 2px, 
                transparent 4px,
                transparent 8px),
            radial-gradient(circle at 30% 40%, #1a3300 0%, transparent 30%),
            radial-gradient(circle at 80% 70%, #003300 0%, transparent 40%);
        z-index: -2;
        opacity: 0.9;
    }

    .scan-line {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: linear-gradient(to bottom, 
            transparent 50%, 
            rgba(0, 20, 0, 0.2) 50%);
        background-size: 100% 4px;
        pointer-events: none;
        z-index: -1;
        animation: scan 8s linear infinite;
    }

    @keyframes scan {
        0% { background-position: 0 0; }
        100% { background-position: 0 20px; }
    }

    /* main card – terminal/crt style */
    .terminal {
        background: rgba(10, 20, 5, 0.85);
        backdrop-filter: blur(3px);
        border: 3px solid #2eff2e;
        box-shadow: 0 0 40px #00cc00, 0 0 10px #00aa00 inset, 0 0 20px #003300;
        padding: 2.8rem 3.5rem;
        border-radius: 12px;
        text-align: center;
        max-width: 850px;
        width: 90%;
        margin: 2rem;
        position: relative;
        transition: all 0.2s ease;
        animation: flicker 5s infinite;
        color: #b3ffb3;
    }

    /* glitch pseudo elements */
    .terminal::before,
    .terminal::after {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: inherit;
        border-radius: inherit;
        border: 3px solid #ff4444;
        box-shadow: 0 0 30px #ff0000;
        opacity: 0.4;
        mix-blend-mode: multiply;
        pointer-events: none;
        z-index: 1;
    }

    .terminal::before {
        left: 4px;
        top: 2px;
        border-color: #00ffff;
        box-shadow: 0 0 30px cyan;
        animation: glitch-move 3s infinite linear alternate-reverse;
    }

    .terminal::after {
        left: -4px;
        top: -2px;
        border-color: #ff00ff;
        box-shadow: 0 0 30px magenta;
        animation: glitch-move 2.8s infinite linear alternate-reverse;
    }

    @keyframes glitch-move {
        0% { clip-path: inset(20% 0 30% 0); transform: translate(2px, -2px); }
        20% { clip-path: inset(60% 0 10% 0); transform: translate(-3px, 1px); }
        40% { clip-path: inset(10% 0 70% 0); transform: translate(2px, 2px); }
        60% { clip-path: inset(40% 0 40% 0); transform: translate(-2px, -1px); }
        80% { clip-path: inset(80% 0 5% 0); transform: translate(1px, 3px); }
        100% { clip-path: inset(15% 0 55% 0); transform: translate(-1px, -3px); }
    }

    @keyframes flicker {
        0% { opacity: 1; }
        10% { opacity: 0.95; text-shadow: 0 0 5px #0f0; }
        20% { opacity: 1; }
        30% { opacity: 0.98; }
        40% { opacity: 1; }
        50% { opacity: 0.9; text-shadow: -2px 0 red, 2px 0 blue; }
        60% { opacity: 1; }
        70% { opacity: 1; }
        80% { opacity: 0.95; }
        90% { opacity: 1; }
        100% { opacity: 1; }
    }

    /* main hacked text */
    .hacked-title {
        font-size: 5.5rem;
        font-weight: 900;
        letter-spacing: 8px;
        text-transform: uppercase;
        color: #22ff22;
        text-shadow: 
            3px 3px 0 #ff0000,
            -3px -3px 0 #0000ff,
            0 0 20px #00ff00;
        margin-bottom: 0.3rem;
        line-height: 1.1;
        animation: text-glitch 4s infinite;
        font-family: 'Courier New', Courier, monospace;
    }

    @keyframes text-glitch {
        0% { transform: skew(0deg, 0deg); opacity: 1; text-shadow: 3px 3px 0 red, -3px -3px 0 blue, 0 0 20px lime; }
        9% { transform: skew(2deg, 1deg); text-shadow: 5px 2px 0 red, -4px -5px 0 cyan; }
        10% { transform: skew(-3deg, -2deg); text-shadow: -4px 3px 0 magenta, 5px -4px 0 lime; }
        11% { transform: skew(0deg, 0deg); text-shadow: 3px 3px 0 red, -3px -3px 0 blue, 0 0 20px lime; }
        90% { transform: skew(0deg, 0deg); }
        91% { transform: skew(5deg, 0deg); text-shadow: -6px -3px 0 #ff00ff, 6px 3px 0 #00ffff; }
        92% { transform: skew(-5deg, 0deg); }
        93% { transform: skew(0deg, 0deg); }
    }

    .by-line {
        font-size: 2.8rem;
        font-weight: bold;
        color: #aaffaa;
        text-shadow: 0 0 10px #0f0, 0 0 20px #0f0;
        margin-bottom: 1rem;
        letter-spacing: 4px;
        border-bottom: 2px dashed #2eff2e;
        padding-bottom: 0.5rem;
        display: inline-block;
    }

    .cykomnepal {
        font-size: 3.5rem;
        font-weight: 900;
        background: linear-gradient(45deg, #00ff00, #ffff00, #00ff00);
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        text-shadow: 0 0 20px #0f0, 0 0 40px #0f0;
        margin: 0.5rem 0 0.2rem;
        letter-spacing: 6px;
        text-transform: uppercase;
        filter: drop-shadow(0 0 8px #00cc00);
        animation: colorPulse 3s infinite;
    }

    @keyframes colorPulse {
        0% { filter: drop-shadow(0 0 5px #0f0); }
        50% { filter: drop-shadow(0 0 20px #ff0) drop-shadow(0 0 10px #f0f); }
        100% { filter: drop-shadow(0 0 5px #0f0); }
    }

    .status-bar {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        gap: 1rem 2rem;
        margin: 2rem 0 1rem;
        font-size: 1.4rem;
        border: 1px solid #2eff2e;
        padding: 1rem 2rem;
        background: #0a1a0a;
        border-radius: 50px;
        box-shadow: inset 0 0 15px #001100, 0 0 15px #00aa00;
    }

    .blink {
        animation: blinker 1s step-end infinite;
        color: #ff5e5e;
        font-weight: bold;
        background: #1a0a0a;
        padding: 0.2rem 1rem;
        border-radius: 30px;
        letter-spacing: 2px;
    }

    @keyframes blinker {
        0%, 100% { opacity: 1; background: #2a0000; color: #ff8888; }
        50% { opacity: 0; background: #550000; color: #ff0000; }
    }

    .ip-display {
        background: black;
        padding: 0.4rem 1.2rem;
        border-radius: 40px;
        border: 1px solid #00aa00;
        color: #88ff88;
    }

    .matrix-code {
        font-size: 1.1rem;
        color: #55aa55;
        background: #0f0f0f;
        padding: 0.6rem 1rem;
        border-radius: 6px;
        margin: 1.5rem 0 0.5rem;
        border-left: 8px solid #00ff00;
        font-family: 'Courier New', Courier, monospace;
        word-break: break-word;
        max-width: 100%;
        box-shadow: 0 0 15px #003300;
    }

    .matrix-code span {
        display: inline-block;
        animation: matrixLetter 1.5s infinite;
    }

    @keyframes matrixLetter {
        0% { opacity: 0.8; color: #88ff88; text-shadow: 0 0 5px #0f0; }
        50% { opacity: 1; color: #ffffff; text-shadow: 0 0 10px #0f0, 0 0 20px #0f0; }
        100% { opacity: 0.8; color: #88ff88; text-shadow: 0 0 5px #0f0; }
    }

    .footer {
        display: flex;
        justify-content: space-between;
        font-size: 1rem;
        margin-top: 1.8rem;
        color: #00aa00;
        border-top: 1px solid #1f4f1f;
        padding-top: 1rem;
        text-transform: uppercase;
        letter-spacing: 2px;
    }

    .footer .warning {
        color: #ff6a6a;
        animation: blinkWarning 2s infinite;
    }

    @keyframes blinkWarning {
        0% { opacity: 1; text-shadow: 0 0 5px red; }
        50% { opacity: 0.3; }
        100% { opacity: 1; }
    }

    /* ascii art style */
    .ascii {
        color: #22aa22;
        font-size: 0.9rem;
        line-height: 1.2;
        white-space: pre;
        letter-spacing: 0px;
        margin: 15px 0 10px;
    }

    /* random glitch button (just for fun) */
    .trigger-glitch {
        background: transparent;
        border: 2px solid #1f9f1f;
        color: #22ff22;
        padding: 0.5rem 1.2rem;
        font-family: 'Courier New', monospace;
        font-weight: bold;
        font-size: 1.2rem;
        border-radius: 0;
        cursor: pointer;
        transition: 0.2s;
        margin-top: 1rem;
        box-shadow: 0 0 10px #0f0;
    }

    .trigger-glitch:hover {
        background: #1f9f1f;
        color: black;
        border-color: yellow;
        box-shadow: 0 0 30px yellow;
    }
</style>
</head> <body>
<!-- background layers -->
<div class="glitch-bg"></div>
<div class="scan-line"></div>

<main class="terminal" id="mainTerminal">
    <!-- main hacked text -->
    <div class="hacked-title">HACKED</div>

    <!-- "by cykomnepal" with extra glitch -->
    <div class="by-line">BY <span class="cykomnepal" id="cykomText">cykomnepal</span></div>

    <!-- short ascii skull / hacker emblem -->
    <pre class="ascii">

[ root@cykom ~ ]# ACCESS GRANTED
────▄▀▀▀▄▄▄▄▄▄▄▀▀▀▄──── ████▀█▀▀ ▀▀█▀████ </pre>

    <!-- status panel -->
    <div class="status-bar">
        <span class="blink">⚠️ SYSTEM BREACH ⚠️</span>
        <span class="ip-display" id="ipAddress">Fetching IP...</span>
        <span>🖧 0DAY: ACTIVE</span>
    </div>

    <!-- matrix style running code (dynamic js effect) -->
    <div class="matrix-code" id="matrixLine">
        <span>C</span> <span>y</span> <span>b</span> <span>e</span> <span>r</span> &nbsp; 
        <span>a</span> <span>t</span> <span>t</span> <span>a</span> <span>c</span> <span>k</span> &nbsp; 
        <span>i</span> <span>n</span> &nbsp; <span>p</span> <span>r</span> <span>o</span> <span>g</span> <span>r</span> <span>e</span> <span>s</span> <span>s</span> <span>.</span> <span>.</span>
    </div>

    <!-- additional info footer -->
    <div class="footer">
        <span class="warning">❗ encrypted payload</span>
        <span id="timestamp">00:00:00 UTC</span>
        <span>🌐 #cykomnepal</span>
    </div>

    <!-- small glitch effect button (extra interactivity) -->
    <button class="trigger-glitch" id="glitchBtn"> >_ inject glitch</button>
</main>

<script>
    (function() {
        // ========== JS for dynamic effects & info ==========

        // 1. Display user's IP (via fetch) - with fallback
        const ipEl = document.getElementById('ipAddress');
        if (ipEl) {
            fetch('https://api.ipify.org?format=json')
                .then(res => res.json())
                .then(data => {
                    ipEl.textContent = data.ip + " (PUBLIC)";
                })
                .catch(() => {
                    ipEl.textContent = "127.0.0.1 (localhost)";
                });
        }

        // 2. update timestamp (UTC) every second
        const tsEl = document.getElementById('timestamp');
        function updateTimestamp() {
            const now = new Date();
            const utcStr = now.toISOString().substr(11, 8) + " UTC";
            if (tsEl) tsEl.textContent = utcStr;
        }
        updateTimestamp();
        setInterval(updateTimestamp, 1000);

        // 3. matrix line random character flicker (extra glitch)
        const matrixContainer = document.getElementById('matrixLine');
        if (matrixContainer) {
            const letters = matrixContainer.querySelectorAll('span');
            const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+[]{};:";

            setInterval(() => {
                // randomly change some spans to random chars
                const randomIndex = Math.floor(Math.random() * letters.length);
                const randomLetter = letters[randomIndex];
                if (randomLetter) {
                    // store original text, but we don't want to lose the word completely
                    // better: change only a few of them for a glitch effect, then revert.
                    const originalText = randomLetter.textContent;
                    const randomChar = chars[Math.floor(Math.random() * chars.length)];
                    randomLetter.textContent = randomChar;

                    // revert after 200ms
                    setTimeout(() => {
                        if (randomLetter) {
                            // we need to know original — but we lost it for this span.
                            // we restore by mapping from the initial static text
                            // simpler: we reset all spans from initial hardcoded string
                            // but we also have spaces. Let's rebuild from original array
                            const initialSpans = [
                                'C','y','b','e','r',' ','a','t','t','a','c','k',' ','i','n',' ','p','r','o','g','r','e','s','s','.','.'
                            ];
                            // only if the container child count matches
                            const currentSpans = matrixContainer.querySelectorAll('span');
                            if (currentSpans.length === initialSpans.length) {
                                currentSpans.forEach((sp, idx) => {
                                    sp.textContent = initialSpans[idx];
                                });
                            } else {
                                // fallback: reload page silently? we trust.
                            }
                        }
                    }, 150);
                }
            }, 400);
        }

        // 4. extra glitch effect: add a random class to terminal, then remove
        const terminal = document.getElementById('mainTerminal');
        const glitchBtn = document.getElementById('glitchBtn');

        function addRandomGlitch() {
            if (!terminal) return;
            terminal.style.transform = 'skew(2deg, 1deg)';
            terminal.style.borderColor = '#ff00ff';
            terminal.style.boxShadow = '0 0 60px #ff0000, 0 0 30px #0000ff';
            terminal.style.transition = 'all 0.05s ease';

            // change cykomnepal color flash
            const cykom = document.getElementById('cykomText');
            if (cykom) {
                cykom.style.color = '#ff4444';
                cykom.style.textShadow = '0 0 20px yellow, 0 0 40px red';
            }

            setTimeout(() => {
                if (terminal) {
                    terminal.style.transform = 'skew(0deg, 0deg)';
                    terminal.style.borderColor = '#2eff2e';
                    terminal.style.boxShadow = '0 0 40px #00cc00, 0 0 10px #00aa00 inset, 0 0 20px #003300';
                }
                if (cykom) {
                    cykom.style.color = '';
                    cykom.style.textShadow = '';
                }
            }, 250);
        }

        if (glitchBtn) {
            glitchBtn.addEventListener('click', addRandomGlitch);
        }

        // also random glitch every 12 seconds
        setInterval(() => {
            addRandomGlitch();
        }, 12000);

        // 5. small matrix/ip detail: user-agent or something? not necessary but fine

        // 6. add a random "boot message" in matrix line? already fine.

        // 7. extra: change title periodically with glitch? optional.
        let originalTitle = document.title;
        setInterval(() => {
            document.title = "HACKED by cykomnepal";
            setTimeout(() => {
                document.title = "⚠️ cykomnepal owned ⚠️";
            }, 300);
        }, 5000);

        // 8. cool: fake typewriter for ascii? no needed, but we can add glitchy class.
    })();
</script>

<!-- ensure ASCII looks okay on small screens -->
<style>
    @media (max-width: 600px) {
        .hacked-title {
            font-size: 3.2rem;
            letter-spacing: 4px;
        }
        .by-line {
            font-size: 2rem;
        }
        .cykomnepal {
            font-size: 2.5rem;
        }
        .terminal {
            padding: 1.8rem 1.5rem;
        }
        .status-bar {
            font-size: 1rem;
            padding: 0.8rem 1rem;
        }
        .ascii {
            font-size: 0.7rem;
        }
    }
    @media (max-width: 400px) {
        .hacked-title {
            font-size: 2.5rem;
        }
        .cykomnepal {
            font-size: 2rem;
        }
    }
</style>
</body> </html>
T

TerminalDev

Admin

Full-stack developer building cool things on the web. Passionate about Next.js, TypeScript, and creating terminal-inspired user interfaces.

0