network

package
v2.24.1 Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2019 License: GPL-3.0 Imports: 25 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 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]+\.[0-9]+\.[0-9]+\.[0-9]+)\svia\s([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\sdev\s(\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 ActivateInterface added in v2.21.1

func ActivateInterface(name string) error

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 ColorRSSI added in v2.21.1

func ColorRSSI(n int) string

func Dot11Chan2Freq added in v2.3.1

func Dot11Chan2Freq(channel int) int

func Dot11Freq2Chan added in v2.3.1

func Dot11Freq2Chan(freq int) int

func GetInterfaceChannel added in v2.13.1

func GetInterfaceChannel(iface string) int

func GetServiceByPort added in v2.24.1

func GetServiceByPort(port int, proto string) string

func GetSupportedFrequencies

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

func HIDAddress added in v2.21.1

func HIDAddress(address []byte) string

func IsBroadcastMac added in v2.3.1

func IsBroadcastMac(mac net.HardwareAddr) bool

func IsZeroMac added in v2.3.1

func IsZeroMac(mac net.HardwareAddr) bool

func ManufLookup added in v2.11.1

func ManufLookup(mac string) string

func NormalizeHIDAddress added in v2.21.1

func NormalizeHIDAddress(address string) string

func NormalizeMac

func NormalizeMac(mac string) string

func ParseMACs added in v2.13.1

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

func ParseTargets added in v2.11.1

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 added in v2.13.1

func SetInterfaceCurrentChannel(iface string, channel int)

func SetInterfaceTxPower added in v2.21.1

func SetInterfaceTxPower(name string, txpower int) error

func SetWiFiRegion added in v2.21.1

func SetWiFiRegion(region string) 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, aliases *data.UnsortedKV) *AccessPoint

func (*AccessPoint) AddClientIfNew added in v2.21.1

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

func (*AccessPoint) Clients

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

func (*AccessPoint) EachClient added in v2.21.1

func (ap *AccessPoint) EachClient(cb func(mac string, station *Station))

func (*AccessPoint) Get

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

func (*AccessPoint) HasHandshakes added in v2.21.1

func (ap *AccessPoint) HasHandshakes() bool

func (*AccessPoint) HasKeyMaterial added in v2.21.1

func (ap *AccessPoint) HasKeyMaterial() bool

func (*AccessPoint) HasPMKID added in v2.21.1

func (ap *AccessPoint) HasPMKID() bool

func (*AccessPoint) MarshalJSON

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

func (*AccessPoint) NumClients

func (ap *AccessPoint) NumClients() int

func (*AccessPoint) NumHandshakes added in v2.21.1

func (ap *AccessPoint) NumHandshakes() int

func (*AccessPoint) RemoveClient added in v2.11.1

func (ap *AccessPoint) RemoveClient(mac string)

func (*AccessPoint) WithKeyMaterial added in v2.21.1

func (ap *AccessPoint) WithKeyMaterial(state bool)

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(aliases *data.UnsortedKV, 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) Clear added in v2.21.1

func (b *BLE) Clear()

func (*BLE) Devices

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

func (*BLE) EachDevice added in v2.21.1

func (b *BLE) EachDevice(cb func(mac string, d *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 BLECharacteristic added in v2.21.1

type BLECharacteristic struct {
	UUID       string      `json:"uuid"`
	Name       string      `json:"name"`
	Handle     uint16      `json:"handle"`
	Properties []string    `json:"properties"`
	Data       interface{} `json:"data"`
}

type BLEDevLostCallback

type BLEDevLostCallback func(dev *BLEDevice)

type BLEDevNewCallback

type BLEDevNewCallback func(dev *BLEDevice)

type BLEDevice

type BLEDevice struct {
	Alias         string
	LastSeen      time.Time
	DeviceName    string
	Vendor        string
	RSSI          int
	Device        gatt.Peripheral
	Advertisement *gatt.Advertisement
	Services      []BLEService
}

func NewBLEDevice

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

func (*BLEDevice) MarshalJSON added in v2.3.1

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

func (*BLEDevice) Name added in v2.21.1

func (d *BLEDevice) Name() string

type BLEService added in v2.21.1

type BLEService struct {
	UUID            string              `json:"uuid"`
	Name            string              `json:"name"`
	Handle          uint16              `json:"handle"`
	EndHandle       uint16              `json:"end_handle"`
	Characteristics []BLECharacteristic `json:"characteristics"`
}

type DebugFunc added in v2.11.1

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 GatewayProvidedByUser added in v2.21.1

func GatewayProvidedByUser(iface *Endpoint, gateway 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 added in v2.11.1

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 added in v2.11.1

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 HID added in v2.21.1

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

func NewHID added in v2.21.1

func NewHID(aliases *data.UnsortedKV, newcb HIDDevNewCallback, lostcb HIDDevLostCallback) *HID

func (*HID) AddIfNew added in v2.21.1

func (b *HID) AddIfNew(address []byte, channel int, payload []byte) (bool, *HIDDevice)

func (*HID) Clear added in v2.21.1

func (b *HID) Clear()

func (*HID) Devices added in v2.21.1

func (b *HID) Devices() (devices []*HIDDevice)

func (*HID) EachDevice added in v2.21.1

func (b *HID) EachDevice(cb func(mac string, d *HIDDevice))

func (*HID) Get added in v2.21.1

func (b *HID) Get(id string) (dev *HIDDevice, found bool)

func (*HID) MarshalJSON added in v2.21.1

func (h *HID) MarshalJSON() ([]byte, error)

func (*HID) Remove added in v2.21.1

func (b *HID) Remove(id string)

type HIDDevLostCallback added in v2.21.1

type HIDDevLostCallback func(dev *HIDDevice)

type HIDDevNewCallback added in v2.21.1

type HIDDevNewCallback func(dev *HIDDevice)

type HIDDevice added in v2.21.1

type HIDDevice struct {
	sync.Mutex
	LastSeen   time.Time
	Type       HIDType
	Alias      string
	Address    string
	RawAddress []byte
	// contains filtered or unexported fields
}

func NewHIDDevice added in v2.21.1

func NewHIDDevice(address []byte, channel int, payload []byte) *HIDDevice

func (*HIDDevice) AddChannel added in v2.21.1

func (dev *HIDDevice) AddChannel(ch int)

func (*HIDDevice) AddPayload added in v2.21.1

func (dev *HIDDevice) AddPayload(payload []byte)

func (*HIDDevice) Channels added in v2.21.1

func (dev *HIDDevice) Channels() string

func (*HIDDevice) ChannelsList added in v2.21.1

func (dev *HIDDevice) ChannelsList() []string

func (*HIDDevice) EachPayload added in v2.21.1

func (dev *HIDDevice) EachPayload(cb func([]byte) bool)

func (*HIDDevice) MarshalJSON added in v2.21.1

func (dev *HIDDevice) MarshalJSON() ([]byte, error)

func (*HIDDevice) NumPayloads added in v2.21.1

func (dev *HIDDevice) NumPayloads() int

func (*HIDDevice) PayloadsSize added in v2.21.1

func (dev *HIDDevice) PayloadsSize() uint64

type HIDPayload added in v2.21.1

type HIDPayload []byte

type HIDType added in v2.21.1

type HIDType int
const (
	HIDTypeUnknown   HIDType = 0
	HIDTypeLogitech  HIDType = 1
	HIDTypeAmazon    HIDType = 2
	HIDTypeMicrosoft HIDType = 3
	HIDTypeDell      HIDType = 4
)

func (HIDType) String added in v2.21.1

func (t HIDType) String() string

type Handshake added in v2.21.1

type Handshake struct {
	sync.Mutex

	Beacon        gopacket.Packet
	Challenges    []gopacket.Packet
	Responses     []gopacket.Packet
	Confirmations []gopacket.Packet
	// contains filtered or unexported fields
}

func NewHandshake added in v2.21.1

func NewHandshake() *Handshake

func (*Handshake) AddAndGetPMKID added in v2.21.1

func (h *Handshake) AddAndGetPMKID(pkt gopacket.Packet) []byte

func (*Handshake) AddFrame added in v2.21.1

func (h *Handshake) AddFrame(n int, pkt gopacket.Packet)

func (*Handshake) Complete added in v2.21.1

func (h *Handshake) Complete() bool

func (*Handshake) EachUnsavedPacket added in v2.21.1

func (h *Handshake) EachUnsavedPacket(cb func(gopacket.Packet))

func (*Handshake) HasPMKID added in v2.21.1

func (h *Handshake) HasPMKID() bool

func (*Handshake) NumUnsaved added in v2.21.1

func (h *Handshake) NumUnsaved() int

func (*Handshake) SetBeacon added in v2.21.1

func (h *Handshake) SetBeacon(pkt gopacket.Packet)

type LAN

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

func NewLAN

func NewLAN(iface, gateway *Endpoint, aliases *data.UnsortedKV, newcb EndpointNewCallback, lostcb EndpointLostCallback) *LAN

func (*LAN) AddIfNew

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

func (*LAN) Aliases added in v2.11.1

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

func (*LAN) Clear added in v2.21.1

func (lan *LAN) Clear()

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) 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"`
	Channel        int               `json:"channel"`
	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"`
	Handshake      *Handshake        `json:"-"`
}

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

func (*Station) HasWPS added in v2.13.1

func (s *Station) HasWPS() bool

func (*Station) IsOpen added in v2.21.1

func (s *Station) IsOpen() bool

type WiFi

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

func NewWiFi

func NewWiFi(iface *Endpoint, aliases *data.UnsortedKV, newcb APNewCallback, lostcb APLostCallback) *WiFi

func (*WiFi) AddIfNew

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

func (*WiFi) Clear

func (w *WiFi) Clear()

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 added in v2.3.1

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) NumHandshakes added in v2.21.1

func (w *WiFi) NumHandshakes() int

func (*WiFi) Remove

func (w *WiFi) Remove(mac string)

func (*WiFi) SaveHandshakesTo added in v2.21.1

func (w *WiFi) SaveHandshakesTo(fileName string, linkType layers.LinkType) error

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