Comencemos observando los teclados y los conjuntos de idiomas para entender que funcionan. En primer lugar, tenemos ASCII , que es la forma en que estás acostumbrado a los caracteres que se guardan. ASCII es una codificación , que asigna caracteres individuales a alguna combinación binaria. En computación moderna, estamos acostumbrados a la idea de que un byte tenga 8 bits de longitud, pero varias implementaciones de hardware (especialmente décadas hace) han usado otros tamaños .
Pero por ahora, resolvamos la idea de que el mundo usa bytes de 8 bits. El inglés es fácil porque puede ajustar fácilmente todos los signos y símbolos predominantes en 7 bits de espacio. Sin embargo, otros idiomas de caracteres latinos como el francés tienen símbolos importantes que faltan en este espacio. Para manejar eso, otras representaciones además de ASCII como ISO 8859-15 (Latin-9) entran en juego . Tenga en cuenta que si utiliza el símbolo ¾ al escribir con codificación Latin-1, se mostrará como Ÿ en Latin-9
Sin embargo, nada realmente restringe el uso de un solo byte para definir un símbolo. De hecho, puedes ver la diferencia en mi ejemplo anterior (un símbolo 3/4 y una Y con una diéresis sobre él) si tienes Unicode funciona correctamente. Unicode puede mostrar esto utilizando tablas de símbolos más largas en forma de UTF-16 o UTF-32 . En ese caso, un símbolo puede tener una longitud de 2 o 4 bytes, pero tiene un significado.
Con los idiomas asiáticos donde los símbolos están más basados en conceptos que en letras, esto no funciona tan bien para el espacio, por lo que Unicode es particularmente útil. En cualquier caso, sin embargo, las codificaciones realmente solo importan para el elemento humano. Una vez que los envía por el cable, la computadora no se compara para ver si ingresó ¾ o Ÿ, está verificando si el valor binario es 10111110. Por lo tanto, lo único que importa es la visualización. Ese mismo valor pasa por el cable, independientemente de quién lo escribió, y de hecho, alguien en Francia probablemente verá una apariencia diferente a la que oiré y presionaría diferentes teclas en su teclado para crearla. De hecho, para cada idioma hay todo tipo de diseños de teclado .
Entonces, dado que todo es solo un byte, el malware funciona de la misma manera. En lo que respecta a los troyanos, deben escribirse al idioma del usuario al que se dirigen (recuerde, un troyano pretende ser algo útil), pero funcionan de la misma manera.
En cuanto a la fuerza bruta, el tiempo es un factor del número de símbolos probados. Por lo tanto, uno puede usar fuerza bruta (especialmente a través del diccionario) en cualquier codificación si se usa todo el espacio binario, y mucho más rápido si conoce el diccionario de entradas válidas para probar.