카카오페이 QR 코드 리버스 엔지니어링

Source

  • Evernote/Inbox/카카오페이 QR 코드 리버스 엔지니어링.md

Summary

저자는 사내 중고 거래 서비스 ‘천원경매’의 송금 실수를 방지하기 위해 카카오페이 송금 QR 코드에 금액을 자동 입력하는 기능을 구현하고자 했다. 공식 API 부재로 인해 QR 코드를 직접 분석하여 금액 인코딩 방식을 규명하는 과정을 다룬다. 초기 분석에서는 금액 데이터가 난수처럼 변하는 것을 관찰했고, 비트 단위 패턴 분석을 통해 XOR, Bitwise shift, Byte order reverse 등의 연산이 사용되었음을 추론했다. 다양한 금액 샘플(특히 2^n - 1 형태)을 생성하여 바이너리 패턴을 비교하는 실험 과정을 기술하고 있다.

Key Points

  • 사내 중고 거래 서비스 ‘천원경매’에서 낙찰 금액 송금 시 발생할 수 있는 인간 실수를 최소화하기 위해 카카오페이 QR 코드 자동 생성을 시도함
  • 카카오페이 공식 API 미제공으로 인해 QR 코드 내부 데이터 구조를 직접 분석(리버스 엔지니어링)해야 함
  • 카카오페이 QR 코드는 ‘유저 ID 만 포함’과 ‘유저 ID + 금액 데이터 포함’ 두 가지 타입으로 구분됨
  • 금액이 포함된 QR 코드의 데이터는 고정된 값이 아닌, 매번 생성 시 달라지는 난수적 특성을 보임(보안 목적 추정)
  • 분석 과정에서 Bitwise shift, XOR, Byte order reverse 등의 비트 연산이 사용되었을 가능성을 가정하고 검증 시도
  • 255, 4095, 65535 등 2^n - 1 형태의 금액을 샘플로 사용하여 바이너리 패턴 규칙을 규명하는 실험 진행