network

package
v0.0.0-...-e617026 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2018 License: GPL-3.0 Imports: 13 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 LANAliasesFile = "~/bettercap.aliases"
View Source
const LANDefaultttl = 10

Variables

View Source
var (
	BroadcastHw   = []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
	IPv4Validator = regexp.MustCompile("^[0-9\\.]+/?\\d*$")
)
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 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 ArpLookup

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

func ArpParsed

func ArpParsed() bool

func GetSupportedFrequencies

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

func NormalizeMac

func NormalizeMac(mac string) string

func OuiLookup

func OuiLookup(mac string) string

func SetInterfaceChannel

func SetInterfaceChannel(iface string, channel int) error

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

type Aliases

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

func LoadAliases

func LoadAliases() (err error, aliases *Aliases)

func (*Aliases) Get

func (a *Aliases) Get(mac string) string

func (*Aliases) Save

func (a *Aliases) Save() error

func (*Aliases) Set

func (a *Aliases) Set(mac, alias string) error

type ArpTable

type ArpTable map[string]string

func ArpUpdate

func ArpUpdate(iface string) (ArpTable, error)

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 (*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) 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) EachHost

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

func (*LAN) Get

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

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"`
}

func NewStation

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

func (Station) BSSID

func (s Station) BSSID() string

func (*Station) ESSID

func (s *Station) ESSID() string

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