Auditer facilement les autorisations des applications en un seul endroit?

28

Est-il possible de répertorier toutes les applications installées sur votre téléphone et les autorisations dont elles ont besoin sur une seule page, ou d'exporter la liste afin qu'elle puisse être facilement auditée?

Mat
la source

Réponses:

14

Utilisez des applications de marché telles que Permission Watchdog ou Permissions . En outre, il en existe plusieurs autres.

Denis Nikolaenko
la source
Malheureusement, l'application Market a un bogue (ou une fonctionnalité prévue?) Lorsque toutes les autorisations ne sont pas répertoriées lors de l'installation de l'application. Il peut s'agir d'un problème de compatibilité avec les logiciels conçus pour les anciennes versions d'Android ... code.google.com/p/android/issues/detail?id=9365
Denis Nikolaenko
2
il serait peut-être plus simple d'inclure des commentaires dans votre réponse.
bbaja42
@Nikolaenko, apparemment, c'est exprès et a changé maintenant: android.stackexchange.com/questions/605/…
BlackShift
@BlackShift, que voulez-vous dire par «changé maintenant»? Modifié par Android dev. équipe?
Denis Nikolaenko
@ Nikolaenko, je pense que je n'étais pas clair parce que ce n'est pas clair pour moi. J'utilise cyanogenmod 6, android 2.2, et presque toutes les applications demandent les autorisations que vos revendications de lien sont implicitement accordées. Je ne sais donc pas qui a changé cela (équipe cyanogène ou android).
BlackShift
4

Une autre application que j'ai fini par utiliser à la place des autorisations est les autorisations RL . Je préfère l'interface. En ce qui concerne celui qui fonctionne le mieux, je ne sais pas.

Mat
la source
2

aSpotCat est également une belle application pour l'audit des autorisations.

Couler
la source
0

Les applications compatibles avec les autorisations répertorieront les applications installées par ordre d'exigences d'autorisations les plus exigeantes à les moins exigeantes. (Cependant, il ne suit pas, ne vérifie pas ou n'ajuste pas leur comportement.)

user29020
la source
0

Puisqu'aucune version d'Android n'est mentionnée dans la question, je propose une réponse basée sur la ligne de commande pertinente pour la version Android 4.2.1 et supérieure. C'est idéalement une solution indépendante du système d'exploitation, OS sur PC, c'est-à-dire.

Dépendances

  • Nécessite d'être configuré sur PC.
  • Nécessite le binaire busybox . Si l'appareil est enraciné, installez l' application Busybox . Sinon, téléchargez le binaire busybox à partir de la source officielle , renommez le binaire en busybox , définissez l' autorisation exécutable compatible Linux sur ce binaire pour tout le monde et déplacez-le dans l'appareil à l'aide

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC
    
  • Nécessite un binaire adapté . Si vous exécutez un CM ou sa ROM dérivée, ignorez cette exigence. Sinon, pour Android 4.x, vous pouvez envisager de télécharger le binaire à partir d' ici , renommer le binaire en aapt , définir l' autorisation exécutable compatible Linux sur ce binaire pour tout le monde et le déplacer vers l'appareil en utilisant

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

    Pour les utilisateurs d'Android 5.x, demandez de l'aide à Google.

Voici mon petit script qui fait la magie:

#! / system / bin / sh

# Vérifiez si le binaire busybox existe sous / data / local / tmp / ou / system / xbin. Définissez le chemin du binaire détecté dans la variable busybox ou quittez si le fichier n'existe pas ou si l'autorisation exécutable n'est pas définie
[[-x / data / local / tmp / busybox]] && busybox = / data / local / tmp / busybox || {[[-x / system / xbin / busybox]] && busybox = / system / xbin / busybox || {printf "binaire busybox introuvable ou autorisation exécutable non définie. Quitter \ n" && exit; }; }
# Vérifiez si le binaire aapt existe sous / data / local / tmp ou / system / bin ou / system / xbin. Définissez le chemin du binaire détecté dans la variable aapt ou quittez si le fichier n'existe pas ou si l'autorisation exécutable n'est pas définie
[[-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 "binaire aapt introuvable ou autorisation exécutable non définie. Quitter \ n" && exit; }; }; }

# Liste le nom du package de toutes les applications installées et enregistrez-les dans le fichier packages.txt sous / sdcard
pm liste des paquets | $ busybox sed 's / ^ package: // g' | $ busybox sort -o /sdcard/packages.txt

# Pour chaque nom de package dans la sortie que nous venons d'enregistrer, obtenez le libellé de l'application en utilisant $ path et $ label, imprimez une ligne, puis répertoriez enfin les autorisations accordées à l'application 
pendant la lecture de la ligne; faire
    path = $ (pm path $ line | $ busybox sed 's / ^ package: // g'); 
    label = $ ($ aapt d badging $ path | $ busybox grep 'application: label =' | $ busybox cut -d "'" -f2);  
    $ busybox printf "Autorisations pour l'étiquette $ app ayant le nom de package $ line \ n"; 
    paquet dumpsys $ line | $ busybox sed -e '1, / grantPermissions: / d' -e '/ ^ \ s * $ /, $ d' | $ busybox sort;
    $ busybox printf "\ n"; 
fait </sdcard/packages.txt

Sortie de démonstration:

Autorisations pour l'application DisableService ayant le nom de package cn.wq.disableservice
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.WRITE_EXTERNAL_STORAGE

Autorisations pour l'application Indecent Xposure ayant le nom de package co.vanir.indecentxposure
      android.permission.RECEIVE_BOOT_COMPLETED

Autorisations pour les balises d'application ayant le nom de package com.android.apps.tag
      android.permission.CALL_PHONE
      android.permission.NFC
      android.permission.READ_CONTACTS
      android.permission.WAKE_LOCK
      android.permission.WRITE_SECURE_SETTINGS
...
...
Autorisations pour le fournisseur de thèmes d'application ayant le nom de package 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

Enregistrez le script dans le PC dans un fichier nommé perm_script.shet déplacez-le dans / sdcard en utilisant

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

Exécutez ce fichier

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

Plus les applications installées dans le système sont grandes, plus le délai d'exécution de la commande sera long. Dans mon appareil, cela a pris environ trois minutes.

Connexes: existe-t-il un moyen natif de trouver toutes les applications installées qui ont accès à une fonction de téléphone?

Seigneur du feu
la source