Comment vérifier si une application sur le smartphone 
Android a un rapport photo ou vidéo, bien qu'il n'en ait jamais besoin? L'option suivante n'est pas parfaite du tout, mais ne nécessite pas de «root» ou de firmware personnalisé.
PS J'ai ajouté une description de la surveillance de l'accès des applications au microphone à l'article.Ce que vous devez installer:
- ADB ( Android Debug Bridge ) (par exemple, dans le cadre des outils de la plate-forme SDK Android - vous pouvez télécharger ici );
- pilote pour le téléphone (si nécessaire, par exemple, Google USB Driver peut être téléchargé ici ).
Nous activons le mode de débogage via 
USB sur le téléphone et connectons le smartphone au 
port USB de l' ordinateur, et vous devez sélectionner le mode de 
connexion USB , autre que «Chargement uniquement».
Texte masquéDans le «Gestionnaire de périphériques», le smartphone s'affiche, par exemple, comme suit:
en mode "Photo" ou "Fichiers"

en mode clé USB

Et donc, dans la sortie de la commande 
lsusb :

 Ouvrez la ligne de commande dans le répertoire dans lequel les "outils" sont installés.
Vérifiez que la connexion est réussie (le numéro de série du smartphone connecté est affiché):
adb devices 
(pour 
windows )

Pour 
Linux, la commande ressemblerait à ceci:
 ./adb devices 
Si l'ordinateur n'est pas autorisé à être utilisé avec ce smartphone (pour 
Android 4.2.2 et versions ultérieures), le message d'avertissement " 
non autorisé " apparaîtra à côté du numéro de série.
Pour l'autorisation, vous devez confirmer l'autorisation de débogage via 
USB sur le smartphone.
Texte masquéSous Linux , le message " aucune autorisation " peut apparaître - dans mon cas, j'ai réussi à résoudre le problème en basculant le smartphone en mode "Périphérique multimédia ( MTP )".
 Lancez le shell sur l'appareil (nous obtenons l'invite "$"):
 adb shell 

Nous introduisons ensuite les symboles "magiques" suivants:
 while true; do ps `while ! (dumpsys media.camera | grep -E "PID") do done | grep -o "[^PID: ][0-9]*$"` | grep -o "[^S ]*$" ; date; sleep 1; done 
Version améliorée, suppression de la sortie "NAME" et des lignes vides:
 while true; do ps `while ! (dumpsys media.camera | grep -E "PID") do done | grep -o "[^PID: ][0-9]*$"` | grep -o "[^S ]*$" | grep -v "NAME" | grep .; date; sleep 1; done 
Et rien ne se passe :-) Jusqu'à ce que quelque chose décide de prendre une petite photo :-)
Le jeu de caractères «magique» indiqué commence à surveiller l'accès au service de caméra - 
media.camera à la vitesse la plus élevée possible (ce service est implémenté par la bibliothèque 
libcameraservice.so ). Si la caméra n'est pas active, 
dumpsys affiche quelque chose comme ceci:

Et si une caméra est nécessaire, cela apparaît:
 grep
grep vérifie la présence d'un " 
PID " et, si cette chaîne existe, ils coupent le numéro de processus de la chaîne et le transmettent à la commande 
ps , qui affiche les données sur ce processus, et un autre 
grep coupe son nom. Après avoir détecté l'activité de la caméra, faites une pause d'une seconde afin que les messages ne se répandent pas trop souvent. Pour interrompre la commande, utilisez la combinaison de 
touches CTRL-C et pour quitter le shell - 
CTRL-D .
L'exemple le plus simple est qu'après le lancement de l'application smartphone standard pour la prise de vue photo / vidéo, les messages avec le nom du processus et la date / heure commencent à affluer à des intervalles de 1 seconde:

 "
Mais il existe des applications plus astucieuses, elles peuvent être trouvées par le mot clé "spy cam" (en utilisant une astuce, par exemple, avec un aperçu à un pixel ( 
http://www.ez.ai/2014/05/exploring-limits-of-covert-data .html )). Une telle création s'effondre au début du tournage et des reportages, mais des messages affluent régulièrement:

J'ai également vérifié la fonctionnalité de la méthode proposée sur une application qui prend une seule photo en cliquant sur un bouton flottant 

 sans aucune fenêtre d'aperçu visible.
Le script a réussi à appeler la caméra et a émis deux messages à chaque prise de vue:

Mais rien ne vous empêche d'implémenter des fonctionnalités similaires dans une application avec un nom plus anodin ( 
https://www.zdnet.com/article/this-scary-android-malware-can-record-audio-video-and-steal-your- données / ), et les autorisations - eh bien, il y a toutes sortes de cas. Et l'application «légale» peut signaler quand elle lui plaît (j'ai rencontré la mention d'un tel cas). Et ce n'est pas en vain 
qu'Android P a pris des mesures pour empêcher les applications d'arrière-plan d'accéder à la caméra.
La méthode a été testée sur les smartphones 
Huawei SCL-L01 ( 
Android 5.1.1) et 
Huawei G700-U20 ( 
Android 4.2.1), sur d'autres modèles de smartphones, le 
format de sortie de 
dumpsys peut différer (il n'est pas normalisé pour le service 
media.camera ), ce qui nécessitera une correction de code .
Le format du message est codé en dur dans la bibliothèque 
/system/lib/libcameraservice.so - par exemple, pour le smartphone 
Huawei SCL-L01 :

Dans le 
commentaire - un indice sur la façon de changer le code pour travailler avec un smartphone sous 
Android 9.
Ce commentaire montre le journal d'accès à la caméra maintenu par le 
HTC U11 .
Mais, par exemple, sur "l'ancien" 
Huawei U8650 ( 
Android 2.3.4), 
dumpsys fonctionne bien:

Et les droits ne suffisent pas pour ... 
grep :-)
 Surveillance de l'accès au microphone
Surveillance de l'accès au microphoneUne méthode similaire peut être appliquée pour surveiller l'accès des applications au microphone. Dans ce cas, vous devez surveiller le service 
media.audio_flinger .
On entre la commande dans le «shell» (le code donné fonctionne sur le smartphone 
Huawei SCL-L01 ( 
Android 5.1.1)):
 while true; do ps `while ! (dumpsys media.audio_flinger | grep -A20 Input| grep -A1 Client | grep yes | grep -o "[^yes ].*" | grep -o [0-9]*) do done` | grep -o "[^S ]*$" | grep -v "NAME" | grep .; date; sleep 1; done 
Si une application enregistre le son via un microphone, alors dans la sortie de 
dumpsys media.audio_flinger, il y a un fragment similaire:

( 
Fil d' entrée - flux d'entrée, 
22467 - 
PID du son d'enregistrement de processus).
Lorsque vous enregistrez du son via l'application standard «Enregistreur vocal» et que la surveillance est activée (via le code ci-dessus), les messages suivants apparaissent:

Mais quels messages sont versés lorsque la saisie vocale du traducteur 
Google est activée:
 Sur d'autres smartphones, le format de sortie de dumpsys peut être différent, ce qui nécessitera une correction de code.
Sur d'autres smartphones, le format de sortie de dumpsys peut être différent, ce qui nécessitera une correction de code.Par exemple, sur un smartphone 
Huawei G700-U20 ( 
Android 4.2.1):

Dans ce cas, le code de surveillance ressemblera à:
 while true; do ps `while ! (dumpsys media.audio_flinger | grep -A3 Input| grep -A1 Clien | grep -o "[^ ].*" | grep -o [0-9]*) do done` | grep -o "[^S ]*$" | grep -v "NAME" | grep .; date; sleep 1; done 
Voici comment l'Alice «ressuscitée» se manifeste dans ce cas:
