Compruebo las filtraciones de mis correos electrónicos

Objetivo

En este momento, es cata, los ciberataques y la exfiltración de datos son casi diarios, necesito estar seguro de las filtraciones de mis direcciones de correo electrónico.

Así que creé esta tarjeta HA:

Principio

Hay varios sitios que pueden probar si mi dirección de correo electrónico está comprometida o no.

El compromiso de una dirección de correo electrónico se produce cuando la información asociada a esa dirección (como contraseña, contactos o datos personales) está expuesta a terceros no autorizados, generalmente como resultado de una violación de datos. Esto puede suceder cuando las bases de datos de servicios en línea son hackeadas, y la información del usuario es robada y luego filtrada o vendida en foros o sitios de darknet. Una dirección de correo electrónico comprometida se puede utilizar para enviar spam, ataques de phishing o acceder a otras cuentas vinculadas a esa dirección, poniendo en peligro la seguridad y la privacidad del usuario.

El sitio más conocido de todos es:

Pero este sitio ya no proporciona API sin una suscripción, busqué otra solución y encontré el sitio:

Este sitio ofrece un APIV2 pagado pero ha dejado su APIV1 en línea, es más ligero pero es suficiente para mí saber si mi correo electrónico está comprometido y si está comprometido, cuántas filtraciones hay. Esta API tampoco necesita un token de autenticación, por lo que es mucho más simple.

Aquí está el enlace al documento de la API:

Creo consultas REST en sensors.yaml

He organizado muy clásicamente mis archivos de configuración en archivos YAML que son llamados por configuration.yaml.

sensor: !incluya rest.yaml

La llamada que voy a hacer está en el siguiente formato:

https://leakcheck.io/api/public?check=monmail@mail.fr

El resultado está en formato json, por ejemplo:

{ "exitoso": verdadero, "encontrado": 7, "campos": [ "último _name", "país", "primer _name", "nombre de usuario", "dob", "contraseña", "ciudad", "fuentes": [ { "nombre": "Deezer.com", "fecha": "2019-09" }, { "nombre": "Badoo.com", "fecha": «2013-07» } ] }
  • encontrado da el número de compromisos o más bien el número de bases de datos pirateadas que contienen el correo electrónico. 
  • campos es inútil en esta etapa
  • fuentes da los nombres y bases de datos de los compromisos, pero en la versión gratuita obviamente no tenemos integridad.

Aquí está el código que agrego para un correo electrónico de ejemplo:

- recurso: "https://leakcheck.io/api/public?check=demo46@mail.com" scan_interval: Sensor 86400: - nombre: "demo46@mail.com" _id único: _demo46 _mail _com valor _template: "{{value _json.success }}" json _atributos: - encontrado - fuentes

 

Cambie el nombre del sensor creado

Tengo que reiniciar HA o al menos recargar la configuración de Yaml, y llega el sensor.

Siempre me sorprende que no se tenga en cuenta el único _id, nada serio, lo corrijo manualmente. Utilizo sensor.fuite* porque es una tarjeta de autoentidades que luego usaré.

Voy a crear el mapa

El código es bastante complejo, partí del código de la excelente Herveaurel por sus baterías.

Esto es lo que agregué en el editor de configuración para configurar el tipo: custom:botón-tarjeta y plantilla: filtración _card

_card _templates botón: _card: variables: entidad: «[[[ return entity.entity _id ]]]» entidad: Icono de '[[[ return variables.entity ]]]': | [[ return entity.state === ¿"Verdadero"? "mdi:car-brake-alert": «mdi:shield-lock-outline» ]]] nombre: «[[[ return entity.attributes.friendly_name ]]]» etiqueta: | [[ return entity.state === ¿"Verdadero"? Compromiso<br>${entity.attributes.found} filtraciones“: "Protegido"]]]] muestran _icon: espectáculo real_state: falso show_label: plantilla verdadera: - no_style - fuente tap_action: acción: more-info double_tap_acción: acción: accionar _fields personalizados: barra: tarjeta: tipo: custom:entidades de tarjetas de barras: - entidad: '[[[ return variables.entity ]]]' color: | [[ var state = entity.state; if (state === "True") { devuelve "var(--card-red)"; } otra { devolver "var(--card-green)"; } ]]] Dirección: posiciones correctas: nombre: Indicador «off»: Valor «off»: Altura «desactivada»: Anchura de 50px: 100% icono: «fuera» de la entidad _row: verdaderos estilos: tarjeta: - altura: 40px - relleno: 2px - animación: icono infinito de la facilidad del parpadeo 0.8s: - posición: absoluto - anchura: 25px - color: var(--naranja) - izquierda: calc(7%) - 5px) - margen inferior: Nombre 2px: - posición: absoluto - tamaño de fuente: 13px - color: var(--orange) - font-weight: 500 - izquierda: calc(20%) - 15px) etiqueta: - posición: absoluto - tamaño de fuente: 13px - color: | [[ var state = entity.state; if (state === "True") return "var(--red)" else return "var(--green)" ]]] - font-weight: 600 - anchura: 100% - texto-alineación: centro - izquierda: calc(10%) + 70px) custom_fields: barra: - superior: '-19%« - izquierda: «-50%« - anchura: 100% - posición: absoluto - índice z: Estado 0: -valor: Estilos falsos: icono: - color: nombre var(--green): - color: tarjeta var(--green): - animación: Ninguno - valor: estilos desconocidos: nombre: - color: etiqueta var(--gris): - color: tarjeta var(--gris): - animación: blink 0.8s facilidad infinita - valor: estilos no disponibles: nombre: - color: etiqueta var(--gris): - color: tarjeta var(--gris): - animación: parpadear 0.8s facilidad infinita

Y aquí está el código de la tarjeta:

tipo: Tarjeta de entidades _mod: estilo: | ha-card { color de fondo: var(--tarjeta-fondo-color); radio fronterizo: var(--ha-card-border-radius)!importante; } entidades: - tipo: custom:decluttering-card plantilla: variables de cabecera: - nombre: Filtraciones de correo electrónico - icono: mdi:home-battery - tipo: custom:auto-entities tarjeta: tipo: las entidades muestran _header _toggle: filtro verdadero: incluir: - entidad _id: opciones sensor.leak*: tipo: Custom: plantilla de tarjeta de botón: Aparece la tarjeta de _: método: estado numérico: A decir verdad ignora _case: ip falso: falso show_empty: cierto

Y aparece la carta terminada