É possível criar uma rede Wi-FI de infra-estrutura segura e protegida por WPA2 no Mac a partir do Terminal?

1

Eu tenho um Mac com o Mavericks. É um fato bem conhecido que, em um Mac, você só pode criar uma rede Wi-Fi protegida por WPA2 usando o Compartilhamento de Internet nas Preferências do Sistema. Nenhum aplicativo pré-instalado e documentado na linha de comando pode criar uma rede no modo de infra-estrutura.

/ usr / libexec / airportd tem uma opção não documentada, startHostAPModeWithSSID, que pode criar uma rede ad-hoc, opcionalmente usando WEP.

Observe que essa é apenas uma interface para uma função CoreWLAN com o mesmo nome, que é uma estrutura pública e está documentada. Além disso, observe que o fluxo de APIs para acessar o hardware sem fio em um mac é assim: 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.)

Existe uma maneira de fazer uma rede segura WPA2 em um Mac através da linha de comando? Sem toda a sobrecarga de compartilhamento de internet como NAT, DHCP e outros.

Muitas outras perguntas como essa foram respondidas de maneira incompleta. Tentei ver quais funções o painel de preferências de compartilhamento da Internet usa e ele usa alguns frameworks privados:

 $ 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)

Ele usa uma longa lista de estruturas públicas como o CoreWLAN, mas estas são as estruturas privadas que ele utiliza. No entanto, nenhum deles parece lidar com qualquer coisa relacionada à segurança WPA2 que pode ser utilizada a partir das opções de compartilhamento da Internet.

Para tentar conceber como a criptografia WPA2 está ativada, observei o que o painel de preferências de compartilhamento da Internet depende. Eu fui para o launchdaemon com.apple.internetsharing.plist. Apenas chama /usr/libexec/internetsharing , que não está documentado mas oferece alguma ajuda:

$ /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

[Sim, as "pções" são na verdade como foram impressas para stdout] Parece que pode ter algo a ver com isso afinal. O que não pode expor diretamente, podemos revelar de que depende. Então:

$ 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)

Como você pode ver, ele usa 2 estruturas privadas: o PacketFilter, que provavelmente faz o que você espera, e o EAP8021X. Este último é provavelmente responsável por habilitar o WPA2; no entanto, sendo um framework privado, ele é desprovido de qualquer documentação. Observe que /usr/libexec/internetsharing faz (ou chama os programas para fazer) NAT ( natd ,) dhcp ( bootpd ,) DNS ( named a.k.a BIND,) ipfw e muitos outros pequenos bits. O uso de /usr/libexec/internetsharing não é uma opção, já que é complexo e faz NAT, dhcp, dns e todas as coisas divertidas que não são necessárias. Existe uma maneira de criar uma rede WPA2 em um mac usando apenas a linha de comando?

    
por Daniel Rodriguez 03.12.2017 / 21:51

0 respostas