§ Page

Kapt

README

Visualiseur d’entrées clavier et souris sécurisé, haute performance et multi-dispositions pour Linux (Wayland/X11), conçu pour la confidentialité locale, l’absence totale de télémétrie et l’intégration OBS.

Fonctionnalités

  • 12+ Dispositions internationales : AZERTY (Latin9/FR, Standard, BE), QWERTZ (DE, CH), QWERTY (US, UK, ES, IT), Dvorak, Colemak, Bépo (sélection explicite CLI/UI).
  • Zéro persistance / Volatil en RAM : L’état des touches réside uniquement dans un set RAM volatile. Aucun keylogger, aucun fichier log, aucune accumulation de chaînes de texte.
  • Durcissement Kernel & Systemd : Filtres seccomp, MemoryDenyWriteExecute (W^X), sandbox rootfs strict, et exécution sous le groupe non privilégié input.
  • Périmètre local strict : Écoute exclusive sur 127.0.0.1:8080, validation de l’en-tête Origin WebSocket et limitation de débit (~30fps). Zéro appel réseau sortant.
  • Zéro dépendance réseau / Typographie locale : Police 100% open-source embarquée/système (Inter / Liberation Sans et JetBrains Mono / DejaVu Mono), sans appel externe.

Architecture

[Noyau /dev/input/event*] 
       │ (evdev)
[bridge.py (127.0.0.1:8080)] ──(WebSocket)──> [index.html / Source Navigateur OBS]
       │
[Tampon Volatile RAM]

Détecter la disposition de son clavier

Environnement / OutilCommandeExemple de sortie
Systemd / console (universel)localectl statusX11 Layout: fr
X11 / Xorgsetxkbmap -querylayout: fr
GNOME / Waylandgsettings get org.gnome.desktop.input-sources sources[('xkb', 'fr')]
KDE Plasma / Waylandkwriteconfig5 --file ~/.config/kxkbrc --group Layout --key LayoutList --readfr
TTY / Console pureloadkeys -c ou inspection de /etc/vconsole.confKEYMAP=fr

Installation rapide (Script universel)

Clonez le dépôt et exécutez le script d’installation automatique (détecte Debian/Ubuntu, Fedora/RHEL, Arch Linux) :

git clone https://gitlab.com/Portfolio-personnel-Ax4M3/kapt.git
cd kapt
sudo bash install.sh

Dépendances manuelles par distribution (alternative)

DistributionCommande de dépendances
Debian / Ubuntu / Mintsudo apt update && sudo apt install -y python3 python3-venv python3-pip
Fedora / RHEL / Almasudo dnf install -y python3 python3-pip
Arch Linux / Manjarosudo pacman -S --needed python python-evdev python-websockets

Si vous installez manuellement sans le script install.sh, déplacez le dépôt dans /opt/kapt ou lancez bridge.py depuis votre répertoire de travail, puis configurez le service systemd manuellement.

Gestion du service (Template Systemd)

Assurez-vous d’avoir exécuté sudo bash install.sh au préalable pour installer le template systemd. Puis :

Activer et démarrer pour votre utilisateur actuel

sudo systemctl enable --now kapt@$USER

Vérifier l’état et les logs en temps réel

sudo systemctl status kapt@$USER
journalctl -u kapt@$USER -f

Arrêter ou désactiver le service

sudo systemctl stop kapt@$USER
sudo systemctl disable kapt@$USER

Nettoyage si systemd a gardé l’erreur en cache / état échec :

sudo systemctl reset-failed

Captures

Vérifier que Kapt a bien démarré


Kapt est en cours

Kapt est désactivé

Fonctionnalités (vidéo WebM)

Voir sur le dépôt GitLab

AperçuClavierFenêtre
Exemple ⇗Choix du clavier ⇗Mini-fenêtre ⇗

Désinstallation

Pour nettoyer proprement le service systemd, les instances et les fichiers d’installation :

sudo bash uninstall.sh

Utilisation en détail

  1. Démarrage et connexion de la source visuelle

    • Le pont Python (bridge.py) écoute en permanence sur ws://127.0.0.1:8080 dès que le service systemd est actif.
    • Ouvrez le fichier index.html dans un navigateur local, ou intégrez-le directement dans OBS Studio :
      • Ajoutez une Source Navigateur (Browser Source).
      • Cochez Fichier local (Local file) et sélectionnez /opt/kapt/index.html.
      • Dimensions recommandées : 1920x1080 (fond transparent / géré par le CSS sombre du visualiseur).
  2. Sélecteur de disposition à chaud

    • Le profil par défaut est défini au lancement via CLI (--layout, ex: azerty_latin9).
    • Le menu déroulant en haut à droite de l’interface permet de basculer la correspondance des touches à chaud sans redémarrer le service.
  3. Fonctionnement des badges et de la séquence

    • Rétention 3.5s : Chaque combinaison active s’affiche sous forme de badge visuel stylisé (kbd) et disparaît en fondu après 3,5 secondes d’inactivité de la combinaison.
    • Anti-spam / Anti-redondance : Les répétitions consécutives identiques d’une même combinaison ne s’empilent pas à l’infini dans le flux pour garder un rendu stream-friendly propre.
    • Mini-fenêtre (Popout) : Cliquez sur le bouton Mini-fenêtre en haut à droite pour détacher un affichage compact pop-up (fenêtre flottante sans chrome de navigateur).

Vérification et Audit de Sécurité

  • Contrôle d’écoute réseau : ss -tulpn | grep 8080 (doit afficher 127.0.0.1:8080, jamais 0.0.0.0).
  • Descripteurs ouverts : ls -l /proc/$(pgrep -f bridge.py)/fd (pointe uniquement vers /dev/input/event* et la socket de bouclage locale).
  • Transparence EDR/Antivirus : bridge.py ne contient aucun client HTTP/socket sortant (requests, urllib, socket sortant absents).

Licence

Ce projet est distribué sous licence MIT.


Dernière mise-à-jour : 13 septembre 2026

unacceptable-lobster@am:~

Bienvenue dans le shell caché d'Unacceptable Lobster. Tape help pour voir les commandes disponibles.

$