[
  {
    "path": ".github/workflows/kali.yml",
    "content": "name: Kali Linux\n\non:\n  schedule:\n    - cron: '0 5 * * *'\n  workflow_dispatch:\n\njobs:\n  download-and-release:\n    runs-on: ubuntu-latest\n    \n    steps:\n    - name: Checkout Repository\n      uses: actions/checkout@v4\n\n    - name: Downloading Kali Linux \n      run: |\n        # Download daily builds\n        wget https://image-nethunter.kali.org/nethunter-fs/kali-daily/kali-nethunter-daily-dev-rootfs-minimal-arm64.tar.xz || true\n        wget https://image-nethunter.kali.org/nethunter-fs/kali-daily/kali-nethunter-daily-dev-rootfs-nano-arm64.tar.xz || true\n        wget https://image-nethunter.kali.org/nethunter-fs/kali-daily/kali-nethunter-daily-dev-rootfs-minimal-armhf.tar.xz || true\n        wget https://image-nethunter.kali.org/nethunter-fs/kali-daily/kali-nethunter-daily-dev-rootfs-nano-armhf.tar.xz || true\n        \n        # Download current stable builds\n        wget https://kali.download/nethunter-images/current/rootfs/kali-nethunter-rootfs-minimal-arm64.tar.xz || true\n        wget https://kali.download/nethunter-images/current/rootfs/kali-nethunter-rootfs-nano-arm64.tar.xz || true\n        wget https://kali.download/nethunter-images/current/rootfs/kali-nethunter-rootfs-minimal-armhf.tar.xz || true\n        wget https://kali.download/nethunter-images/current/rootfs/kali-nethunter-rootfs-nano-armhf.tar.xz || true\n        \n    - name: Install GitHub CLI\n      run: |\n        # Install GitHub CLI using the official method\n        curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg\n        echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null\n        sudo apt update\n        sudo apt install -y gh\n\n    - name: Create DETAILS.md with release notes\n      run: |\n        cat > DETAILS.md << 'EOF'\n        ## Termux app\n        - **App**: https://github.com/termux/termux-app/releases/download/v0.118.3/termux-app_v0.118.3+github-debug_universal.apk\n        - **Release**: https://github.com/termux/termux-app/releases\n        \n        ## Nethunter vnc\n        - **App**: https://store.nethunter.com/repo/com.offsec.nethunter.kex_11525001.apk\n        - **Release**: https://store.nethunter.com/packages/com.offsec.nethunter.kex\n        \n        ## Architectures\n        - **Arm64**: 64-bit ARM devices\n        - **Armhf**: 32-bit ARM devices\n        \n        ## Variants\n        - **Full**: Full installation includes vnc desktop server \n        - **Minimal**: Minimal installation with essential tools\n        - **Nano**: Even more minimal footprint\n        EOF\n        \n        echo -e \"\\n## Checksums\" >> DETAILS.md\n        echo '```' >> DETAILS.md\n        for file in kali-nethunter-*.tar.xz; do\n          if [ -f \"$file\" ]; then\n            size=$(du -h \"$file\" | cut -f1)\n            checksum=$(sha256sum \"$file\" | cut -d' ' -f1)\n            echo \"$file - Size: $size - SHA256: $checksum\" >> DETAILS.md\n          fi\n        done\n        echo '```' >> DETAILS.md\n\n    - name: Delete existing assets from release\n      run: |\n        # Only delete if release exists\n        if gh release view \"kali-latest\" > /dev/null 2>&1; then\n          # Get list of existing assets and delete them\n          gh release delete-asset \"kali-latest\" kali-nethunter-*.tar.xz --yes || true\n        fi\n      env:\n        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n    - name: Upload assets to existing release\n      run: |\n        # Check if any files were downloaded\n        if ls kali-nethunter-*.tar.xz 1> /dev/null 2>&1; then\n          # Check if release exists, create if it doesn't\n          if ! gh release view \"kali-latest\" > /dev/null 2>&1; then\n            gh release create \"kali-latest\" \\\n              --title \"Kali Linux Latest Release: $(date +'%Y-%m-%d')\" \\\n              --notes-file DETAILS.md \\\n              --draft=false \\\n              --prerelease=false\n          else\n            # Update existing release with new notes\n            gh release edit \"kali-latest\" \\\n              --title \"Kali Linux Latest Release: $(date +'%Y-%m-%d')\" \\\n              --notes-file DETAILS.md\n          fi\n          \n          # Upload all rootfs files that exist\n          for file in kali-nethunter-*.tar.xz; do\n            if [ -f \"$file\" ]; then\n              echo \"Uploading $file\"\n              gh release upload \"kali-latest\" \"$file\" --clobber\n            fi\n          done\n        else\n          echo \"No Kali NetHunter files were downloaded. Skipping release upload.\"\n          exit 1\n        fi\n      env:\n        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": "README.md",
    "content": "# <h1 align=\"center\">$${\\color{red}Kali-Nethunter-Termux}$$\n </h1>\n \n<p align=\"center\">Termux Kali Linux NetHunter is a powerful tool for security professionals and enthusiasts. It allows users to perform a variety of security assessments on their Android devices without rooting them.</p>\n\n<img width=\"auto\" height=\"auto\" src=\"https://github.com/xiv3r/Kali-Linux-Termux/blob/main/kali_nethunter/NHGui.jpg\">\n\n<br></br>\n\n# $${\\color{magenta}Requirements}$$\n- 15GB Storage\n- [Termux app](https://f-droid.org/repo/com.termux_1002.apk)\n- [Nethunter VNC](https://store.nethunter.com/repo/com.offsec.nethunter.kex_11525001.apk)\n<br></br>\n\n# $${\\color{magenta}Auto-Install}$$\n```diff\n-; apt update && pkg install wget -y && pkg upgrade -y -o Dpkg::Options::=\"--force-confnew\" && clear && wget -qO install.sh https://raw.githubusercontent.com/xiv3r/Kali-Linux-Termux/refs/heads/main/kali_nethunter/install.sh && chmod +x install.sh && bash install.sh\n```\n### $${\\color{magenta}Setup-VNC}$$\n> - Setup for Kali Nethunter Full\n> - After the installation type the following command in the termux terminal (not the kali)\n\n> - Setup VNC password\n```\nkali vnc passwd\n```\n### $${\\color{magenta}Run-VNC}$$\n> - `127.0.0.1:5901`\n```\n( kali vnc & )\n```\n<details><summary></summary>\n<img width=\"auto\" height=\"auto\" src=\"https://github.com/xiv3r/Kali-Linux-Termux/blob/main/kali_nethunter/vncsetup.png\">\n</details>\n\n> - Next Open the VNC client and add the address `127.0.0.1:5901` and type `kali` as username and your vnc `password`\n<br></br>\n\n# $${\\color{magenta}Usage}$$\n- $${\\color{magenta}Login-User}$$\n```\nkali\n```\n- $${\\color{magenta}Login-Root}$$\n```\nkali -r\n```\n- $${\\color{magenta}Logout}$$\n```\nexit\n```\n- $${\\color{magenta}Kill-VNC-service}$$\n```\nkali kill vnc\n```\n- $${\\color{magenta}Uninstall}$$\n```\nkali-uninstall\n```\n\n# $${\\color{magenta}Terminal}$$\n> Password: `kali`\n<details><summary></summary> \n<img width=\"auto\" height=\"auto\" src=\"https://github.com/xiv3r/Kali-Linux-Termux/blob/main/kali_nethunter/nhterm.png\">\n</details>\n\n<details><summary>\n\n## $${\\color{magenta}Disable-VNC-Phantom-Process-Killer}$$\n</summary>\n \n> \" Process completed (signal 9) - press Enter \"\n> \n- Download [Shizuku](https://github.com/RikkaApps/Shizuku/releases) and [Ashell](https://github.com/DP-Hridayan/aShellYou/releases) then enable developer options wireless debugging mode through shizuku and pair the key from the notification\n- Permit ashell from shizuku settings \n- Paste the adb commands below on ashell\n\n- Execute the commands below, These commands will disable the phantom process killer:\n```\nadb shell /system/bin/device_config set_sync_disabled_for_tests persistent\n```\n```\nadb shell /system/bin/device_config put activity_manager max_phantom_processes 2147483647\n```\n```\nadb shell settings put global settings_enable_monitor_phantom_procs false\n```\n- To verify:\n```\nadb shell /system/bin/dumpsys activity settings | grep max_phantom_processes\n```\n```\nadb shell /system/bin/device_config get activity_manager max_phantom_processes\n```\n</details>\n"
  },
  {
    "path": "kali_nethunter/install.sh",
    "content": "#!/data/data/com.termux/files/usr/bin/bash\n\ncd \"$HOME\"\n\n# Install required packages\npkg install proot bsdtar libxml2 axel fastfetch -y\nclear\n\n# Display system info\nfastfetch --logo kali\n\n# Start-up\nsed -i '/termux-wake-lock/d' \"$PREFIX/etc/bash.bashrc\"\nsed -i '/clear/d' \"$PREFIX/etc/bash.bashrc\"\nsed -i '/kali -r/d' \"$PREFIX/etc/bash.bashrc\"\ncat >> \"$PREFIX/etc/bash.bashrc\" << EOF\ntermux-wake-lock\nclear\nkali -r\nEOF\n\n# Get device architecture\ncase $(getprop ro.product.cpu.abi) in\n    arm64-v8a)\n        SYS_ARCH=arm64\n        ;;\n    armeabi|armeabi-v7a)\n        SYS_ARCH=armhf\n        ;;\n    *)\n        echo \"[*] Unsupported Architecture!\"\n        exit 1\n        ;;\nesac\n\n# Set image strings\necho && echo \"\"\nif [[ ${SYS_ARCH} == \"arm64\" ]]; then\n    echo \"[1] Kali NetHunter ARM64 Full\"\n    echo \"[2] Kali NetHunter ARM64 Minimal\"\n    echo \"[3] Kali NetHunter ARM64 Nano\"\n    read -rp \"Select the number to install: \" wimg\n    echo \" \"\n    case $wimg in\n        1) wimg=\"full\" ;;\n        2) wimg=\"minimal\" ;;\n        3) wimg=\"nano\" ;;\n        *) wimg=\"minimal\" ;;\n    esac\nelif [[ ${SYS_ARCH} == \"armhf\" ]]; then\n    echo \"[1] Kali NetHunter ARMhf Full\"\n    echo \"[2] Kali NetHunter ARMhf Minimal\"\n    echo \"[3] Kali NetHunter ARMhf Nano\"\n    read -rp \"Select the number to install: \" wimg\n    echo \" \"\n    case $wimg in\n        1) wimg=\"full\" ;;\n        2) wimg=\"minimal\" ;;\n        3) wimg=\"nano\" ;;\n        *) wimg=\"minimal\" ;;\n    esac\nfi\n\n####\nDIR=\"kali-${SYS_ARCH}\"\nIMAGE_NAME=\"kali-nethunter-rootfs-${wimg}-${SYS_ARCH}.tar.xz\"\nNM=\"kali\"\n\n# Download Kali rootfs\naxel -o \"$IMAGE_NAME\" \"https://kali.download/nethunter-images/current/rootfs/$IMAGE_NAME\"\n\n# Check file integrity\necho \" \"\necho \"[*] Checking $NM Linux File Integrity...!!!\"\necho \" \"\necho \"[*] MD5\"\nmd5sum \"$IMAGE_NAME\"\necho \" \"\necho \"[*] SHA256\"\nsha256sum \"$IMAGE_NAME\"\necho \" \"\necho \"[*] SHA512\"\nsha512sum \"$IMAGE_NAME\"\n\n# Extract rootfs\necho \" \"\necho \"[*] Extracting $IMAGE_NAME, Please wait...!!!\"\nproot --link2symlink bsdtar -xpJf \"$IMAGE_NAME\" >/dev/null 2>&1\n\n# Adding shortcut file\ncat > \"$PREFIX/bin/$NM\" <<- EOF\n#!/data/data/com.termux/files/usr/bin/bash\n\ncd \"$HOME\"\n\n## termux-exec sets LD_PRELOAD so let's unset it before continuing\nunset LD_PRELOAD\n\n## Workaround for Libreoffice, also needs to bind a fake /proc/version\nif [ ! -f $DIR/root/.version ]; then\n    touch $DIR/root/.version\nfi\n\n## Default user is \"kali\"\nuser=\"$NM\"\nhome=\"/home/\\$user\"\nstart=\"sudo -u kali /bin/bash\"\n\n## NH can be launched as root with the \"-r\" cmd attribute\n## Also check if user kali exists, if not start as root\nif grep -q \"kali\" ${DIR}/etc/passwd; then\n    KALIUSR=\"1\";\nelse\n    KALIUSR=\"0\";\nfi\nif [[ \\$KALIUSR == \"0\" || (\"\\$#\" != \"0\" && (\"\\$1\" == \"-r\" || \"\\$1\" == \"-R\")) ]];then\n    user=\"root\"\n    home=\"/\\$user\"\n    start=\"/bin/bash --login\"\n    if [[ \"\\$#\" != \"0\" && (\"\\$1\" == \"-r\" || \"\\$1\" == \"-R\") ]];then\n        shift\n    fi\nfi\n\ncmdline=\"proot \\\\\n        --link2symlink -p \\\\\n        -0 \\\\\n        -r $DIR \\\\\n        -b /dev \\\\\n        -b /proc \\\\\n        -b /sdcard \\\\\n        -b $DIR\\$home:/dev/shm \\\\\n        -w \\$home \\\\\n           /usr/bin/env -i \\\\\n           HOME=\\$home \\\\\n           PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \\\\\n           TERM=\\$TERM \\\\\n           LANG=C.UTF-8 \\\\\n           \\$start\"\n\ncmd=\"\\$@\"\nif [ \"\\$#\" == \"0\" ];then\n    exec \\$cmdline\nelse\n    \\$cmdline -c \"\\$cmd\"\nfi\nEOF\nchmod 755 \"$PREFIX/bin/$NM\"\n\n# Download and configure vnc\nwget -qO \"$DIR/bin/vnc\" \"https://raw.githubusercontent.com/xiv3r/Kali-Linux-Termux/refs/heads/main/kali_nethunter/vnc\"\nchmod 755 \"$DIR/bin/vnc\"\n\n# Add VNC autostart for full installation\nif [ \"$wimg\" = \"full\" ]; then\n    echo \"( kali vnc & )\" >> \"$PREFIX/etc/bash.bashrc\"\nfi\n\n# Add uninstallation config file\ncat > \"$PREFIX/bin/$NM-uninstall\" << EOF\n#!/data/data/com.termux/files/usr/bin/bash\n\nrm -rf \"$HOME/$DIR\"\nrm -f \"$PREFIX/bin/$NM\"\nsed -i '/termux-wake-lock/d' \"$PREFIX/etc/bash.bashrc\"\nsed -i '/clear/d' \"$PREFIX/etc/bash.bashrc\"\nsed -i '/$NM -r/d' \"$PREFIX/etc/bash.bashrc\"\nsed -i '/( kali vnc & )/d' \"$PREFIX/etc/bash.bashrc\"\nrm -f \"$PREFIX/bin/$NM-uninstall\"\nEOF\nchmod 755 \"$PREFIX/bin/$NM-uninstall\"\n\n# Modify .bash_profile\nsed -i '/if/,/fi/d' \"$DIR/root/.bash_profile\"\n\n# Set SUID for sudo and su\nchmod +s \"$DIR/usr/bin/sudo\"\nchmod +s \"$DIR/usr/bin/su\"\n\n# Fix DNS resolver\ncat > \"$DIR/etc/resolv.conf\" << EOF\nnameserver 9.9.9.10\nnameserver 8.8.8.8\nnameserver 1.1.1.1\nEOF\n\n# Fix Repo\ncat > \"$DIR/etc/apt/sources.list\" << EOF\ndeb http://kali.download/kali kali-rolling main contrib non-free non-free-firmware\nEOF\n\n# Fix sudoer file\ncat > \"$DIR/etc/sudoers.d/$NM\" << EOF\n$NM    ALL=(ALL:ALL) ALL\nEOF\n\n# Fastfetch\nsed -i '/fastfetch/d' \"$DIR/etc/bash.bashrc\"\ncat >> \"$DIR/etc/bash.bashrc\" << EOF\nsudo apt update\nsudo apt install fastfetch -y\nsed -i '/sudo apt update/d' \"/etc/bash.bashrc\"\nsed -i '/sudo apt install fastfetch -y/d' \"/etc/bash.bashrc\"\nfastfetch\nEOF\n\n# Configure sudo.conf\ncat > \"$DIR/etc/sudo.conf\" << EOF\nSet disable_coredump false\nEOF\n\n# Modify user and group IDs\nUSRID=$(id -u)\nGRPID=$(id -g)\n\"$NM\" -r usermod -u \"$USRID\" \"$NM\" >/dev/null 2>&1\n\"$NM\" -r groupmod -g \"$GRPID\" \"$NM\" >/dev/null 2>&1\n\n# Delete Tarball\nrm -f \"$IMAGE_NAME\"\nrm -f install.sh\n\n# Display success message\ncat << EOF\n\n[*] To Login Kali Nethunter Type: $NM\n\nEOF\n\nbash kali -r\n"
  },
  {
    "path": "kali_nethunter/vnc",
    "content": "#!/bin/bash\n\nfunction start-kex() {\n    if [ ! -f ~/.vnc/passwd ]; then\n        passwd-kex\n    fi\n    USR=$(whoami)\n    if [ $USR == \"root\" ]; then\n        SCREEN=\":2\"\n    else\n        SCREEN=\":1\"\n    fi\n    export MOZ_FAKE_NO_SANDBOX=1; export HOME=${HOME}; export USER=${USR}; LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgcc_s.so.1 nohup vncserver $SCREEN >/dev/null 2>&1 </dev/null\n    starting_kex=1\n    return 0\n}\n\nfunction stop-kex() {\n    vncserver -kill :1 | sed s/\"Xtigervnc\"/\"NetHunter KeX\"/\n    vncserver -kill :2 | sed s/\"Xtigervnc\"/\"NetHunter KeX\"/\n    return 0\n}\n\nfunction passwd-kex() {\n    vncpasswd\n    return 0\n}\n\nfunction status-kex() {\n    sessions=$(vncserver -list | sed s/\"TigerVNC\"/\"NetHunter KeX\"/)\n    if [[ $sessions == *\"590\"* ]]; then\n        printf \"\\n${sessions}\\n\"\n        printf \"\\nYou can use the VNC client to connect to any of these displays.\\n\\n\"\n    else\n        if [ ! -z $starting_kex ]; then\n            printf '\\nError starting the VNC server.\\nPlease try \"kali vnc kill\" or restart your termux session and try again.\\n\\n'\n        fi\n    fi\n    return 0\n}\n\nfunction kill-kex() {\n    pkill Xtigervnc\n    return $?\n}\n\ncase $1 in\n    start)\n        start-kex\n        ;;\n    stop)\n        stop-kex\n        ;;\n    status)\n        status-kex\n        ;;\n    passwd)\n        passwd-kex\n        ;;\n    kill)\n        kill-kex\n        ;;\n    *)\n        stop-kex\n        start-kex\n        status-kex\n        ;;\nesac\n"
  }
]