¿Auditar los permisos de la aplicación fácilmente en un solo lugar?

28

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

Mate
fuente

Respuestas:

14

Use aplicaciones de mercado como Permission Watchdog o Permissions . Además, hay varios otros.

Denis Nikolaenko
fuente
Desafortunadamente, la aplicación Market tiene un error (¿o función prevista?) Cuando no todos los permisos están listados 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
Denis Nikolaenko
2
quizás incluir comentarios en su respuesta sería más simple.
bbaja42
@Nikolaenko, aparentemente está a propósito y ha cambiado ahora: android.stackexchange.com/questions/605/…
BlackShift
@BlackShift, ¿qué quieres decir con "cambiado ahora"? Cambiado por el desarrollador de Android. ¿equipo?
Denis Nikolaenko
@ Nikolaenko, creo que no estaba claro porque no está claro para mí. Estoy ejecutando cyanogenmod 6, android 2.2, y casi todas las aplicaciones solicitan los permisos que sus reclamos de enlaces se otorgan implícitamente. Así que no sé quién cambió esto (equipo de cianógeno o Android).
BlackShift
4

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

Mate
fuente
2

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

Fluir
fuente
0

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

user29020
fuente
0

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

Dependencias

  • Requiere que se configure en la PC.
  • Requiere busybox binario. Si el dispositivo está rooteado, instale la aplicación Busybox . De lo contrario, descargue el binario busybox de la fuente oficial , cambie el nombre del binario a busybox , configure el permiso ejecutable compatible con Linux en ese binario para todos y muévalo 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 binary. Si está ejecutando un CM o su ROM derivada, ignore este requisito. De lo contrario, para Android 4.x, puede considerar descargar el binario desde aquí , cambiar el nombre del binario a aapt , configurar el permiso ejecutable compatible con Linux 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 usuarios de Android 5.x, solicite ayuda a Google.

Aquí está mi pequeño guión que hace la magia:

#! / system / bin / sh

# Compruebe si el binario busybox existe en / data / local / tmp / o / system / xbin. Establezca la ruta del binario detectado en la variable busybox o salga si el archivo no existe o el permiso ejecutable no está configurado
[[-x / data / local / tmp / busybox]] && busybox = / data / local / tmp / busybox || {[[-x / system / xbin / busybox]] && busybox = / system / xbin / busybox || {printf "binario busybox no encontrado o permiso ejecutable no establecido. Saliendo \ n" && salir; }; }
# Compruebe si el binario aapt existe en / data / local / tmp o / system / bin o / system / xbin. Establezca la ruta del binario detectado en la variable aapt o salga si el archivo no existe o el permiso ejecutable no está establecido
[[-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 binario no encontrado o permiso ejecutable no establecido. Saliendo \ n" && exit; }; }; }

# Enumere el nombre del paquete de todas las aplicaciones instaladas y guárdelas en el archivo packages.txt en / sdcard
pm lista de paquetes | $ busybox sed 's / ^ paquete: // g' | $ busybox sort -o /sdcard/packages.txt

# Para cada nombre de paquete en la salida que acabamos de guardar, obtenga la etiqueta de la aplicación usando $ path y $ label, imprima una línea y finalmente enumere los permisos otorgados a la aplicación 
mientras lee la línea; hacer
    ruta = $ (pm ruta $ línea | $ busybox sed 's / ^ paquete: // g'); 
    etiqueta = $ ($ aapt d badging $ ruta | $ busybox grep 'aplicación: etiqueta =' | $ busybox corte -d "'" -f2);  
    $ busybox printf "Permisos para la aplicación $ label que tiene el nombre del paquete $ line \ n"; 
    paquete dumpsys $ line | $ busybox sed -e '1, / grantPermissions: / d' -e '/ ^ \ s * $ /, $ d' | $ busybox sort;
    $ busybox printf "\ n"; 
hecho </sdcard/packages.txt

Salida de demostración:

Permisos para la aplicación DisableService que tiene el nombre del paquete cn.wq.disableservice
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.WRITE_EXTERNAL_STORAGE

Permisos para la aplicación Indecent Xposure que tiene el nombre del paquete co.vanir.indecentxposure
      android.permission.RECEIVE_BOOT_COMPLETED

Permisos para etiquetas de aplicaciones que tienen el nombre del paquete com.android.apps.tag
      android.permission.CALL_PHONE
      android.permission.NFC
      android.permission.READ_CONTACTS
      android.permission.WAKE_LOCK
      android.permission.WRITE_SECURE_SETTINGS
...
...
Permisos para el proveedor de temas de aplicaciones que tiene el nombre del paquete 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

Guarde el script en la PC en un archivo llamado perm_script.shy muévalo a / sdcard usando

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

Ejecute 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 mayores sean las aplicaciones instaladas en el sistema, mayor será el tiempo para que el comando complete la ejecución. En mi dispositivo, me llevó unos tres minutos.

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

Señor del fuego
fuente