1
0
Fork 0
mirror of https://github.com/dbarzin/pandora-box.git synced 2026-11-03 18:21:23 +01:00
pandora-box est une station d'analyse USB conçue pour détecter et supprimer les logiciels malveillants des clés USB.
  • Python 93.5%
  • Shell 4.8%
  • OpenSCAD 0.7%
  • Dockerfile 0.4%
  • PowerShell 0.3%
  • Other 0.3%
Find a file
2026-11-03 17:49:39 +01:00
.github/workflows Drop SMB, reach Windows servers over SFTP 2026-10-20 20:00:25 +02:00
3D update STL 2026-11-02 13:44:39 +01:00
docs Reach the YubiKey from the build container: pcscd without polkit, USB devices plugged in later 2026-11-03 17:49:39 +01:00
image Reach the YubiKey from the build container: pcscd without polkit, USB devices plugged in later 2026-11-03 17:49:39 +01:00
packaging Build in German and Dutch texts 2026-10-21 10:32:23 +02:00
publish Rename the project to PandoraBox 2026-10-14 12:24:10 +02:00
src/pandora_box Explain the devices refused by USBGuard and the changed keys on the screen 2026-11-03 16:05:14 +01:00
tests Explain the devices refused by USBGuard and the changed keys on the screen 2026-11-03 16:05:14 +01:00
.dockerignore Publish signed signature sets from the sources, checked with the kiosk engines 2026-10-04 09:34:03 +02:00
.gitattributes The image is built from files with LF line endings 2026-10-15 16:21:59 +02:00
.gitignore Drop SMB, reach Windows servers over SFTP 2026-10-20 20:00:25 +02:00
CONTRIBUTING.md Fill the exFAT test keys with exfat-fuse, not the kernel of the runner 2026-10-20 20:00:25 +02:00
LICENSE Add GPL-3.0 license, CONTRIBUTING.md and SECURITY.md 2026-10-01 12:28:33 +02:00
mkdocs.yml Describe the assembly of a kiosk 2026-10-23 21:42:13 +02:00
pyproject.toml Drop SMB, reach Windows servers over SFTP 2026-10-20 20:00:25 +02:00
README.fr.md Document the HP ProDesk 400 G5 SFF as also tested 2026-10-18 13:08:39 +02:00
README.md Document the HP ProDesk 400 G5 SFF as also tested 2026-10-18 13:08:39 +02:00
requirements-docs.txt The documentation is available in French 2026-10-15 13:47:18 +02:00
ROADMAP.md Document the suspicious key verdict, its VM test and every module 2026-11-03 16:59:34 +01:00
SECURITY.md The project moves to github.com/sourcentis 2026-10-14 21:11:11 +02:00

Pandora-Box

CI License Python Contributors Stars

English | Français

Introduction

USB keys remain a common way into information systems that are otherwise well protected: shared between organizations, plugged into unmanaged computers, carried into isolated networks. A decontamination kiosk, or "sheep-dip station", checks them before they reach a workstation.

PandoraBox is an open source USB decontamination kiosk. A user inserts a USB key, the kiosk scans every file with several detection engines, shows on its touch screen the dangerous files it found, and removes them when the user touches the screen. It runs on a refurbished small computer, works without network, and is distributed as a complete hardened system image.

PandoraBox aims to be a free, auditable and hardened alternative to commercial kiosks, for sensitive environments such as healthcare, industry and public administration. It is a complete rewrite of the first version of PandoraBox, without dependency on Pandora (CIRCL).

📚 Explore the Documentation | 🗺️ Read the Roadmap | 🔍 View the Sources

🌟 Key Features

  • 🔍 Several detection engines: known malicious hashes (MalwareBazaar), known files (CIRCL Hashlookup), ClamAV, YARA-X with the YARA Forge rules, and heuristics for programs disguised as documents and PDF with JavaScript.
  • 🚫 Fail closed: a file that could not be fully scanned (encrypted archive, limit exceeded, engine error) is never reported as clean.
  • 👆 Touch interface, no buttons: progress of the scan, dangerous files listed before their removal, a touch anywhere on the screen to clean the key.
  • 🎨 Customizable: the organization sets its logo, colors, texts and language of the interface.
  • 🗄️ Quarantine and reports: dangerous files are copied to the kiosk before their removal, and every scan produces a JSON report.
  • 🛡️ Hardened image: read-only root filesystem protected by dm-verity, Secure Boot, USBGuard against BadUSB devices, no account and no login, each engine in a sandbox without network.
  • ✍️ Signed updates: signature sets and system updates are signed, installed from a USB key on offline kiosks, or downloaded through a dedicated channel; A/B system updates with automatic rollback.
  • 🧰 Maintenance without login: a signed USB key brings back the logs of the kiosk.

🖼️ Screenshots

⏳ Waiting for a key, scan in progress

☣️ Threats found, key cleaned

🛠️ Technologies Used

  • Kiosk: Python 3.11+, with Pillow to draw the interface straight into the framebuffer (no display server, no browser)
  • Engines: ClamAV (clamd), YARA-X, MalwareBazaar and Hashlookup databases, libmagic
  • System: Debian 13 image built with mkosi, systemd-boot, Secure Boot, dm-verity, systemd-sysupdate, USBGuard, bubblewrap, nftables
  • Tests: pytest, and an end-to-end test of the whole image in a QEMU/KVM virtual machine

💻 Hardware

  • Computer: refurbished Lenovo ThinkCentre Tiny (validated: M720q, Core i5-9400T; also tested: HP ProDesk 400 G5 SFF), 2 GB of memory minimum
  • Screen: Waveshare 7-inch HDMI LCD (C), capacitive touch screen, 1024x600
  • Enclosure: 3D-printed, in the 3D folder (CERN-OHL-S v2)

See the hardware guide, and the installation guide for the BIOS settings.

📦 Installation

PandoraBox is distributed as a complete system image, built with Docker only:

git clone https://github.com/sourcentis/pandora-box.git
cd pandora-box
image/build.sh                                  # build the image
image/build-test.sh && image/vm.sh test         # optional: test it in a virtual machine

Then write image/mkosi.output/pandora-box.raw to the disk of the kiosk, enroll the Secure Boot key and install a signature set from a USB key. Every step is described in the documentation: building the image, testing with QEMU, initial installation, and the maintenance: signatures, system updates, logs.

To work on the code, see the development guide.

📜 Roadmap

The project is developed in phases: scanning engine, hardened image, kiosk interface, advanced analysis, fleet management, assurance and compliance. Follow its progress in the Roadmap.

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md. To report a vulnerability, follow SECURITY.md.

📄 License

PandoraBox is free software, licensed under the GNU General Public License v3.0. The enclosure in 3D is licensed under the CERN-OHL-S v2.