Los primeros 8 bytes de un fichero PNG son siempre los mismos. En decimal, serían:
137 80 78 71 13 10 26 10
Para poder examinar esos 8 bits en linux/unix, podemos usar la utilidad head
, y con hexdump
podemos verlos
en hexadecimal
head --bytes=8 ejemplo.jpg | hexdump -C
El resultado debería ser:
00000000 89 50 4e 47 0d 0a 1a 0a |.PNG....|
00000008
Buscar archivos PNG con otra extensión
El siguiente codigo en Python 3 localiza archivos de tipo PNG
sin extensión o
con una extensión que no sería la correcta:
import os
PNG_SIGNATURE = b'\x89\x50\x4e\x47\x0d\x0a\x1a\x0a'
for (path, dirnames,filenames) in os.walk('/home/jileon'):
for filename in filenames:
full_name = os.path.join(path, filename)
if os.access(full_name, os.R_OK):
with open(full_name, 'rb') as f:
head = f.read(8)
if head == PNG_SIGNATURE:
if not full_name.lower().endswith('.png'):
print(full_name)
Añadir un comentario