BLA
BLA는 오픈소스 Blue Defense MCP와 CLI로, 소프트웨어 자산을 자동 AI 리버스 엔지니어링으로부터 보호합니다
온라인 악용을 증거로 전환해 조작 이미지 확인, 변조 방지 증거 보관, NCCIA 신고서 작성, 영어·로마우르두 헬프라인 제공
Turn online abuse into a case you can file. Check images for manipulation, keep tamper-evident evidence, draft your NCCIA complaint and find the right helpline — in English and Roman Urdu. Your data s
보안TypeScript · CSSGitHub @Noor-ul-ain001온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Shieldly — digital safety case agent for women in Pakistan
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Turn online abuse into a case you can file. Shieldly is a free, bilingual (English and Roman Urdu) web platform for women in Pakistan facing online harassment, blackmail, deepfakes, impersonation, scams, and coordinated abuse campaigns. Four connected modules take a survivor from "something happened" to a complaint that is documented, hashed, and ready to file. Everything is kept on her own device.
Shieldly gives guidance, not legal advice. AI findings are indicators, not proof.README 전문 보기 ↗Turn online abuse into a case you can file. Shieldly is a free, bilingual (English and Roman Urdu) web platform for women in Pakistan facing online harassment, blackmail, deepfakes, impersonation, scams, and coordinated abuse campaigns. Four connected modules take a survivor from "something happened" to a complaint that is documented, hashed, and ready to file. Everything is kept on her own device.
Shieldly gives guidance, not legal advice. AI findings are indicators, not proof.
Online abuse against women in Pakistan is widespread and under-reported. The Digital Rights Foundation (DRF) Cyber Harassment Helpline, along with other public sources, has consistently reported thousands of complaints a year, with women making up the majority of callers. Common cases include:
Survivors often don't know which agency to approach. They may lose evidence by blocking or deleting first, and some never file because a formal complaint feels impossible to write. Many cannot visit an office.
(Figures and context come from DRF's published helpline reports and other public sources. Check DRF's latest annual report for current numbers.)
One Case lives in the browser, and four modules feed into it:
| Module | What it does |
|---|---|
1. Media Check (/media-check) | Upload a suspicious image. The device reads EXIF (camera, software, dates, GPS presence) and computes SHA-256. Gemini looks for visual manipulation indicators: lighting, edges, skin texture, hands, text, background warping, and face-body mismatch. The result shows confidence and likelihood with reasons, plus "Add to Evidence Vault", an AI-drafted "This is not me" statement (EN and Roman Urdu), and a takedown request template, including wording for non-consensual intimate imagery. |
2. Evidence Vault (/evidence) | Takes up to 20 screenshots. Each gets a SHA-256 hash, size, added-at time, captured-at time (EXIF or manual), platform, and description. The table can be sorted, edited, reordered, and deleted from. An optional "Extract details" step has the AI read a screenshot for platform, sender, and visible time, and the user must tick each item before it's saved. Exports a Case File PDF (made with pdf-lib in the browser) and a hash manifest (.txt). |
3. Case Assistant (/case-assistant) | A 5-step wizard: what happened, review evidence, where to report (filtered by incident type and province, national first, Police 15 first when in danger), a formal NCCIA complaint draft (cites PECA generally without invented section numbers, keeps [placeholders] for missing details, and attaches the evidence hash index), and follow-up with reference number tracking and .ics reminders at 7 and 14 days. |
4. Campaign Analyzer (/campaign) | Accepts pasted comments or a CSV (up to 500 rows). In the browser it clusters near-duplicate comments (token Jaccard ≥ 0.7), detects bursts (10-minute windows), and flags repeated handles and new accounts. The AI gets only aggregated stats plus up to 30 anonymised sample comments, and returns patterns rather than accusations. The output includes a Recharts timeline, a cluster list, and a Bulk Report Pack (CSV plus a PDF section) with platform guidance. |
Around the four modules:
/): an editorial landing page plus an interactive "What's happening right now?" guide. Pick a situation (threats to leak photos, a deepfake, a fake account, a pile-on, stalking, or a scam) to get do-now and avoid steps, the right tool, and who to call. It also includes a privacy explainer and an FAQ./dashboard): case title and type, progress across modules, a recommended next step, an activity timeline, private notes that stay on the device and are never exported or sent to AI, Export full case PDF, and Delete my case./help): every channel, filterable by issue and province, with search, tap-to-call, a "You did nothing wrong" message, and a guided breathing exercise./safety-tips): account-security checklists for phone and accounts, WhatsApp, Instagram, Facebook, and TikTok. Progress is saved in localStorage./api/chat). It is bilingual, survivor-centred, links to the right tool, and keeps the conversation in memory only.Module extras:
Browser (client) Server (Next.js route handlers, stateless)
----------------------------------------------- ------------------------------------------
Case state → IndexedDB (idb-keyval) POST /api/media-check image → Gemini → indicators
SHA-256 → Web Crypto POST /api/statement name/platform → statement
EXIF → exifr POST /api/extract screenshot → details
Thumbnails → <canvas> POST /api/complaint case facts → complaint (+ hash annex added in code)
PDF → pdf-lib POST /api/campaign-summary stats + ≤30 samples → patterns
Chat state (memory only) POST /api/chat streamed chat (last 20 text messages)
Campaign clustering / bursts / bulk pack
.ics reminders, CSV export
maxDuration = 60. No user content is logged. Only the error class and HTTP status are.generateText({ output: Output.object({ schema }) }). This replaces generateObject, which is deprecated in v7.localStorage, wrapped in try/catch.Defined once in lib/reporting-channels.ts:
| Channel | Contact | Source |
|---|---|---|
| NCCIA — National Cyber Crime Investigation Agency | 1799 · online complaint at nccia.gov.pk | nccia.gov.pk |
| DRF Cyber Harassment / Digital Security Helpline | 0800-39393 (toll-free) · [email protected] | digitalrightsfoundation.pk |
| Ministry of Human Rights Helpline | 1099 | Ministry of Human Rights, Govt. of Pakistan |
| Punjab Women's Helpline (PCSW) | 1043 (24/7) | Punjab Commission on the Status of Women |
| Sindh WDD Helpline | 1094 | Women Development Dept., Sindh |
| Balochistan Women Helpline | 1089 | Govt. of Balochistan |
| Madadgaar National Helpline | 1098 | Madadgaar National Helpline |
| FOSPAH (workplace harassment) | 1055 | Federal Ombudsperson for Protection against Harassment |
| PTA Complaint Portal | complaint.pta.gov.pk | Pakistan Telecommunication Authority |
| Police emergency | 15 | — |
| Platform in-app reporting | WhatsApp, Instagram, Facebook, TikTok | Platform help centres |
Verified from public sources as of October 2026. Please confirm on official websites. NCCIA office addresses are intentionally not listed; users are pointed to nccia.gov.pk to find their nearest Cybercrime Reporting Centre.
next-themes for light and dark modeuseChat for the streaming chatbotai) + @ai-sdk/google (Gemini free tier)Requires Node.js 20.9+ (tested with Node 24).
npm install
cp .env.example .env.local # then add your key
npm run dev # http://localhost:3000
Other scripts: npm run build (production build), npm start, npm run lint.
Without a key, everything except the AI features works. The AI routes return a clear "not configured" message, and the Campaign Analyzer falls back to a local estimate.
| Variable | Required | Description |
|---|---|---|
GOOGLE_GENERATIVE_AI_API_KEY | Yes (for AI features) | Free key from Google AI Studio |
GEMINI_MODEL | No | Defaults to gemini-flash-latest, the alias for the current Flash model. Set a specific free-tier Flash model to pin it. |
NEXT_PUBLIC_SITE_URL | No | Public URL used for Open Graph image links (e.g. https://hifazat.vercel.app) |
.env.local is git-ignored. Only .env.example is committed.
GOOGLE_GENERATIVE_AI_API_KEYGEMINI_MODEL (optional)NEXT_PUBLIC_SITE_URL (optional, your production URL)maxDuration = 60, and every page is static.Every model call shares a common set of rules (lib/ai.ts):
Module-specific rules add to these:
[placeholders], and cites PECA without section numbers. The hash annex is appended in code, so hashes can't be hallucinated.