Plist 뷰어 (바이너리·XML)
속성 목록은 macOS와 iOS가 거의 모든 것을 저장하는 방식입니다. 앱 환경설정, Info.plist, 구성 프로파일, 백업 매니페스트까지요. 절반은 편집기로 읽을 수 있는 XML이지만, 나머지 절반은 bplist로 시작하는 바이트 덩어리로 열리는 애플의 바이너리 형식입니다. 이 도구는 둘 다 읽습니다. 바이너리는 문자열을 긁어모으는 대신 제대로 디코딩합니다. 파일 끝의 32바이트 트레일러가 오프셋과 참조 정수의 폭, 그리고 객체 테이블의 위치를 알려주고, 모든 값은 그 테이블을 통해 도달합니다. 헤더부터 앞으로 훑어서는 아무것도 읽을 수 없다는 뜻이죠. 1·2·4·8바이트 정수, 실수, 애플 고유 에포크 기준의 날짜, 원시 데이터, UID, 배열, 집합, 딕셔너리가 모두 타입을 유지한 채 나옵니다. 결과는 트리로 보여주고 JSON과 XML plist로도 제공합니다. 편집할 수 없던 바이너리 파일이 편집 가능한 형태가 되는 셈입니다. 파일이 NSKeyedArchiver 아카이브로 판명되면 — UID 참조로 연결된 평평한 객체 테이블로, iOS가 조금이라도 복잡한 것을 저장할 때 쓰는 방식입니다 — 그 사실을 알려줍니다. 내용이 앱이 저장하는 구조와 전혀 달라 보이는 이유가 바로 그것이니까요. 업로드되는 것은 없습니다.
사용법
- .plist나 .mobileconfig 파일을 끌어다 놓거나 XML plist 텍스트를 붙여넣으세요.
- 형식은 자동 감지되며, 바이너리 파일은 객체 개수를 함께 보여줍니다.
- 트리를 읽으세요. 각 행에 키, 타입, 값이 표시됩니다.
- 가공하려면 JSON을, 편집하려면 XML plist를 복사하세요.
- 데이터와 날짜는 문자열로 뭉뚱그리지 않고 타입을 표시합니다.
자주 묻는 질문
- 바이너리 plist와 XML plist의 차이는 뭔가요?
- 인코딩만 다릅니다. 담는 값은 같고 macOS는 둘을 같은 것으로 다룹니다. 바이너리가 더 작고 빠르게 읽히기 때문에, 문서에는 XML로 설명돼 있어도 기기 안의 파일은 대부분 바이너리입니다.
- 파일이 의미 없는 숫자와 $로 시작하는 키로만 보입니다.
- NSKeyedArchiver 아카이브일 가능성이 큽니다. 객체들을 $objects에 평평하게 나열하고 중첩 대신 UID 참조로 연결하기 때문에, 보이는 구조는 아카이브의 것이지 앱의 것이 아닙니다. $archiver 키가 보이면 이 도구가 표시해 줍니다.
- 다른 데서는 날짜가 31년씩 어긋납니다.
- 애플은 1970-01-01이 아니라 2001-01-01부터 초를 셉니다. 978307200초 차이죠. plist의 날짜를 유닉스 타임스탬프로 읽으면 1970년대로 떨어집니다. 여기서는 이 오프셋을 적용해 올바른 날짜가 나옵니다.
- 바이너리 데이터는 어떻게 되나요?
- 데이터 타입 그대로 유지하고 길이를 함께 보여줍니다. JSON에는 바이트 문자열이 없으므로 __data_base64 키 아래 base64로 넣고, XML 출력에서는 다시 <data> 요소로 돌아갑니다.
- 바이너리 plist를 편집하거나 쓸 수도 있나요?
- 바이너리를 XML로 변환해 주므로, 그것을 편집한 뒤 plutil이나 plist 라이브러리로 되돌릴 수 있습니다. 바이너리 형식으로 쓰는 것은 이 도구의 기능이 아닙니다.
- 파일이 업로드되나요?
- 아니요. 브라우저에서 파싱되고 서버로 전송되지 않습니다. 환경설정 파일에는 계정 이름과 경로가 들어 있는 경우가 많아 특히 중요합니다.
관련 도구
엑셀(XLSX) → CSV · JSON · 마크다운 변환
브라우저에서 .xlsx 통합 문서를 열어 원하는 시트를 CSV·JSON·마크다운 표로 내보냅니다. 파일은 기기를 벗어나지 않습니다.
MessagePack 디코더
base64나 hex로 된 MessagePack 바이트를 붙여넣으면 타입, 중첩 맵, 바이너리, 타임스탬프까지 브라우저에서 해석합니다.
ICS 캘린더 뷰어 · 반복 일정 전개
.ics 초대장이나 캘린더 내보내기 파일을 열어 실제 내용을 확인하고, 반복 규칙이 만들어내는 진짜 날짜까지 펼쳐 봅니다.
PWA Manifest 빌더
Progressive Web App용 유효 `manifest.json` 빌드 — 이름·아이콘·테마 컬러·디스플레이 모드·스코프·방향 — 매칭 HTML `<link>` 와 Apple 메타 태그 포함.
XML ↔ JSON 컨버터
XML → JSON·JSON → XML 양방향, 전체 속성 지원, 구성 가능 속성 프리픽스·텍스트 키. 브라우저 네이티브 DOMParser가 네임스페이스·CDATA·코멘트 처리.
EPUB 뷰어 · 메타데이터 · 텍스트 추출
브라우저에서 .epub을 열어 메타데이터, 챕터별 단어 수, 본문 텍스트, 그리고 뷰어가 책을 거부하는 이유까지 확인합니다.