{"id":50932818,"url":"https://github.com/xscriptor/samurai","last_synced_at":"2026-06-17T06:03:10.039Z","repository":{"id":351122137,"uuid":"1208603791","full_name":"xscriptor/samurai","owner":"xscriptor","description":"Samurai: An XWA submodule focused on cybersecurity.","archived":false,"fork":false,"pushed_at":"2026-04-15T21:27:09.000Z","size":1610,"stargazers_count":1,"open_issues_count":13,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T22:26:00.302Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xscriptor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-12T14:07:46.000Z","updated_at":"2026-04-15T21:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xscriptor/samurai","commit_stats":null,"previous_names":["xscriptor/xwa-sec","xscriptor/samurai"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/xscriptor/samurai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xscriptor%2Fsamurai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xscriptor%2Fsamurai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xscriptor%2Fsamurai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xscriptor%2Fsamurai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xscriptor","download_url":"https://codeload.github.com/xscriptor/samurai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xscriptor%2Fsamurai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34435981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T06:03:09.355Z","updated_at":"2026-06-17T06:03:10.034Z","avatar_url":"https://github.com/xscriptor.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003ch1 align=\"center\"\u003eSamurai\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/xscriptor/samurai/main/frontend/src/app/icon.svg\" width=\"43\"/\u003e \n\u003c/div\u003e\n\n**Language / Idioma**  \n[English](#) | [Español](./docs/esp/README.md)\n\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://github.com/xscriptor/samurai\"\u003eSamurai\u003c/a\u003e\u003c/em\u003e : \u003cem\u003e\u003ca href=\"https://github.com/xscriptor/xwa\"\u003eXWA\u003c/a\u003e  \u003cstrong\u003esubmodule focused\u003c/strong\u003e on web cybersecurity — under active development\u003c/em\u003e\u003c/p\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/xscriptor/xassets/main/xwa/samurai/samurai-xwa-screenshot-01.png\" alt=\"Samurai XWA Screenshot 01\" width=\"100%\"\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eMore screenshots...\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/xscriptor/xassets/main/xwa/samurai/samurai-xwa-screenshot-02.png\" alt=\"Samurai XWA Screenshot 02\" width=\"100%\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/xscriptor/xassets/main/xwa/samurai/samurai-xwa-screenshot-03.png\" alt=\"Samurai XWA Screenshot 03\" width=\"100%\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/xscriptor/xassets/main/xwa/samurai/samurai-xwa-screenshot-04.png\" alt=\"Samurai XWA Screenshot 04\" width=\"100%\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/xscriptor/xassets/main/xwa/samurai/samurai-xwa-screenshot-05.png\" alt=\"Samurai XWA Screenshot 05\" width=\"100%\"\u003e\n\u003c/details\u003e\n\n\u003chr\u003e\n\n\u003ch2\u003eOverview\u003c/h2\u003e\n\n\u003cp\u003eSamurai is a cybersecurity analysis platform with two interfaces sharing the same database:\u003c/p\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eInterface\u003c/th\u003e\n    \u003cth\u003eDirectory\u003c/th\u003e\n    \u003cth\u003eLanguage\u003c/th\u003e\n    \u003cth\u003eType\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cstrong\u003eSamurai Web\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e/frontend\u003c/code\u003e + \u003ccode\u003e/backend\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eAngular 21 + FastAPI/Python\u003c/td\u003e\n    \u003ctd\u003eWeb application (Docker)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cstrong\u003eSamurai TUI\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e/samurai-tui\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eRust\u003c/td\u003e\n    \u003ctd\u003eTerminal application (standalone or Docker)\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ch3\u003eCapabilities\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\u003cstrong\u003ePort Scanning\u003c/strong\u003e — Nmap with configurable profiles (quick, balanced, deep, UDP)\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eWeb Reconnaissance\u003c/strong\u003e — DNS enumeration, subdomain discovery, API probing, security headers audit, technology fingerprinting\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eVulnerability Crawling (DAST)\u003c/strong\u003e — Page discovery, HTTP header analysis, link extraction\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eDatabase Export\u003c/strong\u003e — Full analytics dump as JSON (raw) or AES-256-GCM encrypted binary\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eHistory \u0026 Archive\u003c/strong\u003e — Persistent scan storage with findings and discovered topology\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch3\u003eDatabase Export \u0026 Cross-Compatibility\u003c/h3\u003e\n\u003cp\u003eThe web backend exports the database via \u003ccode\u003eGET /api/database/export/raw\u003c/code\u003e (JSON) and \u003ccode\u003ePOST /api/database/export/encrypted\u003c/code\u003e (AES-256-GCM binary). The TUI exports via the \u003cstrong\u003eExport\u003c/strong\u003e tab using the same encryption format (\u003ccode\u003eSAMURAI_DB_EXPORT_V1\u003c/code\u003e). Both interfaces share identical table schemas (\u003ccode\u003escans\u003c/code\u003e, \u003ccode\u003efindings\u003c/code\u003e, \u003ccode\u003ediscovered_links\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eWhen both point to the same PostgreSQL database, exports are unnecessary — scans appear in both interfaces automatically. The TUI can also run standalone with SQLite, storing data locally in \u003ccode\u003esamurai.db\u003c/code\u003e.\u003c/p\u003e\n\n\u003chr\u003e\n\n\u003ch2\u003eQuick Start\u003c/h2\u003e\n\n\u003ch3\u003eWeb Version (Docker Compose)\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003edocker compose up -d --build\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n  \u003cli\u003eFrontend: \u003ccode\u003ehttp://localhost:4200\u003c/code\u003e\u003c/li\u003e\n  \u003cli\u003eAPI docs: \u003ccode\u003ehttp://localhost:8000/docs\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch3\u003eTerminal Version (Standalone)\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003ecd samurai-tui\ncargo build --release\ncargo run --release\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eZero setup. Auto-creates a local SQLite database (\u003ccode\u003esamurai.db\u003c/code\u003e). No Docker required.\u003c/p\u003e\n\n\u003ch3\u003eTerminal Version (Docker — Ephemeral Session)\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003ecd samurai-tui\ndocker compose up --build\n# Session is destroyed on exit — no data persisted\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee \u003ca href=\"samurai-tui/README.md\"\u003esamurai-tui/README.md\u003c/a\u003e for full Docker configuration and persistent volume options.\u003c/p\u003e\n\n\u003chr\u003e\n\n\u003ch2\u003eRelated Documents\u003c/h2\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\u003cth\u003eDocument\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e\u003ca href=\"docs/manual.md\"\u003edocs/manual.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eDevelopment and production deployment guide\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e\u003ca href=\"docs/ui-architecture.md\"\u003edocs/ui-architecture.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eFrontend feature-driven architecture specification\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e\u003ca href=\"docs/python-libraries.md\"\u003edocs/python-libraries.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eBackend Python dependency inventory\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e\u003ca href=\"docs/uses/dast.md\"\u003edocs/uses/dast.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eDAST vulnerability scanning usage\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e\u003ca href=\"samurai-tui/README.md\"\u003esamurai-tui/README.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eTerminal application: installation, configuration, Docker, usage\u003c/td\u003e\u003c/tr\u003e\n  \u003ctr\u003e\u003ctd\u003e\u003ca href=\"ROADMAP.md\"\u003eROADMAP.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eDevelopment phases and milestones\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003chr\u003e\n\n\u003ch2\u003eProject Structure\u003c/h2\u003e\n\n\u003cpre\u003e\u003ccode\u003esamurai/\n├── frontend/              # Angular 21 SPA (standalone components)\n├── backend/               # FastAPI Python (REST + WebSocket)\n│   └── app/\n│       ├── main.py        # API routes and WebSocket endpoints\n│       ├── scanner.py     # Nmap port scanning engine\n│       ├── crawler.py     # DAST vulnerability crawler\n│       ├── db_exporter.py # Database export (raw + encrypted)\n│       └── recon/         # Web reconnaissance modules\n├── samurai-tui/           # Rust terminal application\n│   ├── Dockerfile         # Container build (Rust + nmap)\n│   ├── docker-compose.yml # Ephemeral session runner\n│   └── src/\n│       ├── main.rs        # TUI event loop and keybindings\n│       ├── scanner/       # Nmap engine with streaming\n│       ├── recon/         # DNS, subdomains, APIs, headers, tech\n│       ├── crawler/       # HTTP page discovery\n│       ├── export/        # Raw + AES-256-GCM encrypted export\n│       ├── db/            # SQLx dual-backend (Postgres + SQLite)\n│       └── tui/           # Nothing Design terminal UI\n├── docs/                  # Technical documentation\n└── docker-compose.yml     # 4 services: frontend, backend, redis, postgres\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cdiv id=\"x\" align=\"center\"\u003e\n\u003ch2\u003eX\u003c/h2\u003e\n\n\u003ca href=\"https://dev.xscriptor.com\"\u003e\n  \u003cimg src=\"https://xscriptor.github.io/icons/icons/code/product-design/xsvg/verified-filled.svg\" width=\"24\" alt=\"X Web\" /\u003e\n\u003c/a\u003e\n \u0026 \n\u003ca href=\"https://github.com/xscriptor\"\u003e\n  \u003cimg src=\"https://xscriptor.github.io/icons/icons/code/product-design/xsvg/github.svg\" width=\"24\" alt=\"X Github Profile\" /\u003e\n\u003c/a\u003e\n \u0026 \n\u003ca href=\"https://www.xscriptor.com\"\u003e\n  \u003cimg src=\"https://xscriptor.github.io/icons/icons/code/product-design/xsvg/quotes.svg\" width=\"24\" alt=\"Xscriptor web\" /\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxscriptor%2Fsamurai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxscriptor%2Fsamurai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxscriptor%2Fsamurai/lists"}