¿Cómo puede un archivo engañar a un sistema para que crea que es otro formato?

En muchos entornos, los primeros bytes de un archivo son un identificador que indica el formato del archivo (número mágico) o (Shebang). Esto es especialmente cierto para archivos ejecutables, como ejecutables de programas y archivos interpretados como scripts de shell, archivos Python, etc.

En otros entornos, especialmente en Windows, los archivos tienen nombres en formatos como . , con “extensión de archivo” que indica el formato o la aplicación utilizada para acceder al archivo: Lista de firmas de archivos.

A menudo, un archivo tendrá ambos: una extensión de archivo específica y bytes de encabezado que indican el formato, así como cierta información necesaria para analizar el archivo.

En cuanto a “engañar” al entorno para que “crea que es otro formato”, puede cambiar el nombre de un archivo a un nuevo formato, pero a menos que los bytes reales en el archivo sean entendibles por un programa que maneje este formato, aún no podrá hacer algo interesante con el archivo.

Donde he hecho cosas como esta es si el archivo está en el formato correcto, pero está ligeramente dañado por alguna razón. En este caso, agregar la extensión correcta o el encabezado de byte en la parte superior permite que el programa al menos intente cargar el archivo, y si el programa es algo “tolerante” de errores de formato incorrecto, al menos puede ver cuál era el archivo se supone que contiene, y si el programa permite la edición, puede realizar ingeniería inversa y reparar el archivo.