📄 mobileapple80211.c
字号:
#include "includes.h"#include <dlfcn.h>#include "common.h"#include <CoreFoundation/CoreFoundation.h>#include "MobileApple80211.h"/* * Code for dynamically loading Apple80211 functions from Aeropuerto to avoid * having to link with full Preferences.framework. */static void *aeropuerto = NULL;int _Apple80211Initialized(void){ return aeropuerto ? 1 : 0;}static int (*__Apple80211Open)(Apple80211Ref *ctx) = NULL;int Apple80211Open(Apple80211Ref *ctx){ return __Apple80211Open(ctx);}static int (*__Apple80211Close)(Apple80211Ref ctx) = NULL;int Apple80211Close(Apple80211Ref ctx){ return __Apple80211Close(ctx);}static int (*__Apple80211GetIfListCopy)(Apple80211Ref handle, CFArrayRef *list) = NULL;int Apple80211GetIfListCopy(Apple80211Ref handle, CFArrayRef *list){ return __Apple80211GetIfListCopy(handle, list);}static int (*__Apple80211BindToInterface)(Apple80211Ref handle, CFStringRef interface) = NULL;int Apple80211BindToInterface(Apple80211Ref handle, CFStringRef interface){ return __Apple80211BindToInterface(handle, interface);}static int (*__Apple80211GetInterfaceNameCopy)(Apple80211Ref handle, CFStringRef *name) = NULL;int Apple80211GetInterfaceNameCopy(Apple80211Ref handle, CFStringRef *name){ return __Apple80211GetInterfaceNameCopy(handle, name);}static int (*__Apple80211GetInfoCopy)(Apple80211Ref handle, CFDictionaryRef *info) = NULL;int Apple80211GetInfoCopy(Apple80211Ref handle, CFDictionaryRef *info){ return __Apple80211GetInfoCopy(handle, info);}static int (*__Apple80211GetPower)(Apple80211Ref handle, char *pwr) = NULL;int Apple80211GetPower(Apple80211Ref handle, char *pwr){ return __Apple80211GetPower(handle, pwr);}static int (*__Apple80211SetPower)(Apple80211Ref handle, char pwr) = NULL;int Apple80211SetPower(Apple80211Ref handle, char pwr){ return __Apple80211SetPower(handle, pwr);}static int (*__Apple80211Scan)(Apple80211Ref handle, CFArrayRef *list, CFDictionaryRef parameters) = NULL;int Apple80211Scan(Apple80211Ref handle, CFArrayRef *list, CFDictionaryRef parameters){ return __Apple80211Scan(handle, list, parameters);}static int (*__Apple80211Associate)(Apple80211Ref handle, CFDictionaryRef bss, CFStringRef password) = NULL;int Apple80211Associate(Apple80211Ref handle, CFDictionaryRef bss, CFStringRef password){ return __Apple80211Associate(handle, bss, password);}static int (*__Apple80211AssociateAndCopyInfo)(Apple80211Ref handle, CFDictionaryRef bss, CFStringRef password, CFDictionaryRef *info) = NULL;int Apple80211AssociateAndCopyInfo(Apple80211Ref handle, CFDictionaryRef bss, CFStringRef password, CFDictionaryRef *info){ return __Apple80211AssociateAndCopyInfo(handle, bss, password, info);}static int (*__Apple80211CopyValue)(Apple80211Ref handle, int field, CFDictionaryRef arg2, void *value) = NULL;int Apple80211CopyValue(Apple80211Ref handle, int field, CFDictionaryRef arg2, void *value){ return __Apple80211CopyValue(handle, field, arg2, value);}#define DLSYM(s) \do { \ __ ## s = dlsym(aeropuerto, #s); \ if (__ ## s == NULL) { \ wpa_printf(MSG_ERROR, "MobileApple80211: Could not resolve " \ "symbol '" #s "' (%s)", dlerror()); \ err = 1; \ } \} while (0)__attribute__ ((constructor))void _Apple80211_constructor(void){ const char *fname = "/System/Library/SystemConfiguration/" "Aeropuerto.bundle/Aeropuerto"; int err = 0; aeropuerto = dlopen(fname, RTLD_LAZY); if (!aeropuerto) { wpa_printf(MSG_ERROR, "MobileApple80211: Failed to open %s " "for symbols", fname); return; } DLSYM(Apple80211Open); DLSYM(Apple80211Close); DLSYM(Apple80211GetIfListCopy); DLSYM(Apple80211BindToInterface); DLSYM(Apple80211GetInterfaceNameCopy); DLSYM(Apple80211GetInfoCopy); DLSYM(Apple80211GetPower); DLSYM(Apple80211SetPower); DLSYM(Apple80211Scan); DLSYM(Apple80211Associate); DLSYM(Apple80211AssociateAndCopyInfo); DLSYM(Apple80211CopyValue); if (err) { dlclose(aeropuerto); aeropuerto = NULL; }}__attribute__ ((destructor))void _Apple80211_destructor(void){ if (aeropuerto) { dlclose(aeropuerto); aeropuerto = NULL; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -