WiFi QR 코드 형식 — 스캔하면 바로 접속되는 원리

카페나 사무실 벽에 붙은 QR을 카메라로 비추면 비밀번호를 묻지도 않고 WiFi에 붙습니다. 마법처럼 보이지만, QR 안에는 정해진 형식의 짧은 문자열 한 줄이 들어 있을 뿐입니다.
그 한 줄이 WIFI:T:WPA;S:네트워크이름;P:비밀번호;; 형태입니다. 이 글에서는 각 칸이 무엇을 뜻하는지, 이름이나 비밀번호에 ; 나 : 가 섞였을 때 왜 접속이 깨지는지를 다룹니다.
요약 ① QR 안에는
WIFI:T:암호화방식;S:네트워크이름;P:비밀번호;;한 줄이 평문 그대로 들어 있습니다. ② 이름·비밀번호에\;,:"가 있으면 그 문자 앞에 역슬래시를 붙여야 합니다. ③ 숨김 네트워크는H:true;를 더하고, 필드 순서는 바뀌어도 같은 뜻입니다.
스캔만 했는데 접속되는 이유
QR 코드는 그림이 아니라 글자를 담는 그릇입니다. 안에 웹 주소가 들어 있으면 브라우저가 열리고, 연락처 형식이 들어 있으면 주소록 저장 화면이 뜹니다.
WiFi도 같은 방식입니다. 스캐너가 WIFI: 로 시작하는 문자열을 만나면 "이 네트워크에 연결할까요" 하는 배너를 띄우고, 사람 대신 이름과 비밀번호를 입력해 줍니다.
여기서 중요한 사실이 하나 따라옵니다. 비밀번호는 QR 안에 평문으로 들어 있습니다. 인쇄해 붙여 둔 WiFi QR은 비밀번호를 적어 둔 종이와 보안 수준이 같습니다.
QR 안에 들어 있는 문자열 — 필드 구조
이 형식은 IETF RFC 같은 공식 표준이 아니라, QR 라이브러리 ZXing이 문서로 정리한 뒤 각 플랫폼이 따라 구현한 사실상의 표준입니다. 기본형은 이렇습니다.
WIFI:T:WPA;S:mynetwork;P:mypass;;
읽는 법은 단순합니다. WIFI: 로 시작하고, 그 뒤로 키:값; 이 이어지며, 전체가 ; 하나로 한 번 더 닫혀 끝이 ;; 가 됩니다.
| 키 | 뜻 | 예 |
|---|---|---|
T | 암호화 방식. WEP · WPA · WPA2-EAP · nopass | WPA |
S | 네트워크 이름(SSID). 필수 | mynetwork |
P | 비밀번호. nopass 면 무시됩니다 | mypass |
H | 숨김 네트워크면 true | true |
기업용 인증(WPA2-EAP)일 때만 E(EAP 방식) · I(아이디) · A(익명 아이디) · PH2(2단계 방식) 칸이 추가로 쓰입니다. 가정·매장용 QR에는 나오지 않습니다.
필드 순서는 정해져 있지 않습니다. 그래서 어떤 생성기는 WIFI:S:...;T:WPA; 로, 다른 생성기는 WIFI:T:WPA;S:...; 로 적는데 둘 다 같은 뜻입니다. 저희 도구는 T 를 먼저 적습니다.
도구 없이 직접 확인하는 방법
이미 붙어 있는 QR의 원문 읽기
카메라 기본 앱으로 비추면 곧바로 연결 배너가 떠서 원문이 안 보일 수 있습니다. 이때는 읽은 텍스트를 그대로 보여주는 QR 리더 앱으로 스캔하면 WIFI:T:WPA;S:... 문자열이 통째로 나옵니다.
접속이 안 될 때 원인을 찾는 가장 빠른 길입니다. 이름이 중간에서 끊겨 있는지, H 칸이 빠졌는지가 눈으로 바로 보입니다.
안드로이드에는 반대 방향의 기능도 있습니다. 연결된 WiFi를 연 뒤 공유를 누르면 그 네트워크의 QR이 만들어집니다. 다만 메뉴 위치와 이름은 제조사·안드로이드 버전에 따라 달라서, 없으면 아래처럼 문자열을 직접 만들면 됩니다.
문자열을 손으로 조립하기
새로 만들 때는 위 형식대로 한 줄을 쓰면 됩니다. 이름이 Cafe-Guest, 비밀번호가 Example1234, WPA 방식이라면 이렇게 됩니다.
WIFI:T:WPA;S:Cafe-Guest;P:Example1234;;
이 한 줄을 QR로 바꾸면 끝입니다. 다만 이름이나 비밀번호에 특수문자가 있으면 아래의 이스케이프를 손으로 처리해야 하고, 한 글자만 틀려도 QR 그림은 멀쩡해 보여서 잘못된 걸 알아채기 어렵습니다.
저희 도구로 확인하기. 이름·비밀번호·암호화 방식을 넣으면 QR과 함께 완성된 문자열이 그대로 화면에 표시돼, 이스케이프가 어떻게 적용됐는지 눈으로 대조할 수 있습니다.
설치·회원가입 없이 브라우저 안에서 QR이 만들어지며, 입력한 네트워크 이름과 비밀번호는 서버로 전송되지 않습니다.

특수문자 이스케이프 — 여기서 가장 많이 깨집니다
; 는 칸을 나누는 구분자입니다. 그래서 네트워크 이름이 Example;Cafe 인데 그대로 적으면, 스캐너는 이름을 Example 까지만 읽고 뒤의 Cafe 를 알 수 없는 칸으로 취급합니다.
규칙은 하나입니다. 아래 다섯 문자는 앞에 역슬래시를 붙입니다: \ ; , : "
| 원래 값 | QR 안에 적히는 형태 |
|---|---|
Example;Cafe | Example\;Cafe |
Pass:1234 | Pass\:1234 |
a\b | a\\b |
"quoted" | \"quoted\" |
손으로 바꿀 때는 순서를 조심해야 합니다. ; 를 먼저 \; 로 바꾼 다음 역슬래시를 \\ 로 바꾸면, 방금 넣은 이스케이프까지 다시 이스케이프돼 값이 망가집니다. 역슬래시를 먼저 처리하거나, 문자열을 한 번만 훑으면서 다섯 문자를 동시에 바꿔야 합니다.
규격에 적힌 예외도 하나 있습니다. 이름이나 비밀번호가 16진수로 읽힐 수 있는 글자(09, AF)로만 이루어졌다면 — CAFE 같은 이름이 그렇습니다 — 값을 큰따옴표로 감싸도록 안내합니다. 저희 도구는 이 따옴표를 자동으로 붙이지 않고 다섯 문자 이스케이프만 처리하므로, 이런 이름이라면 실제 기기로 한 번 스캔해 붙는지 확인해 두는 편이 확실합니다.
숨김 네트워크와 암호 없는 네트워크
SSID를 숨긴 공유기는 이름을 방송하지 않아서, 기기가 "그런 이름의 네트워크가 있다"는 걸 미리 알 수 없습니다. 그래서 QR에 H:true; 를 넣어 숨김 네트워크라고 알려 줘야 합니다.
값은 정확히 true 여야 합니다. 규격 문서에는 H 칸이 예전 버전(ZXing 4.7.8 · Barcode Scanner 3.4.0 이하)에서 EAP 2단계 방식 지정용으로 잘못 쓰인 적이 있어, 참·거짓이 아닌 값이 들어오면 그쪽으로 해석된다는 하위호환 설명이 붙어 있습니다.
비밀번호가 없는 개방형 네트워크는 T:nopass 로 적고 P 칸을 생략합니다. 저희 도구에서 "암호 없음 (개방형)"을 고르면 비밀번호 입력칸이 사라지고, 만들어지는 문자열에서도 P 가 빠집니다.
자주 막히는 지점
| 증상 | 확인할 것 |
|---|---|
| 스캔해도 연결 배너가 안 뜬다 | WIFI: 접두사와 끝의 ;; 가 있는지 |
| 이름이 중간에서 잘려 연결 실패 | ; : 를 이스케이프했는지 |
| 숨김 공유기인데 목록에서 못 찾는다 | H:true; 가 들어갔는지 |
| 비밀번호는 맞는데 인증에서 막힌다 | T 값이 실제 암호화 방식과 같은지 |
| QR은 되는데 아무나 접속한다 | 인쇄물은 비밀번호를 적어 둔 것과 같음 |
규격에 정의된 T 값은 WEP · WPA · WPA2-EAP · nopass 네 가지입니다. WPA3 전용 값은 따로 없어서 저희 도구도 WPA·WPA2·WPA3를 한 항목으로 묶어 T:WPA 로 적습니다. 최신 공유기에서 잘 붙는지는 실제 기기로 한 번 스캔해 확인하는 것이 가장 확실합니다.
정리
- QR 안에는
WIFI:T:...;S:...;P:...;;한 줄이 평문으로 들어 있고, 스캐너가 이를 읽어 대신 접속해 줍니다. - 구조는
키:값;의 반복이며, 마지막에;가 하나 더 붙어;;로 끝납니다. \;,:"다섯 문자는 앞에 역슬래시를 붙이고, 치환은 역슬래시부터 처리합니다.- 숨김 네트워크는
H:true;, 개방형은T:nopass이며P는 생략합니다. - 필드 순서는 상관없어서, 생성기마다 순서가 달라도 같은 QR로 동작합니다.
- 비밀번호가 평문으로 담기므로, 손님용은 게스트 네트워크를 따로 두는 편이 안전합니다.
설치·회원가입 없이 브라우저 안에서 QR이 만들어지며, 입력한 네트워크 이름과 비밀번호는 서버로 전송되지 않습니다.
자주 묻는 질문
QR 안의 비밀번호는 암호화돼 있나요?
아니요. P: 뒤에 비밀번호가 그대로 적혀 있고, QR 리더 앱으로 읽으면 사람 눈에도 그대로 보입니다. QR 이미지를 메신저로 보내는 것은 비밀번호를 그대로 보내는 것과 같다고 보면 됩니다. 손님에게 열어 주는 용도라면 공유기의 게스트 네트워크를 따로 만들어 그 비밀번호로 QR을 만드는 편이 안전합니다.
아이폰과 안드로이드에서 모두 되나요?
문자열 형식 자체는 플랫폼 공용입니다. 기본 카메라 앱이 이 형식을 알아보면 연결 배너가 뜨고, 알아보지 못하면 아무 반응이 없습니다. 지원 여부는 기기와 OS 버전에 따라 다르므로 실제로 한 번 비춰서 확인하는 것이 확실합니다. 인식하지 못한다면 QR 리더 앱으로 원문을 읽어 이름과 비밀번호를 수동으로 입력하면 됩니다.
비밀번호를 바꾸면 QR도 다시 만들어야 하나요?
네. QR은 만들 때의 문자열을 그대로 담은 정적 이미지라, 공유기 비밀번호를 바꾸면 QR 안의 값은 옛날 값 그대로입니다. 스캔하면 인증에서 막히므로 새 값으로 다시 만들어 인쇄물을 교체해야 합니다.
입력한 SSID와 비밀번호가 서버로 전송되나요?
아니요. QR 생성은 전부 브라우저 안에서 처리되며, 입력한 네트워크 이름과 비밀번호는 서버로 전송되거나 저장되지 않습니다. "PNG 다운로드"도 브라우저가 만들어 둔 이미지 데이터를 그대로 파일로 저장하는 방식입니다.
