У меня есть Mac с Mavericks. Общеизвестно, что на Mac вы можете создать защищенную WPA2 сеть Wi-Fi, используя общий доступ к Интернету в Системных настройках. Ни одно предварительно установленное, документированное приложение в командной строке не может создать сеть в режиме инфраструктуры.
В / usr / libexec / airportd есть недокументированная опция startHostAPModeWithSSID, которая может создать специальную сеть, необязательно используя WEP.
Обратите внимание, что это просто интерфейс с функцией CoreWLAN с тем же именем, которая является общедоступной структурой и задокументирована. Также обратите внимание, что поток API для доступа к беспроводному оборудованию на Mac выглядит следующим образом:userspace program --> CoreWLAN.framework (public) or others --> Apple80211.framework (private, undocumented) --> IO80211Family.kext (kernelspace, private, undocumented, family-type kext: manages all Wi-Fi kexts) --> specific kext inside IO80211Family (could be AirportAtheros40.kext, AirportBrcm4360.kext, AppleAirportBrcm43224.kext, etc.)
Есть ли способ создать защищенную сеть WPA2 на Mac через командную строку? Без всех накладных расходов на совместное использование Интернета, таких как NAT, DHCP и другие.
На многие другие подобные вопросы ответили не полностью. Я попытался увидеть, какие функции использует панель настроек общего доступа к Интернету, и она использует несколько частных платформ:
$ otool -L /System/Library/PreferencePanes/SharingPref.prefPane
/Contents/MacOS/SharingPref
[shortened for legibility]
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211 (compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/PreferencePanesSupport.framework/Versions/A/PreferencePanesSupport (compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/CoreWLANKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/SystemAdministration.framework/Versions/A/SystemAdministration (compatibility version 1.0.0, current version 1.0.0)
Он использует длинный список общедоступных сред, таких как CoreWLAN, но это частные средства, которые он использует. Тем не менее, ни один из них, по-видимому, не обрабатывает ничего, связанного с безопасностью WPA2, которое можно использовать в настройках общего доступа к Интернету.
Чтобы попытаться придумать, как включить шифрование WPA2, я посмотрел, от чего зависит панель настроек общего доступа к Интернету. Я пошел для запуска демона com.apple.internetsharing.plist. Это просто звонки /usr/libexec/internetsharing
, которые не документированы, но предлагают некоторую помощь:
$ /usr/libexec/internetsharing --help
/usr/libexec/internetsharing: illegal option -- -
Usage: /usr/libexec/internetsharing [-dDnv] [-e EXTIF] [-l LOGFILE] [-p LO] [-P HI] [-c THREADS] [-t TIMEOUT]
ptions: [sic]
-d Enable debugging
-v Enable verbose logging
-6 Disable(Enable) IPv6 on iOS(MacOS)
-e EXTIF External interface name
-l LOGFILE Enable logging to file
-p LO Port forwarding range, LO
-P HI Port forwarding range, HI
-c THREADS max # of worker threads
-t TIMEOUT Idle timeout
[Да, на самом деле «ptions» - это то, как оно было напечатано на stdout]. Кажется, это может как-то быть связано с этим. То, что оно может не раскрывать напрямую, мы можем выявить по тому, от чего оно зависит. Так:
$ otool -L /usr/libexec/internetsharing
/usr/libexec/internetsharing:
/System/Library/PrivateFrameworks/PacketFilter.framework/Versions/A/PacketFilter (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 55456.0.0)
/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.0.0)
/System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN (compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/EAP8021X.framework/Versions/A/EAP8021X (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1054.0.0)
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 596.12.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/usr/lib/libdns_services.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libbsm.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
Как вы можете видеть, он использует 2 частные платформы: PacketFilter, который, вероятно, выполняет то, что вы ожидаете, и EAP8021X. Последний, вероятно, отвечает за включение WPA2, однако, будучи частной платформой, он лишен какой-либо документации. Обратите внимание, что /usr/libexec/internetsharing
делает (или вызывает программы для выполнения) NAT ( natd
,) dhcp ( bootpd
,) DNS ( named
он же BIND,) ipfw и многие другие маленькие биты. Использование /usr/libexec/internetsharing
не является опцией, так как это привередливый и делает NAT, dhcp, dns и все лишние вещи, которые не нужны. Есть ли способ создать сеть WPA2 на Mac с использованием только командной строки?
источник