Phish
A lightweight browser-based AI smishing and phishing detector. Running a fine-tuned DistilBERT ONNX safetensors model (v3vishal/phish-v0.1) entirely client-side via WebAssembly, combined with in-browser SMS screenshot OCR and multi-point sender header verification.
What it is
Phishing via SMS (smishing) and encrypted messaging channels has evolved dramatically. Attackers no longer rely exclusively on poorly translated, obvious typos; generative tooling now crafts convincing institutional alerts that impersonate banking portals, electric utilities, postal carriers, and telecom operators.
Phish is a dual-track security and applied-AI project that tackles this problem directly on the client. Rather than shipping users' sensitive personal text messages and two-factor codes to an external cloud API, Phish runs inference locally in the user's browser using an 8-bit quantized DistilBERT ONNX safetensors model (v3vishal/phish-v0.1) via WebAssembly, paired with client-side OCR for SMS screenshots and sender identifier verification.
Why Multi-Point Verification Matters
A common mistake in AI security tools is relying solely on text NLP. Consider this realistic smishing scenario:
"Your SBI Bank account has been blocked today due to pending KYC update. Please update your PAN immediately to avoid permanent suspension."
A standalone text classifier might recognize the urgency, but text alone cannot confirm illegitimacy. What exposes the attack conclusively is the multi-point context:
- Sender Identifier Integrity: Legitimate banks utilize carrier-registered alphanumeric headers (e.g. TRAI standard
VM-HDFCBKorAX-SBIINB). When an official bank alert arrives from a random 10-digit personal phone number (+91 98231...), it is an immediate critical red flag. - Domain & URL Forensics: Attackers conceal destinations with free URL shorteners, dynamic DNS, bare IP links, or high-abuse TLDs (e.g.
.xyz,.top), or distribute Android banking trojans disguised as direct.apkdownload links. - DistilBERT ONNX Semantic Intent: Analyzes sentence structure, manipulative coercion, and linguistic framing to score the probability that the text aims to induce panic or offer fraudulent rewards.
- Client-Side Screenshot OCR: Users don't need to copy-paste messy text. Dragging a screenshot of the conversation runs in-browser optical character recognition (Tesseract.js) to isolate the sender header and message payload automatically.
Model Architecture & Quantization
The v0.1 model is fine-tuned on specialized smishing corpora and exported to ONNX format:
- Base Architecture:
DistilBertForSequenceClassification(6 Transformer layers, 768 hidden dimension, 12 attention heads, ~66M parameters). - ONNX Graph & 8-bit Quantization: Converted from PyTorch safetensors into an int8 quantized ONNX graph (
model_quantized.onnx, ~67 MB), enabling smooth WebAssembly execution in the browser via Transformers.js. - Zero-Knowledge Privacy: Neither the screenshot, message text, nor extracted phone numbers leave the browser. Inference runs entirely inside the client memory sandbox.
- Instant Heuristic Layer: If the 67 MB ONNX model is still downloading or the user is operating in offline/low-bandwidth conditions, an instant neural heuristics fallback scores the message immediately.
Roadmap & v0.2 Directions
- Multilingual Smishing Support: Fine-tuning on Hindi, Hinglish, and regional Indian language smishing datasets to detect local scam variations.
- Visual UI Overlay Analysis: Expanding OCR into computer vision heuristics that evaluate UI styling in screenshots to detect spoofed banking application interfaces.
- WebGPU Acceleration: Leveraging WebGPU execution providers for sub-50ms token inference latency on supported hardware.
Links & Artifacts
Hugging Face Model ↗ Launch in Crypt Sec-Ops ↗ GitHub Repository ↗ ← All projects