1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/security/wifi.go
2018-03-31 09:16:40 -07:00

72 lines
1.3 KiB
Go

package security
import (
"io/ioutil"
"os/exec"
"regexp"
)
// https://github.com/yelinaung/wifi-name/blob/master/wifi-name.go
const osxWifiCmd = "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport"
/* -------------------- Exported Functions -------------------- */
func WifiEncryption() string {
cmd := exec.Command(osxWifiCmd, "-I")
stdout, err := cmd.StdoutPipe()
if err != nil {
return ""
}
if err := cmd.Start(); err != nil {
return ""
}
var str string
if b, err := ioutil.ReadAll(stdout); err == nil {
str += (string(b) + "\n")
}
name := findMatch(`s*auth: (.+)s*`, str)
return matchStr(name)
}
func WifiName() string {
cmd := exec.Command(osxWifiCmd, "-I")
stdout, err := cmd.StdoutPipe()
if err != nil {
return ""
}
if err := cmd.Start(); err != nil {
return ""
}
var str string
if b, err := ioutil.ReadAll(stdout); err == nil {
str += (string(b) + "\n")
}
name := findMatch(`s*SSID: (.+)s*`, str)
return matchStr(name)
}
/* -------------------- Unexported Functions -------------------- */
func findMatch(pattern string, data string) [][]string {
r := regexp.MustCompile(pattern)
name := r.FindAllStringSubmatch(data, -1)
return name
}
func matchStr(data [][]string) string {
if len(data) <= 1 {
return ""
} else {
return data[1][1]
}
}