如何从.db.crypt文件中读取数据?

时间:2014-03-10 12:04:43

标签: android database

我想从.db.crypt file读取数据作为字符串是否有任何lib或方法来解密此文件中的数据?

如果是,那么请指点我或提供任何样品。

2 个答案:

答案 0 :(得分:0)

我认为.db.crypt只是某人定义的后缀。例如,我可以创建一个文本文件并将其命名为abc.db.crypt。因此,只要知道后缀,就无法做任何事情。

但有时后缀是找到解决方案的线索。我想这个文件是一个先加密的数据库文件。所以你需要做的是找到加密方法(可能是DES或者作者刚刚定义的算法),将文件解密为数据库文件(xxx.db),然后使用sqlite3从中获取数据。

答案 1 :(得分:0)

我通过使用以下代码完成此操作:

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 + "\n");
        os.flush();
        os.writeBytes("exit\n");
        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");
    }
}  

然后在TextView或您想要的任何地方显示结果。

欢呼!! :)