Cette page présente les autorisations, les bibliothèques, les réglages de sauvegarde système et les résultats de tests réseau de Photo Enclave, pour vous aider à juger si l’app fait ce que nous disons : aucun accès réseau, aucune collecte de données. Ce n’est pas une évaluation indépendante, mais chaque point indique d’où viennent les données et comment les vérifier vous-même une fois l’app installée.
Les données concernent Android 1.2.6.0 (versionCode 1000260, paquet studio.src.safecamera) et iOS 1.2.6 (build 1260, bundle ID src.studio.enclave). D’autres versions peuvent différer.
Autorisations déclarées par l’APK de production, une fois toutes les bibliothèques fusionnées :
$ aapt2 dump badging secureCam-release.apk package: name='studio.src.safecamera' versionCode='1000260' versionName='1.2.6.0' uses-permission: name='android.permission.CAMERA' uses-permission: name='android.permission.RECORD_AUDIO' uses-permission: name='android.permission.USE_BIOMETRIC' uses-permission: name='android.permission.READ_EXTERNAL_STORAGE' maxSdkVersion='32' uses-permission: name='android.permission.READ_MEDIA_IMAGES' uses-permission: name='android.permission.READ_MEDIA_VIDEO' uses-permission: name='android.permission.READ_MEDIA_VISUAL_USER_SELECTED' uses-permission: name='studio.src.safecamera.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
Il n’y a pas INTERNET, ni ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE ou AD_ID. La dernière ligne est une autorisation de niveau signature qu’AndroidX ajoute pour protéger les diffusions internes de l’app.
Comment vérifier : récupérez l’APK installé sur le téléphone et lisez-le avec aapt2 du SDK Android :
$ adb pull $(adb shell pm path studio.src.safecamera | grep base | cut -d: -f2) base.apk $ aapt2 dump badging base.apk | grep uses-permission
Le manifeste fixe android:allowBackup à false et utilise android:dataExtractionRules pour exclure toutes les données de la sauvegarde cloud et du transfert entre appareils. Ni une sauvegarde système ni un changement de téléphone n’emportent le coffre. Pour passer à un nouveau téléphone, exportez un fichier avec « Sauvegarde chiffrée complète » dans l’app. Il est protégé par un mot de passe que vous choisissez et qui reste sur l’appareil.
Les sauvegardes enregistrées dans votre compte Google avant la 1.2.6 ne sont pas supprimées automatiquement. Vous pouvez les supprimer dans les réglages de sauvegarde des appareils de votre compte Google.
Comment vérifier : avec le base.apk de la section précédente :
$ aapt2 dump xmltree --file AndroidManifest.xml base.apk | grep -E 'allowBackup|dataExtractionRules'
A: http://schemas.android.com/apk/res/android:allowBackup(0x01010280)=false
A: http://schemas.android.com/apk/res/android:dataExtractionRules(0x0101063e)=@0x7f140000
La sortie montre allowBackup à false et une ligne dataExtractionRules.
Bibliothèques déclarées directement par l’app :
androidx.appcompat:appcompat:1.7.1 androidx.camera:camera-camera2:1.6.2 androidx.camera:camera-core:1.6.2 androidx.camera:camera-lifecycle:1.6.2 androidx.concurrent:concurrent-futures:1.3.0 androidx.constraintlayout:constraintlayout:2.2.1 androidx.documentfile:documentfile:1.1.0 androidx.exifinterface:exifinterface:1.4.2 androidx.legacy:legacy-support-v4:1.0.0 androidx.lifecycle:lifecycle-extensions:2.2.0 com.google.android.material:material:1.14.0 com.google.android.play:review:2.0.2
Il n’y a aucune bibliothèque de publicité, d’analyse, de rapports de plantage ou de paiement. com.google.android.play:review demande seulement à l’app Play Store d’afficher sa fenêtre de notation, et Google Play traite la note. play-services-basement, play-services-tasks et core-common arrivent avec elle. L’app contient aussi notre propre code natif, compilé avec elle.
releaseRuntimeClasspathandroidx.activity:activity:1.8.0 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.8.1 androidx.annotation:annotation:1.8.1 androidx.appcompat:appcompat-resources:1.7.1 androidx.appcompat:appcompat:1.7.1 androidx.arch.core:core-common:2.2.0 androidx.arch.core:core-runtime:2.2.0 androidx.asynclayoutinflater:asynclayoutinflater:1.0.0 androidx.camera:camera-camera2-pipe:1.6.2 androidx.camera:camera-camera2:1.6.2 androidx.camera:camera-core:1.6.2 androidx.camera:camera-lifecycle:1.6.2 androidx.camera.featurecombinationquery:featurecombinationquery:1.6.2 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.2 androidx.collection:collection:1.4.2 androidx.concurrent:concurrent-futures-ktx:1.3.0 androidx.concurrent:concurrent-futures:1.3.0 androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.1.0 androidx.core:core-backported-fixes:1.0.0 androidx.core:core-ktx:1.16.0 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.16.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview:1.2.0 androidx.documentfile:documentfile:1.1.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.1.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.4.2 androidx.fragment:fragment:1.5.4 androidx.graphics:graphics-shapes-android:1.0.1 androidx.graphics:graphics-shapes:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-ui:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 androidx.legacy:legacy-support-v4:1.0.0 androidx.lifecycle:lifecycle-common:2.6.2 androidx.lifecycle:lifecycle-extensions:2.2.0 androidx.lifecycle:lifecycle-livedata-core:2.6.2 androidx.lifecycle:lifecycle-livedata:2.6.2 androidx.lifecycle:lifecycle-process:2.6.2 androidx.lifecycle:lifecycle-runtime:2.6.2 androidx.lifecycle:lifecycle-service:2.6.2 androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 androidx.lifecycle:lifecycle-viewmodel:2.6.2 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 androidx.media:media:1.0.0 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.0 androidx.recyclerview:recyclerview:1.2.1 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.savedstate:savedstate:1.2.1 androidx.slidingpanelayout:slidingpanelayout:1.0.0 androidx.startup:startup-runtime:1.1.1 androidx.swiperefreshlayout:swiperefreshlayout:1.0.0 androidx.tracing:tracing-android:1.3.0 androidx.tracing:tracing-ktx:1.3.0 androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.5.0 androidx.vectordrawable:vectordrawable-animated:1.1.0 androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.viewpager2:viewpager2:1.0.0 com.google.android.gms:play-services-basement:18.4.0 com.google.android.gms:play-services-tasks:18.2.0 com.google.android.material:material:1.14.0 com.google.android.play:core-common:2.0.4 com.google.android.play:review:2.0.2 com.google.auto.value:auto-value-annotations:1.6.3 com.google.dagger:dagger:2.59 com.google.errorprone:error_prone_annotations:2.15.0 com.google.guava:listenablefuture:1.0 jakarta.inject:jakarta.inject-api:2.0.1 javax.inject:javax.inject:1 org.jetbrains:annotations:23.0.0 org.jetbrains.kotlin:kotlin-bom:1.8.22 org.jetbrains.kotlin:kotlin-stdlib:2.2.10 org.jetbrains.kotlinx:atomicfu-jvm:0.28.0 org.jetbrains.kotlinx:atomicfu:0.28.0 org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 org.jspecify:jspecify:1.0.0
Comment vérifier : la version de production est réduite et obscurcie, les bibliothèques sont donc difficiles à lire directement dans le paquet. Pour savoir si l’app se connecte réellement, utilisez « Test réseau : Android » ci-dessous.
Info.plist ne contient que quatre descriptions d’usage : appareil photo, micro, Face ID et ajout de photos à Photos (écriture seule, pas de lecture). Pas de lecture de la photothèque, de localisation, de contacts, de Bluetooth, de mode arrière-plan ni d’exception App Transport Security. Les entitlements sont vides : pas d’iCloud, de notifications push, d’App Groups ni de domaines associés. L’app n’a aucune extension.
Comment vérifier : Réglages → Confidentialité et sécurité → Photos → Photo Enclave ne propose que « Ajouter des photos uniquement » et « Aucun ». Dans Réglages → Apps → Photo Enclave, il n’y a rien d’autre que l’appareil photo, le micro, Face ID et Photos que vous avez utilisés.
Aucune dépendance Swift Package Manager, CocoaPods ou Carthage. L’app ne lie que des frameworks système, libc++ et notre propre bibliothèque statique libClientLib_IOS.a, compilée avec l’app et intégrée au binaire, donc absente de la liste. Voici otool -L pour la version de production 1.2.6. Chaque entrée se trouve sous /System/Library/Frameworks ou /usr/lib.
$ otool -L enclave.app/enclave /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 2200.27.0) /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 5027.0.69) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1359.0.0) /System/Library/Frameworks/AVFAudio.framework/AVFAudio (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/AVFoundation.framework/AVFoundation (compatibility version 1.0.0, current version 2.0.0) /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox (compatibility version 1.0.0, current version 1000.0.0) /System/Library/Frameworks/Combine.framework/Combine (compatibility version 1.0.0, current version 3023.0.0) /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 5027.0.69) /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 2050.0.0) /System/Library/Frameworks/CoreImage.framework/CoreImage (compatibility version 1.0.0, current version 7.0.0) /System/Library/Frameworks/CoreMedia.framework/CoreMedia (compatibility version 1.0.0, current version 3350.77.1) /System/Library/Frameworks/CoreVideo.framework/CoreVideo (compatibility version 1.2.0, current version 758.27.0) /System/Library/Frameworks/CryptoKit.framework/CryptoKit (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/ImageIO.framework/ImageIO (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication (compatibility version 1.0.0, current version 2319.12.210) /System/Library/Frameworks/Metal.framework/Metal (compatibility version 1.0.0, current version 382.5.3, weak) /System/Library/Frameworks/Photos.framework/Photos (compatibility version 1.0.0, current version 912.20.123) /System/Library/Frameworks/PhotosUI.framework/PhotosUI (compatibility version 1.0.0, current version 912.20.123) /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1223.6.12) /System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 62460.2.3) /System/Library/Frameworks/SwiftUI.framework/SwiftUI (compatibility version 1.0.0, current version 8.0.85) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 9127.0.85) /System/Library/Frameworks/VideoToolbox.framework/VideoToolbox (compatibility version 1.0.0, current version 3350.77.1) /usr/lib/swift/libswiftAVFoundation.dylib (compatibility version 1.0.0, current version 2450.77.1) /usr/lib/swift/libswiftCore.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/swift/libswiftCoreAudio.dylib (compatibility version 1.0.0, current version 482.102.0, weak) /usr/lib/swift/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 120.100.0) /usr/lib/swift/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 3.0.0, weak) /usr/lib/swift/libswiftCoreLocation.dylib (compatibility version 1.0.0, current version 57.0.0, weak) /usr/lib/swift/libswiftCoreMIDI.dylib (compatibility version 1.0.0, current version 6.0.0, weak) /usr/lib/swift/libswiftDarwin.dylib (compatibility version 1.0.0, current version 428.0.10, weak) /usr/lib/swift/libswiftDispatch.dylib (compatibility version 1.0.0, current version 1605.0.2) /usr/lib/swift/libswiftMetal.dylib (compatibility version 1.0.0, current version 382.5.3, weak) /usr/lib/swift/libswiftOSLog.dylib (compatibility version 1.0.0, current version 10.0.0, weak) /usr/lib/swift/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 973.1.0) /usr/lib/swift/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 5.0.0, weak) /usr/lib/swift/libswiftSpatial.dylib (compatibility version 1.0.0, current version 1.0.0, weak) /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib (compatibility version 1.0.0, current version 919.0.1) /usr/lib/swift/libswiftXPC.dylib (compatibility version 1.0.0, current version 167.0.2, weak) /usr/lib/swift/libswift_Concurrency.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/swift/libswiftos.dylib (compatibility version 1.0.0, current version 1090.0.0) /usr/lib/swift/libswiftsimd.dylib (compatibility version 1.0.0, current version 25.0.0, weak) /usr/lib/swift/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/swift/libswiftCoreMedia.dylib (compatibility version 1.0.0, current version 3350.77.1)
Comment vérifier : le paquet de l’App Store n’est pas accessible aux utilisateurs, ce point ne peut donc pas être vérifié directement. Pour savoir si l’app se connecte réellement, utilisez « Test réseau : iPhone » ci-dessous.
Le dossier du coffre et le canevas du mode camouflage portent NSURLIsExcludedFromBackupKey et n’entrent ni dans la sauvegarde iCloud ni dans la sauvegarde sur ordinateur. Les réglages restent sauvegardés : après une restauration depuis une sauvegarde système, les réglages reviennent, mais pas le coffre. Pour passer à un nouveau téléphone, exportez un fichier avec « Sauvegarde chiffrée complète » dans l’app. Les sauvegardes système faites avant la 1.2.6 peuvent encore contenir l’ancien contenu du coffre.
Ces deux déclarations ont été remplies par nous dans les consoles des stores. Vous pouvez les comparer aux données de cette page. Le projet iOS n’a pas de PrivacyInfo.xcprivacy.
Méthode : le rapport de confidentialité des apps intégré à iOS enregistre l’activité réseau de chaque app.
networkActivity.$ grep src.studio.enclave App_Privacy_Report_v4_*.ndjson > enclave.ndjson $ grep -o '"type":"[a-zA-Z]*"' enclave.ndjson | sort | uniq -c 10 "type":"access"
Notre résultat : 24 octobre 2026, iPhone 15 Pro, iOS 27.0.1, Photo Enclave 1.2.6. Le rapport couvrait environ 12 h 18 à 15 h 57, heure locale. Photo Enclave avait 10 entrées d’accès (appareil photo et micro) et 0 entrée réseau. Dans le même rapport, 6 autres apps avaient 22 entrées réseau au total : le rapport enregistrait donc bien l’activité réseau pendant cette période.
Ce que le système fait pour le compte de l’app, comme le sélecteur de photos, est attribué au système.
Méthode : avec adb, examiner le groupe réseau du processus de l’app, ses sockets et ses statistiques de trafic. Activez le débogage USB, gardez Photo Enclave au premier plan et lancez les commandes ci-dessous. Remplacez 10041 par le userId affiché sur votre appareil.
$ adb shell dumpsys package studio.src.safecamera | grep -E 'userId|versionName'
userId=10041
versionName=1.2.6.0
$ adb shell cat /proc/$(adb shell pidof studio.src.safecamera)/status | grep Groups
Groups: 9997 20041 50041
$ adb shell cat /proc/net/tcp /proc/net/tcp6 /proc/net/udp /proc/net/udp6 | awk '$8==10041' | wc -l
0
$ adb shell dumpsys netstats detail | grep 'uid=10041'
uid=10041 set=1
INTERNET tourne avec le groupe 3003 (inet). Ce processus ne l’a pas.netstats n’a aucun enregistrement de trafic pour cet uid. La ligne trouvée vient de mUidCounterSetMap et indique seulement si l’app est au premier plan.Sans ordinateur : regardez la consommation de données de Photo Enclave dans les détails de l’app, dans les réglages système (le nom varie selon la marque : « Données mobiles », « Consommation des données »). Elle doit être de 0.
Notre résultat : 24 octobre 2026, Samsung Galaxy A03s (SM-A037W), Android 13, 1.2.6.0 installé le jour même. Nous avons pris 3 photos et enregistré une vidéo de 5 secondes dans l’app, puis lancé les commandes ci-dessus ; la sortie est reproduite telle quelle. L’app ayant été installée le jour même, netstats couvre toute son utilisation.
Une question sur cette page, ou un résultat différent de celui montré ici : support@src.studio