피싱 URL 및 도메인

QR 코드 디코더

로컬에서 실행신규

도구 자체는 영어로 되어 있지만, 이 페이지에서는 귀하의 언어로 설명해 드립니다.

QR 코드 디코더을(를) 사용하세요

기능

QR 코드 이미지를 불러오거나 끌어다 놓거나 붙여 넣으세요. 내용이 디팽된 텍스트로 표시되며, 링크와 실제 호스트, Wi-Fi 로그인 정보, 결제 요청, 2단계 인증 비밀 키 등 그 코드가 무엇을 하는지 함께 보여 줍니다.

이 서비스는 전적으로 브라우저에서 실행되며, 사용자가 입력한 내용은 전혀 업로드되지 않습니다.

QR 코드 디코더 사용 방법

  1. 코드 이미지 준비. QR 코드의 스크린샷이나 사진을 찍습니다. 이 페이지는 카메라를 사용하지 않습니다.
  2. 불러오기. 이미지를 상자에 끌어다 놓거나, 상자를 클릭해 파일(최대 20MB의 PNG, JPEG, GIF, WebP, BMP, SVG)을 고르거나, Ctrl+V로 스크린샷을 붙여 넣습니다.
  3. 미리 보기 확인. 감지된 코드에 윤곽선이 표시된 이미지가 나타납니다. 배지에 내용 유형과 코드를 읽은 디코더가 표시됩니다.
  4. 내용과 경고 읽기. 내용은 디팽되어 표시되므로 링크를 클릭할 수 없습니다. 그 아래의 빨간색과 노란색 메모가 코드가 무엇을 하는지 설명합니다.
  5. 필드 살펴보기. 필드는 내용을 Host, Network name, Amount, Recipient 같은 부분으로 나눕니다. 지갑 주소에는 별도의 Copy 버튼이 있습니다.
  6. 다음 단계 진행. 링크라면 방문하지 말고 Send to…로 Link Unwrapper, Homoglyph Checker 또는 URL Parser에 넘기세요.

예시

호스트를 숨긴 주차 요금 결제 링크

입력
https://pay-parking.example@198.51.100.24/pay?zone=401
출력 결과 (2026-10-20에 캡처됨)
Web link read by jsQR (as is)

Payload (defanged)

hxxps://pay-parking[.]example[@]198[.]51[.]100[.]24/pay?zone=401
Copy raw

Text before "@" is not the destination: this link opens 198[.]51[.]100[.]24, not "pay-parking[.]example".

The host is a bare IP address (198[.]51[.]100[.]24), not a domain name.

HOST
198[.]51[.]100[.]24
USER INFO BEFORE @
pay-parking[.]example
SCHEME
https
PATH
/pay
QUERY
?zone=401

Next: use Send to… above. URL Parser splits the link into parts.

Load example은 이 텍스트를 페이지에서 QR 코드로 그린 뒤 이미지를 디코딩합니다. 실제 호스트는 IP 주소 198.51.100.24이고, @ 앞의 pay-parking.example은 사용자 정보일 뿐이므로 둘 다 위험 징후로 표시됩니다.

검증 대상

신호그 의미는 무엇인가
내용 유형웹 링크, Wi-Fi 네트워크, 결제 요청, 2단계 인증 비밀 키, 이메일, SMS 또는 전화 초안, 연락처 카드, 일정, 앱 링크, 일반 텍스트입니다. 배지 색은 가장 심각한 경고를 따릅니다.
링크 속 숨겨진 호스트@ 앞의 텍스트는 목적지가 아니며, IP 주소로 쓰인 호스트는 빨간색입니다. 여러 문자 체계를 섞은 퓨니코드 호스트도 빨간색입니다.
단축 URL 또는 메일 래퍼bit.ly, qrco.de 같은 서비스나 Safe Links, URL Defense를 거치는 링크는 실제 주소를 숨깁니다. 도구가 그 사실을 알려 주고 Link Unwrapper를 안내합니다.
무료 호스팅, http, 포트, 깊은 하위 도메인일반 http에는 노란색 경고가 붙습니다. github.io나 pages.dev 같은 무료 호스트, 비표준 포트, 5단계 이상의 호스트에는 참고 사항이 붙습니다. 이런 주소로는 누가 페이지를 운영하는지 알기 어렵기 때문입니다.
2단계 인증 비밀 키(빨간색)otpauth 코드에는 일회용 코드를 만드는 비밀 키가 담겨 있고, otpauth-migration 코드에는 인증 앱 전체 내보내기가 담겨 있습니다. 비밀 키는 Show secret을 누르기 전까지 가려집니다.
암호화폐 결제 요청Bitcoin, Ethereum, Solana, TRON, TON 등의 결제 링크는 주소와 금액을 보여 줍니다. approve, increaseAllowance, setApprovalForAll, permit을 호출하는 Ethereum 코드는 빨간색이며, Solana Pay 거래 요청도 빨간색입니다.
UPI 및 EMV 가맹점 코드UPI 코드를 스캔하면 사용자 계좌에서 돈이 나가며, UPI 정기 결제 위임(mandate)은 반복 인출을 허용합니다. CRC 체크섬이 맞지 않는 EMV 코드는 수정되었거나 손상된 것입니다.
위험한 스킴javascript:, data:, file:, ms-msdt:, search-ms: 같은 스킴은 빨간색입니다. 웹 페이지 대신 앱을 여는 코드에는 노란색 메모가 붙습니다.
Wi-Fi 정보네트워크 이름, 보안 유형, 비밀번호 유무, 숨겨진 네트워크 여부입니다. 개방형 네트워크에는 경고가 붙습니다.

더 많은 예시

개방형 Wi-Fi 네트워크 QR 코드

입력
WIFI:T:nopass;S:Airport Free WiFi;;
결과

Wi-Fi 네트워크. Network name (SSID): Airport Free WiFi, Security: nopass, Password: none, Hidden network: no. 노란색 경고: 개방형 네트워크로, Wi-Fi 수준에서 트래픽이 암호화되지 않습니다. 공격자가 트래픽을 가로채려고 비슷한 개방형 네트워크를 만든다는 메모가 함께 나옵니다.

인증 앱 비밀 키가 담긴 QR 코드

입력
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example
결과

2단계 인증(TOTP/HOTP) 비밀 키. Show secret을 누르기 전까지 내용에는 secret=••••••••로 표시됩니다. 필드: Type TOTP, Issuer Example, Account alice[@]example[.]com, Secret present(16자, 가려짐), Algorithm SHA1(기본값), Digits 6(기본값), Period 30 s, 그리고 이 이미지를 누구에게도 보내지 말라는 빨간색 경고가 나옵니다.

결제로 위장한 토큰 승인(EIP-55 테스트 주소)

입력
ethereum:0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359@1/approve?address=0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed&uint256=115792089237316195423570985008687907853269984665640564039457584007913129639935
결과

Ethereum 결제 요청. 필드: Network Ethereum, Contract 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359, Chain ID 1, Function approve, Address parameter(지출 권한을 받는 주소)와 Token amount(원시 단위), 여기서는 78자리 최대값입니다. 빨간색 경고: 지갑에 approve 호출을 요청하며, 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed에 사용자의 토큰을 옮길 권한을 줍니다. 지갑 드레이너가 바로 이 방식을 씁니다. 이어서 주소 전체를 비교하라는 노란색 메모가 나옵니다.

자주 묻는 질문

디코더는 QR 코드에 대해 무엇을 보여 주나요?

클릭할 수 없도록 디팽된 디코딩 텍스트와 그 유형입니다. 웹 링크(호스트, 퓨니코드, IP 호스트, @ 앞의 사용자 정보, 단축 URL과 래퍼), Wi-Fi 네트워크, 이메일·전화·SMS 초안, 암호화폐·UPI·EMV 결제 요청, otpauth 2단계 인증 비밀 키, 연락처 카드, 일정 등입니다. 유형마다 중요한 경고가 붙습니다. 예를 들어 otpauth 코드에는 2FA 비밀 키가 담겨 있다는 경고입니다.

이미지가 디코딩되지 않는 이유는 무엇인가요?

바코드가 너무 작거나, 흐릿하거나, 가장자리가 잘리거나, 반사로 인해 가려져 있을 수 있습니다. 이 경우 흰색 테두리가 포함된 바코드 부분만 잘라내면 보통 문제가 해결됩니다. 디코더는 브라우저에 내장된 바코드 감지 기능이 있는 경우 이를 먼저 시도하고, 그렇지 않은 경우 이미지에 jsQR을 적용합니다(이미지는 가장 긴 변의 길이를 1,600픽셀로 축소). 흑백 임계값 분석, 흰색 테두리 추가, 그리고 가장 긴 변이 800픽셀 이하인 이미지의 경우 2배 확대 순으로 시도합니다.

이미지가 업로드되나요?

아니요. 이미지는 내장된 jsQR 라이브러리로 브라우저에서 디코딩되며 어디에도 전송되지 않습니다. 카메라는 사용하지 않으므로 사진이나 스크린샷을 찍어 불러오거나 붙여 넣으세요.

이미지에 QR 코드가 둘 이상 있으면 어떻게 되나요?

브라우저에 내장 바코드 감지기가 있으면 찾은 코드가 모두 QR code 1 of N 형식으로 나열되며, 각각 경고가 따로 붙습니다. jsQR 대체 방식은 이미지당 코드 하나만 읽으므로, 확인하려는 코드만 남도록 이미지를 잘라 내세요.

Wi-Fi 비밀번호나 2단계 인증 비밀 키가 가려지는 이유는 무엇인가요?

화면이나 결과 스크린샷에 나타나지 않도록 하기 위해서입니다. Show secret을 누르면 내용 상자에 표시되며, Copy raw는 항상 전체 텍스트를 복사합니다.

다른 사이트에 있는 이미지 링크를 넣어도 되나요?

아니요. 이 페이지는 이미지 파일과 붙여 넣은 이미지만 읽으며 아무것도 다운로드하지 않습니다. 먼저 이미지를 저장하거나, 이미지 자체를 복사해 붙여 넣으세요. base64로 된 data:image 텍스트를 붙여 넣어도 됩니다.

용어 설명

PhishDestroy 연구