ai-jail
Multi-OS sandbox to run AI agents with better constraints (it is not 100% secure, but enough)
Periksa kesiapan sebuah server menghadapi komputer kuantum, lalu pelajari cara membaca hasilnya: key exchange ML-KEM, sertifikat, versi TLS, dan SSH.
Translation pending
SecurityPython · HTMLGitHub @Nael-NathanaelOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Outside-in post-quantum cryptography readiness scanner: ML-KEM key exchange, certificates, TLS versions and SSH, with PDF reports (Bahasa Indonesia UI)
Taken from the repository README
Loading the full README.
Read the full README ↗SecScan PQC checks how ready a server is for post-quantum cryptography (PQC) by probing it from the outside. It looks at the TLS key exchange (ML-KEM), the certificate, the TLS versions on offer, and SSH, scores each one, and produces a PDF report. The scans are read-only: SecScan sends protocol hellos, reads the server's first reply, and disconnects.
The web UI, findings and PDF reports come in Bahasa Indonesia (at /) and English (at /en).
A hosted instance runs at sec-scan.miraestudio.id. The method and reference values are at
/en/methodology (/metodologi in Indonesian).
| Check | Weight | Full marks when |
|---|---|---|
| PQ key exchange (TLS 1.3) | 100 | The server accepts a standard ML-KEM group such as X25519MLKEM768 |
| Certificate | 60 | The leaf certificate uses ML-DSA or SLH-DSA |
| SSH (ports 22, 2222) | 50 | SSH is closed, or offers mlkem768x25519-sha256 with an ed25519 host key and no RSA host key |
| TLS versions | 40 | Only TLS 1.3 is enabled |
The composite score is the weighted average of the selected checks. Grades: A ≥ 90, B ≥ 80, C ≥ 65, D ≥ 50, E < 50.
The highest score a public website can reach today is 92. No public CA issues ML-DSA certificates yet, so every classical certificate (RSA ≥ 2048, ECDSA ≥ 256, EdDSA) scores 65% on the certificate check. Shor's algorithm breaks RSA and ECC alike, so SecScan scores them the same: a bigger RSA key earns nothing.
KEXINIT message, then disconnects before authentication.Targets must resolve to public addresses. Private, loopback and link-local addresses are refused.
With Docker:
cp .env.example .env # optional: set SCAN_PASSWORD, PORT, SITE_NAME
docker compose up -d --build
The app listens on 127.0.0.1:${PORT:-8000}. Put a reverse proxy with TLS in front of it. Host-specific settings can also
go in a compose.override.yaml, which git ignores.
For local development (Python 3.12+):
python -m venv .venv
.venv/bin/pip install -r requirements-dev.txt
cd app && ../.venv/bin/uvicorn main:app --reload
All variables are optional. See .env.example.
| Variable | Default | Purpose |
|---|---|---|
SCAN_PASSWORD | empty | Shared password, sent in the X-Scan-Password header. Empty disables it. |
PORT | 8000 | Host port in compose.yaml |
BRAND_NAME | SecScan PQC | Name printed on PDF reports |
SITE_NAME | empty | Hostname printed on PDF reports, which also link to /metodologi |
MAX_CONCURRENT_HOSTS | 4 | Hosts scanned in parallel |
RATE_LIMIT_HOSTS | 40 | Hosts per client IP per 10 minutes |
The client IP used for rate limiting comes from the CF-Connecting-IP header when present, then from the proxy headers
(uvicorn runs with --proxy-headers). If you do not run behind Cloudflare, make sure your proxy strips or overwrites
CF-Connecting-IP, or clients can spoof it to dodge the rate limit.
| Method | Path | Description |
|---|---|---|
POST | /api/scan | Body {"targets": ["example.com", "host:8443"], "checks": ["kex", "cert", "tls", "ssh"], "lang": "en"}. Up to 4 targets; lang is id (default) or en and sets the language of findings, errors and the PDF. Returns the results and a scan id. |
GET | /api/report/{id}.pdf | PDF report for a recent scan (the last 200 are kept in memory) |
GET | /healthz | Health check |
Scan only systems you own or have permission to test. The probes are light, but they are still unsolicited connections.
See CONTRIBUTING.md. Report security issues privately as described in SECURITY.md.
SecScan PQC memeriksa kesiapan kriptografi tahan kuantum sebuah server dari sisi luar: key exchange ML-KEM, sertifikat, versi TLS, dan SSH, lalu membuat laporan PDF. Penjelasan lengkap cara menilai dan dasar teorinya ada di halaman Metodologi & landasan teori. Laporan bug dan kontribusi boleh dalam Bahasa Indonesia.