Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ShuckNT — ShuckNT는 온프레미스 사용을 위한 Shuck.sh 온라인 서비스의 스크립트입니다. 데이터 암호화 표준(DES) 기반 인증 토큰을 다운그레이드, 변환, 분석 및 해체하도록 설계되었습니다. | Kitploit
도구/GitHubGitHub/yanncam/shucknt
Password CrackingPassword AttacksHash AnalysisCryptographyPenetration TestingAuthentication
GitHubyanncam/shucknt

ShuckNT

ShuckNT는 온프레미스 사용을 위한 Shuck.sh 온라인 서비스의 스크립트입니다. 데이터 암호화 표준(DES) 기반 인증 토큰을 다운그레이드, 변환, 분석 및 해체하도록 설계되었습니다.

저장소 보기
7811101년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Shuck.sh

🔐 ShuckNT : 크랙 시도 전에 해시 셰킹(Shuck)하기 | Shuck.sh의 스크립트

ShuckNT는 온프레미스 사용을 위한 Shuck.sh 온라인 서비스의 스크립트입니다 (온라인으로 사용해 보기!). DES(Data Encryption Standard) 기반 인증 토큰을 다운그레이드, 변환, 분석(dissect) 및 셰킹(shuck)하도록 설계되었습니다.

지원되는 알고리즘 / 형식:

  • MSCHAPv2
  • NET(NT)LM
  • (LM|NT)HASH
  • PPTP-VPN $99$
  • 모든 챌린지 값 지원!

ShuckNT는 해시 셰킹(hash shucking) 원리를 기반으로 챌린지-응답 크래킹 및 악용 가능성을 최적화합니다.

패스워드 셰킹(Password shucking)은 업데이트된 패스워드 해시에서 레이어를 벗겨내어 새로운 패스워드 해싱 알고리즘의 이점을 제거하고 더 약한 알고리즘으로 되돌리는 방법입니다. 패스워드 셰킹은 공격자가 오래된 재해시(rehashed) 패스워드나 사전-해시(pre-hash) 패스워드를 대상으로 사용할 수 있으며, 강력한 외부 패스워드 해싱 알고리즘을 벗겨내거나 "셰킹"할 수 있게 해줍니다.

입력 토큰 목록에서 ShuckNT는 다음을 제공합니다:

  • HaveIBeenPwned 최신 데이터베이스에서 스마트 검색을 통해 즉시 NT-해시 (pass-the-hash 준비 완료) (존재하는 경우);
  • Crack.Sh에서 바로 사용 가능한 최적화 토큰. NT-해시가 HIBP-DB에 없으면 비용을 덜 내거나 무료로 사용 가능;
  • 다른 도구(hashcat, jtr, CloudCracker 등)로 크랙을 시도할 수 있도록 변환된 여러 형식:
    • Hashcat 모드 5500: NetNTLMv1을 평문으로 크랙 (결과 예측 불가, 워드리스트, 마스크, 규칙 등에 의존);
    • Hashcat 모드 27000: NetNTLMv1을 NT-해시로 셰킹 (결과 예측 불가 / NT-워드리스트 등에 의존);
    • Hashcat 모드 14000: NetNTLMv1을 DES-키로 셰킹한 후 NT-해시로 변환 (100% 결과 / 시간 필요);
  • 챌린지-응답 분석의 모든 세부 정보 (PT1/2/3, K1/2/3, CT1/2/3, HIBP 발생 횟수/후보, LMresp, NTresp, 챌린지 등).

🔍 어떻게 동작하나요?

Shuck.sh의 스크립트 ShuckNT는 기본적으로 마지막 2바이트가 알려진 NT-해시 후보 부분집합에서 DES-키 충돌을 찾기 위한 효율적이고 최적화된 이진 탐색입니다. 이는 커스텀 역순(reversed) 이진 HIBP 데이터베이스를 대상으로 합니다.

보안 평가(시간 제한) 중에 Responder와 같은 도구로 약 100개의 NetNTLMv1 (ESS 포함 또는 미포함)을 캡처했다면, 해당 NT-해시(HIBP에 유출된 경우) 검색은 Shuck.sh/ShuckNT를 통해 단 몇 초(~10초) 만에 완료됩니다.

Shuck.sh의 스크립트 ShuckNT는 암호화 알고리즘을 더 약한 형태로 변환하여 단순화합니다 (가능하면 ESS 없이, Crack.Sh용 무료 형식 또는 HIBP에 유출된 경우 직접 NT-해시 형식). 따라서 NetNTLMv1-ESS/SSP, PPTP VPN 또는 MSCHAPv2 챌린지(Crack.Sh에서는 무료가 아니고 시간이 오래 걸림)도 잠재적으로 즉시 무료로 셰킹될 수 있습니다!

Shuck.sh/ShuckNT의 초기 아이디어는 고객을 위한 보안 평가 시간을 절약하고, 가용성이 연속적이지 않을 수 있는 타사 온라인 서비스에 의존하지 않으며, 로컬에서 자율적으로 운영할 수 있도록 하려는 필요에서 탄생했습니다.

🔨 ShuckNT 설치 / HIBP 데이터베이스 준비

설치 과정은 다음과 같이 구성됩니다:

  • ShuckNT 프로젝트 가져오기;
  • HaveIBeenPwned 데이터베이스 준비 (최초 1회만, 몇 분 소요) (이 단계는 Unix/Linux 환경에서 수행해야 합니다):
    • 해시 순으로 정렬된 최신 HaveIBeenPwned NT-해시 데이터베이스 다운로드 (수 GB) (미러 링크 또는 토렌트 이용);
    • 7zip으로 이 데이터베이스 압축 해제;
    • ShuckNT 스크립트로 이 데이터베이스의 모든 해시를 직접 역순 변환;
    • 모든 역순 해시를 정렬;
    • ShuckNT 스크립트로 이 새로운 데이터베이스를 직접 이진 형식으로 변환 (또는 제 친구 @JoshuaMart의 HIBP_PasswordList_Slimmer 사용 :));
  • ShuckNT를 즐기세요!

설치 명령:

root@kitploit:~
# Install dependencies
apt install p7zip-full php git

# Get ShuckNT tool
git clone https://github.com/yanncam/ShuckNT
cd ShuckNT

# Prepare HaveIBeenPwned database (one time only, takes several minutes)
## Download latest HIBP-DB (can take severals minutes...)
wget https://downloads.pwnedpasswords.com/passwords/pwned-passwords-ntlm-ordered-by-hash-v8.7z
## Extract HIBP-DB (can take severals minutes...)
7z e pwned-passwords-ntlm-ordered-by-hash-v8.7z
## Reverse all hashes (can take severals minutes...)
php shucknt.php -r pwned-passwords-ntlm-ordered-by-hash-v8.txt -t pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
## Sort all reversed-hashes (can take severals minutes...)
sort pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed -o pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
## Convert to binary format (can take severals minutes...)
php shucknt.php -b pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted -t pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
## Free space to keep only pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.7z
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.txt
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted

# Enjoy ShuckNT via commandline, or web http://[HOST]/shucknt.php
php shucknt.php -h

ShuckNT가 기대하는 형식의 데이터베이스 생성은 Unix/Linux 시스템에서 수행해야 합니다.

유효한 데이터베이스를 사용한 ShuckNT 사용은 Windows/Linux에서 PHP7/8+로 테스트되었습니다.

ShuckNT는 DES-ECB 알고리즘과 함께 PHP-OpenSSL 확장을 사용합니다. 따라서 OpenSSL3를 사용하는 최신 PHP 버전에서는 legacy provider를 활성화하십시오.

각 단계별 체크섬:

root@kitploit:~
$ sha1sum pwned-passwords-ntlm-*
225a993a908e3d73ffa68859c4f128e17359358e  pwned-passwords-ntlm-ordered-by-hash-v8.7z
4b6c4728c21f64d6a58c7b63d98dcf342c068407  pwned-passwords-ntlm-ordered-by-hash-v8.txt
88094c4a332ecfac9a15c23ba886194d1810b0b2  pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
d5486dfbf960f36ff0e1cf313a1b80db5cd4137f  pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
31a5c1b605cca5bcf71196c70f291c05aa3fe86c  pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin

$ sha256sum pwned-passwords-ntlm-*
ea83d536387e6b149f2e362bf7dfbf521523812611359f47620fd44dae9770ee  pwned-passwords-ntlm-ordered-by-hash-v8.7z
916cfd1772d24f2fe99aa5f37d4a465359c7b6f7d39f45ffbf27deca697b7116  pwned-passwords-ntlm-ordered-by-hash-v8.txt
76f9e101801dfc44489cad4edec5f14d634c2b4676bb9ffbc7e9968c9a5356a5  pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
6ee13a35ed88e8073be088a20560cb9fefcc6d08e599241244eaee01dc053a44  pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
ac2f6bf681fbe636b94f3ce3f2b594ef3d0af7671375478db1153874e8a5d873  pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin

🔥 데모 / 예제 / 사용 방법?

ShuckNT는 의존성이 없는 독립 실행형 PHP 스크립트입니다. CLI 명령줄 또는 웹 브라우저를 통해 사용할 수 있습니다.

CLI 명령줄 독립 실행형 스크립트

도움말, 인자 및 구문:

root@kitploit:~
$ php shucknt.php -h
 __ _                _        __  _____
/ _\ |__  _   _  ___| | __ /\ \ \/__   \
\ \| '_ \| | | |/ __| |/ //  \/ /  / /\/
_\ \ | | | |_| | (__|   </ /\  /  / /
\__/_| |_|\__,_|\___|_|\_\_\ \/   \/  v1.0
DES-based authentication token shucker (https://shuck.sh)
@author : ycam | @asafety.fr / @yann.cam

ShuckNT is design to dowgrade, convert, dissect and shuck authentication token based on Data Encryption Standard (DES).
Algorithms / formats supported :
        - NetNTLMv1(-ESS/SSP)
        - MSCHAPv2
        - NET(NT)LM
        - (LM|NT)HASH
        - PPTP-VPN $99$
        - All with any challenge value!

ShuckNT rely on "hash shucking" principle to optimize challenge-response cracking and exploitability.

From a list of input tokens, ShuckNT provides :
- The NT-hash instantly (pass-the-hash ready) through a smart-research in the HaveIBeenPwned latest database (if present);
- The Crack.Sh ready-to-use optimized token, to pay less or nothing if NT-hash not found in HIBP-DB;
- Several converted formats to try to crack them via other tools (hashcat, jtr, CloudCracker, etc.) :
        - Hashcat mode 5500 : to crack NetNTLMv1 to plaintext (unpredictable result, depend on wordlists, masks, rules...);
        - Hashcat mode 27000: to shuck NetNTLMv1 to NT-hash (unpredictable result / depend on NT-wordlists...);
        - Hashcat mode 14000: to shuck NetNTLMv1 to DES-keys then NT-hash (100% result / time needed);
- All the details of the dissection of the challenge-response (PT1/2/3, K1/2/3, CT1/2/3, HIBP occurences/candidates, LMresp, NTresp, challenges, etc.).

Use '-h' to print help.

usage: php shucknt.php  [-h] [-f tokens.txt] [-i 'tokenValue'] [-w wordlist.bin] [-o json|stdout|web] [-v]
                        [-r input_wordlist.txt] [-b input_wordlist_reversed_sorted.txt] [-r output_wordlist] [-j]

Arguments details:

        -h                      Print this help
        -f tokens.txt           Input tokens file, one per line.
        -i 'tokenValue'         Inline input token from stdin.
        -w wordlist.bin         Specific binary-reversed-sorted-wordlist to use.
        -o json|stdout|web      Commandline output in json, stdout or web format.
        -v                      Verbosity for stdout output format only.
        -r input_wordlist.txt   Input wordlist file to be reversed.
        -b input_wordlist.txt   Input reversed-sorted-wordlist file to be binarized.
        -r output_wordlist      Output file for reversal or binarization.
        -j                      Do not display header (for json output).

These are common ShuckNT commands used in various situations:

        # Shuck tokens from an input file to stdout with verbosity:
        php shucknt.php -f tokens.txt -w pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin -v

        # Shuck token from stdin to json output:
        php shucknt.php -i '$99$1a7F1qr2HihoXfs/56u5XMdpDZ83N6hW/HI=' -w pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin -o json -j

        # Shuck token from stdin to light stdout (use default wordlist defined as constant in script):
        php shucknt.php -i 'ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788'

        # Reverse HIBPDB to output file:
        php shucknt.php -r pwned-passwords-ntlm-ordered-by-hash-v8.txt -t pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed

        # Binarize HIBPDB already reversed and sorted to output file:
        php shucknt.php -b pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted -t pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin

NetNTLMv1(ESS/SSP 포함) 인증 토큰을 해당 NT-해시로 즉시 셰킹합니다. stdin(기본 HIBP-DB 사용) 및 상세 출력:

root@kitploit:~
$ php shucknt.php -i 'ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788' -v
[...]
1 hashes-challenges analyzed in 0 seconds, with 1 NT-Hash instantly broken for pass-the-hash and 0 that can be broken via crack.sh for free.

[INPUT] ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788
        [USERNAME] ycam
        [DOMAIN] ad
        [LMRESP] DEADC0DEDEADC0DE00000000000000000000000000000000
        [NTRESP] 70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED
                [CT1] 70C249F75FB6D2C0
                [CT2] AC2C2D3808386CCA
                [CT3] B1514A2095C582ED
        [ESS] YES
                [CLIENTCHALL] 1122334455667788
                [SERVERCHALL] DEADC0DEDEADC0DE
        [CHALLENGE] C85086419358F950
        [NTHASH-SHUCKED] 93B3C62269D55DB9CA660BBB91E2BD0B
                [HIBP-CANDIDATES] 12778
                [HIBP-OCCURENCE] 15
                [PT1] 93B3C62269D55D
                [PT2] B9CA660BBB91E2
                [PT3] BD0B
                [K1] 93D9F1C5274F55BB
                [K2] B9E599C1BBDD47C5
                [K3] BD85C10101010101
        [CRACK.SH-TOKEN] $NETLM$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED (20-300$)
        [FORMAT-NETNTLMV1-NO-ESS] ycam::ad::70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:C85086419358F950
        [FORMAT-MSCHAPV2] $MSCHAPv2$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED$
        [FORMAT-NET(NT)LM] $NETLM$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED
        [FORMAT-PPTP] $99$yFCGQZNY+VBwwkn3X7bSwKwsLTgIOGzKvQs=

지원되는 형식의 많은 인증 토큰을 해당 NT-해시로 즉시 셰킹합니다. 입력 파일(지정된 HIBP-DB 사용) 및 단순 출력:

root@kitploit:~
$ php shucknt.php -f tokens-samples.txt -w pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
[...]
10 hashes-challenges analyzed in 3 seconds, with 8 NT-Hash instantly broken for pass-the-hash and 1 that can be broken via crack.sh for free.

[INPUT] $99$1a7F1qr2HihoXfs/56u5XMdpDZ83N6hW/HI=
        [NTHASH-SHUCKED] DE26CCE0356891A4A020E7C4957AFC72

[INPUT] LMHASH:2B56DAEB658F9FE977BD3B61E7976684388EF712DB95C6F8
        [NTHASH-SHUCKED] C780C78872A102256E946B3AD238F661

[INPUT] NTHASH:D4ACBAA3CD626E2A074D76C7491D332F8FB8989968E88736
        [NTHASH-SHUCKED] C22B315C040AE6E0EFEE3518D830362B

[INPUT] ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788
        [NTHASH-SHUCKED] 93B3C62269D55DB9CA660BBB91E2BD0B

[INPUT] $NETNTLM$4803CB182E23B79A$BA4DA703C6A056727CC7B62FFA065970D5D400F18D02C6D1
        [NTHASH-SHUCKED] 8E2FDD50C6FB5D0E22E2455394D98D2A

[INPUT] user::domain.tld:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
        [NTHASH-SHUCKED] 8846F7EAEE8FB117AD06BDD830B7586C

[INPUT] $MSCHAPv2$1337133713371337$F93A1DB1C044133F52582EFDA5C31667EBBE6F8F2814E539$root
        [NTHASH-SHUCKED] 209C6174DA490CAEB422F3FA5A7AE634

[INPUT] $NETLM$FE2CFD84F6C7DEF8$852074A98A9B2AF70D59D449AD0F9B898B4A9455C7B90CE7
        [NTHASH-SHUCKED] 0A42BC909E226C6F8FFCBAA6AB0DA43D

[INPUT] $99$ESIzRFVmd4i8671kB52wcm9qK5VdJR7lJKU=
        [CRACK.SH-TOKEN] NTHASH:BCEBBD64079DB0726F6A2B955D251EE57D6DD8A109D77A0D (0$)

[INPUT] x::x:FEC7A34F78C17A9700000000000000000000000000000000:E875F0A28BD7729D071D7DF05272B0FB4549AE926FE36255:1122334455667788
        [CRACK.SH-TOKEN] $NETLM$1A6A5C911D8A4DF2$E875F0A28BD7729D071D7DF05272B0FB4549AE926FE36255 (20-300$)

JSON 출력만 사용하여 토큰 셰킹:

root@kitploit:~
$ php shucknt.php -f tokens-samples.txt -o json -j
[...]
    {
        "type": "NetNTLMv1 (ESS\/SSP)",
        "description": "NetNTLMv1 (ESS\/SSP) type with C85086419358F950 as challenge",
        "token": "ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788",
        "user": "ycam",
        "domain": "ad",
        "lmresp": "DEADC0DEDEADC0DE00000000000000000000000000000000",
        "ntresp": "70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED",
        "ct1": "70C249F75FB6D2C0",
        "ct2": "AC2C2D3808386CCA",
        "ct3": "B1514A2095C582ED",
        "ess": true,
        "clientchallenge": "1122334455667788",
        "serverchallenge": "DEADC0DEDEADC0DE",
        "challenge": "C85086419358F950",
        "deskeys": {
            "k1": "93D9F1C5274F55BB",
            "k2": "B9E599C1BBDD47C5",
            "k3": "BD85C10101010101"
        },
        "nthash": "93B3C62269D55DB9CA660BBB91E2BD0B",
        "pt1": "93B3C62269D55D",
        "pt2": "B9CA660BBB91E2",
        "pt3": "BD0B",
        "reversePt3": "B0DB",
        "HIBPcountCandidates": 12778,
        "HIBPoccurence": 15,
        "crackshToken": "$NETLM$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED (20-300$)",
        "h4m14000": "echo \"70C249F75FB6D2C0:C85086419358F950\">14000.hash;echo \"AC2C2D3808386CCA:C85086419358F950\">>14000.hash;hashcat -m 14000 -a 3 -1 charsets\/DES_full.charset --hex-charset 14000.hash ?1?1?1?1?1?1?1?1",
        "h4m5500": "echo \"ycam::ad::70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:C85086419358F950\">5500.hash;hashcat -m 5500 -a 3 5500.hash ?a?a?a?a?a --increment",
        "h4m27000": "echo \"ycam::ad::70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:C85086419358F950\">27000.hash;hashcat -m 27000 -a 0 27000.hash nthash-wordlist.txt"
    }
[...]

웹 브라우저 독립 실행형 스크립트

PHP 7/8+를 지원하는 웹 서버(Apache, Nginx 등)에 ShuckNT를 호스팅하세요:

ShuckNTweb

🧰 더 깊이 알아보기...

ShuckNT 도구를 구현하는 온라인 서비스 Shuck.sh는 많은 세부 정보와 FAQ를 제공합니다.

온라인에는 동적이고 실시간 Generator가 있어, 평문 비밀번호 또는 NT-해시로부터 인증 토큰 생성 알고리즘(NetNTLMv1(-ESS/SSP), MSCHAPv2, PPTP-VPN 등)의 메커니즘을 관찰할 수 있습니다.

마지막으로, 동적이고 실시간 Converter도 온라인에 있어, 인증 토큰(NetNTLMv1(-ESS/SSP), MSCHAPv2, PPTP-VPN 등)으로부터 분석 과정을 상세히 보여주고, DES 키 K1과 K2가 제공되면(예: DES-KPA 공격 이후) 해당 NT-해시까지 얻을 수 있습니다.

🍻 크레딧

  • 탁월한 온라인 서비스를 제공하는 Crack.sh에 감사드립니다. 여전히 필수적인 서비스입니다!
  • 비밀번호 유출에 대한 인식을 지속적으로 높여주는 HaveIBeenPwned의 Troy Hunt에게도 감사드립니다.
  • 흥미로운 연구, 도구 및 기술을 제공하는 Hashcat 커뮤니티 전체에 감사드립니다.
  • 이진 연산이 머리를 아프게 할 때 도움을 준 zarbibi에게 감사합니다.
  • Le££e 팀 전체에 GreetZ를 보냅니다 :)
도구 다운로드