
Echtzeit-Deepfake-Toolkit für Penetrationstests von Identitätsüberprüfungs- und Videokonferenzsystemen. Unterstützt Gesichtstausch, Bildanimation und virtuelle Kamera-Injektion für Red-Team-Operationen.
dot (auch bekannt als Deepfake Offensive Toolkit) ermöglicht Echtzeit, kontrollierbare Deepfakes für die Injektion in virtuelle Kameras. dot wurde für Penetrationstests gegen z. B. Identitätsverifikations- und Videokonferenzsysteme entwickelt, zur Nutzung durch Sicherheitsanalysten, Red-Team-Mitglieder und Biometrieforscher.
Wenn Sie mehr darüber erfahren möchten, wie dot in der Industrie für Penetrationstests mit Deepfakes eingesetzt wird, lesen Sie diese Artikel von The Verge und Biometric Update.
dot wird zu Forschungs- und Demonstrationszwecken entwickelt. Als Endbenutzer tragen Sie die Verantwortung, alle geltenden Gesetze bei der Nutzung dieses Programms einzuhalten. Die Autoren und mitwirkenden Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch die Nutzung dieses Programms entstehen.
Kurz gesagt, dot funktioniert wie folgt
flowchart LR;
A(your webcam feed) --> B(suite of realtime deepfakes);
B(suite of realtime deepfakes) --> C(virtual camera injection);
Alle von dot unterstützten Deepfakes erfordern kein zusätzliches Training. Sie können in Echtzeit spontan auf einem Foto verwendet werden, das zum Ziel der Gesichtsimitation wird. Unterstützte Methoden:
224 und 512
256 und 512Laden Sie die dot-Ausführbare für Ihr Betriebssystem herunter und führen Sie sie aus:
Windows (Getestet unter Windows 10 und 11):
dot.zip von hier herunter, entpacken Sie es und führen Sie dann dot.exe ausUbuntu:
Mac (Getestet unter Apple M2 Sonoma 14.0):
dot-m2.zip von hier herunter und entpacken Sie esxattr -cr dot-executable.app aus, um erweiterte Attribute zu entfernenShow Package Contentsdot-executable aus dem Ordner Contents/MacOS ausAnwendungsbeispiel:
source an.target an. In den meisten Fällen ist 0 die korrekte Kamera-ID.config_file an. Wählen Sie eine Standardkonfiguration aus der Dropdown-Liste oder verwenden Sie eine benutzerdefinierte Datei.use_gpu, um die GPU zu verwenden.RUN, um den Deepfake zu starten.Für weitere Informationen zu den einzelnen Feldern klicken Sie auf das Menü Help/Usage.
Sehen Sie sich das folgende Demovideo an, um die Benutzeroberfläche besser zu verstehen:
Linux
sudo apt install ffmpeg cmake
MacOS
brew install ffmpeg cmake
Windows
Die Anweisungen setzen voraus, dass Miniconda auf Ihrem Rechner installiert ist. Falls nicht, finden Sie Installationsanweisungen unter diesem Link.
conda env create -f envs/environment-gpu.yaml
conda activate dot
Installieren Sie die Abhängigkeiten torch und torchvision basierend auf der auf Ihrem Rechner installierten CUDA-Version:
Installieren Sie CUDA 11.8 von link
Installieren Sie cudatoolkit über conda: conda install cudatoolkit=<cuda_version_no> (ersetzen Sie <cuda_version_no> durch die Version auf Ihrem Rechner)
Installieren Sie die Abhängigkeiten torch und 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, wobei <cuda_tag> das von Pytorch definierte CUDA-Tag ist. Beispiel: pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118 für CUDA 11.8.
Hinweis: torch1.9.0+cu111 kann ebenfalls verwendet werden.
Um zu überprüfen, ob torch und torchvision korrekt installiert sind, führen Sie den folgenden Befehl aus: python -c "import torch; print(torch.cuda.is_available())". Wenn die Ausgabe True ist, sind die Abhängigkeiten mit CUDA-Unterstützung installiert.
conda env create -f envs/environment-apple-m2.yaml
conda activate dot
Um zu überprüfen, ob torch und torchvision korrekt installiert sind, führen Sie den folgenden Befehl aus: python -c "import torch; print(torch.backends.mps.is_available())". Wenn die Ausgabe True ist, sind die Abhängigkeiten mit Unterstützung für das Metal-Programmierframework installiert.
conda env create -f envs/environment-cpu.yaml
conda activate dot
pip install -e .
Führen Sie dot --help aus, um eine vollständige Liste der verfügbaren Optionen zu erhalten.
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
Hinweis: Um die Gesichtssuperauflösung zu aktivieren, verwenden Sie das Flag --gpen_type gpen_256 oder --gpen_type gpen_512. Um dot auf der CPU zu verwenden (nicht empfohlen), übergeben Sie nicht das Flag --use_gpu.
Haftungsausschluss: Wir verwenden die
SimSwap-Technik für die folgende Demonstration
Das Ausführen von dot über eine der oben genannten Methoden erzeugt einen Echtzeit-Deepfake auf dem eingehenden Videostream unter Verwendung von Quellbildern aus dem Ordner data/.
Wenn dot ausgeführt wird, erscheint eine Liste der verfügbaren Steuerungsoptionen im Terminalfenster, wie oben gezeigt. Sie können verschiedene Quellbilder durch Drücken der zugehörigen Steuertaste durchschalten und auswählen.
Sehen Sie sich das folgende Demovideo an, um die Steuerungsoptionen besser zu verstehen:
Container bauen
docker-compose up --build -d
Auf den Container zugreifen
docker-compose exec dot "/bin/bash"
Container bauen
docker build -t dot -f Dockerfile .
Container ausführen
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
Befolgen Sie die Anweisungen hier unter Windows, um die Webcam mit Docker einzurichten.
Container bauen
docker build -t dot -f Dockerfile .
Container ausführen
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
Befolgen Sie die Anweisungen hier, um die Webcam mit Docker einzurichten.
Container bauen
docker build -t dot -f Dockerfile .
Container ausführen
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
Die Anweisungen variieren je nach Betriebssystem.
Installieren Sie OBS Studio.
Führen Sie OBS Studio aus.
Drücken Sie im Bereich Quellen auf die Schaltfläche Hinzufügen ("+"-Zeichen),
wählen Sie Windows-Erfassung und drücken Sie OK. Wählen Sie im erscheinenden Fenster im Dropdown-Menü Fenster die Option "[python.exe]: fomm" und drücken Sie OK. Wählen Sie dann Bearbeiten -> Transformieren -> An Bildschirm anpassen.
Gehen Sie in OBS Studio zu Tools -> VirtualCam. Aktivieren Sie AutoStart,
setzen Sie Gepufferte Frames auf 0 und drücken Sie Start.
Nun sollte die Kamera OBS-Camera in Zoom verfügbar sein
(oder in anderer Videokonferenzsoftware).
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
Öffnen Sie OBS Studio und prüfen Sie, ob tools --> v4l2sink existiert.
Falls nicht, folgen Sie diesen Anweisungen:
mkdir -p ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
ln -s /usr/lib/obs-plugins/v4l2sink.so ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
Verwenden Sie die virtuelle Kamera mit OBS Studio:
OBS Studiotools --> v4l2sink/dev/video2 und YUV420startOBS Cam--use_cam aus, um den Kamerastream zu aktivierenWenn Sie einen Test gegen eine mobile App durchführen, sind virtuelle Kameras viel schwieriger zu injizieren. Eine Alternative ist die Verwendung mobiler Emulatoren und dennoch die virtuelle Kamera-Injektion.
Führen Sie dot aus. Weitere Informationen finden Sie unter dot ausführen.
Führen Sie OBS Studio aus und richten Sie die virtuelle Kamera ein. Weitere Informationen finden Sie unter Virtuelle Kamera-Injektion.
Laden Sie Genymotion herunter und installieren Sie es.
Öffnen Sie Genymotion und richten Sie den Android-Emulator ein.
Richten Sie dot mit dem Android-Emulator ein:
Kamera und wählen Sie OBS-Camera als Front- und Rückkamera. Eine Vorschau des dot-Fensters sollte erscheinen.
Falls keine Vorschau erscheint, starten Sie OBS und den Emulator neu und versuchen Sie es erneut.
Wenn das nicht funktioniert, verwenden Sie eine andere virtuelle Kamerasoftware wie e2eSoft VCam oder ManyCam.Getestet auf einem AMD Ryzen 5 2600 Six-Core Processor mit einer NVIDIA GeForce RTX 2070
Simswap: FPS 13.0
Simswap + gpen 256: FPS 7.0
SimswapHQ: FPS 11.0
FOMM: FPS 31.0
Getestet auf Macbook Air M2 2022 16GB
Simswap: FPS 3.2
Simswap + gpen 256: FPS 1.8
SimswapHQ: FPS 2.7
FOMM: FPS 2.0
Dies ist kein kommerzielles Sensity-Produkt und wird frei ohne Gewährleistung verteilt
Die Software wird unter BSD 3-Clause vertrieben. dot nutzt mehrere Open-Source-Bibliotheken. Wenn Sie dot verwenden, stellen Sie sicher, dass Sie auch deren Lizenzen zustimmen. Insbesondere basiert dieser Code auf den folgenden Forschungsprojekten:
Wenn Sie Ideen zur Verbesserung von dot haben, erstellen Sie gerne entsprechende Issues und PRs. Bitte lesen Sie CONTRIBUTING.md, bevor Sie zum Repository beitragen.
dot auf vorab aufgezeichneten Bild- und Videodateien ausführendot ist sehr langsam und ich kann es nicht in Echtzeit ausführenStellen Sie sicher, dass Sie es mit dem Flag --use_gpu auf einer GPU-Karte ausführen. CPU wird nicht empfohlen.
Wenn es immer noch zu langsam ist, liegt es möglicherweise daran, dass Sie ein altes GPU-Modell mit weniger als 8 GB RAM verwenden.
dot nur mit einem Webcam-Stream oder auch mit einem vorab aufgezeichneten Video?Sie können dot auf einer vorab aufgezeichneten Videodatei mit diesen Skripten verwenden oder es direkt auf Colab ausprobieren.