Para buscar los contenidos PDF incrustados en un correo electrónico usando grep, se enfrenta al menos a uno, si no a dos desafíos.
La primera es que los archivos incrustados en un correo electrónico no se conservan en su forma original y, en cambio, se codifican en texto sin formato para su transmisión en el mensaje de correo electrónico. El formato MIME comúnmente utilizado es Base64, pero no siempre es así. Puede encontrar más detalles sobre base64, incluidos los métodos de codificación / decodificación aquí: enlace
Suponiendo que el archivo adjunto estaba codificado en base64, todavía no es tan simple como tomar su cadena de búsqueda y convertirla en una representación de base64 porque la codificación resultante depende de dónde aparece la cadena de destino en la cadena de entrada. base64 toma cada 6 bits del flujo de entrada y lo convierte en un carácter de texto sin formato. Suponiendo que el documento PDF utiliza una codificación simple de 8 bits para la cadena, 3 caracteres en el PDF se convertirán en 4 caracteres codificados. Una ilustración rápida de cómo la posición del personaje puede cambiar las cosas:
% echo "123456789" | base64
MTIzNDU2Nzg5Cg==
% echo "0123456789" | base64
MDEyMzQ1Njc4OQo=
En el primer ejemplo, 123
, 456
y 789
se convierten en MTIz
, NDU2
y Nzg5
respectivamente. En el segundo, las tuplas codificadas son 012
= > MDEy
, 345
= > MzQ1
, ... etc.
Su cadena de búsqueda podría comenzar al principio, en la mitad o al final de una de estas tuplas. Si busca una cadena lo suficientemente larga, podría crear 3 cadenas de búsqueda del medio que se puedan buscar, cada una de ellas debe tener un múltiplo de 3 caracteres. Por ejemplo, si quisiera buscar la cadena 123456789
, podría codificar en base a tres posibles candidatos de búsqueda: 123456789
, 234567
y 345678
. Una de las codificaciones básicas debería aparecer en el archivo PDF codificado si la cadena de texto sin formato 123456789
está presente.
Ahora llegamos al segundo gran problema. A través de esto, hemos asumido que el contenido no codificado del archivo PDF está en UTF-8, codificación de texto sin formato. Si observa el contenido de un archivo PDF real, encontrará que tiene todo tipo de codificaciones internas que incluyen indicadores de fuente, texto codificado en UTF-16 o UTF-32 y así sucesivamente. Es muy probable que su simple frase de búsqueda no aparezca en los datos PDF exactamente como espera. Puede haber contenido extra en el PDF entre caracteres, entre palabras, y también hay saltos de línea, por lo que si busca una frase que cruza un salto de línea, será más complicado crear su cadena de búsqueda de destino.
Hay un par de otras cosas que puedes probar, así que no todo está perdido.
Si conoce el nombre del PDF, puede buscarlo en su lugar. El nombre del archivo debe aparecer en el texto MIME del mensaje de correo electrónico en UTF-8 y, por lo tanto, se puede buscar.
También puede tener suerte y, en lugar de buscar en los correos electrónicos, busque archivos PDF. OSX Mail extrae los archivos adjuntos y los almacena en un directorio de descarga de correo. Estoy ejecutando Mavericks and Mail v7.3 y mis archivos adjuntos se escriben en los subdirectorios en ~ / Library / Containers / com.apple.mail
Por cierto, su comando grep está buscando una coincidencia exacta, por lo que si no está seguro del uso de mayúsculas y minúsculas, debe agregar la opción '-i' para una búsqueda que no distinga mayúsculas y minúsculas.