
Инструментарий deepfake в реальном времени для тестирования на проникновение систем проверки личности и видеоконференций. Поддерживает замену лиц, анимацию изображений и инъекцию виртуальной камеры для операций red team.
dot (также известный как Deepfake Offensive Toolkit) позволяет создавать управляемые дипфейки в реальном времени и внедрять их в виртуальные камеры. dot создан для проведения пентестов систем, например, проверки личности и видеоконференций, и предназначен для аналитиков безопасности, участников Red Team и исследователей биометрии.
Если вы хотите узнать больше о том, как dot используется для пентестов с дипфейками в индустрии, прочитайте эти статьи от The Verge и Biometric Update.
dot разработан для исследовательских и демонстрационных целей. Как конечный пользователь, вы несёте ответственность за соблюдение всех применимых законов при использовании этой программы. Авторы и разработчики не несут ответственности за любое неправильное использование или ущерб, причинённый использованием этой программы.
В двух словах dot работает так:
flowchart LR;
A(ваш видеопоток с веб-камеры) --> B(набор дипфейков в реальном времени);
B(набор дипфейков в реальном времени) --> C(внедрение в виртуальную камеру);
Все дипфейки, поддерживаемые dot, не требуют дополнительного обучения. Их можно использовать в реальном времени на лету на фотографии, которая становится целью подмены лица. Поддерживаемые методы:
224 и 512
256 и 512Скачайте и запустите исполняемый файл dot для вашей ОС:
Windows (протестировано на Windows 10 и 11):
dot.zip отсюда, распакуйте и запустите dot.exeUbuntu:
Mac (протестировано на Apple M2 Sonoma 14.0):
dot-m2.zip отсюда и распакуйтеxattr -cr dot-executable.app, чтобы удалить расширенные атрибутыShow Package Contentsdot-executable из папки Contents/MacOSПример использования:
source.target. В большинстве случаев правильный идентификатор — 0.config_file. Выберите конфигурацию по умолчанию из выпадающего списка или используйте собственный файл.use_gpu, чтобы использовать GPU.RUN, чтобы запустить дипфейк.Для получения дополнительной информации о каждом поле нажмите меню Help/Usage.
Посмотрите следующее демонстрационное видео для лучшего понимания интерфейса:
Linux
sudo apt install ffmpeg cmake
MacOS
brew install ffmpeg cmake
Windows
Инструкции предполагают, что на вашем компьютере установлен Miniconda. Если нет, обратитесь к этой ссылке для установки.
conda env create -f envs/environment-gpu.yaml
conda activate dot
Установите зависимости torch и torchvision в зависимости от версии CUDA, установленной на вашем компьютере:
Установите CUDA 11.8 по ссылке
Установите cudatoolkit через conda: conda install cudatoolkit=<cuda_version_no> (замените <cuda_version_no> на версию на вашем компьютере)
Установите зависимости torch и 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, где <cuda_tag> — это тег CUDA, определённый PyTorch. Например, pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118 для CUDA 11.8.
Примечание: также можно использовать torch1.9.0+cu111.
Чтобы проверить, что torch и torchvision установлены правильно, выполните команду: python -c "import torch; print(torch.cuda.is_available())". Если вывод True, зависимости установлены с поддержкой CUDA.
conda env create -f envs/environment-apple-m2.yaml
conda activate dot
Чтобы проверить, что torch и torchvision установлены правильно, выполните команду: python -c "import torch; print(torch.backends.mps.is_available())". Если вывод True, зависимости установлены с поддержкой фреймворка Metal.
conda env create -f envs/environment-cpu.yaml
conda activate dot
pip install -e .
Выполните dot --help, чтобы получить полный список доступных опций.
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
Примечание: Чтобы включить суперразрешение лица, используйте флаг --gpen_type gpen_256 или --gpen_type gpen_512. Для использования dot на CPU (не рекомендуется) не передавайте флаг --use_gpu.
Отказ от ответственности: Для следующей демонстрации используется техника
SimSwap
Запуск dot любым из вышеперечисленных способов создаёт в реальном времени дипфейк на входном видеопотоке, используя исходные изображения из папки data/.
При запуске dot в окне терминала отображается список доступных опций управления, как показано выше. Вы можете переключаться и выбирать разные исходные изображения, нажимая соответствующую управляющую клавишу.
Посмотрите следующее демонстрационное видео для лучшего понимания опций управления:
Сборка контейнера
docker-compose up --build -d
Доступ к контейнеру
docker-compose exec dot "/bin/bash"
Соберите контейнер
docker build -t dot -f Dockerfile .
Запустите контейнер
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
Следуйте инструкциям здесь в разделе Windows для настройки веб-камеры с docker.
Соберите контейнер
docker build -t dot -f Dockerfile .
Запустите контейнер
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
Следуйте инструкциям здесь для настройки веб-камеры с docker.
Соберите контейнер
docker build -t dot -f Dockerfile .
Запустите контейнер
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
Инструкции различаются в зависимости от вашей операционной системы.
Установите OBS Studio.
Запустите OBS Studio.
В разделе "Источники" нажмите на кнопку "+",
выберите "Захват окна" и нажмите "ОК". В появившемся окне выберите "[python.exe]: fomm" в выпадающем меню "Окно" и нажмите "ОК". Затем выберите "Правка" -> "Трансформация" -> "По размеру экрана".
В OBS Studio перейдите в "Инструменты" -> "VirtualCam". Установите флажок "Автозапуск",
установите "Буферизированные кадры" на 0 и нажмите "Старт".
Теперь камера OBS-Camera должна быть доступна в Zoom
(или другом программном обеспечении для видеоконференций).
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
Откройте OBS Studio и проверьте, существует ли tools --> v4l2sink.
Если нет, выполните следующие инструкции:
mkdir -p ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
ln -s /usr/lib/obs-plugins/v4l2sink.so ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
Используйте виртуальную камеру с OBS Studio:
OBS Studiotools --> v4l2sink/dev/video2 и YUV420startOBS Cam--use_cam, чтобы включить видеопоток с камерыЕсли вы проводите тестирование мобильного приложения, внедрить виртуальные камеры гораздо сложнее. Альтернативой является использование мобильных эмуляторов и по-прежнему прибегать к внедрению виртуальной камеры.
Запустите dot. Более подробную информацию см. в разделе запуск dot.
Запустите OBS Studio и настройте виртуальную камеру. Более подробную информацию см. в разделе внедрение виртуальной камеры.
Скачайте и установите Genymotion.
Откройте Genymotion и настройте эмулятор Android.
Настройте dot с эмулятором Android:
camera и выберите OBS-Camera в качестве передней и задней камер. Должен появиться предварительный просмотр окна dot.
Если предварительного просмотра нет, перезапустите OBS и эмулятор и попробуйте снова.
Если это не помогло, используйте другое программное обеспечение для виртуальной камеры, например e2eSoft VCam или ManyCam.dot должен быть камерой телефона эмулятора.Протестировано на AMD Ryzen 5 2600 Six-Core Processor с NVIDIA GeForce RTX 2070
Simswap: FPS 13.0
Simswap + gpen 256: FPS 7.0
SimswapHQ: FPS 11.0
FOMM: FPS 31.0
Протестировано на Macbook Air M2 2022 16GB
Simswap: FPS 3.2
Simswap + gpen 256: FPS 1.8
SimswapHQ: FPS 2.7
FOMM: FPS 2.0
Это не коммерческий продукт Sensity, он распространяется бесплатно без каких-либо гарантий
Программное обеспечение распространяется под BSD 3-Clause. dot использует несколько библиотек с открытым исходным кодом. Если вы используете dot, убедитесь, что вы также согласны с их лицензиями. В частности, эта кодовая база построена на основе следующих исследовательских проектов:
Если у вас есть идеи по улучшению dot, смело открывайте соответствующие Issues и PR. Пожалуйста, прочитайте CONTRIBUTING.md перед внесением вклада в репозиторий.
dot на предварительно записанных изображениях и видеофайлахdot работает очень медленно, и я не могу запустить его в реальном времениУбедитесь, что вы запускаете его на видеокарте GPU, используя флаг --use_gpu. CPU не рекомендуется.
Если он всё ещё слишком медленный, возможно, вы используете старую модель GPU с менее чем 8 ГБ ОЗУ.
dot только с веб-камерой или также с предварительно записанным видео?Вы можете использовать dot на предварительно записанном видеофайле с помощью этих скриптов или попробовать его напрямую на Colab.