Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
confusable-vision — 793 pares confundibles que faltan en Unicode TR39, conjunto de datos pionero entre scripts, puntuación SSIM con conciencia de fuentes en 230 fuentes y más de 22,000+ caracteres | Kitploit
Herramientas/GitHubGitHub/paultendo/confusable-vision
OSINT (Inteligencia de Fuentes Abiertas)ReconocimientoSeguridad WebInteligencia de AmenazasSeguridad de Cadena de SuministroPapers e InvestigaciónAprendizaje y EducaciónRecursos Curados
GitHubpaultendo/confusable-vision

confusable-vision

793 pares confundibles que faltan en Unicode TR39, conjunto de datos pionero entre scripts, puntuación SSIM con conciencia de fuentes en 230 fuentes y más de 22,000+ caracteres

Ver Repositorio
11hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

confusable-vision

Puntuación empírica de similitud de glifos mediante raycasting de contornos vectoriales. Renderiza pares de caracteres confusables Unicode en 245 fuentes del sistema, mide la similitud estructural directamente a partir de los contornos de las fuentes (sin rasterización) y produce artefactos JSON con puntuaciones de distancia continua por fuente.

Resultados clave de 52,6 millones de comparaciones de un solo carácter y 190 millones de comparaciones de múltiples caracteres en 22.581 caracteres y 12 sistemas de escritura:

  • 249,976 pares confusables únicos de un solo carácter en 245 fuentes, 12 escrituras, 66 pares entre escrituras. 764,395 descubrimientos totales a nivel de fuente.
  • 2,524,275 pares confusables únicos de múltiples caracteres (bigrama) incluyendo rn/m en 95 fuentes (33 por debajo de distancia 0.40) y oy/uk cirílico en 16 fuentes.
  • Puntuaciones de distancia continua por fuente, no listas binarias. Cada par tiene una distancia de rayo medida por fuente, proporcionando confianza consciente de la fuente para herramientas de seguridad posteriores.
  • 305% más descubrimientos que SDF, 29% más rápido. La firma de rayo enriquecida de cinco capas es un superconjunto estricto de los hallazgos de SDF; los pares exclusivos de SDF no se replicaron bajo revisión manual.

La salida se alimenta directamente en namespace-guard para la detección en tiempo real de confusables en nombres de paquetes, nombres de dominio e identificadores.

How it works

RaySpace proyecta rayos paralelos a través de los contornos de las fuentes en 36 ángulos y captura cinco capas de información por glifo: recuentos de cruces, posiciones de cruces, ángulos de cruce, distancias ping (ancho del trazo en cada cruce) y ping máximo (ancho del contador entre cruces). Esto produce una firma compacta por carácter y por fuente. Dos firmas se comparan con una distancia L1 ponderada en las cinco capas.

Un filtro en cascada de tres etapas hace factible la comparación exhaustiva:

  1. Filtro de ancho de avance (tolerancia del 15%) elimina pares con diferentes anchos de carácter. Elimina el 63% de los candidatos.
  2. Comparación de rayos (umbral 2.0, ajustado a 1.0 para pares de escrituras grandes). Elimina otro 33%.
  3. Solo el 3,3% de los candidatos sobreviven para convertirse en descubrimientos.

El banco de firmas (294,646+ entradas en 245 fuentes; más con --include-uppercase) se precalcula una vez. El descubrimiento se ejecuta como aritmética de un solo hilo en el banco, completando 52,6 millones de comparaciones de pares en 31 minutos sin hilos de trabajo ni GPU.

Quick start

root@kitploit:~
npm install

# 1. Build the ray signature bank (prerequisite, ~24 min)
npx tsx scripts/build-signature-bank.ts

# 1b. Include uppercase Latin A-Z (optional)
#     By default the bank only includes IDNA PVALID codepoints (lowercase,
#     digits, symbols). Use --include-uppercase to add uppercase A-Z, useful
#     for font identification and trademark visual comparison where uppercase
#     glyph shapes matter. The builder is resumable, so this only computes
#     the additional codepoints.
npx tsx scripts/build-signature-bank.ts --include-uppercase

# 1c. Include arbitrary codepoint ranges (optional)
npx tsx scripts/build-signature-bank.ts --extra-range=0041-005A

# 2. Single-char discovery (22,581 chars, 12 scripts, ~36 min)
npx tsx scripts/discover-singlechar-sdf.ts --scorer=ray

# 3. Multi-char (bigram) discovery (676 bigrams, ~63 min)
npx tsx scripts/discover-multichar-sdf.ts --scorer=ray

# 4. Score known TR39 multi-char confusables (~5 min)
npx tsx scripts/score-multichar-sdf.ts --scorer=ray
Pipeline SSIM heredado

El pipeline original basado en SSIM puntuó 26,5 millones de comparaciones en 230 fuentes. Sigue siendo funcional pero está superado por RaySpace para todas las tareas de descubrimiento y puntuación.

root@kitploit:~
# TR39 confusable pair scoring
npx tsx scripts/build-index.ts          # Render index (~160s, 11,370 PNGs)
npx tsx scripts/score-all-pairs.ts      # Score all pairs (~65s, 235K comparisons)

# Novel confusable discovery
npx tsx scripts/build-candidates.ts          # Candidate set (~23K chars)
npx tsx scripts/build-index.ts --candidates  # Render candidates (~40min, 89K PNGs)
npx tsx scripts/score-candidates.ts          # Score against Latin targets (~15min, 2.9M comparisons)

# Extract high-scoring discoveries from both pipelines
npx tsx scripts/extract-discoveries.ts

What it found

Pares confusables principales (un solo carácter, distancia media < 0.10)

"Ceros" = fuentes donde los contornos producen firmas de rayo bit-idénticas (distancia 0.000). La w latina/ԝ cirílica es idéntica en las 19 fuentes que contienen ambos glifos.

Avances entre escrituras (un solo carácter)

La Coda georgiana (U+10FF) forma un anillo confusable cuádruple con la o latina, la o cirílica y la ómicron griega, todas por debajo de la distancia 0.08.

Resultados principales de múltiples caracteres

El descubrimiento de oy/uk cirílico es el hallazgo novedoso más destacado: el bigrama latino "oy" es visualmente idéntico a la letra digráfica cirílica uk (ѹ) a distancia 0.000 en Helvetica y 0.0005 en Arial Unicode MS.

Calibración de umbral

Tres niveles operativos recomendados:

  • Estricto (< 0.50): 138 pares de un solo carácter, falsos positivos casi nulos. Adecuado para bloqueo automatizado (registro IDN, validación de nombres de paquetes) donde los falsos positivos tienen un costo real.
  • Estándar (< 1.00): 4,174 pares de un solo carácter, buen equilibrio entre cobertura y precisión. Adecuado para marcar y revisión manual en herramientas de seguridad.
  • Exploratorio (< 2.00): Conjunto completo de descubrimientos. Contiene ruido en el extremo superior pero útil para investigación, auditoría de fuentes y creación de conjuntos de entrenamiento.

Font querying

Consulte qué pares confusables existen para una fuente específica. Útil para diseñadores de fuentes que lanzan un nuevo tipo de letra, proveedores de navegadores que evalúan un cambio de fuente del sistema, o cualquier persona que elija una fuente de visualización para contextos sensibles a la seguridad como dominios IDN.

root@kitploit:~
npx tsx scripts/query-font.ts --list-fonts                    # 218 fonts in discovery data
npx tsx scripts/query-font.ts "Arial"                         # All pairs for Arial (SSIM >= 0.7)
npx tsx scripts/query-font.ts "Arial" --threshold 0.8         # High-confidence only
npx tsx scripts/query-font.ts "Arial" --compare "Georgia"     # Diff two fonts by SSIM delta
npx tsx scripts/query-font.ts "Arial" --json                  # JSON for downstream processing

La coincidencia de nombres de fuentes es insensible a mayúsculas y subcadena, por lo que "arial" coincide con Arial, Arial Black y Arial Unicode MS. El modo de comparación ordena por las mayores diferencias de SSIM primero, mostrando exactamente qué pares mejoran o empeoran al cambiar de fuente.

Requiere los archivos de descubrimiento del pipeline de puntuación (gitignorados, regenerar localmente).

Output

Comprometidos (CC-BY-4.0)

Generados (gitignorados, ejecutar pipeline para regenerar)

ArchivoDescripción
data/output/render-index/

Progress

  • Validación TR39 (1,418 pares, 230 fuentes, pipeline SSIM)
  • Descubrimiento novedoso de confusables (793 pares de alta puntuación de 23,317 candidatos, SSIM)
  • Escaneo confusable entre escrituras (12 escrituras ICANN, 23.6M pares, 563 descubrimientos, SSIM)
  • Consulta por fuente y comparación de fuentes
  • Puntuador RaySpace de cinco capas de contorno vectorial (reemplaza SDF y SSIM para descubrimiento)
  • Descubrimiento RaySpace de un solo carácter (249,976 pares únicos, 245 fuentes, 12 escrituras)
  • Descubrimiento RaySpace de múltiples caracteres (2,524,275 pares de bigrama únicos, 245 fuentes)
  • Descubrimiento entre escrituras con RaySpace (305% más pares que SDF, superconjunto estricto)
  • Producir confusable-weights-v2.json con registros distribucionales por par: media, p50, p90, recuento de fuentes, recuento de distancia cero, fracción cero y nivel recomendado (estricto/estándar/exploratorio). Las distancias RaySpace reemplazan SSIM. 4,174 pares en umbral estándar.
  • Formato de banco de firmas binario (reducir tiempo de carga de 273 s a segundos)
  • Puntuar fuentes arbitrarias por ruta sin volver a ejecutar el pipeline completo

Related

  • namespace-guard (v0.16.0+) consume confusable-weights.json para la puntuación de riesgo visual medida mediante confusableDistance({ weights })
  • REPORT.md: informe técnico completo del pipeline SSIM (12 secciones, análisis por fuente, apéndices)

Blog posts

Artículos en paultendo.github.io que cubren los hallazgos y la metodología detrás de este proyecto:

Metodología y hallazgos de RaySpace:

  • RaySpace: midiendo la similitud de glifos con raycasting de contornos vectoriales
  • De los escáneres CT a los caracteres confusables: el estado del arte detrás de RaySpace
  • Confusables de múltiples caracteres: cuando rn se convierte en m
  • 250.000 pares confusables. 102 que importan para nombres de dominio.

Hallazgos del pipeline SSIM:

  • Rendericé 1.418 pares confusables Unicode en 230 fuentes. La mayoría no son confusables a simple vista.
  • 793 caracteres Unicode parecen letras latinas pero no están (todavía) en confusables.txt
  • 28 caracteres CJK y Hangul parecen letras latinas
  • 248 pares confusables entre escrituras que ningún estándar cubre
  • 148x más rápido: reconstruyendo un pipeline de escaneo Unicode para escala entre escrituras
  • Cuando la similitud de forma miente: artefactos de proporción de tamaño en la detección de confusables
  • El nuevo DDoS: los confusables Unicode no engañan a los LLM, pero pueden multiplicar por 5 tu factura de API

Antecedentes

Artículos que cubren el espacio problemático más amplio que motivó este proyecto:

  • Un modelo de amenaza para la suplantación de identificadores Unicode
  • Haciendo medible el riesgo Unicode
  • Tu LLM lee puntos de código Unicode, no glifos. Eso es una superficie de ataque.
  • ¿A quién protege realmente la detección de confusables?
  • Unicode envía un mapa confusable. Necesitas dos.
  • confusables.txt y NFKC discrepan en 31 caracteres

Licence

  • Código (src/, scripts/): MIT
  • Datos generados (data/output/): CC-BY-4.0. Libre de usar, compartir y adaptar para cualquier propósito, incluido el comercial, con atribución.
  • Atribución: Paul Wood FRSA (@paultendo), confusable-vision
Descargar herramienta
FuenteDestinoEscriturasMediaFuentesCeros
w U+0077ԝ U+051DLatino-Cirílico0.0001919
j U+006Aϳ U+03F3Latino-Griego0.0132118
i U+0069і U+0456Latino-Cirílico0.0186250
s U+0073ѕ U+0455Latino-Cirílico0.0186246
c U+0063с U+0441Latino-Cirílico0.0196145
o U+006Fо U+043ELatino-Cirílico0.0206144
j U+006Aј U+0458Latino-Cirílico0.0216048
x U+0078х U+0445Latino-Cirílico0.0235950
p U+0070р U+0440Latino-Cirílico0.0246146
e U+0065е U+0435Latino-Cirílico0.0326144
a U+0061а U+0430Latino-Cirílico0.0426145
FuenteDestinoEscriturasMediaFuentes
ο U+03BFჿ U+10FFGriego-Georgiano0.0572
ヘ U+30D8へ U+3078Katakana-Hiragana0.12211
丶 U+4E36ヽ U+30FDHan-Katakana0.1259
二 U+4E8Cニ U+30CBHan-Katakana0.24911
口 U+53E3ロ U+30EDHan-Katakana0.26811
BigramaDestinoMediaFuentesNotas
ll॥ U+0965 (doble danda devanagari)0.1768Entre escrituras
oyѹ U+0479 (uk cirílico)0.32216Confusable bigrama novedoso entre escrituras
rnm U+006D0.5319533 fuentes por debajo de 0.40
blы U+044B (yeru cirílico)0.79749Entre escrituras
Umbral medioPares únicos de un solo carácterPares únicos de múltiples caracteres
< 0.5013813
< 1.004,1741,631
< 1.5059,700(ruido)
< 2.00249,9762,524,275
ArchivoDescripción
data/output/confusable-discoveries.json110 pares TR39 con SSIM alta (>= 0.7) o idénticos en píxeles
data/output/candidate-discoveries.json793 pares novedosos no en TR39, SSIM media >= 0.7
data/output/confusable-weights.json1,397 aristas ponderadas para integración con namespace-guard
data/output/cross-script-discoveries.json563 pares confusables entre escrituras
data/output/cross-script-summary.jsonResumen entre escrituras por par de escrituras
data/output/multichar-discoveries.jsonDescubrimientos confusables de múltiples caracteres
Renderizar PNGs + índice (pipeline SSIM)
data/output/singlechar-sdf-scores.jsonlPuntuaciones RaySpace de un solo carácter
data/output/multichar-rayspace-scores.jsonlPuntuaciones RaySpace de múltiples caracteres
data/output/signature-bank/Banco de firmas de rayos (294,646 entradas, 7.9GB comprimido)