Come leggere i dati da file .db.crypt ?

? Noman Hamid @ | Original: StackOverFlow
---

Voglio leggere i dati come stringa dal .db.crypt file C'è qualche lib o metodo per decodificare i dati da questo file ?

Se sì allora gentilmente mi puntare in direzione o fornire qualsiasi campione .

---

Top 5 Risposta

1tianwei @

Credo che .db.crypt è solo un suffisso definito da qualcuno . Ad esempio, posso fare un file di testo e il nome abc.db.crypt . Quindi non si può fare nulla solo conoscendo il suffisso .

Ma a volte il suffisso è un indizio per trovare la strada per la soluzione . Credo che questo file è un file di database che è stato cifrato prima . Quindi quello che dovete fare è trovare il metodo Encrypt ( forse DES o qualche algoritmo appena definito dall'autore ), decifrare il file in un file di database ( xxx.db ) e quindi utilizzare sqlite3 per ottenere i dati da esso .

2Noman Hamid @

Ho fatto questo utilizzando codice seguente :

public void copyDbToSdcard()
{
    try
    {
        String comando = "cp -r /data/data/com.whatsapp/databases/msgstore.db /sdcard/My_Custom_Folder/";
        Process suProcess = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
        os.writeBytes(comando + "
");
        os.flush();
        os.writeBytes("exit
");
        os.flush();
        try
        {
            int suProcessRetval = suProcess.waitFor();
            if(255 != suProcessRetval)
            {
                //
            }
            else
            {
                //
            }
        }
        catch (Exception ex)
        {
            Log.e("ERROR-->", ex.toString());
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}  


    private void openAndQueryDatabase()
{
    try
    {
        DataBaseHelper dbHelper = new DataBaseHelper(this.getApplicationContext());
        newDB = dbHelper.getWritableDatabase();

        Cursor c = newDB.rawQuery("SELECT data FROM messages where data!=''", null);

        if(c != null)
        {
            if(c.moveToFirst())
            {
                do
                {

                    String data = c.getString(c.getColumnIndex("data"));

                    results.add(data); //adding to arrayList

                }
                while (c.moveToNext());
            }
        }

                while (c3.moveToNext());
            }
        }
    }

    catch (SQLiteException se)
    {
        Log.e(getClass().getSimpleName(), "Could not create or Open the database");
    }
}  

E poi visualizzare i risultati della tua TextView o dovunque si desidera .

Cheers !! :)