comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Whatsapp Metadata Extractor

  • 1 Respuestas
  • 6171 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de
« en: Mayo 13, 2013, 06:22:08 pm »
Código: You are not allowed to view links. Register or Login
· WhatsApp Metadata Extractor :
       - main_manage.py (main de consola en forma de cliente)
       - DB_Extractor.py (extrae los metadatos de la BD)
       - metaimg_extractor.py (extrae los metadatos de los .jpg encontrados)


main_manage.py :
Código: Python
  1. # -*- coding: utf-8 *-*
  2. import DB_Extractor, metaimg_extractor
  3.  
  4. class WhatsApp_Extractor():
  5.  
  6.     def __init__(self):
  7.         self.__opt()
  8.  
  9.     def __opt(self):
  10.         #Uncomment the OPTION that you want to use
  11.  
  12.         #self.__opt1()  #-> DB METADATA EXTRACTOR
  13.         self.__opt2()  #-> IMG METADATA EXTRACTOR
  14.         #self.__opt3()  #-> BOTH, OPT1 AND OPT2
  15.  
  16.     def __opt1(self):
  17.         print "DB METADATA"
  18.         print "------------"
  19.         DB_Extractor.DB_Extractor()
  20.         print "------------"
  21.  
  22.     def __opt2(self):
  23.         print "IMG META"
  24.         print "------------"
  25.         metaimg_extractor.IMG_Meta()
  26.         print "------------"
  27.  
  28.     def __opt3(self):
  29.         print "DB METADATA"
  30.         print "------------"
  31.         DB_Extractor.DB_Extractor()
  32.         print "------------"
  33.         print "\nIMG META"
  34.         print "------------"
  35.         metaimg_extractor.IMG_Meta()
  36.         print "------------"
  37.  
  38. WhatsApp_Extractor()

DB_Extractor.py :
Código: Python
  1. # -*- coding: utf-8 *-*
  2. #Script to extract the metadata from the WhatsApp crypted DB
  3.  
  4. import sqlite3
  5. from Crypto.Cipher import AES
  6.  
  7. class DB_Extractor():
  8.  
  9.     def __init__(self):
  10.         self._manage_do()
  11.  
  12.     def _manage_do(self):
  13.         try:
  14.             self.__DB_Breaker('msgstore.db.crypt')
  15.             self.__DB_conn()
  16.             self.__SQL_Consulter()
  17.             #Log exporter
  18.         except:
  19.             print "Error starting the script"
  20.  
  21.     def __DB_Breaker(self, DBPath):
  22.         self.DBPath = DBPath
  23.         #breaking the hash
  24.         f = open(self.DBPath, 'rb')
  25.         key = "346a23652a46392b4d73257c67317e352e3372482177652c"
  26.         #triying to break the hash
  27.         try:
  28.             key = key.decode('hex')
  29.             cipher = AES.new(key, 1)
  30.             decoded = cipher.decrypt(f.read())
  31.             #Saving into a new db file
  32.             try:
  33.                 decoded_DB = open('metadb.db', 'wb')
  34.                 decoded_DB.write(decoded)
  35.                 decoded_DB.close()
  36.                 print "metadb.db has been created in the same directory"
  37.             except:
  38.                 print "An error has ocurred creating the decoded DB"
  39.         except:
  40.             print "Error decoding the hash"
  41.  
  42.  
  43.     def __DB_conn(self):
  44.         #triying to connect with the sqlite database
  45.         try:
  46.             self.conn = sqlite3.connect('metadb.db')
  47.             self.consult = self.conn.cursor()
  48.         except:
  49.             print "An error has ocurred connecting with the SQLite DB"
  50.  
  51.  
  52.     def __SQL_Consulter(self):
  53.         #Divided in :
  54.             # Messages
  55.             # Chat_list
  56.  
  57.         def __Messages():
  58.             #SQLConsult
  59.             try:
  60.                 self.consult.execute("SELECT key_remote_jid, key_from_me, \
  61.                remote_resource, status, datetime(timestamp), data, media_url, media_mime_type, \
  62.                media_size, latitude, longitude FROM messages;")
  63.  
  64.             except:
  65.                 print "An error has ocurred doing the SQL Consult"
  66.  
  67.             def __Shower():
  68.                 #Message details
  69.                 #nota : parsear status, comprobar si yo envio o recivo
  70.  
  71.                 for data in self.consult:
  72.                     try:
  73.                         print "\nMessages Details:"
  74.                         print "----------------------"
  75.  
  76.                         if str(data[2]):
  77.                             if str(data[1]) == '1':
  78.                                 print "From: me"
  79.                                 print "To: %s(group), integrant: %s"%(str(data[0]), str(data[2]))
  80.                             else:
  81.                                 print "From: %s(group), integrant: %s"%(str(data[0]), str(data[2]))
  82.                                 print "To: me"
  83.                         else:
  84.                             if str(data[1]) == '1':
  85.                                 print "From: me"
  86.                                 print "To: " + str(data[0])
  87.                             else:
  88.                                 print "From: " + str(data[0])
  89.                                 print "To: me"
  90.  
  91.                         print "Status: " + str(data[3])
  92.                         print "Timestamp: " + str(data[4])
  93.                         print "Message: " + str(data[5])
  94.                         print "Media content: %s, type: %s, size: %s"%(str(data[6]), str(data[7]), str(data[8]))
  95.                         print "Location(Lat: %s, Long: %s)"%(str(data[9]), str(data[10]))
  96.                         print "----------------------"
  97.  
  98.                     except:
  99.                         continue
  100.                         print "ERROR showing message details"
  101.  
  102.             __Shower()
  103.  
  104.  
  105.         def __Chat_list():
  106.             #SQLConsult
  107.             try:
  108.                 self.consult.execute("SELECT id, \
  109.                key_remote_jid FROM chat_list;")
  110.  
  111.             except:
  112.                 print "An error has ocurred doing the SQL Consult"
  113.  
  114.             def __Shower():
  115.                 #Chat list details
  116.                 for data in self.consult:
  117.                     try:
  118.                         print "\nChat_list"
  119.                         print "ID: " + str(data[0])
  120.                         print "Number: " + str(data[1])
  121.                         print "----------------------"
  122.                     except:
  123.                         continue
  124.                         print "ERROR showing chat list details"
  125.  
  126.             __Shower()
  127.  
  128.         #Initializing
  129.         __Messages()
  130.         __Chat_list()

metaimg_extractor.py :
Código: Python
  1. # -*- coding: utf-8 *-*
  2. import os, exif
  3.  
  4. class IMG_Meta():
  5.  
  6.     def __init__(self):
  7.         try:
  8.             self.__Media_extractor()
  9.             print "------------------------------------------------------\n"
  10.             self.__Profile_extractor()
  11.         except:
  12.             print "An error has ocurred starting the script"
  13.     def __Media_extractor(self):
  14.         try:
  15.             images = os.listdir('Media/WhatsApp Images/')
  16.         except:
  17.             print "An error has ocurred listing the files into the directory"
  18.  
  19.         def __Shower():
  20.             for i in images:
  21.                 print "-------------"
  22.                 print i
  23.                 obj = exif.extract_EXIF('Media/WhatsApp Images/%s' % i)
  24.                 print "-------------"
  25.  
  26.         __Shower()
  27.  
  28.     def __Profile_extractor(self):
  29.         try:
  30.             images = os.listdir('Profile Pictures/')
  31.         except:
  32.             print "An error has ocurred listing the files into the directory"
  33.  
  34.         def __Shower():
  35.             for i in images:
  36.                 print "-------------"
  37.                 print i
  38.                 obj = exif.extract_EXIF('Profile Pictures/%s' % i)
  39.                 print "-------------"
  40.  
  41.         __Shower()


Trabajando :




Saludos.
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado k0ws

  • *
  • Underc0der
  • Mensajes: 145
  • Actividad:
    0%
  • Reputación 0
  • I'm Back
    • Ver Perfil
  • Skype: k0wsit0
« Respuesta #1 en: Mayo 14, 2013, 01:22:29 pm »
Como siempre excelente compañero, enhorabuena  ;D

-Saludos-

 

¿Te gustó el post? COMPARTILO!



Bot Whatsapp en Python

Iniciado por ANTRAX

Respuestas: 10
Vistas: 11289
Último mensaje Febrero 19, 2018, 09:34:54 pm
por leomontilla
[PyQt4] CSS Extractor

Iniciado por Once

Respuestas: 4
Vistas: 1273
Último mensaje Enero 04, 2013, 01:13:32 am
por Once
Skype Metadata Extractor

Iniciado por Sanko

Respuestas: 7
Vistas: 2473
Último mensaje Julio 10, 2013, 03:02:10 am
por Skidush