network

package
v2.13.1+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 29, 2019 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Overview

Package network contains network specific code ... lol.

Index

Constants

View Source
const (
	MonitorModeAddress = "0.0.0.0"
	BroadcastSuffix    = ".255"
	BroadcastMac       = "ff:ff:ff:ff:ff:ff"
	IPv4MulticastStart = "01:00:5e:00:00:00"
	IPv4MulticastEnd   = "01:00:5e:7f:ff:ff"
)
View Source
const BLEMacValidator = "([a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2})"
View Source
const LANAliasesFile = "~/bettercap.aliases"
View Source
const LANDefaultttl = 10
View Source
const NO_CHANNEL = -1

Variables

View Source
var (
	BroadcastHw        = []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
	IPv4Validator      = regexp.MustCompile(`^[0-9\.]+/?\d*$`)
	IPv4RangeValidator = regexp.MustCompile(`^[0-9\.\-]+/?\d*$`)
	MACValidator       = regexp.MustCompile(`(?i)^[a-f0-9]{1,2}:[a-f0-9]{1,2}:[a-f0-9]{1,2}:[a-f0-9]{1,2}:[a-f0-9]{1,2}:[a-f0-9]{1,2}$`)
)
View Source
var ArpCmd = "ip"
View Source
var ArpCmdOpts = []string{"neigh"}
View Source
var ArpTableParser = regexp.MustCompile(`^([\d\.]+)\s+dev\s+(\w+)\s+\w+\s+([a-f0-9:]{17})\s+\w+$`)
View Source
var ArpTableTokenIndex = []int{1, 3, 2}
View Source
var ArpTableTokens = 4
View Source
var Debug = func(format string, args ...interface{}) {

}
View Source
var ErrNoGateway = errors.New("Could not detect gateway.")
View Source
var ErrNoIfaces = errors.New("No active interfaces found.")
View Source
var IPv4RouteCmd = "ip"
View Source
var IPv4RouteCmdOpts = []string{"route"}
View Source
var IPv4RouteParser = regexp.MustCompile(`^(default|[0-9\.]+)\svia\s([0-9\.]+)\sdev\s(\w+)(?:\s.*|)$`)

only matches gateway lines

View Source
var IPv4RouteTokens = 4
View Source
var WiFiFreqParser = regexp.MustCompile(`^\s+Channel.([0-9]+)\s+:\s+([0-9\.]+)\s+GHz.*$`)

Functions

func ArpInverseLookup

func ArpInverseLookup(iface string, mac string, refresh bool) (string, error)

func ArpLookup

func ArpLookup(iface string, address string, refresh bool) (string, error)

func ArpParsed

func ArpParsed() bool

func Dot11Chan2Freq

func Dot11Chan2Freq(channel int) int

func Dot11Freq2Chan

func Dot11Freq2Chan(freq int) int

func GetInterfaceChannel

func GetInterfaceChannel(iface string) int

func GetSupportedFrequencies

func GetSupportedFrequencies(iface string) ([]int, error)

func IsBroadcastMac

func IsBroadcastMac(mac net.HardwareAddr) bool

func IsZeroMac

func IsZeroMac(mac net.HardwareAddr) bool

func ManufLookup

func ManufLookup(mac string) string

func NormalizeMac

func NormalizeMac(mac string) string

func ParseMACs

func ParseMACs(targets string) (macs []net.HardwareAddr, err error)

func ParseTargets

func ParseTargets(targets string, aliasMap *data.UnsortedKV) (ips []net.IP, macs []net.HardwareAddr, err error)

func SetInterfaceChannel

func SetInterfaceChannel(iface string, channel int) error

func SetInterfaceCurrentChannel

func SetInterfaceCurrentChannel(iface string, channel int)

Types

type APLostCallback

type APLostCallback func(ap *AccessPoint)

type APNewCallback

type APNewCallback func(ap *AccessPoint)

type AccessPoint

type AccessPoint struct {
	*Station
	sync.Mutex
	// contains filtered or unexported fields
}

func NewAccessPoint

func NewAccessPoint(essid, bssid string, frequency int, rssi int8) *AccessPoint

func (*AccessPoint) AddClient

func (ap *AccessPoint) AddClient(bssid string, frequency int, rssi int8) *Station

func (*AccessPoint) Clients

func (ap *AccessPoint) Clients() (list []*Station)

func (*AccessPoint) Get

func (ap *AccessPoint) Get(bssid string) (*Station, bool)

func (*AccessPoint) MarshalJSON

func (ap *AccessPoint) MarshalJSON() ([]byte, error)

func (*AccessPoint) NumClients

func (ap *AccessPoint) NumClients() int

func (*AccessPoint) RemoveClient

func (ap *AccessPoint) RemoveClient(mac string)

type ArpTable

type ArpTable map[string]string

func ArpUpdate

func ArpUpdate(iface string) (ArpTable, error)

type BLE

type BLE struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewBLE

func NewBLE(newcb BLEDevNewCallback, lostcb BLEDevLostCallback) *BLE

func (*BLE) AddIfNew

func (b *BLE) AddIfNew(id string, p gatt.Peripheral, a *gatt.Advertisement, rssi int) *BLEDevice

func (*BLE) Devices

func (b *BLE) Devices() (devices []*BLEDevice)

func (*BLE) Get

func (b *BLE) Get(id string) (dev *BLEDevice, found bool)

func (*BLE) MarshalJSON

func (b *BLE) MarshalJSON() ([]byte, error)

func (*BLE) Remove

func (b *BLE) Remove(id string)

type BLEDevLostCallback

type BLEDevLostCallback func(dev *BLEDevice)

type BLEDevNewCallback

type BLEDevNewCallback func(dev *BLEDevice)

type BLEDevice

type BLEDevice struct {
	LastSeen      time.Time
	Vendor        string
	RSSI          int
	Device        gatt.Peripheral
	Advertisement *gatt.Advertisement
}

func NewBLEDevice

func NewBLEDevice(p gatt.Peripheral, a *gatt.Advertisement, rssi int) *BLEDevice

func (*BLEDevice) MarshalJSON

func (d *BLEDevice) MarshalJSON() ([]byte, error)

type DebugFunc

type DebugFunc func(format string, args ...interface{})

type Endpoint

type Endpoint struct {
	Index            int                    `json:"-"`
	IP               net.IP                 `json:"-"`
	Net              *net.IPNet             `json:"-"`
	IPv6             net.IP                 `json:"-"`
	HW               net.HardwareAddr       `json:"-"`
	IpAddress        string                 `json:"ipv4"`
	Ip6Address       string                 `json:"ipv6"`
	SubnetBits       uint32                 `json:"-"`
	IpAddressUint32  uint32                 `json:"-"`
	HwAddress        string                 `json:"mac"`
	Hostname         string                 `json:"hostname"`
	Alias            string                 `json:"alias"`
	Vendor           string                 `json:"vendor"`
	ResolvedCallback OnHostResolvedCallback `json:"-"`
	FirstSeen        time.Time              `json:"first_seen"`
	LastSeen         time.Time              `json:"last_seen"`
	Meta             *Meta                  `json:"meta"`
}

func FindGateway

func FindGateway(iface *Endpoint) (*Endpoint, error)

func FindInterface

func FindInterface(name string) (*Endpoint, error)

func IPv4RouteIsGateway

func IPv4RouteIsGateway(ifname string, tokens []string, f func(gateway string) (*Endpoint, error)) (*Endpoint, error)

func NewEndpoint

func NewEndpoint(ip, mac string) *Endpoint

func NewEndpointNoResolve

func NewEndpointNoResolve(ip, mac, name string, bits uint32) *Endpoint

func NewEndpointWithAlias

func NewEndpointWithAlias(ip, mac, alias string) *Endpoint

func ParseEndpoints

func ParseEndpoints(targets string, lan *LAN) ([]*Endpoint, error)

func (*Endpoint) CIDR

func (t *Endpoint) CIDR() string

func (*Endpoint) IsMonitor

func (t *Endpoint) IsMonitor() bool

func (*Endpoint) Name

func (t *Endpoint) Name() string

func (*Endpoint) OnMeta

func (t *Endpoint) OnMeta(meta map[string]string)

func (*Endpoint) SetBits

func (t *Endpoint) SetBits(bits uint32)

func (*Endpoint) SetIP

func (t *Endpoint) SetIP(ip string)

func (*Endpoint) SetIPv6

func (t *Endpoint) SetIPv6(netw string)

func (*Endpoint) SetNetwork

func (t *Endpoint) SetNetwork(netw string)

func (*Endpoint) String

func (t *Endpoint) String() string

type EndpointLostCallback

type EndpointLostCallback func(e *Endpoint)

type EndpointNewCallback

type EndpointNewCallback func(e *Endpoint)

type LAN

type LAN struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewLAN

func NewLAN(iface, gateway *Endpoint, newcb EndpointNewCallback, lostcb EndpointLostCallback) *LAN

func (*LAN) AddIfNew

func (lan *LAN) AddIfNew(ip, mac string) *Endpoint

func (*LAN) Aliases

func (lan *LAN) Aliases() *data.UnsortedKV

func (*LAN) EachHost

func (lan *LAN) EachHost(cb func(mac string, e *Endpoint))

func (*LAN) Get

func (lan *LAN) Get(mac string) (*Endpoint, bool)

func (*LAN) GetAlias

func (lan *LAN) GetAlias(mac string) string

func (*LAN) GetByIp

func (lan *LAN) GetByIp(ip string) *Endpoint

func (*LAN) Has

func (lan *LAN) Has(ip string) bool

func (*LAN) List

func (lan *LAN) List() (list []*Endpoint)

func (*LAN) MarshalJSON

func (l *LAN) MarshalJSON() ([]byte, error)

func (*LAN) Remove

func (lan *LAN) Remove(ip, mac string)

func (*LAN) SetAliasFor

func (lan *LAN) SetAliasFor(mac, alias string) bool

func (*LAN) WasMissed

func (lan *LAN) WasMissed(mac string) bool

type Meta

type Meta struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewMeta

func NewMeta() *Meta

func (*Meta) Each

func (m *Meta) Each(cb func(name string, value interface{}))

func (*Meta) Empty

func (m *Meta) Empty() bool

func (*Meta) Get

func (m *Meta) Get(name string) interface{}

func (*Meta) GetIntsWith

func (m *Meta) GetIntsWith(name string, with int, sorted bool) []int

func (*Meta) GetOr

func (m *Meta) GetOr(name string, dflt interface{}) interface{}

func (*Meta) MarshalJSON

func (m *Meta) MarshalJSON() ([]byte, error)

func (*Meta) Set

func (m *Meta) Set(name string, value interface{})

func (*Meta) SetInts

func (m *Meta) SetInts(name string, ints []int)

type OnHostResolvedCallback

type OnHostResolvedCallback func(e *Endpoint)

type Station

type Station struct {
	*Endpoint
	Frequency      int               `json:"frequency"`
	RSSI           int8              `json:"rssi"`
	Sent           uint64            `json:"sent"`
	Received       uint64            `json:"received"`
	Encryption     string            `json:"encryption"`
	Cipher         string            `json:"cipher"`
	Authentication string            `json:"authentication"`
	WPS            map[string]string `json:"wps"`
}

func NewStation

func NewStation(essid, bssid string, frequency int, rssi int8) *Station

func (Station) BSSID

func (s Station) BSSID() string

func (*Station) Channel

func (s *Station) Channel() int

func (*Station) ESSID

func (s *Station) ESSID() string

func (*Station) HasWPS

func (s *Station) HasWPS() bool

type WiFi

type WiFi struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewWiFi

func NewWiFi(iface *Endpoint, newcb APNewCallback, lostcb APLostCallback) *WiFi

func (*WiFi) AddIfNew

func (w *WiFi) AddIfNew(ssid, mac string, frequency int, rssi int8) *AccessPoint

func (*WiFi) Clear

func (w *WiFi) Clear() error

func (*WiFi) EachAccessPoint

func (w *WiFi) EachAccessPoint(cb func(mac string, ap *AccessPoint))

func (*WiFi) Get

func (w *WiFi) Get(mac string) (*AccessPoint, bool)

func (*WiFi) GetClient

func (w *WiFi) GetClient(mac string) (*Station, bool)

func (*WiFi) List

func (w *WiFi) List() (list []*AccessPoint)

func (*WiFi) MarshalJSON

func (w *WiFi) MarshalJSON() ([]byte, error)

func (*WiFi) Remove

func (w *WiFi) Remove(mac string)

func (*WiFi) Stations

func (w *WiFi) Stations() (list []*Station)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL