
Python으로 자체 USB 장치를 구현하세요. Cynthion 또는 GreatFET와 같은 하드웨어 주변기기에서 지원됩니다.
이 저장소는 차세대 Facedancer 소프트웨어를 담고 있습니다. 원래의 GoodFET 기반 Facedancer에서 파생된 이 저장소는 확장된 Facedancer 지원을 제공하는 Python 모듈을 제공합니다. 여기에는 여러 보드에 대한 지원과 몇 가지 상당히 중요한 새로운 기능이 포함됩니다.
Facedancer의 문서는 Read the Docs에 정리되어 있습니다. 원시 문서 소스는 docs/ 폴더에 있습니다.
다음 명령으로 이 패키지를 설치하세요:
pip install facedancer
그런 다음 평소처럼 facedancer 패키지를 가져올 수 있습니다:
$ python
>>> import facedancer
Facedancer 3.0은 원래의 에뮬레이션 코어를 처음부터 다시 작성한 것이며 레거시 스크립트를 지원하지 않습니다.
v3.0.x에서 더 이상 사용되지 않는 기능이나 API에 의존하는 스크립트나 교육 자료를 사용하는 경우, 다음 명령으로 최신 v2.9.x 릴리스의 Facedancer를 설치할 수 있습니다:
pip install "facedancer<=3"
레거시 애플릿과 예제는 v2.9.x 브랜치에서 찾을 수 있습니다.
Facedancer 보드는 "원격 제어되는" USB 컨트롤러 역할을 하는 간단한 하드웨어 장치입니다. 적절한 소프트웨어를 사용하면 이 보드를 이용해 USB 장치를 빠르고 쉽게 에뮬레이션할 수 있으며, USB 호스트 컨트롤러를 퍼징할 수도 있습니다!
이 특정 소프트웨어 저장소는 현재 Python으로 USB 장치 에뮬레이션을 쉽게 만들 수 있게 해줍니다. 제어가 충분히 세밀해서 온갖 종류의 USB 오작동을 일으킬 수 있습니다. :)
자세한 내용은 다음을 참조하세요:
최신 Facedancer 코드베이스의 주요 새 기능은 USB 연결을 MITM(Meddler-In-The-Middle)할 수 있는 능력으로, 저자 중 한 명의 원래 USBProxy 프로젝트를 대체합니다. 이는 프로토콜 분석과 USB 패킷의 실시간 조작을 포함한 완전히 새로운 응용 분야를 열어주며, 특히 대상 장치(예: 임베디드 시스템이나 게임 콘솔)에서 실행되는 소프트웨어를 제어하지 못할 때 유용합니다.
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
이 기능은 완성되었지만 문서가 더 필요합니다. 풀 리퀘스트를 환영합니다. :)
먼저, BACKEND 환경 변수를 설정하는 것이 좋습니다. 이 변수는 소프트웨어에 어떤 유형의 Facedancer 보드를 사용할지 알려줍니다. 이 변수가 설정되지 않으면 소프트웨어가 연결된 것을 기반으로 추측을 시도합니다. 항상 최선의 추측을 하는 것은 아니므로 직접 설정하는 것이 좋습니다.
다음으로, 예제 중 하나나 미리 만들어진 스크립트 중 하나를 확인하는 것이 좋습니다. 새 구문의 예제는 examples 아래에 있습니다. "구" 구문의 핵심 Facedancer 스크립트는 legacy-applets에 있습니다.
예를 들어:
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)MAX3420/MAX3421 보드는 하드웨어 제약으로 인해 더 복잡한 장치를 에뮬레이션할 수 없습니다. 설정할 수 있는 엔드포인트의 수/유형에 제한이 있습니다. GreatFET과 같은 LPC4330 보드는 제한이 더 적습니다.
비슷한 이유로, MAX3420/MAX3421 보드(BACKEND=goodfet 또는 BACKEND=raspdancer)는 현재 USBProxy-nv MITM 장치로 사용할 수 없습니다. 모든 최신 보드(BACKEND=greatfet, BACKEND=hydradancer)는 완전히 작동해야 합니다.
HydraDancer 및 HydraUSB3 보드(BACKEND=hydradancer)는 현재 호스트 모드를 지원하지 않습니다. 실제 FaceDancer 3.0은 Windows에서 작동하지 않으며(pyusb의 일부 문제...) GNU/Linux에서만 작동합니다.
로드맵은 개발 중이지만, 다중 보드 지원 외에도 이 저장소는 결국 다음과 같은 멋진 새 기능들을 제공할 것입니다:
이 저장소의 멋짐에 대해 비난할 사람이 많습니다:
... 언제나 환영합니다. PR을 보내주세요!