我想从.db.crypt file
读取数据作为字符串是否有任何lib或方法来解密此文件中的数据?
如果是,那么请指点我或提供任何样品。
答案 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或您想要的任何地方显示结果。
欢呼!! :)