
Boîte à outils deepfake en temps réel pour les tests d'intrusion des systèmes de vérification d'identité et de visioconférence. Prend en charge l'échange de visage, l'animation d'images et l'injection de caméra virtuelle pour les opérations d'équipe rouge.
dot (ou Deepfake Offensive Toolkit) permet de créer en temps réel des deepfakes contrôlables prêts pour l'injection dans des caméras virtuelles. dot a été créé pour effectuer des tests de pénétration contre, par exemple, les systèmes de vérification d'identité et de visioconférence, à l'usage des analystes de sécurité, des membres d'équipes Rouges et des chercheurs en biométrie.
Si vous souhaitez en savoir plus sur l'utilisation de dot pour les tests de pénétration avec des deepfakes dans l'industrie, lisez ces articles de The Verge et Biometric Update.
dot est développé à des fins de recherche et de démonstration. En tant qu'utilisateur final, vous avez la responsabilité de respecter toutes les lois applicables lorsque vous utilisez ce programme. Les auteurs et les développeurs contributeurs déclinent toute responsabilité et ne sont pas responsables de toute utilisation abusive ou de tout dommage causé par l'utilisation de ce programme.
En bref, dot fonctionne comme suit :
flowchart LR;
A(flux de votre webcam) --> B(ensemble de deepfakes en temps réel);
B(ensemble de deepfakes en temps réel) --> C(injection de caméra virtuelle);
Tous les deepfakes pris en charge par dot ne nécessitent pas d'apprentissage supplémentaire. Ils peuvent être utilisés en temps réel, à la volée, sur une photo qui devient la cible de l'usurpation d'identité faciale. Méthodes prises en charge :
224 et 512
256 et 512Téléchargez et exécutez l'exécutable dot pour votre système d'exploitation :
Windows (testé sur Windows 10 et 11) :
dot.zip depuis ce lien, décompressez-le puis exécutez dot.exeUbuntu :
Mac (testé sur Apple M2 Sonoma 14.0) :
dot-m2.zip depuis ce lien et décompressez-lexattr -cr dot-executable.app pour supprimer les attributs étendusAfficher le contenu du paquetdot-executable depuis le dossier Contents/MacOSExemple d'utilisation :
source.target. Dans la plupart des cas, 0 est l'identifiant correct.config_file. Sélectionnez une configuration par défaut dans la liste déroulante ou utilisez un fichier personnalisé.use_gpu pour utiliser le GPU.RUN pour démarrer le deepfake.Pour plus d'informations sur chaque champ, cliquez sur le menu Help/Usage.
Regardez la vidéo de démonstration suivante pour mieux comprendre l'interface :
Linux
sudo apt install ffmpeg cmake
MacOS
brew install ffmpeg cmake
Windows
Les instructions supposent que Miniconda est installé sur votre machine. Si ce n'est pas le cas, vous pouvez vous référer à ce lien pour les instructions d'installation.
conda env create -f envs/environment-gpu.yaml
conda activate dot
Installez les dépendances torch et torchvision en fonction de la version CUDA installée sur votre machine :
Installez CUDA 11.8 depuis ce lien
Installez cudatoolkit depuis conda : conda install cudatoolkit=<cuda_version_no> (remplacez <cuda_version_no> par la version sur votre machine)
Installez les dépendances torch et torchvision : pip install torch==2.0.1+<cuda_tag> torchvision==0.15.2+<cuda_tag> torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118, où <cuda_tag> est le tag CUDA défini par Pytorch. Par exemple, pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118 pour CUDA 11.8.
Remarque : torch1.9.0+cu111 peut également être utilisé.
Pour vérifier que torch et torchvision sont installés correctement, exécutez la commande suivante : python -c "import torch; print(torch.cuda.is_available())". Si la sortie est True, les dépendances sont installées avec le support CUDA.
conda env create -f envs/environment-apple-m2.yaml
conda activate dot
Pour vérifier que torch et torchvision sont installés correctement, exécutez la commande suivante : python -c "import torch; print(torch.backends.mps.is_available())". Si la sortie est True, les dépendances sont installées avec le support du framework Metal.
conda env create -f envs/environment-cpu.yaml
conda activate dot
pip install -e .
Exécutez dot --help pour obtenir une liste complète des options disponibles.
Simswap
dot -c ./configs/simswap.yaml --target 0 --source "./data" --use_gpu
SimSwapHQ
dot -c ./configs/simswaphq.yaml --target 0 --source "./data" --use_gpu
FOMM
dot -c ./configs/fomm.yaml --target 0 --source "./data" --use_gpu
FaceSwap CV2
dot -c ./configs/faceswap_cv2.yaml --target 0 --source "./data" --use_gpu
Remarque : Pour activer la super-résolution faciale, utilisez le drapeau --gpen_type gpen_256 ou --gpen_type gpen_512. Pour utiliser dot sur CPU (déconseillé), ne passez pas le drapeau --use_gpu.
Avertissement : Nous utilisons la technique
SimSwappour la démonstration suivante
L'exécution de dot via l'une des méthodes ci-dessus génère un Deepfake en temps réel sur le flux vidéo d'entrée en utilisant les images sources du dossier data/.
Lors de l'exécution de dot, une liste des options de contrôle disponibles apparaît dans la fenêtre du terminal, comme illustré ci-dessus. Vous pouvez parcourir et sélectionner différentes images source en appuyant sur la touche de contrôle associée.
Regardez la vidéo de démonstration suivante pour mieux comprendre les options de contrôle :
Construire le conteneur
docker-compose up --build -d
Accéder au conteneur
docker-compose exec dot "/bin/bash"
Construire le conteneur
docker build -t dot -f Dockerfile .
Exécuter le conteneur
xhost +
docker run -ti --gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-e PYTHONUNBUFFERED=1 \
-e DISPLAY \
-v .:/dot \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
--runtime nvidia \
--entrypoint /bin/bash \
-p 8080:8080 \
--device=/dev/video0:/dev/video0 \
dot
Suivez les instructions ici sous Windows pour configurer la webcam avec Docker.
Construire le conteneur
docker build -t dot -f Dockerfile .
Exécuter le conteneur
docker run -ti --gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-e PYTHONUNBUFFERED=1 \
-e DISPLAY=192.168.99.1:0 \
-v .:/dot \
--runtime nvidia \
--entrypoint /bin/bash \
-p 8080:8080 \
--device=/dev/video0:/dev/video0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
dot
Suivez les instructions ici pour configurer la webcam avec Docker.
Construire le conteneur
docker build -t dot -f Dockerfile .
Exécuter le conteneur
docker run -ti --gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-e PYTHONUNBUFFERED=1 \
-e DISPLAY=$IP:0 \
-v .:/dot \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--runtime nvidia \
--entrypoint /bin/bash \
-p 8080:8080 \
--device=/dev/video0:/dev/video0 \
dot
Les instructions varient selon votre système d'exploitation.
Installez OBS Studio.
Lancez OBS Studio.
Dans la section Sources, appuyez sur le bouton Ajouter (signe "+"),
sélectionnez Windows Capture et appuyez sur OK. Dans la fenêtre apparue, choisissez "[python.exe]: fomm" dans le menu déroulant Fenêtre et appuyez sur OK. Ensuite, sélectionnez Edition -> Transformation -> Ajuster à l'écran.
Dans OBS Studio, allez dans Outils -> VirtualCam. Cochez AutoStart,
réglez Buffered Frames sur 0 et appuyez sur Start.
Maintenant, la caméra OBS-Camera devrait être disponible dans Zoom
(ou autre logiciel de visioconférence).
sudo apt update
sudo apt install v4l-utils v4l2loopback-dkms v4l2loopback-utils
sudo modprobe v4l2loopback devices=1 card_label="OBS Cam" exclusive_caps=1
v4l2-ctl --list-devices
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt install obs-studio
Ouvrez OBS Studio et vérifiez si tools --> v4l2sink existe.
Si ce n'est pas le cas, suivez ces instructions :
mkdir -p ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
ln -s /usr/lib/obs-plugins/v4l2sink.so ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
Utilisez la caméra virtuelle avec OBS Studio :
OBS Studiotools --> v4l2sink/dev/video2 et YUV420startOBS Cam--use_cam pour activer le flux de la caméraSi vous effectuez un test contre une application mobile, les caméras virtuelles sont beaucoup plus difficiles à injecter. Une alternative consiste à utiliser des émulateurs mobiles et à recourir à l'injection de caméra virtuelle.
Exécutez dot. Consultez exécution de dot pour plus d'informations.
Exécutez OBS Studio et configurez la caméra virtuelle. Consultez injection de caméra virtuelle pour plus d'informations.
Téléchargez et installez Genymotion.
Ouvrez Genymotion et configurez l'émulateur Android.
Configurez dot avec l'émulateur Android :
camera et sélectionnez OBS-Camera comme caméra avant et arrière. Un aperçu de la fenêtre dot devrait apparaître.
En l'absence d'aperçu, redémarrez OBS et l'émulateur, puis réessayez.
Si cela ne fonctionne pas, utilisez un autre logiciel de caméra virtuelle comme e2eSoft VCam ou ManyCam.dot devrait maintenant être la caméra du téléphone de l'émulateur.Testé sur un AMD Ryzen 5 2600 Six-Core Processor avec une NVIDIA GeForce RTX 2070
Simswap : FPS 13.0
Simswap + gpen 256 : FPS 7.0
SimswapHQ : FPS 11.0
FOMM : FPS 31.0
Testé sur Macbook Air M2 2022 16GB
Simswap : FPS 3.2
Simswap + gpen 256 : FPS 1.8
SimswapHQ : FPS 2.7
FOMM : FPS 2.0
Ce n'est pas un produit commercial Sensity, et il est distribué librement sans aucune garantie
Le logiciel est distribué sous BSD 3-Clause. dot utilise plusieurs bibliothèques open source. Si vous utilisez dot, assurez-vous d'accepter également leurs licences. En particulier, cette base de code est construite sur les projets de recherche suivants :
Si vous avez des idées pour améliorer dot, n'hésitez pas à ouvrir les Issues et PR appropriées. Veuillez lire CONTRIBUTING.md avant de contribuer au dépôt.
dot sur des fichiers image et vidéo préenregistrésdot est très lent et je ne peux pas l'exécuter en temps réelAssurez-vous de l'exécuter sur une carte GPU en utilisant le drapeau --use_gpu. Le CPU est déconseillé.
Si vous le trouvez toujours trop lent, c'est peut-être parce que vous l'exécutez sur un ancien modèle de GPU, avec moins de 8 Go de RAM.
dot fonctionne-t-il uniquement avec un flux de webcam ou également avec une vidéo préenregistrée ?Vous pouvez utiliser dot sur un fichier vidéo préenregistré via ces scripts ou l'essayer directement sur Colab.