NSTool은 Nintendo Switch 전용 파일 포맷을 읽고 분석하며 내용을 추출할 수 있는 오픈소스 도구입니다. 개발자뿐 아니라 커스텀 펌웨어 사용자나 홈브류 애호가에게도 유용합니다.
주요 기능과 지원 포맷
NSTool은 다음과 같은 Switch 관련 파일 포맷을 처리할 수 있습니다:
- PFS0 / HFS0: 파티션 기반 파일 시스템
- RomFs: 읽기 전용 게임 자산 저장소
- NCA: 콘텐츠 아카이브 (게임, 업데이트 등)
- NSP: 디지털 배포용 패키지
- XCI: 물리적 게임 카드 이미지
- NPDM: 메타데이터 및 실행 권한 정보
설치 및 빌드
다음 명령어로 소스 코드를 가져와 빌드할 수 있습니다:
git clone https://gitcode.com/gh_mirrors/ns/nstool
cd nstool
make
빌드 완료 후 생성된 nstool 실행 파일을 사용하면 됩니다.
기본 사용법
파일 정보를 간단히 확인하려면:
nstool title.nsp
보다 상세한 구조를 보려면:
nstool --showlayout game.xci
nstool -v content.nca
파일 추출 예시
NCA 내부 데이터를 추출하려면:
nstool -x ./output/ content.nca
특정 경로의 파일만 추출하려면:
nstool -x /romfs/logo.bin ./assets/ base.nca
유효성 검증
디지털 서명이나 무결성을 검증할 수 있습니다:
nstool -y cert.cert
nstool -y cartridge.xci
고급 기능
개발자 빌드 파일을 처리하려면 -d 플래그를 사용합니다:
nstool -d dev_title.nsp
파일 시스템 트리를 출력하려면:
nstool --fstree data.pfs0
패치 NCA를 기본 NCA와 결합하여 추출하려면:
nstool --basenca base.nca -x ./patched/ update.nca
암호화 파일 처리
일부 파일은 Switch의 키 체인으로 암호화되어 있어, 별도의 키 파일(prod.keys 또는 dev.keys)이 필요합니다. 키 파일은 환경 변수 또는 명령행 옵션을 통해 지정할 수 있습니다.
모듈 구조
NSTool은 모듈식 아키텍처로 구성되어 있으며 주요 컴포넌트는 다음과 같습니다:
NcaProcess: NCA 파싱 및 해독GameCardProcess: XCI 이미지 분석PfsProcess,RomfsProcess: 파일 시스템 처리KeyBag: 암호화 키 관리PkiValidator: 인증서 및 서명 검증
유용한 팁
- 파일 타입을 수동으로 지정해야 할 경우:
nstool -t nsp unknown.bin - 문제 발생 시
-v옵션으로 상세 로그 확인 - 쉘 스크립트와 조합해 대량 파일 처리 가능