2012-09-04 1056 views
21

He intentado utilizar adb para extraer la bandeja de entrada de sms/mms en su totalidad del dispositivo, pero estoy teniendo algunos problemas. El teléfono tiene sus raíces y he probado los siguientes comandos:copia de seguridad de los contenidos completos de sms/mms a través de adb

entrada

./adb pull /data/data/com.android.providers.telephony/databases/mmssms.db 

salida

Permission denied 

entrada

./adb pull su /data/data/com.android.providers.telephony/databases/mmssms.db 

salida

The help menu 

¿Tengo fallas en mi pensamiento de que puedo extraer la bandeja de entrada de sms a través de comandos similares a los que he probado? Si se puede hacer, ¿qué está mal con mi comando?

Gracias

Respuesta

34

Una forma de obtener el contenido del directorio/datos es copiar la primera db sqlite a algún lugar que sea accesible, y luego usando adb tirón para copiar desde allí al host.

Por ejemplo, los siguientes comandos utiliza el puente androide para agarrar los datos de SMS (suponiendo que está contenida en /data/data/com.android.providers.telephony/databases/mmssms.db):

adb shell 
$ mkdir /mnt/sdcard/tmp 
# su 
# cat /data/data/com.android.providers.telephony/databases/mmssms.db > /mnt/sdcard/tmp/mmssms.db 
# exit 
$ exit 
adb pull /mnt/sdcard/tmp/mmssms.db . 

Ahora usted tiene la base de datos/SMS MMS en su máquina anfitrión, la sonda para encontrar receptor más popular, por ejemplo:

sqlite3 -header mmssms.db 'select address from sms' | sort -n | uniq -c | sort -n 

por último, poner en orden el área de temperatura:

adb shell 
$ rm /mnt/sdcard/tmp/mmssms.db 
$ rmdir /mnt/sdcard/tmp 
$ exit 
+2

¡Gran método paso a paso! - Necesito acceso de root ... – bgs

3

Gracias a la respuesta de @ Bonlenfum pude encontrar un script reutilizable para copiar cualquier archivo/directorio en un dispositivo rooteado a una ruta de Windows (local o UNC).


Editar: Solución de error con las rutas que contienen espacios.


Guardar los siguientes como: adbSuPull.bat

@echo off 

SetLocal 
set RemotePath=%~1 
set LocalPath=%~f2 

if [%1] == [] goto Usage 
if "%~1" == "/?" goto Usage 
if not [%3] == [] goto Usage 

:: Replace " " with "\ " (escape spaces) 
set RemotePath=%RemotePath: =\ % 

set TimeStamp=%date:~-4,4%-%date:~-10,2%-%date:~-7,2%_%time:~-11,2%-%time:~-8,2%-%time:~-5,2% 

:: Replace spaces with zeros 
set TimeStamp=%TimeStamp: =0% 

if "%LocalPath%" == "" set LocalPath=adbSuPull_%UserName%_%TimeStamp% 
set SdCardPath=/mnt/sdcard 
set TempPath=%SdCardPath%/adbSuPull_temp_%TimeStamp%/ 

echo. 
echo Copying to temp location "%TempPath%" 
echo. 
adb shell "su -c 'mkdir -p %TempPath%; cp -RLv %RemotePath% %TempPath%'" 

echo. 
echo Copying to destination "%LocalPath%" 
echo. 
adb pull "%TempPath%" "%LocalPath%" 
if ErrorLevel 0 goto Cleanup 

:Error 
echo. 
echo Operation failed. Is USB Storage in use? 
echo. 
pause 
call Cleanup 
exit /b 1 

:Cleanup 
echo. 
echo Removing temp location "%TempPath%" 
echo. 
adb shell "rm -Rf '%TempPath%'" 
exit /b ErrorLevel 

:Usage 
echo. 
echo.adbSuPull ^<RemotePath^> [^<LocalPath^>] 
echo. 
echo Copies files/directories from a rooted Android device to a Windows path. 
echo Author: Ben Lemmond [email protected] 
echo. 
echo. RemotePath (required) Specifies the path to the file or directory on 
echo.       the rooted Android device. 
echo. 
echo. LocalPath (optional) Specifies the destination path. This can be a 
echo.       Windows local path (C:\folder) or a UNC path 
echo.       (\\server\share). 
echo.       Defaults to adbSuPull_%%UserName%%_%%TimeStamp%% 
echo.       in the current working directory. 
exit /b 1 

Uso:

adbSuPull <RemotePath> [<LocalPath>] 

Copies files/directories from a rooted Android device to a Windows path. 
Author: Ben Lemmond [email protected] 

    RemotePath (required) Specifies the path to the file or directory on 
         the rooted Android device. 

    LocalPath (optional) Specifies the destination path. This can be a 
         Windows local path (C:\folder) or a UNC path 
         (\\server\share). 
         Defaults to adbSuPull_%UserName%_%TimeStamp% 
         in the current working directory. 
3

Hay que dar privalages raíz ADB antes de tirar esa base de datos

adb root 

adb pull /data/data/com.android.providers.telephony/databases/mmssms.db ./ 
Cuestiones relacionadas