[t:/]$ 지식_

wpa_supplicant unicode 문제

2013/03/06

개발 히스토리 보면 안드로이드는 자체 해결 본 것 같다.
자세히는 안 살펴봤다.

wpa_supplicant 1.x 버전의 소스를 까보면.. SSID를 ascii 보통 문자로만 valid 체크한다. 한글등이 들어가면 언더바로 대체. 즉 이 놈으로는 유니코드 SSID를 쓸 수 없다.

wireless tool 계통 iwlist로 보면 한글 SSID도 정상적으로 나온다.

wpa_supplicant 2.0 소스를 까보면 SSID에 아스키 32~127의 외의 글자이면 인코딩을 해버린다. 따라서 소켓 통신으로 긁어올때 요상할 수 있으나 다시 디코딩 하면 쓸 수 있다. 이 코드는 src/utils/common.c 에서 찾아볼 수 있다.

찾아볼 함수는, wpa_ssid_txt, 2.0 에서는 printf_encode, printf_decode도 찾아본다. wpa_ssid_txt 만 고쳐서 재빌드하면 장땡이지만 GPL등 귀찮아지니 2.0을 사용하고 디코딩 해서 보는 쪽이 속편하다.

wpa_supplicant를 빌드하려면 libnl을 선빵 빌드 해야 한다. openssl도 빌드하자. 빌드는 Makefile 이나 configure 조금 손 보면 쉽게 된다. 크로스컴파일이라면 prefix 손대서 따로 받아야 한다. root 계정 쓰면서 prefix 지정안하면 시스템 망가짐.

이와 같은 과정을 통해 “우리짐AP건들지마★” 같은 SSID를 지원할 수 있다. 이상~

아 그리고 wpa_supplicant 는 bsd 라이선스라 막 고쳐도 될 것 같다.









[t:/] is not "technology - root". dawnsea, rss