mirror of
https://github.com/bettercap/bettercap
synced 2025-07-05 20:42:09 -07:00
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package network
|
|
|
|
/*
|
|
#cgo LDFLAGS: -framework CoreWLAN -framework Foundation
|
|
#include <stdbool.h>
|
|
#include <stdlib.h>
|
|
|
|
const char *GetSupportedFrequencies(const char *iface);
|
|
bool SetInterfaceChannel(const char *iface, int channel);
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"net"
|
|
"unsafe"
|
|
)
|
|
|
|
func getInterfaceName(iface net.Interface) string {
|
|
return iface.Name
|
|
}
|
|
|
|
func ForceMonitorMode(iface string) error {
|
|
return nil
|
|
}
|
|
|
|
func SetInterfaceChannel(iface string, channel int) error {
|
|
cIface := C.CString(iface)
|
|
defer C.free(unsafe.Pointer(cIface))
|
|
|
|
success := C.SetInterfaceChannel(cIface, C.int(channel))
|
|
if !success {
|
|
return errors.New("failed to set interface channel")
|
|
}
|
|
|
|
SetInterfaceCurrentChannel(iface, channel)
|
|
return nil
|
|
}
|
|
|
|
func GetSupportedFrequencies(iface string) ([]int, error) {
|
|
cIface := C.CString(iface)
|
|
defer C.free(unsafe.Pointer(cIface))
|
|
|
|
cFrequencies := C.GetSupportedFrequencies(cIface)
|
|
if cFrequencies == nil {
|
|
return nil, errors.New("failed to get supported frequencies")
|
|
}
|
|
defer C.free(unsafe.Pointer(cFrequencies))
|
|
|
|
frequenciesStr := C.GoString(cFrequencies)
|
|
var frequencies []int
|
|
err := json.Unmarshal([]byte(frequenciesStr), &frequencies)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return frequencies, nil
|
|
}
|