
Toolkit deepfake in tempo reale per test di penetrazione di sistemi di verifica dell'identità e videoconferenza. Supporta lo scambio di volti, l'animazione di immagini e l'iniezione di telecamera virtuale per operazioni di red team.
dot (aka Deepfake Offensive Toolkit) produce deepfake in tempo reale e controllabili, pronti per l'iniezione in telecamere virtuali. dot è stato creato per eseguire penetration testing contro, ad esempio, sistemi di verifica dell'identità e videoconferenza, per uso da parte di analisti della sicurezza, membri di Red Team e ricercatori biometrici.
Se vuoi saperne di più su come dot viene utilizzato per penetration test con deepfake nel settore, leggi questi articoli di The Verge e Biometric Update.
dot è sviluppato per scopi di ricerca e dimostrazione. In quanto utente finale, hai la responsabilità di rispettare tutte le leggi applicabili quando usi questo programma. Gli autori e i collaboratori allo sviluppo non si assumono alcuna responsabilità e non sono responsabili per eventuali abusi o danni causati dall'uso di questo programma.
In poche parole, dot funziona così
flowchart LR;
A(tuo feed webcam) --> B(set di deepfake in tempo reale);
B(set di deepfake in tempo reale) --> C(iniezione in telecamera virtuale);
Tutti i deepfake supportati da dot non richiedono formazione aggiuntiva. Possono essere utilizzati in tempo reale al volo su una foto che diventa il bersaglio dell'impersonificazione facciale. Metodi supportati:
224 e 512
256 e 512Scarica ed esegui l'eseguibile dot per il tuo sistema operativo:
Windows (Testato su Windows 10 e 11):
dot.zip da qui, decomprimilo e poi esegui dot.exeUbuntu:
Mac (Testato su Apple M2 Sonoma 14.0):
dot-m2.zip da qui e decomprimiloxattr -cr dot-executable.app per rimuovere eventuali attributi estesiMostra Contenuto Pacchettodot-executable dalla cartella Contents/MacOSEsempio d'uso:
source.target. Nella maggior parte dei casi, 0 è l'ID corretto.config_file. Seleziona una configurazione predefinita dal menu a discesa o usa un file personalizzato.use_gpu per utilizzare la GPU.RUN per avviare il deepfake.Per maggiori informazioni su ciascun campo, clicca sul menu Help/Usage.
Guarda il seguente video dimostrativo per comprendere meglio l'interfaccia
Linux
sudo apt install ffmpeg cmake
MacOS
brew install ffmpeg cmake
Windows
Le istruzioni presuppongono che tu abbia Miniconda installato sulla tua macchina. In caso contrario, puoi fare riferimento a questo link per le istruzioni di installazione.
conda env create -f envs/environment-gpu.yaml
conda activate dot
Installa le dipendenze torch e torchvision in base alla versione di CUDA installata sulla tua macchina:
Installa CUDA 11.8 da link
Installa cudatoolkit da conda: conda install cudatoolkit=<cuda_version_no> (sostituisci <cuda_version_no> con la versione sulla tua macchina)
Installa le dipendenze torch e 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, dove <cuda_tag> è il tag CUDA definito da Pytorch. Ad esempio, pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118 per CUDA 11.8.
Nota: può essere utilizzato anche torch1.9.0+cu111.
Per verificare che torch e torchvision siano installati correttamente, esegui il seguente comando: python -c "import torch; print(torch.cuda.is_available())". Se l'output è True, le dipendenze sono installate con supporto CUDA.
conda env create -f envs/environment-apple-m2.yaml
conda activate dot
Per verificare che torch e torchvision siano installati correttamente, esegui il seguente comando: python -c "import torch; print(torch.backends.mps.is_available())". Se l'output è True, le dipendenze sono installate con supporto del framework di programmazione Metal.
conda env create -f envs/environment-cpu.yaml
conda activate dot
pip install -e .
Esegui dot --help per ottenere un elenco completo delle opzioni disponibili.
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
Nota: Per abilitare la super-risoluzione facciale, usa il flag --gpen_type gpen_256 o --gpen_type gpen_512. Per utilizzare dot su CPU (non consigliato), non passare il flag --use_gpu.
Avvertenza: Utilizziamo la tecnica
SimSwapper la seguente dimostrazione
Eseguire dot tramite uno qualsiasi dei metodi sopra descritti genera un Deepfake in tempo reale sul feed video in input utilizzando le immagini sorgente dalla cartella data/.
Quando si esegue dot, un elenco di opzioni di controllo disponibili appare sulla finestra del terminale come mostrato sopra. Puoi scorrere e selezionare diverse immagini sorgente premendo il tasto di controllo associato.
Guarda il seguente video dimostrativo per comprendere meglio le opzioni di controllo:
Costruisci il contenitore
docker-compose up --build -d
Accedi al contenitore
docker-compose exec dot "/bin/bash"
Costruisci il contenitore
docker build -t dot -f Dockerfile .
Esegui il contenitore
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
Segui le istruzioni qui nella sezione Windows per configurare la webcam con docker.
Costruisci il contenitore
docker build -t dot -f Dockerfile .
Esegui il contenitore
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
Segui le istruzioni qui per configurare la webcam con docker.
Costruisci il contenitore
docker build -t dot -f Dockerfile .
Esegui il contenitore
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
Le istruzioni variano a seconda del sistema operativo.
Installa OBS Studio.
Esegui OBS Studio.
Nella sezione Sources, premi il pulsante Aggiungi (segno "+"),
seleziona Windows Capture e premi OK. Nella finestra che appare, scegli "[python.exe]: fomm" nel menu a discesa Window e premi OK. Quindi seleziona Edit -> Transform -> Fit to screen.
In OBS Studio, vai su Tools -> VirtualCam. Spunta AutoStart,
imposta Buffered Frames a 0 e premi Start.
Ora la telecamera OBS-Camera dovrebbe essere disponibile in Zoom
(o altro software di videoconferenza).
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
Apri OBS Studio e verifica se esiste tools --> v4l2sink.
Se non esiste, segui queste istruzioni:
mkdir -p ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
ln -s /usr/lib/obs-plugins/v4l2sink.so ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
Utilizza la telecamera virtuale con OBS Studio:
OBS Studiotools --> v4l2sink/dev/video2 e YUV420startOBS Cam--use_cam per abilitare il feed della fotocameraSe stai eseguendo un test contro un'app mobile, le telecamere virtuali sono molto più difficili da iniettare. Un'alternativa è utilizzare emulatori mobili e ricorrere comunque all'iniezione di telecamera virtuale.
Esegui dot. Controlla esecuzione di dot per maggiori informazioni.
Esegui OBS Studio e configura la telecamera virtuale. Controlla iniezione in telecamera virtuale per maggiori informazioni.
Scarica e installa Genymotion.
Apri Genymotion e configura l'emulatore Android.
Configura dot con l'emulatore Android:
camera e seleziona OBS-Camera come fotocamera anteriore e posteriore. Dovrebbe apparire un'anteprima della finestra di dot.
Se non c'è nessuna anteprima, riavvia OBS e l'emulatore e riprova.
Se non funziona, utilizza un altro software per telecamera virtuale come e2eSoft VCam o ManyCam.dot dovrebbe ora essere la fotocamera del telefono dell'emulatore.Testato su AMD Ryzen 5 2600 Six-Core Processor con una NVIDIA GeForce RTX 2070
Simswap: FPS 13.0
Simswap + gpen 256: FPS 7.0
SimswapHQ: FPS 11.0
FOMM: FPS 31.0
Testato su Macbook Air M2 2022 16GB
Simswap: FPS 3.2
Simswap + gpen 256: FPS 1.8
SimswapHQ: FPS 2.7
FOMM: FPS 2.0
Questo non è un prodotto commerciale di Sensity, ed è distribuito gratuitamente senza garanzie
Il software è distribuito sotto BSD 3-Clause. dot utilizza diverse librerie open source. Se usi dot, assicurati di accettare anche le loro licenze. In particolare, questa base di codice è costruita sopra i seguenti progetti di ricerca:
Se hai idee per migliorare dot, sentiti libero di aprire Issue e PR pertinenti. Leggi CONTRIBUTING.md prima di contribuire al repository.
dot su file immagine e video preregistratidot è molto lento e non riesco a eseguirlo in tempo realeAssicurati di eseguirlo su una scheda GPU utilizzando il flag --use_gpu. La CPU non è consigliata.
Se lo trovi ancora troppo lento, potrebbe essere perché lo stai eseguendo su un vecchio modello di GPU, con meno di 8 GB di RAM.
dot funziona solo con un feed webcam o anche con un video preregistrato?Puoi utilizzare dot su un file video preregistrato tramite questi script o provarlo direttamente su Colab.