Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
jbl-wave-buds2-firmware-research — JBL Wave Buds 2(BES1306) 펌웨어에 대한 리버스 엔지니어링 노트 및 Python 도구: OTA 컨테이너 형식, 플래시 레이아웃, BLE/GATT 프로토콜, CRC-32 신뢰 모델. | Kitploit
도구/GitHubGitHub/c8dhjp4tyv-bit/jbl-wave-buds2-firmware-research
Embedded Systems SecurityBluetooth SecurityIoT SecurityExploitationReverse EngineeringCryptographyHardware & IoT SecurityBinary AnalysisPapers & Research

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Firmware Analysis
GitHubc8dhjp4tyv-bit/jbl-wave-buds2-firmware-research

jbl-wave-buds2-firmware-research

JBL Wave Buds 2(BES1306) 펌웨어에 대한 리버스 엔지니어링 노트 및 Python 도구: OTA 컨테이너 형식, 플래시 레이아웃, BLE/GATT 프로토콜, CRC-32 신뢰 모델.

저장소 보기
1382일 전아직 검토되지 않음

JBL Wave Buds 2 — 펌웨어 및 OTA 리버스 엔지니어링

Tests

JBL Wave Buds 2(Bestechnic BES1306, PID 2100)에 대한 리버스 엔지니어링 노트 및 재현 가능한 도구 모음: 플래시 내부 레이아웃, 바이트 단위까지 명세화된 OTA 컨테이너 형식, BLE/GATT 명령 프로토콜과 BES "TOTA v2" 암호화 전송, 디바이스 및 앱 측 신뢰 경계, 팩토리 콘솔, 그리고 소유한 기기에 자체 빌드한 이미지를 로드하는 재현 가능한 방법을 다룹니다.

분석은 두 빌드에 걸쳐 진행되었습니다 — IDA로 분석한 wavebuds.elf(2025년 4월)와 배포 패키지 2.9.0(2026년 9월) — 완전히 명세화된 8-스트림 OTA 컨테이너(바이트 단위로 동일한 재패키징으로 검증됨), 앱과 디바이스 양측에서 확인된 CRC-32 무결성 모델, 54/59개 항목의 팩토리 명령 테이블, 12개의 OTA RAM 상태 변수, 7,960개 함수 열거, 그리고 빌드 간 차이 분석을 포함합니다. 의미 복원은 OTA/플래시/CRC/팩토리 하위 시스템에 대해서는 심층적으로 이루어졌으며 그 외 영역은 열거 수준에 그칩니다 — 완전성 감사를 참조하세요.

[!WARNING] 이는 소유자가 직접 수행한 하드웨어 연구이며 공식 JBL 업데이트가 아닙니다. 수정된 이미지를 플래싱하는 것은 되돌릴 수 없습니다: 다운로드 단계는 단계적으로 진행되며 벽돌화에 안전하지만, CRC는 유효하나 손상된 이미지의 활성화에는 노출된 복구 경로가 없습니다. 무엇이든 재현하기 전에 SAFETY.md를 읽으세요.

튀르키예어 버전: README.tr.md

컴패니언 앱에서 테스트된 JBL Wave Buds 2: 양쪽 이어버드가 100%로 연결되고 모든 컨트롤이 활성화된 모습

테스트된 기기에서의 하드웨어 결과: 앱 + 사용자 CA MITM OTA 파이프라인이 검증된 후, 양쪽 이어버드가 연결되고 100%를 보고하며 모든 앱 컨트롤(ANC/Ambient, 제스처, EQ)이 작동합니다. 1바이트 수정 이미지도 동일한 방식으로 수용되었고 기기는 완전히 정상 동작을 유지했습니다.

확인된 발견 사항

주소는 분석된 빌드(wavebuds.elf) 기준입니다. 주소 원장과 출처를 참조하세요.

  • OTA 이미지는 암호학적으로 서명되지 않습니다. 디바이스 측 무결성은 CRC-32뿐입니다 — 핸들러 0x2C0918BC는 설정, 각 세그먼트, 그리고 전체 이미지를 CRC-32 루틴 0x2C0CE944(테이블 0x2C0F5218)와 "BEST" 매직으로 검사합니다. 1바이트가 수정된 CRC 유효 이미지가 수용되어 부팅되었습니다.
  • 앱의 RSA-2048 검증기(com.jbl.counterfeit.Rsa2048DynamicVerifier)는 위조 방지(디바이스 진위 확인)용이며, 펌웨어 서명용이 아닙니다.
  • 앱은 OTA 엔드포인트를 핀ning하지 않습니다; 사용자가 설치한 CA만으로도 OTA 설정을 가로채고 재작성하기에 충분합니다.
  • OTA는 단계적으로 진행됩니다: 새 이미지는 실행 중인 애플리케이션을 건드리지 않고 플래시 베이스 0x28120000에 복사되므로 다운로드 단계는 벽돌화에 안전합니다.
  • 외부 BLE 센트럴은 OTA를 구동할 수 없습니다: 핸들러는 내부 TWS/연결 상태(0x2C0905E4: MEMORY[0x20026BA0] ∈ {2,4})에 의해 게이트됩니다.
  • BES TOTA v2 전송은 AES-128 세션 키를 전적으로 클라이언트 측에서 도출합니다; 서버/디바이스 비밀은 존재하지 않습니다.
  • 팩토리/엔지니어링 콘솔(분석된 빌드에서 59개 명령, 2.9.0에서 54개)은 디바이스 신원(MAC/BLE 주소), 크리스탈 트림, BT 링크 키를 읽고 쓸 수 있습니다. 무선을 통한 접근 가능성은 UNRESOLVED입니다.
  • 두 빌드는 별도로 컴파일되고 재배치되었습니다: 동일 제품, 이동된 주소, 59 → 54개 팩토리 항목. 차이 분석을 참조하세요.

테스트된 수정 사항

수정은 의도적으로 최소한입니다 — 압축 해제된 이미지의 1바이트입니다. 압축 해제 오프셋 64096에서 RTX 커널 문자열 RTX V5.5.1 → V5.5.2로 변경하고 컨테이너 CRC-32를 재계산합니다. 설계상 외관상의 변경입니다: 요점은 동작을 바꾸는 것이 아니라 디바이스가 수정되었으나 CRC가 유효한 이미지를 수용함을 증명하는 것입니다.

Base (owner-supplied; not redistributed)
  official 2.9.0 package   549,558 bytes   SHA-256 836cb251f9fb2261dde14f39ba18d358c48018817f3c3d1b527e1ac5f3ab7ba2
  decompressed image       955,596 bytes   SHA-256 489663e80b76f20f4c94671064908569fac5f4e3df10ab6d7369baffe094f67d
  container CRC-32          A0C7CCEC (valid), input range [0x0, 0x862AD)

저장소에는 의도적으로 JBL 펌웨어가 포함되어 있지 않습니다. 직접 합법적으로 취득한 패키지를 제공하고 다음을 재현하십시오:

python3 tools/ota_unpack.py  <official_2.9.0_package.bin> --extract image.bin
python3 tools/ota_repack.py  make-test <official_2.9.0_package.bin> test.bin
python3 tools/ota_unpack.py  test.bin      # exactly one decompressed byte differs; CRC valid

재패킹된 컨테이너의 정확한 바이트는 LZMA 인코더에 따라 달라지며, 기기는 패키지 해시가 아닌 CRC-32를 검증합니다(docs/04 참조). 그리고 1바이트 압축 해제 차이는 결정적입니다. 앱을 통한 전달은 docs/08에 있습니다.

다이어그램

플래시 맵2 MB NOR 파티셔닝
OTA 명령 흐름시퀀스와 그 CRC-32 체크포인트
신뢰 경계각 단계가 검증하는 것, 그리고 이미지 신뢰가 어디에 있는지

문서

  • 00 — 개요
  • 01 — 하드웨어 및 플래시 맵
  • 02 — OTA 컨테이너 형식
  • 03 — 펌웨어 이미지 레이아웃
  • 04 — 보안 모델
  • 05 — BLE/GATT 및 명령
  • 06 — OTA 프로토콜
  • 07 — 앱 측 분석
  • 08 — 전달 방법
  • 09 — 함수 카탈로그
  • 10 — 팩토리 콘솔
  • 출처 (두 개의 빌드, 증거 등급) · 주소 원장
  • 완전성 감사 · 커버리지 및 한계
  • 상태 머신 · 인시던트
  • 도구 및 범위 · 테스트 및 재현성
  • 생성된 카탈로그 · IDA 명령 로그

이 프로젝트가 주장하지 않는 것

  • JBL 펌웨어, 앱(원본 또는 수정본), 또는 바로 플래시할 수 있는 커스텀 이미지를 재배포하지 않습니다.
  • 기기 진위(위조 방지) 경로를 건드리지 않습니다.
  • ROM 부트로더에 보안 부팅이 없다는 것을 증명하지 않습니다 — 해당 영역은 모든 OTA 이미지의 범위 밖이며 덤프되지 않았습니다. 이 주장은 정적 증거와 한 대의 기기에서 수정된 이미지가 부팅된 관찰 결과로 한정됩니다.
  • 팩토리 콘솔이 무선으로 접근 가능하다고 주장하지 않습니다.
  • 어떤 결과가 다른 기기, 지역, 또는 펌웨어 빌드에도 적용된다고 주장하지 않습니다.

기여, 보안, 인용

도구 다운로드