dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Bot anti-phishing para comerciantes de la localidad de Santa Fe (Bogotá). Es el componente digital del proyecto Escuela Móvil Anti-Phishing + Bot Verifica Santa Fe.
Un mismo motor de análisis atiende:
| Parte | Ruta | Qué hace |
|---|---|---|
| Bot de WhatsApp | /api/whatsapp | Recibe mensajes, links y capturas reenviados y responde con semáforo, simulacros y triage |
| Bot de Telegram | /api/telegram | El mismo bot en Telegram (botones, capturas y comandos /verificar, /simulacro, /ayuda) |
| Inicio | / | Tres acciones grandes (revisar, practicar, ya caí), ejemplos con un toque y el semáforo explicado |
| Bot web | /verificar | El mismo bot dentro de la página (/verificar?m=texto lo envía solo) |
| Ayuda urgente | /ayuda | Botones para llamar al 165 y al 123, pasos por caso y alerta vecinal para copiar |
| Simulador de casos | /simulador | Mensajes ficticios para revisar con el kit de 5 puntos (remitente, URL, urgencia, adjunto, ortografía); links trampa sin funcionar y cierre explicativo |
| Modo taller | /taller | Código por participante (T1-P01), consentimiento, lista de observación imprimible (/taller/observacion) y consentimiento (/taller/consentimiento) |
| Kit para la caja | /kit | Sticker imprimible con los 5 puntos y QR |
| Aula virtual | /aula | Pruebas de entrada y salida, prácticas y encuesta, sin registro |
| Afiche con QR | /afiche | Afiche imprimible para la Escuela Móvil |
| Panel del equipo | /admin | Listas, palabras clave, contactos, simulacros, aula e indicadores |
| Aviso de privacidad | /privacidad | Ley 1581 de 2012 |
dian-col.com vs dian.gov.co, bancolonbia.com), entidades públicas sin .gov.co,
links acortados (se siguen las redirecciones sin abrir la página), remitentes no
oficiales, pedidos de claves o pagos, urgencia artificial y comprobantes de pago.
Puntaje: ≥ 4 = 🔴 Peligroso, 2–3 = 🟡 Sospechoso, 0–1 = 🟢 Sin señales evidentes.Además: la regla pide_codigo marca 🔴 cualquier pedido de un código, clave o PIN; se detectan
ganchos típicos (premios, "cambié de número", empleos y préstamos falsos, QR nuevos); cada
veredicto trae un consejo 💡 para aprender la señal; y el bot entiende "gracias", "¿qué hago?",
"¿qué es phishing?" y "cómo denuncio".
Direcciones desconocidas: además de comparar con los links oficiales y las páginas falsas, se revisan rasgos que un sitio oficial casi nunca tiene: letras disfrazadas (xn--), terminaciones baratas (.xyz, .online…), muchos guiones, números mezclados con el nombre, palabras para dar confianza ("seguro", "pago", "verifica") y direcciones demasiado largas.
Faltas de ortografía: antes de aplicar las reglas, src/lib/typos.ts corrige "a oído" cada
palabra hacia un vocabulario de palabras importantes (v/b, s/z/c, ll/y, h muda, c/k/qu, g/j) y
tolera letras de más o de menos y teclas vecinas. Así "conpartenos el codijo", "grasias" o
"phisibg" se entienden, sin tocar links ni números y sin cambiar palabras comunes
("encargo" no se vuelve "embargo").
Límites de la IA: solo analiza mensajes recibidos (a una pregunta general responde que no es un mensaje), trata el texto como dato y nunca como orden, no recibe textos que intentan manipularla, su explicación se limpia (sin links ni teléfonos, máx. 2 frases) y nunca puede bajar un veredicto.
Antes y después: el panel compara la prueba de entrada (prueba-de-entrada) con la de salida
(prueba-de-salida) de cada ID anónimo para medir la capacidad de reconocer señales.
Después de un 🔴 o 🟡 el bot pregunta si la persona ya actuó y la deriva (banco, línea 165, CAI Virtual, 123) con una alerta lista para reenviar al frente de seguridad de la cuadra.
WA-…, HMAC-SHA256 con
ANON_ID_SECRET); el usuario de Telegram, en TG-…. En la web el navegador recibe un ID aleatorio (WEB-…) en una cookie.Next.js 16 (React, TypeScript, Tailwind) · Supabase (PostgreSQL) · WhatsApp Cloud API · Gemini API · Google Safe Browsing · Tesseract.js · Vitest. Todo cabe en capas gratuitas.
Requisitos: Node.js 20 o superior.
npm install
cp .env.example .env.local # opcional; pon al menos ADMIN_PASSWORD
npm run dev
Abre http://localhost:3000. Sin Supabase configurado, los datos se guardan en memoria y se borran al reiniciar: sirve para probar, no para el piloto.
npm test # pruebas del motor de análisis
npm run lint
npm run build
supabase/schema.sql
y dale Run.SUPABASE_URL) y la llave
service_role (SUPABASE_SERVICE_ROLE_KEY). Esta llave es secreta: solo va en Vercel.La primera vez que la app arranque cargará sola la lista blanca, las palabras clave, los contactos, los simulacros y las pruebas del aula.
.env.example (mínimo:
ADMIN_PASSWORD, ANON_ID_SECRET, SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY,
NEXT_PUBLIC_SITE_URL).https://<tu-proyecto>.vercel.app/admin con tu contraseña: los avisos
de colores muestran qué falta configurar.
ANON_ID_SECRET: genera un texto largo (por ejemplo conopenssl rand -hex 32) y no lo cambies después de lanzar, o los IDs anónimos de WhatsApp cambiarán.
GEMINI_API_KEY.SAFE_BROWSING_API_KEY.Sin estas llaves el bot funciona igual, solo con reglas.
/newbot → nombre Verifica Santa Fe → usuario terminado
en bot (ej. VerificaSantaFeBot). Te da un token.TELEGRAM_BOT_TOKEN (el token) y NEXT_PUBLIC_TELEGRAM_BOT (el usuario sin
"@") y vuelve a desplegar./admin y toca Conectar Telegram. Listo: escríbele /start al bot.La página de inicio y el afiche muestran el botón y el QR de Telegram automáticamente.
Si la base de datos se creó antes de agregar Telegram, vuelve a correr supabase/schema.sql
(es seguro: no borra datos) para que se guarden las métricas de este canal.
Fase 1 – número de prueba (ya puedes hacerla):
WHATSAPP_PHONE_NUMBER_ID) y el token temporal (WHATSAPP_TOKEN). Agrega tu celular en
la lista de destinatarios permitidos (hasta 5).WHATSAPP_APP_SECRET).WHATSAPP_VERIFY_TOKEN. Pon todas estas variables en Vercel y
vuelve a desplegar.https://<tu-proyecto>.vercel.app/api/whatsappWHATSAPP_VERIFY_TOKENFase 2 – conectar la SIM propia:
WHATSAPP_PHONE_NUMBER_ID por el ID del número nuevo.whatsapp_business_messaging y
whatsapp_business_management) y ponlo en WHATSAPP_TOKEN.NEXT_PUBLIC_WHATSAPP_NUMBER (ej. 573001234567) para que aparezca el
botón de WhatsApp en la página, y vuelve a desplegar.El código no cambia entre las dos fases.
/admin (contraseña ADMIN_PASSWORD):
Los cambios aplican al bot de WhatsApp, al bot web y al aula en menos de 30 segundos.
src/
app/ páginas y rutas de la API
api/whatsapp/ webhook de Meta
api/chat/ bot web
api/aula/ aula virtual
api/admin/ panel (sesión, CRUD, indicadores, CSV)
components/ chat, aula y panel
lib/
engine/ motor: extracción, dominios, reglas, OCR, IA, anonimizador
bot/ conversación (igual para WhatsApp y web)
data/ datos iniciales y almacenamiento (Supabase o memoria)
supabase/schema.sql tablas de la base de datos