dumbtv
dumbtv가 ADB로 Fire TV에서 광고·추적·업데이트 알림을 제거, 루트·앱 변경 없이, 무료 오픈소스
주소·이메일을 검사해 피싱 신호를 확인하고 결과를 설명합니다. PhishGuard 점수는 경험적 근거이며 안전을 보장하지 않습니다
Check a sender address or a full email for phishing signals, with each finding explained. PhishGuard’s scores are heuristic evidence, not a guarantee of safety.
보안Python · JavaScriptGitHub @Lushangtu123가동 상태 재확인 필요운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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