wx-favorites-report 실측: WeChat 즐겨찾기 시각화 도구, 원클릭 인터랙티브 보고서 생성

wx-favorites-report 실측: WeChat 즐겨찾기 시각화 도구, 원클릭 인터랙티브 보고서 생성

wx-favorites-report 실측: WeChat 즐겨찾기 시각화 도구, 원클릭 인터랙티브 보고서 생성

WeChat 즐겨찾기에 도대체 얼마나 많은 것이 숨겨져 있는지 궁금한 적이 있나요? 무심코 저장한 글, 동영상, 링크 중 다시 열어보지 않은 것이 얼마나 될까요?

wx-favorites-report는 오픈소스 WeChat 즐겨찾기 시각화 도구로, 암호화된 WeChat Mac 로컬 데이터베이스에서 엔드투엔드 복호화 및 데이터 파싱을 수행하고 7가지 차트가 포함된 인터랙티브 HTML 보고서를 생성합니다. 간단히 말해 — WeChat 즐겨찾기를 ‘블랙박스’에서 ‘대시보드’로 바꿔줍니다.

1. wx-favorites-report란 무엇인가

wx-favorites-report는 개발자 zhuyansen이 오픈소스로 공개한 도구로, 처음에는 Claude Code의 Skill로 출시된 후 claude-code-skills-zh 등의 오픈소스 프로젝트에 통합되었습니다.

핵심 기능은 세 단계로 요약할 수 있습니다:

  1. 복호화: WeChat Mac 클라이언트의 암호화된 데이터베이스(SQLCipher)에서 키를 추출하여 복호화
  2. 파싱: SQLite의 XML 구조화 데이터를 통합 JSON으로 변환
  3. 시각화: 통계 대시보드, 월별 트렌드, 유형 분포 등을 포함한 단일 파일 HTML 보고서 생성

전체 과정을 자동으로 완료할 수 있습니다 — Claude Code를 사용한다면 “WeChat 즐겨찾기 시각화”라고 말 한마디만 하면 도구가 전체 프로세스를 자동으로 실행합니다.

2. 핵심 기능 상세

2.1 데이터 추출: 암호화된 DB에서 평문으로

WeChat Mac 4.x의 즐겨찾기 데이터는 SQLCipher로 암호화된 SQLite 데이터베이스에 저장됩니다. wx-favorites-report는 frida 동적 주입 기술을 사용하여 WeChat의 CCKeyDerivationPBKDF 함수를 후킹하고, 실행 시 키 파생 프로세스를 캡처합니다.

# 의존성 설치
pip3 install frida frida-tools pycryptodome

# WeChat 서명 사본 준비 (Hardened Runtime 우회)
cp -R /Applications/WeChat.app ~/Desktop/WeChat.app
codesign --force --deep --sign - ~/Desktop/WeChat.app

복호화 파라미터는 SQLCipher 4 표준입니다: AES-256-CBC 암호화, HMAC-SHA512 검증, PBKDF2 256,000회 반복.

2.2 통계 대시보드

보고서 첫 페이지는 네 가지 핵심 지표를 보여주는 데이터 개요 패널입니다:

  • 즐겨찾기 총 수: 총 몇 개의 콘텐츠를 저장했는지
  • 경과 일수: 첫 번째 즐겨찾기부터 현재까지의 기간
  • 일일 평균 즐겨찾기: 하루 평균 몇 개를 저장하는지
  • 출처 수: 즐겨찾기 콘텐츠가 몇 개의 서로 다른 출처에서 왔는지

2.3 7가지 시각화 차트

차트 유형표시 내용상호작용 방식
월별 트렌드월별 즐겨찾기 수 변화꺾은선 + 영역 그래프
유형 분포글/동영상/링크/이미지 비율도넛 차트
출처 순위즐겨찾기 출처 Top 15수평 막대 그래프
활동 히트맵요일 × 시간 즐겨찾기 빈도히트 매트릭스
시간대 분포하루 중 즐겨찾기 피크 시간대이중 막대 그래프
워드 클라우드제목과 설명에서 키워드 추출인터랙티브 워드 클라우드
태그 클라우드WeChat 즐겨찾기 태그 분포클릭 가능한 태그

2.4 즐겨찾기 브라우저

보고서 하단에는 완전한 기능을 갖춘 즐겨찾기 브라우저가 있으며, 다음을 지원합니다:

  • 유형별 필터링 (글/동영상/링크/이미지)
  • 태그별 필터링
  • 전체 텍스트 검색
  • 다양한 정렬 방식
  • 페이지네이션 브라우징
  • 카드 클릭으로 전체 콘텐츠 및 원문 링크 확인

3. 기술 원리

3.1 WeChat 데이터베이스 구조

WeChat Mac 4.x의 즐겨찾기 데이터는 favorite.db에 저장되며, 경로는 다음과 같습니다:

~/Library/Containers/com.tencent.xinWeChat/Data/Documents/
  xwechat_files/<wxid>/db_storage/favorite/favorite.db

3.x 버전이 FavItems + FavDataItem 이중 테이블 구조를 사용한 것과 달리, 4.x는 fav_db_item 단일 테이블로 변경되었으며, 콘텐츠 필드는 XML 형식입니다.

3.2 키 추출의 6단계 반복

이것은 전체 프로젝트에서 가장 어려운 부분입니다. 개발자는 6번의 시도를 거쳤습니다:

단계방법결과
1C 메모리 스캔 x’hex’ 형식실패: WeChat 4.x는 이 형식을 사용하지 않음
2원시 salt 바이트 검색실패: ASCII 문자열과 오매칭
3HMAC 무차별 대입 검증실패: 필터 조건이 실제 위치를 건너뜀
4필터 없는 무차별 검색실패: 키는 PBKDF2 파생 후 저장됨
5DYLD hook / lldb실패: macOS SIP가 차단
6frida + CCKeyDerivationPBKDF성공

최종 솔루션은 frida hook으로 시스템 수준 PBKDF2 함수를 후킹하여 WeChat 시작 시 키 파생 프로세스를 캡처합니다.

3.3 데이터 처리 흐름

암호화된 DB → frida 키 추출 → PyCryptodome 복호화 → SQLite 읽기
→ XML 파싱 → 통합 JSON → ECharts 렌더링 → 단일 파일 HTML

4. 설치 및 배포

4.1 환경 요구사항

조건설명
운영체제macOS (Apple Silicon 또는 Intel)
WeChat 버전Mac 4.x 로그인 완료
Python3.9+
선택 사항Claude Code (원클릭 실행)

4.2 수동 설치 단계

1단계: Python 의존성 설치

pip3 install frida frida-tools pycryptodome

2단계: WeChat 서명 사본 준비

cp -R /Applications/WeChat.app ~/Desktop/WeChat.app
codesign --force --deep --sign - ~/Desktop/WeChat.app

3단계: 키 추출

killall WeChat 2>/dev/null; sleep 2
# frida hook 스크립트 실행
# WeChat 시작 후: 로그인 → '즐겨찾기' 페이지 열기 → 60초 대기

4단계: 복호화 및 보고서 생성

# 데이터 파싱
python3 parse_favorites.py --input favorite_decrypted.db --output data.json

# HTML 보고서 생성
python3 generate_report.py --input data.json --output report.html

# 로컬 미리보기
python3 -m http.server 8765
# 브라우저에서 http://localhost:8765/report.html 열기

4.3 Claude Code 원클릭 실행

Claude Code가 설치되어 있다면, 대화에서 이렇게 말하면 됩니다:

WeChat 즐겨찾기 시각화

Claude가 키 추출, 복호화, 파싱, 보고서 생성의 전체 프로세스를 자동으로 완료합니다.

5. 실전 튜토리얼: 첫 번째 즐겨찾기 보고서 생성하기

5.1 데이터 추출

frida 스크립트 실행 후 WeChat이 재시작됩니다. 이때 다음을 수행해야 합니다:

  1. WeChat 로그인 (QR 코드 스캔 또는 확인)
  2. 왼쪽 ‘즐겨찾기’ 탭 클릭
  3. frida가 키를 캡처할 수 있도록 60초 대기

키는 /tmp/wechat_frida_keys.log에 저장되며, salt 매칭을 통해 favorite.db에 해당하는 enc_key를 찾습니다.

5.2 데이터베이스 복호화

Python으로 복호화:

from Crypto.Cipher import AES
import hashlib

# frida 로그에서 enc_key와 salt 가져오기
enc_key = bytes.fromhex("your_enc_key_here")

# SQLCipher 4 파라미터
kdf_iter = 256000
page_size = 4096
reserve_size = 80  # IV(16) + HMAC(64)

# 페이지별 복호화...

5.3 보고서 생성 및 커스터마이징

python3 generate_report.py --input data.json --output report.html

생성된 보고서는 단일 파일 HTML로, 모든 CSS와 JavaScript가 인라인되어 있어 더블클릭으로 바로 열 수 있으며, 어떤 정적 호스팅 서비스에도 업로드할 수 있습니다.

6. 보고서 해석: 즐겨찾기 데이터 분석 방법

6.1 사용 습관 발견

활동 히트맵을 통해 다음을 발견할 수 있습니다:

  • 평일에 더 많이 저장하는가, 주말에 더 많이 저장하는가?
  • 하루 중 어느 시간대가 즐겨찾기 피크 시간인가?
  • ‘심야에 스마트폰을 보며 미친 듯이 즐겨찾기’하는 패턴이 있는가?

6.2 콘텐츠 선호도 분석

유형 분포 차트는 당신의 즐겨찾기 선호도를 보여줍니다:

  • 글이 80% 이상을 차지한다면 ‘심층 독서형’ 사용자
  • 동영상 비율이 높다면 ‘조각화 학습’ 선호
  • 링크 비율이 높다면 ‘도구 모음’ 성격이 강함

6.3 출처 품질 평가

출처 순위 Top 15는 다음을 식별하는 데 도움이 됩니다:

  • 어떤 공식 계정/웹사이트를 가장 자주 즐겨찾기하는가?
  • 이 출처들의 콘텐츠 품질이 지속적으로 안정적인가?
  • 팔로우를 취소하거나 RSS 구독에 추가할 가치가 있는 출처가 있는가?

7. 다른 WeChat 데이터 도구와의 비교

도구데이터 유형플랫폼시각화난이도
wx-favorites-report즐겨찾기Mac⭐⭐⭐⭐⭐중
WeChatMsg채팅 기록Windows⭐⭐⭐중
PyWxDump채팅 기록+연락처Windows⭐⭐높음
WeChat 기본 즐겨찾기 검색즐겨찾기전 플랫폼⭐낮음

wx-favorites-report의 고유한 장점은:

  1. 즐겨찾기 시나리오에 집중: 채팅 기록 도구처럼 방대하고 복잡하지 않음
  2. 높은 시각화 품질: 7가지 전문 차트, WeChat 기본 목록 검색을 훨씬 초과
  3. 단일 파일 출력: 추가 소프트웨어 설치 없이 바로 확인 가능
  4. Claude Code 통합: 말 한마디로 전체 프로세스 완료

WeChat 채팅 기록에도 관심이 있다면, 이전 기사 PyWxDump 실측을 참고하세요.

8. 활용 시나리오

8.1 개인 데이터 관리

정기적으로 즐겨찾기 보고서를 생성하면 다음에 도움이 됩니다:

  • 만료되었거나 불필요한 즐겨찾기 정리
  • 잊혀진 양질의 콘텐츠 발견
  • 개인 지식 베이스를 위한 소재 목록 구축

8.2 콘텐츠 정리

콘텐츠 크리에이터라면, 즐겨찾기 보고서로 다음을 할 수 있습니다:

  • 관심 있는 분야와 주제 분석
  • 콘텐츠 영감의 출처 패턴 발견
  • 주제 선정에 데이터 기반 지원 제공

8.3 사용 습관 분석

데이터에서 자신의 정보 소비 패턴을 성찰할 수 있습니다:

  • ‘즐겨찾기 = 망각’인가?
  • 즐겨찾기 행동이 불안감과 관련이 있는가?
  • 더 효과적인 정보 관리 시스템을 어떻게 구축할 수 있는가?

9. 한계점 및 주의사항

9.1 플랫폼 제한

  • macOS만 지원: 키 추출은 frida와 macOS WeChat 클라이언트에 의존
  • WeChat 버전 요구사항: 현재 Mac 4.x에 적응, 3.x는 테이블 구조가 다름
  • WeChat 로그인 필요: 사용 중인 WeChat 계정이 있어야 함

9.2 데이터 프라이버시

  • 모든 데이터 처리는 로컬에서 완료되며 어떤 서버에도 업로드되지 않음
  • 보고서 HTML 파일에는 즐겨찾기 데이터가 포함되어 있으므로 공개적으로 공유하지 마세요
  • frida 실행 중 WeChat 프로세스를 후킹하므로, 완료 후 서명 사본을 닫는 것을 권장

9.3 알려진 제한사항

  • 이미지/동영상/파일의 원본 콘텐츠는 WeChat CDN에 저장되어 있어(암호화된 형식) 보고서에서 미리보기 불가
  • 글 썸네일은 WeChat 공식 계정 CDN에서 가져오므로 보고서 확인 시 인터넷 연결 필요
  • WeChat 업데이트마다 데스크톱 사본에 다시 서명해야 할 수 있음

10. FAQ

Q1: wx-favorites-report는 안전한가요? WeChat 데이터가 유출되지는 않나요?

모든 데이터 처리는 완전히 로컬에서 이루어지며 어떤 서버에도 업로드되지 않습니다. frida는 로컬에서만 WeChat 프로세스를 후킹하여 키를 추출하며, 보고서 생성 후 순수 로컬 HTML 파일입니다. 다만 생성된 보고서 파일을 잘 보관하고 공개적으로 공유하지 마세요.

Q2: Windows나 모바일 WeChat을 지원하나요?

현재 macOS 플랫폼의 WeChat Mac 4.x 클라이언트만 지원합니다. Windows와 모바일의 암호화 메커니즘이 달라 아직 지원하지 않습니다. Windows 플랫폼용 WeChat 데이터 도구가 필요하다면 PyWxDump를 참고하세요.

Q3: WeChat 업데이트 후에도 사용할 수 있나요?

WeChat 메이저 업데이트는 데이터베이스 구조나 암호화 방식을 변경할 수 있으며, 이 경우 도구 적응을 기다려야 합니다. 마이너 업데이트는 일반적으로 사용에 영향을 주지 않지만, 업데이트마다 데스크톱 사본에 다시 서명해야 합니다.

Q4: 생성된 보고서를 공유할 수 있나요?

보고서는 단일 파일 HTML로 오프라인에서 확인할 수 있습니다. 다만 개인 즐겨찾기 데이터가 포함되어 있으므로 본인만 사용하고 공개 웹사이트에 업로드하거나 타인에게 공유하지 않는 것을 권장합니다.

Q5: Claude Code가 없어도 사용할 수 있나요?

네. Claude Code는 원클릭 실행의 편의성을 제공할 뿐이며, 문서 단계를 따라 수동으로 작업해도 전체 프로세스를 완료할 수 있습니다. 핵심 스크립트(parse_favorites.py와 generate_report.py)는 독립적인 Python 프로그램입니다.

11. 요약

wx-favorites-report는 현재까지 본 가장 완전한 WeChat 즐겨찾기 시각화 솔루션입니다. ‘WeChat 즐겨찾기 데이터를 내보내고 분석할 수 없다’는 문제점을 해결하며, 암호화된 데이터베이스에서 인터랙티브 보고서까지의 전체 링크 자동화가 상당히 성숙하게 구현되어 있습니다.

장점:

  • 전체 링크 자동화, 복호화부터 보고서까지 원클릭 완료
  • 7가지 시각화 차트, 풍부한 데이터 인사이트
  • 단일 파일 HTML 출력, 제로 의존성으로 확인 가능
  • Claude Code 통합으로 사용 진입장벽 낮춤

단점:

  • macOS만 지원, Windows/모바일 사용자는 사용 불가
  • 키 추출 과정에 일정 수준의 기술 진입장벽 존재
  • 이미지/동영상 콘텐츠를 보고서에서 미리보기 불가

만약 당신이 ‘헤비 즐겨찾기 사용자’라면, 도대체 무엇을 저장했는지, 즐겨찾기 습관이 어떠한지 파악하고 싶다면 wx-favorites-report를 시도해볼 만합니다.


이 블로그 글이 도움이 되셨기를 바랍니다! WeChat 데이터 관리에 관심이 있다면 AI 도구 리뷰 모음도 확인하여 더 많은 실용적인 데이터 분석 및 시각화 도구를 알아보세요.