
신원 확인 및 화상 회의 시스템의 침투 테스트를 위한 실시간 딥페이크 툴킷입니다. 레드팀 운영을 위해 얼굴 교체, 이미지 애니메이션 및 가상 카메라 주입을 지원합니다.
dot(딥페이크 공격 도구 키트)는 가상 카메라 주입을 통해 실시간으로 제어 가능한 딥페이크를 생성합니다. dot은 보안 분석가, 레드 팀 구성원, 생체 인식 연구자들이 신원 확인 및 화상 회의 시스템 등에 대한 침투 테스트를 수행할 수 있도록 설계되었습니다.
업계에서 dot이 딥페이크를 이용한 침투 테스트에 어떻게 활용되는지 더 알고 싶다면 The Verge 및 Biometric Update의 기사를 참조하세요.
dot은 연구 및 데모 목적으로 개발되었습니다. 최종 사용자는 이 프로그램을 사용할 때 모든 관련 법률을 준수할 책임이 있습니다. 저자 및 기여 개발자는 이 프로그램 사용으로 인한 오용이나 손해에 대해 어떠한 책임도 지지 않습니다.
간단히 말해 dot은 다음과 같이 작동합니다.
flowchart LR;
A(사용자 웹캠 피드) --> B(실시간 딥페이크 제품군);
B(실시간 딥페이크 제품군) --> C(가상 카메라 주입);
dot이 지원하는 모든 딥페이크는 추가 학습이 필요하지 않습니다. 얼굴을 가장할 대상 사진만 있으면 실시간으로 바로 사용할 수 있습니다. 지원 방법:
224 및 512
256 및 512해당 OS용 dot 실행 파일을 다운로드하여 실행하세요.
Windows (Windows 10 및 11에서 테스트 완료):
dot.zip을 다운로드하고 압축을 푼 후 dot.exe를 실행하세요.Ubuntu:
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 버튼을 클릭하여 딥페이크를 시작하세요.각 필드에 대한 자세한 내용은 도움말/사용법 메뉴를 클릭하세요.
인터페이스를 더 잘 이해하려면 다음 데모 비디오를 시청하세요.
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를 실행하세요.
소스 섹션에서 추가 버튼("+" 기호)을 누르고,
Windows 캡처를 선택한 후 확인을 누르세요. 나타난 창에서 창 드롭다운 메뉴에서 "[python.exe]: fomm"을 선택하고 확인을 누르세요. 그런 다음 편집 -> 변환 -> 화면에 맞추기를 선택하세요.
OBS Studio에서 도구 -> VirtualCam으로 이동하세요. AutoStart를 체크하고,
Buffered Frames를 0으로 설정한 후 시작을 누르세요.
이제 Zoom(또는 다른 화상 회의 소프트웨어)에서 OBS-Camera 카메라를 사용할 수 있습니다.
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 및 YUV420 선택시작 클릭OBS Cam 선택--use_cam 플래그와 함께 dot을 실행하여 카메라 피드를 활성화하세요.모바일 앱에 대해 테스트하는 경우 가상 카메라를 주입하기가 훨씬 어렵습니다. 대안으로 모바일 에뮬레이터를 사용하면서 여전히 가상 카메라 주입을 사용할 수 있습니다.
dot을 실행하세요. 자세한 내용은 dot 실행을 참조하세요.
OBS Studio를 실행하고 가상 카메라를 설정하세요. 자세한 내용은 가상 카메라 주입을 참조하세요.
Genymotion을 다운로드하여 설치하세요.
Genymotion을 열고 Android 에뮬레이터를 설정하세요.
Android 에뮬레이터로 dot 설정:
카메라를 클릭하고 전면 및 후면 카메라로 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 개선을 위한 아이디어가 있다면 관련 이슈와 PR을 자유롭게 열어 주세요. 리포지토리에 기여하기 전에 CONTRIBUTING.md를 읽어 주세요.
dot 실행dot이 매우 느리고 실시간으로 실행할 수 없습니다.--use_gpu 플래그를 사용하여 GPU 카드에서 실행 중인지 확인하세요. CPU는 권장되지 않습니다.
여전히 너무 느리다면 8GB 미만의 RAM을 가진 오래된 GPU 모델에서 실행 중이기 때문일 수 있습니다.
dot은 웹캠 피드에서만 작동하나요, 아니면 사전 녹화된 비디오에서도 작동하나요?