elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Extraer adjunto de EML
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Extraer adjunto de EML  (Leído 15,054 veces)
Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #10 en: 27 Julio 2012, 21:40 pm »

Ok, ya te envié el mensaje..

De todos modos lo planteo nuevamente porque al principio creo que no supe explicar bien cómo creo que tiene que funcionar..

Primer Paso...

Pasar todos los .eml de la carpeta a un único .txt (eso se consigue fácil)

Código:
type *.eml > destino.txt

Segundo paso..

Eliminar del archivo destino.txt todo lo que NO sea código base64 (ésto es lo que no se hacer, aunque estimo que splitter.exe de EleKtro H@cker lo podría hacer)

Tercer paso..

descifrar el código base64 del archivo destino.txt (con la aplicación de b64dec o con Decrypter.exe de EleKtro H@cker)

Código:
b64dec destino.txt destino-decodificado.txt

y listo. Puse los códigos más simples o al menos los que entiendo que hacen. La idea tambien es que no crear archivos intermedios como destino.txt sino que los datos estén limpios y decodificados (destino-decodificado.txt).

Saludos!


« Última modificación: 27 Julio 2012, 21:42 pm por Afkael » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #11 en: 28 Julio 2012, 10:58 am »

hmmm No te preocupes, El último script que puse hacia eso.



El code sigue las siguientes condiciones (Si esto no es como lo he tenido en cuenta, Especifícalo para corregirlo):
- El principio del code en base64 empieza SIEMPRE después de la cadena "X-Attachment-Id: ......."

El problema en los eml reales es que esa condición no se cumple, La cadena es distinta:
Código:
Content-Disposition: attachment; filename=........

Así que es suficiente con cambiar la cadena que el script tiene que buscar...:
Código
  1. if line.include?('Attachment-Id')
Por esta:
Código
  1. if line.include?('attachment')

(EDITO: DEBES ASEGURARTE DE QUE EN TODOS LOS ARCHIVOS EML SÉA IGUAL LA CONDICIÓN ANTES DE USAR EL SCRIPT, SINÓ NO SE DESENCRIPTARAN TODOS LOS EMAILS. SUPONGO QUE SI TODOS LO HAN MANDADO CON EL MISMO CLIENTE DE CORREO PUES LA CONDICIÓN NO CAMBIARÁ, PERO ASEGURATE TÚ MISMO MEJOR. SI HAY MÁS CADENAS DISTINTAS AGREGALAS A ESTE ÚLTIMO SCRIPT COMO VES QUE HE HECHO)

Aquí tienes una versión mejorada:

EML-Decrypter.RB
Código
  1. # -*- coding: UTF-8 -*-
  2. require 'base64'
  3.  
  4. # Este es el archivo de destino que contendrá todos los base64 descifrados.
  5. DestFile = '.\Todo.txt'
  6.  
  7. # Cambia el directorio de trabajo actual si se indica la ruta desde la consola.
  8. if not ARGV[0] == nil
  9. Dir.chdir(ARGV[0])
  10. end
  11.  
  12. # Cambia el archivo de destino si se indica desde la consola.
  13. if not ARGV[1] == nil
  14. DestFile = ARGV[1]
  15. end
  16.  
  17. # Procesa cada archivo EML del directorio actual, descifrando los codes en Base64 que contenga cada archivo, Y los guarda en el archivo de destino.
  18. for file in Dir.glob('*.eml') do
  19. puts "\n[+] #{file}"
  20. File.open(file).each_line do |line|
  21. if line.include?('attachment') or line.include?('X-Attachment-Id')
  22. puts "Adjunto: #{line.split('=').last.to_s}"
  23. File.open(DestFile, 'a+') do |newfile|
  24.   newfile.puts Base64.decode64(File.read(file).split(line.to_s).last.split('--').first.split(' ').to_s)
  25.   end # newfile
  26. end # split
  27. end # line
  28. end # for *.eml
  29.  
  30. __END__
  31.  

PD: No es necesario que copies todos los EML en un solo archivo, El code va procesando archivo por archivo, Y va guardando los base64 descifrados en el archivo de destino.

Código
  1. @Echo OFF
  2. Ruby.exe EML-Decrypter.rb "Carpeta donde tengas los EML" "Archivo de destino"
  3. REM Ejemplo:
  4. REM EML-Decrypter.rb "C:\Test\emails" "C:\destino-descifrado.txt"

Con esto creo que ya está más que solucionado jeje xD.

Saludos.


« Última modificación: 28 Julio 2012, 11:21 am por EleKtro H@cker » En línea



Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #12 en: 28 Julio 2012, 16:23 pm »

Si señor, es exactamente lo que necesitaba, usted es groooooosso  ;-) y estoy eternamente agradecido de su buena voluntad. Los eml tienen todos la misma cadena.

Solo me queda resolver una cosilla que no he encontrado en la inet, es una pavada, pero la ruta a la carpeta que tiene los eml tiene espacios, también la ruta donde quiero poner el archivo de salida y por ello no he podido hacerlo funcionar con esas rutas..

Código:
@Echo OFF
Ruby.exe EML-Decrypter.rbw "C:\Users\Dardo\AppData\Local\Microsoft\Windows Live Mail\Live.com (d a3d\Liquidación df1" "C:\Users\Dardo\Dropbox\AJYJA Redolfi\Plantillas\Acreditaciones POS\Acreditaciones.txt"
REM Ejemplo:
REM EML-Decrypter.rb "C:\Test\emails" "C:\destino-descifrado.txt"
Exit

Bien.. la cuestion es que el script funcionaasi que pongo que está solucionado.

Gracias de nuevo!!
« Última modificación: 28 Julio 2012, 16:39 pm por Afkael » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #13 en: 28 Julio 2012, 16:38 pm »

Es extraño que no funcione por los espacios :-/

EDITO: El problema es que estás usando el caracter expecial latino "ó" (Liquidación)

Prueba asi:

Código
  1. @Echo OFF
  2. CHCP 1252
  3. Ruby.exe EML-Decrypter.rbw "C:\Users\Dardo\AppData\Local\Microsoft\Windows Live Mail\Live.com (d a3d\Liquidación df1" "C:\Users\Dardo\Dropbox\AJYJA Redolfi\Plantillas\Acreditaciones POS\Acreditaciones.txt"

EDITO 2: Y guarda el bat desde el bloc de notas, en codificación ANSI.

Saludos
« Última modificación: 28 Julio 2012, 16:42 pm por EleKtro H@cker » En línea



Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #14 en: 28 Julio 2012, 16:50 pm »

Es extraño que no funcione por los espacios :-/

En realidad es una supocición mia, ya que el script funciona si copio todos los .eml a la carpeta c:/test/email como venia en el ejemplo.

En fin.. tampoco éstos código funciona.. voy a revisar la ruta, yo crei que podían ser los espacios.
En línea

Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #15 en: 28 Julio 2012, 17:10 pm »

Es extraño que no funcione por los espacios :-/

EDITO: El problema es que estás usando el caracter expecial latino "ó" (Liquidación)

Prueba asi:

Código
  1. @Echo OFF
  2. CHCP 1252
  3. Ruby.exe EML-Decrypter.rbw "C:\Users\Dardo\AppData\Local\Microsoft\Windows Live Mail\Live.com (d a3d\Liquidación df1" "C:\Users\Dardo\Dropbox\AJYJA Redolfi\Plantillas\Acreditaciones POS\Acreditaciones.txt"


EDITO 2: Y guarda el bat desde el bloc de notas, en codificación ANSI.

Saludos

Sip.. listo!!

Gracias!
« Última modificación: 29 Julio 2012, 18:01 pm por Afkael » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #16 en: 28 Julio 2012, 17:49 pm »

Solo te dí la solución para que Batch reconozca el caracter "Ó", Pero me faltó darte la solución para que Ruby reconozca el caracter.

EML-Decrypter.rb
Código
  1. # -*- coding: IBM437 -*-
  2. require 'base64'
  3.  
  4. # Este es el archivo de destino que contendrá todos los base64 descifrados.
  5. DestFile = '.\Todo.txt'
  6.  
  7. # Cambia el directorio de trabajo actual si se indica la ruta desde la consola.
  8. if not ARGV[0] == nil
  9. puts Dir.chdir(ARGV[0].gsub('ó','¢'))
  10. end
  11.  
  12. # Cambia el archivo de destino si se indica desde la consola.
  13. if not ARGV[1] == nil
  14. DestFile = ARGV[1]
  15. end
  16.  
  17. # Procesa cada archivo EML del directorio actual, descifrando los codes en Base64 que contenga cada archivo, Y los guarda en el archivo de destino.
  18. for file in Dir.glob('*.eml') do
  19. puts "\n[+] #{file}"
  20. File.open(file).each_line do |line|
  21. if line.include?('attachment')
  22. puts "Adjunto: #{line.split('=').last.to_s}"
  23. File.open(DestFile, 'a+') do |newfile|
  24.   newfile.puts Base64.decode64(File.read(file).split(line.to_s).last.split('--').first.split(' ').to_s)
  25.   end # newfile
  26. end # split
  27. end # line
  28. end # for *.eml
  29.  
  30. __END__
  31.  

Lo he testeado con las rutas de tu ejemplo.

PD: Sería mucho más fácil si le cambiases la maldita Ó a la carpeta xD

Saludos.
En línea



Afkael

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: [BATCH] Extraer adjunto de EML
« Respuesta #17 en: 30 Julio 2012, 14:55 pm »

Mirá que el anterior funciona y éste último no..

No te se decir cuál es el problema, pero el último código no funciona pero el primero si :)

Edtito: Además agregué una linea al archivo batch para eliminar el archivo Agreditaciones.txt antes de extraer la información de los .eml porque duplicaba los datos que ya contenía. Osea, si el archivo tenia 500 datos, al ejecutarlo nuevamente empezaba a tener 1000, 1500, 2000 y asi sucesivamente..

Nuevo Batch
Código
  1. @Echo OFF
  2. del Acreditaciones.txt
  3. CHCP 1252
  4. Ruby.exe EML-Decrypter.rbw "C:\Mails" "C:\Acreditaciones.txt"



Saludos!
« Última modificación: 30 Julio 2012, 17:20 pm por Afkael » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Varias dudas para extraer informacion de texto x batch?
Scripting
gh1E 6 8,294 Último mensaje 22 Julio 2009, 16:26 pm
por gh1E
Extraer nombre y extension de archivo en Batch[Solucionado]
Scripting
gorgon12 7 10,992 Último mensaje 6 Agosto 2009, 20:45 pm
por gorgon12
extraer lineas txt y crear txt [batch]
Scripting
presen 7 15,073 Último mensaje 10 Noviembre 2009, 19:42 pm
por presen
Ayuda - Extraer un texto de un .txt [Batch]
Scripting
eXoRTH 4 5,877 Último mensaje 13 Noviembre 2011, 21:45 pm
por eXoRTH
Extraer Letras con un batch
Scripting
wallyeh 1 2,723 Último mensaje 23 Julio 2019, 21:45 pm
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines