¿Cómo puedo reparar un archivo PGP dañado?

¿Cómo puedo reparar un archivo PGP dañado?

Cifré un archivo con PGP, pero por "razones de seguridad" pensé que sería bueno dañar el encabezado y agregar algunos bytes adicionales para que, incluso si alguien lo encuentra, no sepa con seguridad que es un archivo PGP como resultado del descifrado. la verificación fallaría.

El problema es que ahora no recuerdo qué bytes adicionales agregué. ¿Hay alguna forma de "forzar" el descifrado o desinfectar el archivo/eliminar los bytes adicionales?

Actualizar:

Utilicé el script proporcionado por Jens para eliminar los bytes hasta que me solicite la contraseña. Lamentablemente, las contraseñas que recuerdo no parecen funcionar. Además, si sigo eliminando bytes después del primer mensaje, todavía recibo el mensaje de contraseña de vez en cuando, por lo que me pregunto si el método es realmente efectivo. Vea el registro a continuación

./a.bh
Trying bytes: 1
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 2
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 3
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 4
gpg: [don't know]: indeterminate length for invalid packet type 4
Trying bytes: 5
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 6
gpg: packet(6) with unknown version 125
Trying bytes: 7

........................
Trying bytes: 21
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 22
gpg: [don't know]: indeterminate length for invalid packet type 6
...........................
Trying bytes: 24
:literal data packet:
    mode ? (4), created 2823998230, name="U\x07\x82Swo\xe6\xd9\x82\xd9[C\x16\xba\xeb\xa50r\xcd#\x03\xbd>\xec*l>\xbd\xb2\xcb\x0b\x01\xa6g0\xfeQU\xa6\xc0\x87\xdbk9\xf9o\x88\x8dr\xec\xfe\xeb\xb38\x93W\xeb\xcb\xd3\xc4\x80\xf1\xda\x9b(\x8d\xa1\xbb\xf6\xf6\x9a\xd0:v\x81\xe5rF\xe09N\xda\xf3\x90\xcd\xf0.\xb0\xabf<\x96\xf2\x8d\xbd\x8b\x95\x99\x89:q[)\x0c\xf5X\xbd2\x083\xc1\x97\xb7\xee\x84S\xf2\xcfi\xf1\xa2\x93\x15\xe9kI\xaa\x9d*;\x06\x0e\x9c\x04\x13\x87\x88u\xe7]U]\xbc\xb2\x92\x91\x02;9p\x95\x081\xe9v\xa5\xc3\x7e+#Z\xb9\xb8Ka\x18\x96\x82K\xaf6\xb0f\xb8\x8d0\x17\xe2D\xc3&\xe5\xd9\x94\xad\x05,L\xb7\xcc\xfb\x7c",
    raw data: 35666 bytes
gpg: invalid marker packet
Trying bytes: 25
gpg: unknown S2K 85
gpg: invalid symkey encrypted packet
gpg: [don't know]: invalid packet (ctb=3e)
Trying bytes: 26
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 27
..................
Trying bytes: 43
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 44
--- on this line I get the password for the prompt and I simply press enter
:encrypted data packet:
    length: 12402
gpg: assuming IDEA encrypted data
gpg: packet(3) with unknown version 94
gpg: WARNING: message was not integrity protected
gpg: [don't know]: invalid packet (ctb=22)
Trying bytes: 45
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
Trying bytes: 46
.........................
Trying bytes: 58
:literal data packet:
    mode ? (1), created 2797635547, name="g0\xfeQU\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
    raw data: 0 bytes
gpg: [don't know]: invalid packet (ctb=6b)
.......... 
//I get the password prompt again on this line
Trying bytes: 61
:encrypted data packet:
    length: 1731264081
gpg: assuming IDEA encrypted data
Enter passphrase: 
:encrypted data packet:
    length: 1731264081
gpg: assuming IDEA encrypted data
gpg: encrypted_mdc packet with unknown version 235
gpg: WARNING: message was not integrity protected
:trust packet: flag=75 sigcache=00
gpg: [don't know]: invalid packet (ctb=21)
.....................
Trying bytes: 66
gpg: no valid OpenPGP data found.
gpg: processing message failed: eof
//here I get the password prompt again
Trying bytes: 67
:encrypted data packet:
    length: 3230129003
gpg: assuming IDEA encrypted data
gpg: encrypted_mdc packet with unknown version 180
gpg: WARNING: message was not integrity protected
gpg: packet(2) with unknown version 59

Debo mencionar que el archivo (que en realidad es un directorio) fue cifrado usando PGP (ahora propietario de Symantec)

Respuesta1

Como solo antepuso algo de basura, intente eliminarla nuevamente. Usando bash, puedes probar fácilmente todos los números posibles de bytes:

for i in {1..10}; do echo "Trying bytes: ${i}"; tail -c "+${i}" garbled.pgp | gpg --list-packets; done

Esto intentará enumerar el contenido del archivo, cortando un byte más en cada intento. Una vez que corte la cantidad correcta de bytes, le pedirá la contraseña; de lo contrario, simplemente continúe cortando un byte más. Ajuste el número máximo de bytes para intentarlo (aquí: 10) de forma adecuada. Una cantidad grande no hará daño, ya que puede interrumpir tan pronto como encuentre la cantidad correcta de bytes usando ctrl+ c.

Una vez que haya encontrado la cantidad correcta de bytes para cortar, ejecute (para 42 bytes)

tail -c +42 garbled.pgp > fixed.pgp

Ahora, descifre fixed.pgpde la forma habitual.

información relacionada