BLA
BLA (Blind LLM Agents) is the open-source Blue Defense MCP and CLI built to protect software artifacts against automated AI reverse-engineering workflows.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
CS 166 Final Project — Phishing & Scam Email Detection
Course: CS 166 – Information Security
GitHub: https://github.com/Lushangtu123/Phishing-Scam-Email-Detection
PhishGuard is a FastAPI web application for explainable phishing-email
screening. It supports three distinct workflows:
• sender/domain risk analysis from an email address;
• message analysis from subject/body text or a complete RFC 5322 .eml file;
• public-safe DNS/MX/SPF/DMARC/PTR/WHOIS domain checks, with optional local
SMTP mailbox probing kept separate from domain evidence.查看完整 README ↗CS 166 (Information Security) final project, continued as a personal project. Live demo: https://phishguard-email-analyzer.vercel.app · Changes: CHANGELOG.md
PhishGuard is a FastAPI web application that screens an email for phishing and explains
every finding. It reads a sender address, a pasted subject and body, an original .eml
file, or a screenshot (its text and QR codes are read in the browser), and returns a
verdict together with the rule, link, sender and structure evidence behind it. A test
mode also checks a pasted text message (SMS or iMessage). Scores are explainable
heuristics, not calibrated probabilities.
SMS_ANALYSIS_ENABLED): what kind of number or name sent
the text, the organisation it claims to be, its links, and English and Chinese scam
wording (parcel, fine, refund, account, loan, gambling and "new number" lures). Rules
only: the text model was trained on email.Details: detection design and API.
flowchart LR
A["Sender address, text,<br/>.eml or screenshot"] --> B["MIME and headers<br/>email_structure.py"]
B --> C["Text each rendering shows<br/>html_visibility.py"]
C --> D["Rules: requests, lures, links,<br/>sender, structure"]
C --> E["Text model<br/>TF-IDF + logistic regression"]
D --> F["Conservative fusion<br/>fuse_content_risk"]
E --> F
F --> G["Verdict, score and<br/>the findings behind it"]
.eml, whose
sender, authentication and structure showed nothing ("Low Risk — Text Model Signal
Only"). With weak rule evidence beside it, it raises the message to High for review.Measured with the full serving pipeline on 2026-10-04 and 10-05, before this branch's 2026-10-05 changes (evaluation log):
| Cohort | Alerts |
|---|---|
| The owner's 92 genuine emails, pasted as text | 35 (38%) |
The same, as .eml, mailbox not chosen | 24 (26%) |
The same, as .eml downloaded from Gmail or Outlook.com and chosen | 3 (3%) |
| UniqueData legitimate (58) | 39 (67%) |
| PhishFuzzer recent legitimate seeds (102) | 63 (62%) |
| Nazario phishing, 2015–25 (3,466) | 3,445 (99.4%) |
| PhishFuzzer recent phishing seeds (103) | 88 (85%) |
.eml uploads: making it a note on pasted text
too would have cut Nazario alerts on local public corpora from 96.5% to 71.2% and
PhishNChips from 99.3% to 43.5%. The .eml note is not yet measured on the cohorts
above; see the evaluation log for its estimate.python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements-dev.txt
APP_ENV=development CONTENT_MODEL_ENABLED=false .venv/bin/uvicorn app:app --app-dir website --host 127.0.0.1 --port 8000
Then open http://127.0.0.1:8000. This starts the rules-only analyzer. To load the
committed text model, also set CONTENT_MODEL_ENABLED=true, and copy
CONTENT_MODEL_ARTIFACT and CONTENT_MODEL_ARTIFACT_SHA256 from vercel.json. Use Python
3.12, which the artifact requires; see deployment for every setting.
.venv/bin/python -m unittest discover -s website/tests
node --test website/static/*.test.mjs
CI also lints with ruff, smoke-tests the Vercel profile and compares screenshots; see
testing.
Phishing-Scam-Email-Detection/
├── app.py # Vercel entry point; imports website/app.py
├── vercel.json, render.yaml # deployment profiles
├── pyproject.toml # Vercel settings and the serving pins it installs
├── requirements*.txt # pinned runtime and development dependencies
├── website/
│ ├── app.py # API, analysis steps and fusion
│ ├── content_rules.py # keyword categories, requests, lures, attachment-text rules
│ ├── link_analysis.py # link extraction and destination checks (email and texts)
│ ├── http_policy.py # allowed hosts, rate-limit keys, security and cache headers
│ ├── domain_verification.py # MX, SPF, DMARC, PTR, WHOIS and SMTP checks for /api/verify-email
│ ├── html_visibility.py # HTML parsing, CSS cascade and the text each rendering shows
│ ├── email_structure.py # RFC 5322/MIME, authentication results, official senders,
│ │ # PDF and Word attachment text
│ ├── sender_features.py # sender-address features and domain registries
│ ├── sms_analysis.py # text messages: sender kind, claimed organisation, SMS rules
│ ├── content_model.py # offline text-model training and evaluation
│ ├── content_inference.py # digest-verified model loading and scoring
│ ├── language_coverage.py # script coverage (Han text)
│ ├── server_messages.py # message codes and English templates
│ ├── visual_evidence.py # browser OCR/QR evidence; enhanced_vision.py: optional RapidOCR
│ ├── local_review.py # optional local language-model review (development only)
│ ├── case_*.py, manage_case_access.py, feedback_*.py # optional /cases workspace and reports
│ ├── jev.py, jev_control.py # experimental Jev opinions
│ ├── sender_history.py, rate_limits.py, request_limits.py, domain_age.py,
│ │ ip_reputation.py, disposable_registry.py, verification_runtime.py,
│ │ model_environment.py, config.py, prebuild_demo_model.py
│ ├── data/ # registries and the message catalogue
│ ├── model/ # committed, digest-pinned text-model artifact
│ ├── static/ # frontend (vanilla JavaScript, English and Chinese)
│ ├── tools/ # evaluation, data and maintenance scripts
│ └── tests/ # Python regression tests
├── docs/ # design, API, deployment, evaluation and workflows
└── phishing-detection/ # archived CS 166 benchmark: UCI phishing websites
The UCI Phishing Websites notebook is the archived CS 166 course benchmark. It classifies websites from 30 URL, domain and HTML features; its results (Random Forest accuracy 0.9747) do not describe this email detector.
CS 166 – Information Security | Final Project