
워드리스트에 대한 당신의 기호를 충족시켜주는 워드리스트 프레임워크입니다. 보안 연구자, 버그 바운티 헌터 및 해커를 위한 도구입니다.
강력한 워드리스트 생성기, 분할기, 병합기, 찾기, 저장기, 단어 순열 및 조합 생성, 다양한 인코딩/디코딩 적용 및 필요한 모든 기능을 제공합니다.
짜증 해결사! & 사용자 정의 가능!
* 및 **Go를 사용하거나 최신 빌드를 다운로드하세요.
go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest
버전 v2.2부터 cook은 cook-ingredients를 $home/.config/cook/cook-ingredients에 저장합니다.
변경하려면 경로 변수 이름
COOK=[YOUR PATH]를 생성하세요.
기본 없이는 모든 것이 복잡합니다.

원하는 이름을 지정하고 패턴을 생성하는 데 사용하세요. 메서드를 사용하여 열 단위로 인코딩을 적용할 때 더 유용합니다.
cook -start intigriti,bugcrowd -sep _,- -end users.rar,secret.zip / start sep end
참고: 패턴에 매개변수를 포함해야 합니다. 그렇지 않으면 아무것도 출력되지 않습니다.
Cook은 cook-ingredients에 의존합니다. 이는 assetnotes, seclist, fuzzdb 등 15+ 이상의 워드셋, 함수, 포트, 워드리스트를 포함한 .yaml 파일 모음입니다.
my.yaml에 워드리스트/리스트/문자열 등 모든 것 저장
cook -dob date[17,Sep,1994] elliot _,-, dob
my.yaml 사용자 정의my.yaml을 수동으로 편집하거나 다음 명령어를 사용하세요.
keyword가 없으면 생성하고, 있으면 업데이트하여 동일한 변수에 새 값을 추가합니다.
# 구문
cook add [keyword]=[value1, value2, ..., valueN] in [category]
# 명령어
cook add unique_name=word1,word2,word3 in lists
cook delete [keyword]
매개변수 이름 뒤에 :를 사용하세요.
cook -f: live.txt f
cook -f: https://example.com/wordlist.txt f
Cook은 여러 저장소를 가져와서 이 저장소의 워드리스트를 직접 사용할 수 있습니다.
assetnotes, seclist, fuzzdb 등
메서드를 사용하여 인코딩, 디코딩, 역순, 분할, 정렬, 추출 등 훨씬 더 많은 작업을 수행할 수 있습니다.
메서드는 최종 출력 또는 열 단위로 적용할 수 있습니다.
-m/-method: 최종 출력에 메서드 적용-mc/-methodcol: 열 단위로 적용param.methodname: 특정 매개변수에 적용
. 사용md5.b64e.urle 여러 메서드를 순차적으로 적용생성된 패턴 > md5 해싱 > base 64 인코딩 > URL 인코딩, 사용md5,sha1,sha256 동일한 생성 패턴에 다른 인코딩 적용생성된 패턴 > md5 해싱생성된 패턴 > sha1 해싱생성된 패턴 > sha256 해싱
다음 두 메서드에 특별히 주목하세요. 워드리스트를 사용할 때마다 큰 도움이 됩니다.
-m smart▶ cook adminNew,admin_new -m smart
출력:
admin
New
admin
new
-m smartjoin[<case>:<char>]분할한 후 제공된 문자로 다시 결합합니다.
▶ cook adminNew,admin-old -m smartjoin[:_]
출력:
admin_New
admin_old
분리된 부분에 대소문자 적용
여기서는 카멜케이스를 적용했습니다.
▶ cook suppose_this_is_long_text -m smartjoin[c:_]
출력:
suppose_This_Is_Long_Text
cook help methodssort - 정렬
sortu - 고유 값만 정렬
reverse - 문자열 뒤집기
leet - a->4, b->8, e->3 ...
leet[0] 또는 leet[1]
smart - 명명 규칙에 따라 단어 분리
redirectUri, redirect_uri, redirect-uri -> [redirect, uri]
smartjoin - 명명 규칙에서 단어를 분할한 후
param.smartjoin[c,_] (대소문자, 결합 문자)
redirect-uri, redirectUri, redirect_uri -> redirect_Uri
u upper - 대문자
l lower - 소문자
t title - 제목 형식
split - split[문자]
splitindex - splitindex[문자:인덱스]
replace - 모두 바꾸기 replace[this:tothis]
json - JSON 필드 추출
json[키] 또는 json[키:서브키:서브서브키]
fb filebase - 경로 또는 URL에서 파일명 추출
s scheme - URL에서 http, https, gohper, ws 등 추출
user - URL에서 사용자 이름 추출
pass - URL에서 비밀번호 추출
h host - URL에서 호스트 추출
p port - URL에서 포트 추출
ph path - URL에서 경로 추출
f fragment - URL에서 프래그먼트 추출
q query - URL에서 전체 쿼리 추출
k keys - URL에서 키 추출
v values - URL에서 값 추출
d domain - URL에서 도메인 추출
tld - URL에서 최상위 도메인 추출
alldir - URL 경로에서 모든 디렉터리 추출
sub subdomain - URL에서 서브도메인 추출
allsubs - URL에서 서브도메인 추출
b64e b64encode - Base64 인코딩
b64d b64decode - Base64 디코딩
charcode - 문자 코드 인코딩
- charcode[0]
abc
- charcode[1] 세미콜론 포함
abc
hexe hexencode - 16진수 문자열 인코딩
hexd hexdecode - 16진수 문자열 디코딩
jsone jsonescape - JSON 이스케이프
jsonu jsonunescape - JSON 이스케이프 해제
urle urlencode - URL 예약 문자 인코딩
utf16 - UTF-16 인코더 (리틀 엔디언)
utf16be - UTF-16 인코더 (빅 엔디언)
urld urldecode - URL 디코딩
urleall urlencodeall - 모든 문자 URL 인코딩
xmle xmlescape - XML 이스케이프
xmlu xmlunescape - XML 이스케이프 해제
unicodee unicodeencodeall - 유니코드 이스케이프 문자열 인코딩 (모든 문자)
unicoded unicodedecode - 유니코드 이스케이프 문자열 디코딩
md5 - MD5 합
sha1 - SHA1 체크섬
sha224 - SHA224 체크섬
sha256 - SHA256 체크섬
sha384 - SHA384 체크섬
sha512 - SHA512 체크섬
cook의 이해를 돕기 위한 일반적인 사용 예제입니다.
-append 플래그 사용:
cook -l: live.txt -p: payloads.txt l / p -append 2
# 여러 열
cook col1 col2 col3 col4 col5 -append 2,5
참고: 열의 인덱스를 찾기 어려울 때는 -col을 사용하세요.
각 순열에 대해 데이터를 출력하고 싶다면 -min 플래그를 사용하세요.
참고: 열의 인덱스를 찾기 어려울 때는 -col을 사용하세요.
패턴을 생성하고 PIPE를 사용하여 다른 도구와 결합하세요.
cook [생성된 패턴] | [파이프 입력을 지원하는 모든 도구]
cook usernames_list : passwords_list -m b64e | ffuf -u https://target.com -w - -H "Authorization: Basic FUZZ"
cook https://target.com/**100 | ffuf -u FUZZ -w -
cook [생성된 출력] | x8 -u https://target.com
cook example.com seclists-tlds.txt | dnsx -v
너무 강력한가요? 하지만 매일 타겟의 큰 JSON 파일과 같은 이상한 BB(버그 바운티) 자료를 접하게 됩니다. 추출, 결합, 병합 등 무엇이든 하고 싶을 때 cook을 사용 사례에 맞게 현명하게 사용할 수 있습니다.
BBH로서 JSON 파일을 자주 접하게 됩니다. 컬렉션에 저장할 워드리스트를 찾는 경우도 있을 것입니다.
IIS Shortname 취약점에 관한 이 블로그를 읽었다고 가정해 보세요: https://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.
여기서 Assetnote가 BIG ZIP FILE을 공유했습니다. 이제 이 파일을 저장하고 필요할 때 다시 사용할 수 있는 방법이 필요합니다.
다음과 같이 저장하세요..., 그러면 my.yaml에 저장됩니다.
cook add shub_zip_files=[URL] in files
또는 수동으로 my.yaml에 저장:
shub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]
참고: cook은 이미 기본 워드리스트에 저장했습니다.
cook shub_zip_files로 접근할 수 있습니다.
▸ 파일에 다음과 같은 데이터가 포함되어 있지만, 직접 사용하기는 어렵습니다.
{"repo_name":"cocowool/RoseCMS","ref":"refs/heads/1","path":"user_guide/_downloads/ELDocs.tmbundle.zip","mode":"33261","id":"f7a11b364ca918379b48ad525798148e7470b6b1"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/fast.zip","mode":"33188","id":"f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/store.zip","mode":"33188","id":"e2add30dc0e3129dc89e20a71abe7314052d0002"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/ultra.zip","mode":"33188","id":"86a8ec776107c075ce2c7f803472aa97dc25cbf7"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/normal.zip","mode":"33188","id":"b4602c94ee000ee54c71c9302b9db956b3fd9f0e"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/fastest.zip","mode":"33188","id":"f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/maximum.zip","mode":"33188","id":"86a8ec776107c075ce2c7f803472aa97dc25cbf7"}
...
다음과 같은 작업이 필요하다고 가정해 보세요:
▸ JSON 필드 path 추출
▸ path에서 filebase 추출
▸ 명명 규칙에 따라 분할
▸ cook을 사용하면 추출할 수 있을 뿐만 아니라, 경로에서 파일 베이스를 추출하고 고유하게 정렬한 후 smartjoin을 사용하여 다양한 순열을 생성할 수 있습니다.
cook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]
그리고 이것이 바로 cook이 탄생한 방식입니다. IIS Shortname 퍼징 중에 시작되었고, 이후 다른 기능들이 추가되었습니다.
* 및 ***를 사용하세요.**를 사용하세요.*10-1 또는 *1-10도 시도해 보세요.
Cook을 Go 프로젝트에서 라이브러리로 사용할 수 있습니다.
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// 새 cook 인스턴스 생성
cookInst := cook.New(&cook.COOK{
Pattern: []string{"a,b,c", "1,2,3"},
PrintResult: false, // 표준 출력으로 출력하지 않음
})
// 패턴 생성
cookInst.Generate()
fmt.Println("생성된 패턴:", cookInst.Final)
}
리소스를 매번 초기화하지 않고 여러 패턴을 생성하려면:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// 공유 리소스를 한 번 초기화하는 생성기 생성
generator := cook.NewGenerator()
// 여러 패턴을 효율적으로 생성
list1 := generator.Generate([]string{"a,b,c", "1,2,3"})
list2 := generator.Generate([]string{"admin", "password-2023"})
fmt.Println("패턴 1:", list1)
fmt.Println("패턴 2:", list2)
}
생성기는 동시 패턴 생성을 지원합니다:
package main
import (
"fmt"
"sync"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
generator := cook.NewGenerator()
patterns := [][]string{
{"user-1-5", "pass-1-3"},
{"admin", "Admin-2023-2025"},
}
var wg sync.WaitGroup
results := make([][]string, len(patterns))
// 패턴을 동시에 생성
for i, pattern := range patterns {
wg.Add(1)
go func(idx int, p []string) {
defer wg.Done()
results[idx] = generator.Generate(p)
}(i, pattern)
}
wg.Wait()
// 결과 사용
for i, r := range results {
fmt.Printf("패턴 %d: %d개의 결과 생성됨\n", i, len(r))
}
}
라이브러리를 사용하여 cook-ingredients 검색:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
cookInst := cook.NewWithoutConfig()
results := cookInst.Search("api")
fmt.Printf("검색된 API 패턴: %v\n", results)
}
cook file1 =/= file2, 모든 터미널에서 문자를 직접 사용할 수 있도록 보장| 카테고리 | 설명 |
|---|
lists | 호출 시 직접 사용할 값 배열 |
files | URL 배열 |
ports | 숫자 범위 |
raw-files | 로컬 파일 배열 |
functions | 함수는 패턴 생성에 사용됩니다. |
| 열 | 공백으로 구분 |
| 값 | 쉼표로 구분 |
| 매개변수 | 매개변수에 원하는 이름을 지정할 수 있으며, -를 앞에 붙여 매개변수로 만듭니다 -param value |
| 원시 문자열 | 문자열 앞뒤에 `를 사용하여 cook의 구문 분석을 중지합니다. 키워드를 단어로 사용해야 할 때 유용합니다. |
| 파이프 입력 | 매개변수 값으로 -를 사용하여 파이프 입력을 받습니다. |
| 파일 입력 | 매개변수 이름 뒤에 :를 사용하여 파일 입력을 받습니다. cook -f: live.txt f |
| 함수 | 매개변수로만 호출할 수 있습니다. |
| 메서드 | 매개변수 또는 최종 출력에 사용할 수 있습니다. |
| 플래그 | 사용법 |
|---|
| -peek | -peek 50으로 처음 50줄 출력 미리보기 |
| -a, -append | 순열 대신 이전 줄에 추가 |
| -c, -col | 열 번호와 그 값 출력 |
| -conf, -config | 설정 정보 |
| -mc, -methodcol | 열 단위로 메서드 적용 -mc 0:md5,b64e; 1:reverse 모든 열에 적용하려면 -mc md5,b64e |
| -m, -method | 최종 출력에 메서드 적용 |
| -h, -help | 도움말 |
| -min | 출력할 최소 열 개수 |