ts-chef는 VS Code 안에서 데이터 변환·분석과 시각적 파이프라인을 제공하는 CyberChef 스타일 확장이다. 단일 값 변환부터 분기형 작업 흐름, 인코딩 값 검사와 오프라인 악성코드 정적 분석까지 지원하며, VS Code 1.85.0 이상에서 사용할 수 있다.

확장은 Visual Studio Marketplace에서 설치하거나 VS Code 확장 보기에서 ts-chef를 검색하면 된다. GitHub Releases에서는 VSIX를 내려받을 수 있다. 설치 후 Activity Bar의 ts-chef 아이콘에서 Operations, Recipe, Found Patterns, Variables, Pipelines 보기에 접근하고, 명령 팔레트에서는 tschef:로 시작하는 명령을 실행한다.

한 번만 변환할 때는 값이나 편집기 선택 영역을 불러오거나 붙여넣은 뒤 작업과 매개변수를 고른다. tschef: Quick Convert Selection은 선택한 텍스트에 작업 하나를 적용한다. 결과는 미리보기에서 확인한 뒤 복사하거나 원래 선택 영역을 바꾸거나 새 문서로 열 수 있다. 빠른 변환에는 From Base64, To Base64, From Hex, To hex, URL decode, URL encode, JSON Beautify, SHA2 등이 있다. 바이너리 형식, 제한, 키보드 사용법은 Quick Workbench 안내서에 설명돼 있다.

반복 작업은 Recipe에 작업을 추가해 저장하거나 전체 Pipeline Editor에서 만든다. 확장에는 인코딩, 암호, 해시, 압축, 구조화 데이터, 이미지, 텍스트, 바이너리 형식 등을 다루는 작업 479개와 디코딩·PowerShell·IOC·엔트로피·페이로드·구조화 데이터 관련 기본 레시피 28개가 들어 있다. Operations 보기는 모듈별 작업을 검색하며, 구현 코드는 작업을 처음 실행하거나 인수를 열 때 불러와 캐시한다. 따라서 479개 작업을 검색할 수 있지만 모든 구현을 처음부터 한꺼번에 불러오지는 않는다.

변환과 파이프라인

작업 이름은 |로 연결한다.

From Base64 | JSON Beautify

인수는 괄호 안에 key=value 쌍이나 위치 인덱스로 지정할 수 있다.

From Base64 | To hex(Delimiter=Space) | SHA2

따옴표나 괄호 안의 파이프 문자는 구문 분석 과정에서 보존된다. 시각 편집기는 설정한 단계와 텍스트 표현을 동기화한다. Operations 보기에서 작업을 검색한 다음 +를 눌러 Recipe에 추가하고, 단계를 펼쳐 인수를 편집할 수 있다. 완성한 Recipe는 현재 선택 영역에 적용하거나 재사용 가능한 전역·작업 공간 파이프라인으로 저장하고, 기본 레시피를 불러오거나 전체 목록·그래프 편집기에서 열 수 있다.

Pipeline Editor는 순서형 List와 방향성 비순환 그래프인 Graph를 지원한다. 처음에는 순서형 파이프라인이 선형 그래프로 표시되며, 작업 노드를 자유롭게 배치하고 명시적인 포트로 연결해 여러 갈래와 이름이 붙은 출력을 만들 수 있다. 한 입력을 여러 작업 흐름에 연결할 수 있고, 각 분기는 별도의 이름 있는 출력으로 끝날 수 있다. 선택한 출력은 기본 순서 경로를 정하지만, 저장된 파이프라인에는 그래프 구조와 배치가 함께 유지된다. 실행 중 노드 상태가 갱신되고 출력 탭에서 각 결과를 확인할 수 있다.

입력은 직접 입력한 텍스트, 편집기 선택 영역, 활성 문서 또는 클립보드에서 가져올 수 있다. 결과는 미리보기에 남기거나 클립보드로 복사하고, 편집기 텍스트를 바꾸거나 새 문서로 열 수 있다. 실시간 미리보기는 직접 입력한 내용에 대한 제한된 결정적 작업에만 적용된다. 네트워크를 사용하거나 비용이 크거나 무작위·파일 기반인 작업, 악성코드 분석 작업은 명시적으로 실행해야 한다.

저장한 파이프라인은 Pipelines 보기나 tschef: Run Saved Pipeline으로 실행한다. 기본 Standard Pipelines와 사용자가 만든 My Pipelines는 접을 수 있는 별도 그룹으로 표시된다. tschef: Browse Standard Recipe Library로 기본 레시피를 Recipe 창에 불러오거나 tschef: Open Saved/Standard Pipeline in Editor로 편집기에 열어 살펴보고 수정할 수 있다. tschef: Open Pipeline Graph는 드래그 앤 드롭 그래프 편집기를 연다. 기본 레시피 28개는 디코딩·인코딩, 구조화 데이터, PowerShell, IOC, 페이로드 검사, 엔트로피, 문자열 추출, 난독화 해제 작업을 다룬다.

값 검사와 보안 분석

Base64, Base64URL, 16진수, URL 인코딩, 이스케이프 문자열, 토큰, 해시 등의 값을 마우스로 가리키면 추정 형식, 신뢰도, 길이와 엔트로피 같은 문자열 통계, 제한된 디코딩 미리보기를 볼 수 있다. 문서 전체를 먼저 스캔하지 않아도 된다. Decode here는 감지한 정확한 값만 바꾼다. 긴 Base64·16진수 토큰은 미리보기 작업을 제한하면서도 설정된 안전 한도까지 전체 토큰을 대상으로 동작하므로, 화면에 보이는 중간 부분만 실수로 바꾸는 일을 피한다. 디코딩 체인 미리보기가 켜져 있으면 제한된 여러 단계의 안전한 후보도 볼 수 있다.

tschef: Deep Analysis of Selection은 인코딩을 재귀적으로 찾고 Base64에서 Gunzip으로 이어지는 것과 같은 제한된 디코딩 경로를 따라간다. 적용 전에 각 후보의 디코딩 미리보기와 길이·엔트로피·문자 집합 통계를 보여준다. 정수 호버는 C/C++, Rust, Python, JavaScript/TypeScript, Go 및 관련 언어의 16진수·2진수·8진수·10진수 리터럴을 인식한다. 0xffu8, 0b1111_0000, 0755, 1_000_000 같은 값에 대해 10진수·16진수·2진수·8진수 표현, 추정 비트 폭, 2의 보수 비트, 부호 있는·없는 해석을 표시하며, 선택한 진법으로 한 번에 바꿀 수 있다.

문서나 작업 공간을 스캔하면 Base64, 16진수, 해시, JWT, UUID, URL 등 인식 가능한 값이 파일별로 Found Patterns 보기에 모인다. 일치 항목은 편집기에서 강조하거나 마우스 오버로 확인하고 JSON 또는 CSV로 내보낼 수 있다. Scan Document for Patterns와 Scan Workspace for Patterns 명령을 사용할 수 있다. 보기는 기본적으로 활성 편집기를 따라가며, 제목 표시줄의 눈 모양 버튼으로 현재 결과를 고정할 수 있다.

YARA 스캔은 .yar 파일이나 인라인 규칙을 현재 선택 영역 또는 문서에 적용한다. 악성코드 정적 분류는 선택한 텍스트나 활성 바이너리 파일을 제한된 범위에서 오프라인으로 검사한다. 바이트 통계와 엔트로피, 파일 서명, 무력화된 IOC, 의심스러운 스크립트·LOLBin·지속성·인젝션 패턴, 내장 인코딩 후보, ASCII 또는 UTF-16 문자열을 보고서로 추출한다. 페이로드를 실행하거나 가져오지 않는다.

선택 기능인 엔트로피 히트맵은 Shannon 엔트로피를 기준으로 편집기 줄과 미니맵에 색을 입혀 압축·암호화·인코딩·패킹된 것으로 보이는 영역을 찾도록 돕는다. 엔트로피만으로 악성코드 여부를 판정할 수는 없다. 이 도구들은 정적 조사 보조 수단이며 샌드박스나 악성코드 판정을 대신하지 않는다.

tschef: Smart Format (Auto-Detect & Beautify)는 JSON, XML/HTML, SQL, CSS, JavaScript를 감지해 보기 좋게 정리한 복사본을 새 편집기에 연다. Make Readable은 매우 긴 16진수·Base64 문자열이나 구분자가 많은 한 줄 데이터를 설정한 폭에 맞춰 다시 배치하되, 원래 데이터는 바꾸지 않는다.

저장·개인정보·설정

변수는 {{name}} 형식으로 명시해 사용하며 전역 또는 현재 작업 공간에 저장할 수 있다. 셸과 PowerShell의 $name 표현은 ts-chef 변수로 처리하지 않고 그대로 둔다. 파이프라인도 전역 또는 작업 공간 범위로 저장한다. VS Code Restricted Mode에서는 작업 공간 범위 변수와 파이프라인을 사용할 수 없다.

핵심 변환은 확장 내부에서 실행되며 계정이 필요하지 않다. 네트워크가 필요한 작업은 사용자가 명시적으로 선택했을 때만 실행된다. 호버와 실시간 미리보기 작업은 편집기의 응답성을 위해 범위가 제한된다. 네트워크 작업, 비용이 크거나 무작위인 작업, 파일 작업, 악성코드 분석은 Pipeline Editor에서 명시적으로 실행해야 한다. 악성코드 정적 분류는 페이로드를 실행하거나 가져오지 않는다.

Pattern scan 결과는 후속 분석이나 보고를 위해 JSON 또는 CSV로 내보낼 수 있다. 단축키는 기본적으로 어떤 키에도 지정되지 않는다. tschef.shortcuts에 이름 있는 항목을 추가하면 각각 tschef.shortcut.<id> 명령이 생기며, VS Code의 Keyboard Shortcuts JSON에서 키를 지정할 수 있다. 허용 표현은 단일 작업(Sharpen Image(...)), 전체 파이프라인 문자열(From Base64 | JSON Beautify), 저장된 파이프라인(pipeline:MyPipeline), 기록 선택자(history:last, history:3)다. 명령 팔레트에서 tschef.configureShortcuts를 실행하면 관련 JSON 파일을 열 수 있다.

단일 작업, 전체 파이프라인 표현식, 저장된 파이프라인을 모두 등록할 수 있다. Repeat Last Operation, 이전·다음 작업으로 이동, 검색 가능한 기록 선택기도 일반 명령이므로 직접 키를 지정할 수 있다. 기록은 세션 동안만 유지되고 크기가 제한된다. 암호화 키 같은 인수는 자동으로 저장되지 않는다. 기록 항목을 다시 실행해도 중복 항목을 추가하지 않으므로 이동 순서가 유지된다. 자세한 구문은 단축키 및 기록 안내서를 참고하면 된다.

다음 설정은 tschef. 이름 공간에서 제공된다.

설정기본값설명
tschef.highlightingEnabledtrue편집기에서 감지한 패턴을 강조한다.
tschef.confidenceThreshold0.65호버 변환 옵션을 표시할 최소 신뢰도다.
tschef.hover.enabledtrue인코딩 문자열과 정수 리터럴의 즉시 호버를 켠다.
tschef.hover.onDemandtrue문서 스캔 없이 커서가 있는 줄을 분석한다.
tschef.hover.integerCalculatortrue정수 리터럴의 진법과 2의 보수 정보를 표시한다.
tschef.hover.decodeChainstrue제한된 여러 단계 디코딩 미리보기를 제공한다.
tschef.hover.maxInputCharacters65536호버 미리보기 하나에서 분석할 최대 입력 문자 수다.
tschef.hover.maxPreviewCharacters320호버 미리보기에 표시할 최대 디코딩 문자 수다.
tschef.autoScanOnSavefalse저장할 때 문서를 자동으로 스캔한다.
tschef.patterns.followActiveEditortrueFound Patterns가 활성 편집기를 따라가게 한다. 끄면 결과를 고정한다.
tschef.patterns.autoScanOnFocusfalse활성 편집기를 따라갈 때 문서가 처음 활성화되면 스캔한다.
tschef.entropyMap.enabledfalseShannon 엔트로피에 따라 줄을 색칠한다.
tschef.readableLineWidth100Make Readable의 목표 줄 폭이다.
tschef.pipelineResultActionpopup결과 표시 방식을 popup, replace, copy, inline, panel 중 정한다.
tschef.defaultPipelineScopeglobal저장 파이프라인의 기본 범위다.
tschef.defaultVariableScopeglobal저장 변수의 기본 범위다.
tschef.shortcuts{}작업·파이프라인·저장 파이프라인·기록 명령 등록부다.
tschef.shortcutHistorySize100세션 전용 작업 기록의 최대 항목 수다.

작업·명령·개발

작업 카탈로그에는 다음과 같은 항목이 있다. 전체 목록은 생성된 작업 카탈로그에서 확인할 수 있다.

분야작업 예시
인코딩·디코딩From Base64, To Base64, From Hex, To hex, URL decode, URL encode
구조화 데이터JSON Beautify, JSON Minify, CSV to JSON, JSON to YAML, YAML to JSON, XML Beautify
해시·암호SHA2, BLAKE3, AES Encrypt, JWT Decode
압축·바이너리 데이터Gunzip, From Hexdump, To hexdump
검사·추출Entropy, Strings, Extract URLs, Parse URI
보안 작업YARA Rules, 편집기 패턴 스캔, 엔트로피 히트맵, Deep Analysis, 악성코드 정적 분류

주요 명령은 다음과 같다. 모든 명령은 명령 팔레트에서 tschef: 접두어로 찾을 수 있다.

명령권장 접근 방법
tschef: Quick Convert Selection명령 팔레트 또는 직접 지정한 키
tschef: Run Saved Pipeline명령 팔레트 또는 직접 지정한 키
tschef: Smart Format (Auto-Detect & Beautify)명령 팔레트 또는 직접 지정한 키
tschef: Run Registered Shortcut등록부 선택기
tschef: Repeat Last Operation명령 팔레트 또는 직접 지정한 키
tschef: Apply Previous Operation in History명령 팔레트 또는 직접 지정한 키
tschef: Apply Next Operation in History명령 팔레트 또는 직접 지정한 키
tschef: Repeat Operation from History...검색 가능한 세션 기록
tschef: Open Pipeline Editor명령 팔레트
tschef: Open Pipeline Graph명령 팔레트
tschef: Deep Analysis of Selection편집기 컨텍스트 메뉴
tschef: Static Malware Triage명령 팔레트
tschef: Browse Standard Recipe Library명령 팔레트
tschef: Scan Document for Patterns명령 팔레트
tschef: Scan Workspace for Patterns명령 팔레트
tschef: YARA Scan Selection/Document명령 팔레트
tschef: Toggle Entropy Heatmap명령 팔레트

개발자는 저장소를 복제하고 의존성을 설치한 뒤 빌드·테스트·린트·번들 측정·패키징 명령을 실행할 수 있다.

text
git clone https://github.com/MichaelWeissDEV/ts-chef.git
cd ts-chef
npm install
text
npm run build # build the small entry bundle and lazy operation chunks
npm test # run the Jest test suite
npm run lint # run ESLint
npm run bench:bundle # measure cold import and representative first loads
npm run package # build a .vsix package

저장소의 주요 경로는 src/extension.ts(VS Code 확장 진입점, 명령·제공자·연결 코드), src/chef/(TypeScript 작업 엔진), src/chef/operations/(개별 변환 작업), src/providers/(사이드바·호버·스캔·장식·매직·엔트로피·서식 제공자), src/commands/(파이프라인 실행과 결과 표시), src/panels/(목록·그래프 Pipeline Editor 웹뷰), test/(Jest 테스트 모음)이다.

전체 문서는 Read the Docs에서 볼 수 있다. 시작 안내서, 파이프라인·그래프 안내서, 작업 카탈로그, 설정 참조, 문제 해결 안내서, GitHub 저장소, 변경 기록을 제공한다. 라이선스는 Apache License 2.0이다. 여러 작업은 같은 Apache 2.0 라이선스의 GCHQ CyberChef에서 포팅됐다.

0.8.1에서 업그레이드하는 방법, 입력 출처, 매개변수와 내보내기 제한은 시작 안내서와 Quick Workbench 안내서를 참고하면 된다. GitHub Releases에서 버전별 VSIX와 오프라인 문서를 내려받을 수 있다. VS Code에서 Extensions: Install from VSIX...를 실행해 파일을 선택하고 다시 불러오면 된다. 기존 설치는 같은 확장 식별자를 사용하므로 설정을 유지한다. 관리자는 배포 안내서에서 Marketplace와 Open VSX 업데이트 방법을 확인할 수 있다.