29 votos

¿Auditar los permisos de las aplicaciones fácilmente en un solo lugar?

¿Hay que hacer una lista de todas las aplicaciones instaladas en el teléfono y los permisos que requieren en una página, o exportar la lista para que pueda ser fácilmente auditada?

14voto

Max Puntos 578

Usar aplicaciones de mercado como Permiso de vigilancia o Permisos . Además, hay varios otros.

0 votos

Lamentablemente, la aplicación Market tiene un error (¿o una característica prevista?) cuando no aparecen todos los permisos al instalar la aplicación. Esto puede ser un problema de compatibilidad con el software diseñado para versiones anteriores de Android... code.google.com/p/Android/issues/detail?id=9365

2 votos

Quizás incluir el comentario en su respuesta sería más sencillo.

0 votos

@Nikolaenko, al parecer es a propósito y se ha cambiado ahora: Android.stackexchange.com/questions/605/

4voto

Polsonby Puntos 11824

Otra aplicación que terminé usando en lugar de Permisos es Permisos de RL . Prefiero la interfaz. En cuanto a cuál funciona mejor, no lo sé.

2voto

Flow Puntos 14132

aSpotCat es también una bonita aplicación para la auditoría de permisos.

0voto

user29020 Puntos 139

Aplicaciones con permiso enumerará las aplicaciones instaladas por su orden de requisitos de permisos más exigentes a menos exigentes. (Sin embargo, en realidad no rastrea ni audita ni ajusta su comportamiento.)

0voto

Firelord Puntos 161

Dado que no se menciona ninguna versión de Android en la pregunta, propongo una respuesta basada en la línea de comandos pertinente a la versión 4.2.1 de Android y superior. Esto idealmente es una solución independiente del sistema operativo, el sistema operativo en el PC, es decir.

Dependencias

  • Requiere adb para que se configure en el PC.

  • Requiere busybox binario. Si el dispositivo está rooteado, instale Busybox aplicación. Si no, descargue el binario de busybox desde fuente oficial , cambie el nombre del binario a busybox , establecer la compatibilidad con Linux permiso de ejecución en ese binario para todos y moverlo al dispositivo usando

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC
  • Requiere aapt binario. Si estás ejecutando una ROM de CM o sus derivados, entonces ignora este requisito. De lo contrario, para Android 4.x, puedes considerar la descarga del binario desde aquí , cambie el nombre del binario a aapt , establecer la compatibilidad con Linux permiso de ejecución en ese binario para todos y moverlo al dispositivo usando

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC . 

    Para los usuarios de Android 5.x, pide ayuda a Google.

Aquí está mi pequeño script que hace la magia:

#!/system/bin/sh

# Check if the busybox binary exists under /data/local/tmp/ or /system/xbin. Set the detected binary's path into the variable busybox or exit if file doesn't exist or executable permission not set
\[\[ -x /data/local/tmp/busybox \]\] && busybox=/data/local/tmp/busybox || { \[\[ -x /system/xbin/busybox \]\] && busybox=/system/xbin/busybox || { printf "busybox binary not found or executable permission not set. Exiting\\n" && exit; }; }
# Check if the aapt binary exists under /data/local/tmp or /system/bin or /system/xbin. Set the detected binary's path into the variable aapt or exit if file doesn't exist or executable permission not set
\[\[ -x /data/local/tmp/aapt \]\] && aapt=/data/local/tmp/aapt || { \[\[ -x /system/bin/aapt \]\] && aapt=/system/bin/aapt || { \[\[ -x /system/xbin/aapt \]\] && aapt=/system/xbin/aapt || { printf "aapt binary not found or executable permission not set. Exiting\\n" && exit; }; }; }

# List package name of all the installed apps and save them in the file packages.txt under /sdcard
pm list packages | $busybox sed 's/^package://g' | $busybox sort -o /sdcard/packages.txt

# For each package name in the output we just saved, get the app's label using $path and $label, print a line and then finally list the permissions granted to the app 
while read line; do 
    path=$(pm path $line | $busybox sed 's/^package://g'); 
    label=$($aapt d badging $path  | $busybox grep 'application: label=' | $busybox cut -d "'" -f2);  
    $busybox printf "Permissions for app $label having package name $line\\n"; 
    dumpsys package $line | $busybox sed -e '1,/grantedPermissions:/d' -e '/^\\s\*$/,$d' | $busybox sort;
    $busybox printf "\\n"; 
done < /sdcard/packages.txt

Salida de demostración:

Permissions for app DisableService having package name cn.wq.disableservice
      android.permission.READ\_EXTERNAL\_STORAGE
      android.permission.WRITE\_EXTERNAL\_STORAGE

Permissions for app Indecent Xposure having package name co.vanir.indecentxposure
      android.permission.RECEIVE\_BOOT\_COMPLETED

Permissions for app Tags having package name com.android.apps.tag
      android.permission.CALL\_PHONE
      android.permission.NFC
      android.permission.READ\_CONTACTS
      android.permission.WAKE\_LOCK
      android.permission.WRITE\_SECURE\_SETTINGS
...
...
Permissions for app Themes Provider having package name org.cyanogenmod.themes.provider
      android.permission.ACCESS\_NOTIFICATIONS
      android.permission.ACCESS\_THEME\_MANAGER
      android.permission.INTERNET
      android.permission.READ\_THEMES
      android.permission.WRITE\_SECURE\_SETTINGS
      android.permission.WRITE\_SETTINGS
      android.permission.WRITE\_THEMES

Guarda el script en PC en un archivo llamado perm_script.sh y moverlo a /sdcard usando

adb push LOCAL_FILE /sdcard/   # LOCAL_FILE is the  path where you saved that file into PC

Ejecutar ese archivo

adb shell sh /sdcard/perm_script.sh > OUTPUT_FILE   # OUTPUT_FILE is the path where you want to save the final output

Cuanto mayor sea el número de aplicaciones instaladas en el sistema, mayor será el tiempo de ejecución del comando. En mi dispositivo, tardó unos tres minutos.

Relacionado: ¿Existe una forma nativa de encontrar todas las aplicaciones instaladas que tienen acceso a una función del teléfono?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X