1*03f9172cSAndroid Build Coastguard Worker# Makefile for Microsoft nmake to build wpa_supplicant 2*03f9172cSAndroid Build Coastguard Worker 3*03f9172cSAndroid Build Coastguard Worker# This can be run in Visual Studio 2005 Command Prompt 4*03f9172cSAndroid Build Coastguard Worker 5*03f9172cSAndroid Build Coastguard Worker# Note: Make sure that cl.exe is configured to include Platform SDK 6*03f9172cSAndroid Build Coastguard Worker# include and lib directories (vsvars32.bat) 7*03f9172cSAndroid Build Coastguard Worker 8*03f9172cSAndroid Build Coastguard Workerall: wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe wpasvc.exe win_if_list.exe 9*03f9172cSAndroid Build Coastguard Worker 10*03f9172cSAndroid Build Coastguard Worker# Root directory for WinPcap developer's pack 11*03f9172cSAndroid Build Coastguard Worker# (http://www.winpcap.org/install/bin/WpdPack_3_1.zip) 12*03f9172cSAndroid Build Coastguard WorkerWINPCAPDIR=C:\dev\WpdPack 13*03f9172cSAndroid Build Coastguard Worker 14*03f9172cSAndroid Build Coastguard Worker# Root directory for OpenSSL 15*03f9172cSAndroid Build Coastguard Worker# (http://www.openssl.org/source/openssl-0.9.8a.tar.gz) 16*03f9172cSAndroid Build Coastguard Worker# Build and installed following instructions in INSTALL.W32 17*03f9172cSAndroid Build Coastguard Worker# Note: If EAP-FAST is included in the build, OpenSSL needs to be patched to 18*03f9172cSAndroid Build Coastguard Worker# support it (openssl-tls-extensions.patch) 19*03f9172cSAndroid Build Coastguard Worker# Alternatively, see README-Windows.txt for information about binary 20*03f9172cSAndroid Build Coastguard Worker# installation package for OpenSSL. 21*03f9172cSAndroid Build Coastguard WorkerOPENSSLDIR=C:\dev\openssl 22*03f9172cSAndroid Build Coastguard Worker 23*03f9172cSAndroid Build Coastguard WorkerCC = cl 24*03f9172cSAndroid Build Coastguard WorkerOBJDIR = objs 25*03f9172cSAndroid Build Coastguard Worker 26*03f9172cSAndroid Build Coastguard WorkerCFLAGS = /DCONFIG_NATIVE_WINDOWS 27*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DCONFIG_NDIS_EVENTS_INTEGRATED 28*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DCONFIG_ANSI_C_EXTRA 29*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DCONFIG_WINPCAP 30*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DIEEE8021X_EAPOL 31*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DPKCS12_FUNCS 32*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_MD5 33*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_TLS 34*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_MSCHAPv2 35*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_PEAP 36*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_TTLS 37*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_GTC 38*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_OTP 39*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_SIM 40*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_LEAP 41*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_PSK 42*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_AKA 43*03f9172cSAndroid Build Coastguard Worker#CFLAGS = $(CFLAGS) /DEAP_FAST 44*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_PAX 45*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DEAP_TNC 46*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DPCSC_FUNCS 47*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE 48*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE_NAMED_PIPE 49*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DCONFIG_DRIVER_NDIS 50*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /I..\src /I..\src\utils 51*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /I. 52*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /DWIN32 53*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /Fo$(OBJDIR)\\ /c 54*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /W3 55*03f9172cSAndroid Build Coastguard Worker 56*03f9172cSAndroid Build Coastguard Worker#CFLAGS = $(CFLAGS) /WX 57*03f9172cSAndroid Build Coastguard Worker 58*03f9172cSAndroid Build Coastguard Worker# VS 2005 complains about lot of deprecated string functions; let's ignore them 59*03f9172cSAndroid Build Coastguard Worker# at least for now since snprintf and strncpy can be used in a safe way 60*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE 61*03f9172cSAndroid Build Coastguard Worker 62*03f9172cSAndroid Build Coastguard WorkerOBJS = \ 63*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\os_win32.obj \ 64*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eloop_win.obj \ 65*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\sha1.obj \ 66*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\sha1-tlsprf.obj \ 67*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\sha1-pbkdf2.obj \ 68*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\md5.obj \ 69*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-cbc.obj \ 70*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-ctr.obj \ 71*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-eax.obj \ 72*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-encblock.obj \ 73*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-omac1.obj \ 74*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-unwrap.obj \ 75*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\aes-wrap.obj \ 76*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\common.obj \ 77*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_debug.obj \ 78*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpabuf.obj \ 79*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_supplicant.obj \ 80*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa.obj \ 81*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_common.obj \ 82*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_ie.obj \ 83*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\preauth.obj \ 84*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\pmksa_cache.obj \ 85*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eapol_supp_sm.obj \ 86*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap.obj \ 87*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_common.obj \ 88*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\chap.obj \ 89*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_methods.obj \ 90*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_md5.obj \ 91*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_tls.obj \ 92*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_tls_common.obj \ 93*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_mschapv2.obj \ 94*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\mschapv2.obj \ 95*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_peap.obj \ 96*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_peap_common.obj \ 97*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_ttls.obj \ 98*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_gtc.obj \ 99*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_otp.obj \ 100*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_leap.obj \ 101*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_sim.obj \ 102*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_sim_common.obj \ 103*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_aka.obj \ 104*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_pax.obj \ 105*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_pax_common.obj \ 106*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_psk.obj \ 107*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_psk_common.obj \ 108*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_tnc.obj \ 109*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\tncc.obj \ 110*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\base64.obj \ 111*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\ctrl_iface.obj \ 112*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\ctrl_iface_named_pipe.obj \ 113*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\driver_ndis.obj \ 114*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\driver_ndis_.obj \ 115*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\scan_helpers.obj \ 116*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\events.obj \ 117*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\bssid_ignore.obj \ 118*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\scan.obj \ 119*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpas_glue.obj \ 120*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eap_register.obj \ 121*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\config.obj \ 122*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\l2_packet_winpcap.obj \ 123*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\tls_openssl.obj \ 124*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\ms_funcs.obj \ 125*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\crypto_openssl.obj \ 126*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\fips_prf_openssl.obj \ 127*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\pcsc_funcs.obj \ 128*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\notify.obj \ 129*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\ndis_events.obj 130*03f9172cSAndroid Build Coastguard Worker 131*03f9172cSAndroid Build Coastguard Worker# OBJS = $(OBJS) $(OBJDIR)\eap_fast.obj 132*03f9172cSAndroid Build Coastguard Worker 133*03f9172cSAndroid Build Coastguard WorkerOBJS_t = $(OBJS) \ 134*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\eapol_test.obj \ 135*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\radius.obj \ 136*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\radius_client.obj \ 137*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj 138*03f9172cSAndroid Build Coastguard Worker 139*03f9172cSAndroid Build Coastguard WorkerOBJS_t2 = $(OBJS) \ 140*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\preauth_test.obj \ 141*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj 142*03f9172cSAndroid Build Coastguard Worker 143*03f9172cSAndroid Build Coastguard WorkerOBJS2 = $(OBJDIR)\drivers.obj \ 144*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\config_file.obj \ 145*03f9172cSAndroid Build Coastguard Worker $(OBJS2) $(OBJDIR)\main.obj 146*03f9172cSAndroid Build Coastguard Worker 147*03f9172cSAndroid Build Coastguard WorkerOBJS3 = $(OBJDIR)\drivers.obj \ 148*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\config_winreg.obj \ 149*03f9172cSAndroid Build Coastguard Worker $(OBJS3) $(OBJDIR)\main_winsvc.obj 150*03f9172cSAndroid Build Coastguard Worker 151*03f9172cSAndroid Build Coastguard WorkerOBJS_c = \ 152*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\os_win32.obj \ 153*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_cli.obj \ 154*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_ctrl.obj \ 155*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\common.obj 156*03f9172cSAndroid Build Coastguard Worker 157*03f9172cSAndroid Build Coastguard WorkerOBJS_p = \ 158*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\os_win32.obj \ 159*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\common.obj \ 160*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_debug.obj \ 161*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpabuf.obj \ 162*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\sha1.obj \ 163*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\md5.obj \ 164*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\crypto_openssl.obj \ 165*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\sha1-pbkdf2.obj \ 166*03f9172cSAndroid Build Coastguard Worker $(OBJDIR)\wpa_passphrase.obj 167*03f9172cSAndroid Build Coastguard Worker 168*03f9172cSAndroid Build Coastguard WorkerLIBS = wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \ 169*03f9172cSAndroid Build Coastguard Worker ws2_32.lib Advapi32.lib Crypt32.lib Winscard.lib \ 170*03f9172cSAndroid Build Coastguard Worker Packet.lib wpcap.lib \ 171*03f9172cSAndroid Build Coastguard Worker libeay32.lib ssleay32.lib 172*03f9172cSAndroid Build Coastguard Worker# If using Win32 OpenSSL binary installation from Shining Light Productions, 173*03f9172cSAndroid Build Coastguard Worker# replace the last line with this for dynamic libraries 174*03f9172cSAndroid Build Coastguard Worker# libeay32MT.lib ssleay32MT.lib 175*03f9172cSAndroid Build Coastguard Worker# and this for static libraries 176*03f9172cSAndroid Build Coastguard Worker# libeay32MT.lib ssleay32MT.lib Gdi32.lib User32.lib 177*03f9172cSAndroid Build Coastguard Worker 178*03f9172cSAndroid Build Coastguard WorkerCFLAGS = $(CFLAGS) /I"$(WINPCAPDIR)/Include" /I"$(OPENSSLDIR)\include" 179*03f9172cSAndroid Build Coastguard WorkerLFLAGS = /libpath:"$(WINPCAPDIR)\Lib" /libpath:"$(OPENSSLDIR)\lib" 180*03f9172cSAndroid Build Coastguard Worker 181*03f9172cSAndroid Build Coastguard Workerwpa_supplicant.exe: $(OBJDIR) $(OBJS) $(OBJS2) 182*03f9172cSAndroid Build Coastguard Worker link.exe /out:wpa_supplicant.exe $(LFLAGS) $(OBJS) $(OBJS2) $(LIBS) 183*03f9172cSAndroid Build Coastguard Worker 184*03f9172cSAndroid Build Coastguard Workerwpasvc.exe: $(OBJDIR) $(OBJS) $(OBJS3) 185*03f9172cSAndroid Build Coastguard Worker link.exe /out:wpasvc.exe $(LFLAGS) $(OBJS) $(OBJS3) $(LIBS) 186*03f9172cSAndroid Build Coastguard Worker 187*03f9172cSAndroid Build Coastguard Workerwpa_cli.exe: $(OBJDIR) $(OBJS_c) 188*03f9172cSAndroid Build Coastguard Worker link.exe /out:wpa_cli.exe $(LFLAGS) $(OBJS_c) $(LIBS) 189*03f9172cSAndroid Build Coastguard Worker 190*03f9172cSAndroid Build Coastguard Workerwpa_passphrase.exe: $(OBJDIR) $(OBJS_p) 191*03f9172cSAndroid Build Coastguard Worker link.exe /out:wpa_passphrase.exe $(LFLAGS) $(OBJS_p) $(LIBS) 192*03f9172cSAndroid Build Coastguard Worker 193*03f9172cSAndroid Build Coastguard Workereapol_test.exe: $(OBJDIR) $(OBJS_t) 194*03f9172cSAndroid Build Coastguard Worker link.exe /out:eapol_test.exe $(LFLAGS) $(OBJS_t) $(LIBS) 195*03f9172cSAndroid Build Coastguard Worker 196*03f9172cSAndroid Build Coastguard Workerpreauth_test.exe: $(OBJDIR) $(OBJS_t2) 197*03f9172cSAndroid Build Coastguard Worker link.exe /out:preauth_test.exe $(LFLAGS) $(OBJS_t2) $(LIBS) 198*03f9172cSAndroid Build Coastguard Worker 199*03f9172cSAndroid Build Coastguard Workerwin_if_list.exe: $(OBJDIR) $(OBJDIR)\win_if_list.obj 200*03f9172cSAndroid Build Coastguard Worker link.exe /out:win_if_list.exe $(LFLAGS) $(OBJDIR)\win_if_list.obj $(LIBS) 201*03f9172cSAndroid Build Coastguard Worker 202*03f9172cSAndroid Build Coastguard Worker 203*03f9172cSAndroid Build Coastguard Worker{..\src\utils}.c{$(OBJDIR)}.obj:: 204*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 205*03f9172cSAndroid Build Coastguard Worker 206*03f9172cSAndroid Build Coastguard Worker{..\src\common}.c{$(OBJDIR)}.obj:: 207*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 208*03f9172cSAndroid Build Coastguard Worker 209*03f9172cSAndroid Build Coastguard Worker{..\src\rsn_supp}.c{$(OBJDIR)}.obj:: 210*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 211*03f9172cSAndroid Build Coastguard Worker 212*03f9172cSAndroid Build Coastguard Worker{..\src\eapol_supp}.c{$(OBJDIR)}.obj:: 213*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 214*03f9172cSAndroid Build Coastguard Worker 215*03f9172cSAndroid Build Coastguard Worker{..\src\crypto}.c{$(OBJDIR)}.obj:: 216*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 217*03f9172cSAndroid Build Coastguard Worker 218*03f9172cSAndroid Build Coastguard Worker{..\src\eap_peer}.c{$(OBJDIR)}.obj:: 219*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 220*03f9172cSAndroid Build Coastguard Worker 221*03f9172cSAndroid Build Coastguard Worker{..\src\eap_common}.c{$(OBJDIR)}.obj:: 222*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 223*03f9172cSAndroid Build Coastguard Worker 224*03f9172cSAndroid Build Coastguard Worker{..\src\drivers}.c{$(OBJDIR)}.obj:: 225*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 226*03f9172cSAndroid Build Coastguard Worker 227*03f9172cSAndroid Build Coastguard Worker{..\src\l2_packet}.c{$(OBJDIR)}.obj:: 228*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 229*03f9172cSAndroid Build Coastguard Worker 230*03f9172cSAndroid Build Coastguard Worker{.\}.c{$(OBJDIR)}.obj:: 231*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 232*03f9172cSAndroid Build Coastguard Worker 233*03f9172cSAndroid Build Coastguard Worker{.\}.cpp{$(OBJDIR)}.obj:: 234*03f9172cSAndroid Build Coastguard Worker $(CC) $(CFLAGS) $< 235*03f9172cSAndroid Build Coastguard Worker 236*03f9172cSAndroid Build Coastguard Worker$(OBJDIR): 237*03f9172cSAndroid Build Coastguard Worker if not exist "$(OBJDIR)" mkdir "$(OBJDIR)" 238*03f9172cSAndroid Build Coastguard Worker 239*03f9172cSAndroid Build Coastguard Workerclean: 240*03f9172cSAndroid Build Coastguard Worker erase $(OBJDIR)\*.obj wpa_supplicant.exe 241