Windows 카카오톡 DB 복호화의 전환점은 더 많은 키 조합을 계산한 순간이 아니라 질문을 바꾼 순간이었습니다.
2026년 7월 개발 기록 기준으로, 실행 중인 프로그램이 실제로 쓰는 SQLCipher raw key 흐름을 따라가자 41개 DB와 141,328개 메시지를 구조화할 수 있었습니다.
4부작 두 번째 편에서는 v2 흐름의 역할과 대화방·사용자 이름을 다시 연결한 과정을 설명합니다.
키를 만드는 공식을 추측하는 대신, 내 PC에서 실행 중인 KakaoTalk이 내 DB를 열 때 실제로 사용하는 키를 검증하는 쪽으로 방향을 바꿨습니다.
앞선 시도는 모두 하나의 가정에서 출발했습니다.
userId와 고정 값을 알아내면 모든 DB에 쓸 키를 다시 계산할 수 있다는 생각이었습니다.
하지만 현재 설치된 KakaoTalk PC에서는 공개된 구버전 조합이 실제 DB를 열지 못했습니다.
새 가정은 단순했습니다.
프로그램이 대화방 DB를 이미 열었다면 필요한 raw key도 실행 중인 상태 어딘가에서 사용되고 있다는 것입니다.

한 명령에 모든 일을 넣지 않고 키 복구, DB 복호화, 데이터 통합을 단계별로 분리했습니다.
어디서 실패했는지 확인하기 쉽고, 이미 확보한 키가 있다면 오래 걸리는 복구를 반복하지 않아도 됩니다.
| 명령 | 역할 |
|---|---|
| v2recover | 현재 열린 본인 DB에 맞는 raw key를 검증해 저장 |
| v2decrypt | 저장된 키로 대화 DB를 SQLite로 복호화 |
| v2collect | 메시지와 메타데이터를 하나의 DB로 통합 |
| v2sync | 기존 키로 복호화와 통합을 다시 실행 |
python -m kwin v2recover
python -m kwin v2decrypt
python -m kwin v2collect
python -m kwin v2sync
이 명령은 본인 PC와 본인 계정의 로컬 데이터에만 사용해야 합니다.
키 후보는 많아도 실제 DB를 열지 못하면 의미가 없습니다.
v2recover는 후보를 저장하는 데서 끝내지 않고 현재 chatLogs DB로 검증해 맞는 키만 남기도록 만들었습니다.
최초 성공 기록에서는 41개 DB를 복호화했고 141,328개 메시지를 하나로 모았습니다.
연락처 7,858개, 대화방 509개, 방-멤버 관계 8,016개도 함께 수집됐습니다.
개인적으로는 성공 메시지보다 이 수치들이 더 중요했습니다. 파일 하나를 여는 실험이 실제 요약 자동화에 쓸 데이터 구조로 넘어갔다는 증거였기 때문입니다.

chatLogs에는 메시지가 있지만 사람이 알아볼 대화방 이름과 작성자 이름은 다른 메타데이터에 흩어져 있었습니다.
chatListInfo와 rooms 계열에서 chatId와 방 이름을 연결했습니다.
TalkUserDB.sqlite에서는 userId와 로컬에 캐시된 닉네임을 찾고, chatMembers로 방별 참여 관계를 맞췄습니다.
chatLogs → 실제 메시지
rooms·chatListInfo → 대화방 이름
TalkUserDB → 사용자 이름
chatMembers → 방별 참여 관계
이 과정을 거쳐야 숫자로 된 chatId가 실제 대화방 목록으로 보입니다.

복호화가 성공해도 모든 이름이 자동으로 생기지는 않습니다.
chatMembers에 userId가 있어도 KakaoTalk PC의 로컬 캐시에 해당 닉네임이 없으면 오프라인 도구가 이름을 만들어낼 근거가 없습니다.
이 경우 알 수 없는 사용자가 보이는 것은 복호화 실패가 아니라 로컬에 저장된 정보의 한계입니다.
필요한 대화방을 직접 열어두면 해당 방의 키와 메타데이터가 로드될 가능성이 높아졌지만, 없는 정보를 복원한다고 표현해서는 안 됩니다.

다음 편에서는 이 명령줄 흐름을 React와 Python 로컬 서버로 감싸 처음 사용하는 사람도 버튼 두 개로 다룰 수 있게 만든 과정을 이어가겠습니다.

| 내 PC의 카카오톡을 로컬 API로 만들었다 — 자동 요약까지 남은 한 단계, 카톡대화방 복호화4 (0) | 2026.07.26 |
|---|---|
| 복호화 스크립트에 버튼을 달았다 — React와 Python으로 만든 로컬 도구, 카톡대화방 복호화3 (0) | 2026.07.26 |
| 맥에서는 됐는데 윈도우에서는 막혔다 — 카카오톡 요약 자동화의 시작, 카톡대화방 복호화1 (0) | 2026.07.26 |
| 비밀번호 없는 로그인, 패스키로 바꾸면 정말 안전할까 (0) | 2026.07.25 |
| 깃 커밋·브랜치 개념 — 세이브 포인트와 평행 세계 (0) | 2026.07.25 |
댓글 영역