기 타 PE에서 WirelessKeyView + xml 로 암호보기 입니다
2023.03.19 16:09
레마클로님께서 지속적인 관심을 가져주신 덕분에 저도 무선랜 암호에 대해서 궁금한것이 생겨서 qnd님과 PE와 WirelessKeyView를 가지고
테스트를 했었습니다
WirelessKeyView에 대해서 잘 알지 못해서 이상한 부분이 있어서 홈페이지를 살펴보았더니 방법이 잘못되었네요
그리고 홈페이지에 cmd 명령어가 자세히 설명이 되어 있습니다
정리후 캡처를 해서 사용기를 쓰려고 했더니 이미..지후빠님께서 cmd 명령어를 활용해서 무선랜 암호를 보여주는 사용기를 써주셨네요
괜히 오전내내 여기저기 찾아 보았네요..기다리면 지후빠님께서 글을 써주셨을데요
이미 캡처한 사진이 있어서 사용기는 그냥 쓰게 되었습니다
무선랜 암호는 윈도우에서 xml에 저장이 되고 있습니다...저장시에 암호화가되어 있어서 xml을 열어 본다고해서 알수가 없습니다
암호화 관련해서는 이미 kernel님께서 강좌란에 써주신 글 댓글에 설명을 해주셨습니다
Wifi 패스워드 (종료!!!)
https://windowsforum.kr/lecture/19126698
PE에서 SSID는 나오는데 Password가 안나오는 것은...
이 늙은이가 프로그램을 밤에 졸면서 만들어서... 한가지 중요한 내용을 간과했기 때문 입니다.
최대한 이해하기 쉽게 풀어서 설명하면...
OS가 Wifi 프로파일을 만들 때...
패스워드를 암호화하게 되는데... 로그인된 계정에 해당하는 일종의 '인감도장' 같은 것을 이용해서
암호화 되는 키에 도장 찍듯이 스탬프로 찍어요.
그러니까 해당 OS에는 사용된 '인감도장'이 있어서 키를 디코딩하면 되지만...
다른 OS인 PE로 부팅하면... 이 OS는 다른 '인감도장'을 갖고있기 때문에...
다른 인감도장으로 암호화된 프로파일을 갖고서 디코딩을 시도할 경우...
사용된 인감도장이 달라 디코딩에 실패하게 되는 겁니다.
이걸 가능하게 하려면...
원래의 OS에서 사용되는 인감도장을 스틸해야 합니다.
kernel님께서 설명을 해주셔서 암화호가 되는 과정에 대해서 조금을 알게되어서 오토잇으로 찾아보았더니 이 부분에 대한 자료가
없네요
그런데 이미 오래전에 이 암호화를 푸는 프로그램을 python으로 만드신 분이 있으시네요
2017년에 만들어진 프로그램입니다..소스도 있고 사진도 있지만...설명대로 python을 설치하고 소스를 실행했는데 에러가 발생을 합니다
python에 대해서는 잘 아시는 분들은 수정이 가능하실것 같기도 합니다
사진에 보시면 xml에서 암호해독을 해서 무선랜 비번을 보여주고 있습니다
WiFi_Password_Viewer
https://github.com/josephgrigg/WiFi_Password_Viewer
위 프로그램 소개글에 있는 xml 암호화에 대한 글입니다
WiFi 네트워크 정보는 ProgramData\Microsoft\Wlansvc\Profiles\Interfaces에 있는 .XML 파일에 저장됩니다.
이러한 XML 파일에 있는 암호는 Windows DPAPI를 사용하여 암호화됩니다. 이 프로그램은 암호를 해독하고
일반 텍스트로 표시하기 위해 Windows 암호화 기능을 사용합니다. 또는 '기본 설정' 드롭다운 메뉴에서 명령 프롬프트 'netsh wlan'
명령을 사용하여 암호를 해독하도록 선택할 수 있습니다.
설명에 있는 Windows DPAPI 관련 정보는 제가 아는 오토잇쪽에는 자료가 없습니다...C++을 잘하시는 분들은 xml에서 직접 뽑아낼수도
있을것 같습니다
이미 지후빠님게서 소개를 해주신 부분입니다..WirelessKeyView에 cmd를 활용하는것이 현재 가능한 방법인것 같습니다
홈페이지 아래에 cmd 명령어가 있습니다
WirelessKeyView v2.22 - Recover lost wireless network key
https://www.nirsoft.net/utils/wireless_key.html
Command-Line Options
/LoadFrom <Number> Specifies the type of data source to load. 1 = Local computer, 2 = External instance of Windows installation,
3 = Remote system.
Example:
WirelessKeyView.exe /LoadFrom 2 /ExternalWinDir "J:\Windows" /WlansvcFolder "J:\ProgramData\Microsoft\Wlansvc\Profiles" /scomma "c:\temp\wk1.csv"
/ExternalWinDir <Folder Path> Specifies the external Windows folder to load (For using with /LoadFrom 2 )
/WlansvcFolder <Folder Path> Specifies the Wlansvc profiles folder to load (For using with /LoadFrom 2 )
예제에 있는것을 이미 지후빠님께서 설명을 해주셨습니다
아래는 어제 실후한 부분에 대한 내용과 WirelessKeyView에 cmd 명령어를 활용것입니다
1. 윈도우입니다..USB 무선랜을 현재 사용하고 있지 않습니다 WirelessKeyView를 사용하기 때문에 netsh 명령어가 필요가 없어서..
아래처럼 무선랜이 중지가 되었습니다
2. win7에는 무선랜 연결을 한 흔적이 2개 남아 있습니다
3. Windows10에서 무선랜 설치후 접속 흔적이 1개 남아 있습니다
4. 여러개 윈도우가 있는 모든 윈도우에서 xml 파일이 있는 경우 정보를 보여주기 위해서 오토잇으로 별도 프로그램을 만들었습니다
5. 윈도우에서 WirelessKeyView를 수동으로 실행한 경우 이 윈도우에서 접속한 기록이 있으면 이렇게 정보를 보여줍니다
Win7에는 2개가 있습니다
6. 스크린샷 레마클로님 글에 첨부한 사진과 같은것입니다..WirelessKeyView에 대해서 잘 몰라서 고급옵션이 있는데 설정을 잘못한것입니다
설정을 잘못해놓고 왜 안되지 하고 윈도우와 PE에서 여려번 테스트를 하는 실수를 했습니다
7. 현재 윈동우에서 이렇게 설정을 하면 잘 될줄 알았습니다..개인적인 생각으로는 당연히 될줄 알았습니다
아래의 설정을 보고나서 kernel님께서 하신 말씀이 이해가 되었습니다..xml에 암호화된것을 해독하는데 C:\Windows에 있는 파일이나
저장된 정보가 필요한가 봅니니다
8. 고급옵션에서 폴더를 지정하면 1번처럼 지정한 폴더가 나옵니다 그런데 현제 윈도우를 지정을 하면 아래처럼 내용을 보여주지 못합니다
윈도우에서는 그냥...폴더지정이 아니라 "현래 로그온한 사용자의 무선키 읽기" 를 선택해야 합니다..
여기에서도 오락가락했습니다
9. Win10이 설치어 있는 드라이브를 설정을 하여 주었습니다..이렇게 현재 왼도우가 아닌 다른 드라이브에 있는 xml을 읽을때 아래 옵션을
사용을 해야하는데 WirelessKeyView를 잘 몰라서 많이 헤멘것 같습니다.
Windows 폴더와 Profiles 폴더 드라이브는 같아야 합니다..
10. Win10에는 접속 흔적이 1개만 있습니다..xml이 암호화가 되어 있는데 WirelessKeyView에서는 이렇게 잘 보여주네요
모든 문제가 해결이 된것 같습니다
11. 고급옵션에서 아래 옵션을 선택을 하였습니다
12. 현재 윈도우의 접속 흔적에서 암호를 보여주고 있습니다
13. 옵션 선택에 따라서 WirelessKeyView.cfg 값이 변경이 됩니다. LoadFrom=1 이면 아래에 다른 옵션이 설정이 되어 있어도 현재 윈도우
에 있는 xml을 읽어서 정보를 보여줍니다.
14. 예제 cmd에서 보신 내용을 WirelessKeyView.cfg에 설정한것입니다
15. LoadFrom=2 인 경우 창에 아래처럼 윈도우 폴더 위치를 알려주고 있습니다.. Win10에는 xml이 한개만 있습니다
16. LoadFrom=1 으로 하고 폴더 경로를 C:로 해놓고 cmd에서는 LoadFrom=2와 H: 경로를 두고 실행하여 보겠습니다
17. H:에 있는 xml의 정보를 보여주고 있습니다..이제는 PE에서 Windows 폴더와 ProgramData\Microsoft\Wlansvc\Profiles를
찾아서 설정만 해주면 될것 같습니다
18. 윈도우와 PE에서 사용하기 위해서 오토잇으로 보조 프로그램을 만들었습니다..ProgramData\Microsoft\Wlansvc\Profiles 폴더를
검색하고 xml 파일들이 있으면 여려개 일때도 순차적으로 WirelessKeyView를 실행시켜서 정보를 보여줍니다
저는 WirelessKeyView.cfg 값을 수정하고나서 WirelessKeyView.exe를 실행하는 방법을 하였습니다
윈도우인 경우에는 WirelessKeyView.cfg 에서 LoadFrom=1 값을 설정을 해서 아래처럼 실행이 됩니다
윈도우인 경우LoadFrom=2 값으로 할수가 없어서 이런식으로 하였습니다
19. 위에서 WirelessKeyView를 종로하면 H:\ProgramData\Microsoft\Wlansvc\Profiles 폴더에도 xml 파일이 있어서 다시 WirelessKey
View를 실행하여 정보를 보여줍니다
두번째 윈도우를 설치후 이것으로 부팅시에 무선랜 암호를 알기 위해서 이런 방식으로 하였습니다
20. 가상에서 윈도우로 부팅후 확인한것입니다
21. 인터넷이 안되는 복구용 PE로 부팅을 하였습니다..WirelessKeyView만 있으면 되어서 윈도우에 있는 무서랜 xml에서 정보를 보여주고
있습니다...
22. 터블 클릭 하시면 아래처럼 속성이 나옵니다..우클릭에서 복사를 해서 활용을 하셔도 됩니다
23. 마무리
처음보는 지인 컴퓨터가 부팅이 되지 않을때 무선랜 비번을 알수가 없지만..WirelessKeyView를 활용하면 윈도우에 있는 xml로 바로
비번을 알수가 있어서 좋을것 같습니다
이 경우 WirelessKeyView에서 고급옵션에서 수동 설정을 하시거나 cmd에서 ProgramData\Microsoft\Wlansvc\Profiles 폴더를 찾
은후 cmd로 설정을 하는것도 하나의 방법이 될것 같습니다
이런것이 귀찮으시다면 아예 qnd님 작품에서처럼 PE에서 Drvindex.exe -h 실행을 해서 자동 접속후 WirelessKeyView를 실행만 하는것도
편한것 같습니다
레마클로님 덕분에 좋은것을 배운것 같습니다...이자리를 빌어 감사인사드립니다
편안하신 일요일이 되시길 바랍니다
댓글 [20]
-
상발이 2023.03.19 16:13
-
qnd 2023.03.19 16:17
수고하셨습니다, 감사합니다.^^b
-
우인 2023.03.19 16:43
상세한설명 잘봤습니다. 수고많이하셨습니다.
-
스마일^_^ 2023.03.19 17:27
감사합니다.
-
지후빠 2023.03.19 18:23
수고하셨습니다.^^
모든 드라이브에서 wifi 암호를 찾는 배치파일을 만들었습니다. find-wifi-pwd-in-all-drive.cmd
WirelessKeyView.exe 와 같은 폴더에 두고 실행...
@echo off & pushd "%~dp0"
if exist WlanKey.csv del WlanKey.csv
set "pf=:\ProgramData\Microsoft\Wlansvc\Profiles"
for %%$ in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (if exist %%$%pf%\ (
WirelessKeyView /LoadFrom 2 /ExternalWinDir "%%$:\Windows" /WlansvcFolder "%%$%pf%" /scomma "tmp.csv"
type tmp.csv >> WlanKey.csv))
del tmp.csv
for /f "tokens=1,4 delims=," %%a in (WlanKey.csv) do echo %%a %%b
pause & exit /b
-
왕초보 2023.03.19 18:49
윈도우가 여러개인경우 모아서 한번에 보여주어서 편할것 같습니다
배파파일 관련해서는 역시 능력자이십니다..감사합니다
WirelessKeyView /LoadFrom 2 명령어 때문에 PE 전용 cmd로 활용을 해야할것 같습니다
1. 윈도우에서 실행히 C:에것은 WirelessKeyView /LoadFrom 2 때문에 나오지 않고 H:에 있는 xml만 보입니다
2. pe에서는 모든 xml을 검색해서 보여주고 있습니다
-
지후빠 2023.03.19 18:58
확인 감사합니다.^^ 저는 PE에서만 실행했습니다. ㅜㅜ
-
왕초보 2023.03.19 19:06
저의 경우 혹시나 윈도우가 2개이상 설치된 경우도 있을수 있어서..새로 설치한 윈도우 부팅시는 비번을 확인해야 할것 같아서
이부분도 고려을 한것 뿐입니다..
이렇게 cmd를 만들어 주신 마음에 감사드립니다.
-
레마클로 2023.03.19 19:31 실컴에서는....
WirelessKeyView.exe /LoadFrom 1 /scomma "%~dp0pwd.csv"
WirelessKeyView.exe" /export /scomma "%~dp0pwd.txt"
WirelessKeyView.exe" /export /stab "%~dp0pwd.txt"
WirelessKeyView.exe" /LoadFrom 2 /ExternalWinDir "X:\Windows" /WlansvcFolder "X:\ProgramData\Microsoft\Wlansvc\Profiles" /scomma "%~dp0pwd.csv"
-
왕초보 2023.03.19 20:26
자세한 명령어를 알려주셔서 감사합니다
윈도우와 PE일때 공용으로 사용하기 위해서 C:에 있는 xml을 보여줄때 윈도우인지 PE인지 구분을 해서 WirelessKeyView를 실행을
해야해서 저는 cmd보다 WirelessKeyView.cfg 설정값을 바꾸는 방식으로 진행을 했습니다..
qnd님 작품에서 xml이 자동 등록이 되지만 자동연결은 되지 않습니다..
1. pe 부팅시에 xml 파일이 자동등록이 된 상태입니다..하지만 무선연결은 아직 되지 않았습니다
마우스로 클릭을 하면 암화 입력란 없이 바로 연결이 됩니다
2. 마우트 클릭후 연결이 되어서 아이콘이 바뀌었습니다
3. netsh wlan connect name="%SSID%" 로 연결하면 클릭없이 연결이 됩니다..하지만 아쉽게도 저용량 PE에서는
netsh.exe 관련 파일들이 없어서 아쉬운 부분입니다
원하시는것이 xml 자등등록후 무선연결 완료까지 자동으로 되는것을 원하시는것 같습니다
저는 netsh.exe 없이 자동연결하는 방법을 찾다가..방법을 찾지 못하였습니다..잘 해결 되시길 바랍니다
-
왕초보 2023.03.19 21:02
netsh.exe 관련 dll이 없는 저용량 PE에서 netsh wlan connect name="%SSID%" 대신해 사용할 방법이 있기는 하네요
꼼수지만 WirelessKeyView.exe를 만들 회사의 WifiInfoView.exe를 활용하는 방법이 있습니다
WifiInfoView v2.78
https://www.nirsoft.net/utils/wifi_information_view.html
1. qnd님 작품중에서 저용량 PE의 경우 netsh 파일이 없는 경우가 있습니다 무선랜이 자동연결되지 못합니다
2. 무선랜을 AP로 만드는 명령어 중에서 SSID만 넣고 실행을 하여 보았습니다
3. 무선랜이 연결되었습니다...cmd에서 SSID 추출후 WifiInfoView를 활용해서 자동연결을 시키면 사용자가 클릭을 해야하는
불편을 줄일수 있을것 같습니다
-
개골구리 2023.03.19 18:23
수고하셨습니다
-
kernel 2023.03.19 19:59
사실상 WirelessKeyView 라는 프로그램은...
Windows OS security 내부구조를 작정하고 해킹해서 만든 프로그램이에요.
내가 저런 식으로 프로그램을 만든다고 해도
공인기관으로 부터 Certification 인증서를 비용을 지불해서 발급받지 않으면
백발백중 바이러스로 인식될 게 뻔하지요.
바이러스로 진단되는 것을 피하기 위해
Certification 인증서를 비용을 들여서 발급 받는 것도 그렇고...
더욱이 PE에 관심이 없어서...
수고했어요.
-
왕초보 2023.03.19 20:16
어떻게 암호화가 되는지 설명을 해주시는 분이 없으셨습니다
kernel님 덕분에 xml이 만들어지는 과정에 대해서 배울수 있었습니다
고수님께서 관심을 가져주신 덕분에 여러가지를 배울수 있는 기회가 되었습니다
진심으로 감사드립니다
-
harman777 2023.03.19 21:47
수고하셨습니다 ^^
왕초보님!!! 열정이 대단하세요~
-
샤 2023.03.19 22:36
수고하셨습니다.
-
매화꽃 2023.03.19 22:51
수고많으셨습니다.
-
광풍제월 2023.03.20 03:09
수고하셨습니다.
-
kernel 2023.03.20 10:09
본문 중에 josephgrigg 란 사람이 만든 WIFI_Password_Viewer 프로그램을 소개하고 있는데...
파이썬으로 만들어진 이 프로그램은 시스템 계정 권한으로 가장하기 위한 Impersonation 이 필요하고
그걸 위해서 PsExec.exe 라는 프로그램의 도움을 받고있는데...
이 프로그램으로는 해당 로컬 OS의 패스워드만 디코딩이 가능하지...
PE로 부팅해서 다른 OS의 프로파일을 디코딩하는 것은 불가능한 구조 입니다.
-
왕초보 2023.03.20 10:25
직접 확인해보시고 이렇게 자세히 설명을 해주신 마음에 진심으로 감사드립니다
어떤 구조인지를 몰라서 PsExec.exe가 왜 실행되는지도 몰랐습니다
윈도우에서만 알수 있는것이네요...실행 자체가 되지 않아서 진짜 되는지도 그림만 보고 처음으로 python까지 설치를 하였습니다
궁금한것이 많았습니다..배려해주신 덕분에 해소가 되었습니다
다시 한번더 감사인사 올립니다
웃음이 가득한일만 있으시길 바랍니다
수고하셨습니다.