dot(即深度伪造攻击工具包)可制作实时、可控的深度伪造视频,并用于虚拟摄像头注入。dot 专为安全分析师、红队成员和生物识别研究人员设计,用于对身份验证和视频会议系统等进行渗透测试。
如果你想了解 dot 如何在行业中被用于深度伪造渗透测试,请阅读 The Verge 和 Biometric Update 的相关文章。
dot 是为研究和演示目的而开发的。作为最终用户,你有责任在使用本程序时遵守所有适用法律。作者和贡献开发者不承担任何责任,也不对因使用本程序造成的任何误用或损害负责。
简而言之,dot 的工作方式如下:
flowchart LR;
A(your webcam feed) --> B(suite of realtime deepfakes);
B(suite of realtime deepfakes) --> C(virtual camera injection);
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 以移除所有扩展属性Contents/MacOS 文件夹中执行 dot-executable使用示例:
source 字段中指定源图像。target 字段中指定摄像头 ID 号。大多数情况下,0 是正确的摄像头 ID。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
根据你机器上安装的 CUDA 版本安装 torch 和 torchvision 依赖:
从 链接 安装 CUDA 11.8
从 conda 安装 cudatoolkit: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> 是 PyTorch 定义的 CUDA 标签。例如,对于 CUDA 11.8,使用 pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118。
注意:也可以使用 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 标志。要在 CPU 上使用 dot(不推荐),请不要传递 --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”。勾选“AutoStart”,
将“Buffered Frames”设置为 0,然后点击“Start”。
现在,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 并检查 工具 --> 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 Studio工具 --> v4l2sink/dev/video2 和 YUV420startOBS Cam--use_cam 标志运行 dot 以启用摄像头画面如果你正在对移动应用进行测试,虚拟摄像头注入会更加困难。一种替代方案是使用移动模拟器并仍然依赖虚拟摄像头注入。
运行 dot。更多信息请查看运行 dot。
运行 OBS Studio 并设置虚拟摄像头。更多信息请查看虚拟摄像头注入。
下载并安装 Genymotion。
打开 Genymotion 并设置 Android 模拟器。
将 dot 与 Android 模拟器连接:
camera 并将前后摄像头都选择为 OBS-Camera。此时应出现 dot 窗口的预览。
如果没有预览,请重启 OBS 和模拟器并重试。
如果仍不行,请尝试使用其他虚拟摄像头软件,如 e2eSoft VCam 或 ManyCam。dot 深度伪造输出应成为模拟器的手机摄像头画面。在 AMD Ryzen 5 2600 六核处理器 + 一块 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 的想法,欢迎提交相关的 Issue 和 PR。在贡献之前,请阅读 CONTRIBUTING.md。
dotdot 运行非常慢,无法实时运行请确保你通过 --use_gpu 标志在 GPU 上运行。不推荐使用 CPU。
如果仍然觉得太慢,可能是因为你运行在旧的 GPU 型号上,且显存小于 8GB。
dot 只能用于摄像头画面吗?能否用于预录制的视频?