Codex로 난독화된 Cronos 데이터베이스 스키마를 복구한 방법

Reverse engineering the storage format for an undocumented database

Codex로 난독화된 Cronos 데이터베이스 스키마를 복구한 방법

CronosPro는 러시아 및 구소련 국가에서 널리 사용되던 독점 데이터베이스 포맷으로, 바이너리 파일 구조가 복잡해 CSV 등으로 변환하기 어렵습니다. 기존 오픈소스 도구 cronodump는 대부분의 덤프를 처리할 수 있지만, 이번에 받은 파일은 KOD로 보호된 스키마 때문에 파싱에 실패했습니다. 이 글에서는 Codex를 활용해 난독화된 스키마를 통계적 분석과 헝가리안 알고리즘으로 복구하고, 파서의 가정을 수정하여 데이터를 올바르게 추출한 과정을 단계별로 설명합니다.

KOD 테이블은 순열이어야 하므로, 각 암호화된 바이트에 대해 독립적으로 최고 점수를 선택할 수 없습니다. 대신 고유성을 강제하면서 전체 매핑을 최적화해야 하는데, 이는 전형적인 할당 문제이며 SciPy의 Hungarian 알고리즘으로 해결했습니다.
  1. whsoul

    지나가다 이런 경험에 대한 댓글 하나 남깁니다.

    Kafka 검색 도구를 개발할 때, Avro + schemaRegistry, protobuf, ConnectJson(스키마가 포함된 JSON) 등 다양한 디코드 형식을 지원해야 했습니다.

    앞부분 바이트를 보고 역직렬화기 유형을 추천해 주는 방식이었습니다.

    사용자가 최종 선택을 한 후, 첫 데이터 역직렬화 중 오류가 발생하면 괜찮습니다.

    하지만 많은 경우 오류가 발생하지 않고, 그럴듯하지만 잘못된 데이터로 통과됩니다.

    그래서 제 해결책은 사용자에게 사전 디코딩된 샘플 10개를 보여주고, 사용자가 눈으로 역직렬화기를 하나 선택하게 하는 것이었습니다.

    ConnectJson은 모든 메시지에 데이터와 스키마가 포함되어 있어 신뢰할 수 있습니다(하지만 큽니다).

    제 경우 스키마 레지스트리를 사용했는데, 서버1에는 스키마 번호 10이 있고, 서버2에도 스키마 번호 10이 있지만 내용이 달랐습니다.

    잘못된 서버2를 선택하는 실수를 저질렀고, 데이터 파싱은 진행되었지만 그럴듯하게 잘못된 데이터였습니다.

    무언가 잘못되었다는 것을 찾아 수정하는 데 오랜 시간이 걸렸습니다.

  2. elias1233

    AI로 증폭된 리버스 엔지니어링의 새로운 트렌드가 마음에 듭니다. 저도 이런 프로젝트를 많이 해봤습니다.

  3. gotosun1

    KOD 키는 어디서 오는 건가요? CronosPro를 리버스 엔지니어링해서 복구할 수 있나요?

이 날의 다른 글

2026-09-06