bettercap/session/session_completers.go

122 lines
2.6 KiB
Go

package session
import (
"strings"
"github.com/bettercap/bettercap/v2/network"
)
func prefixMatches(prefix, what string) bool {
return prefix == "" || strings.HasPrefix(what, prefix)
}
func addIfMatches(to *[]string, prefix string, what string) {
if prefixMatches(prefix, what) {
*to = append(*to, what)
}
}
func (s *Session) LANCompleterForMacs(prefix string) []string {
macs := []string{""}
s.Lan.EachHost(func(mac string, e *network.Endpoint) {
addIfMatches(&macs, prefix, mac)
})
return macs
}
func (s *Session) LANCompleterForIPs(prefix string) []string {
ips := []string{""}
s.Lan.EachHost(func(mac string, e *network.Endpoint) {
addIfMatches(&ips, prefix, e.IpAddress)
})
return ips
}
func (s *Session) WiFiCompleter(prefix string) []string {
macs := []string{""}
s.WiFi.EachAccessPoint(func(mac string, ap *network.AccessPoint) {
addIfMatches(&macs, prefix, mac)
})
return macs
}
func (s *Session) WiFiCompleterFull(prefix string) []string {
macs := []string{""}
s.WiFi.EachAccessPoint(func(mac string, ap *network.AccessPoint) {
addIfMatches(&macs, prefix, mac)
ap.EachClient(func(mac string, c *network.Station) {
addIfMatches(&macs, prefix, mac)
})
})
return macs
}
func (s *Session) BLECompleter(prefix string) []string {
macs := []string{""}
s.BLE.EachDevice(func(mac string, dev *network.BLEDevice) {
addIfMatches(&macs, prefix, mac)
})
return macs
}
func (s *Session) HIDCompleter(prefix string) []string {
macs := []string{""}
s.HID.EachDevice(func(mac string, dev *network.HIDDevice) {
addIfMatches(&macs, prefix, mac)
})
return macs
}
func (s *Session) EventsCompleter(prefix string) []string {
events := []string{""}
all := []string{
"sys.log",
"session.started",
"session.closing",
"update.available",
"mod.started",
"mod.stopped",
"endpoint.new",
"endpoint.lost",
"wifi.client.lost",
"wifi.client.probe",
"wifi.client.new",
"wifi.client.handshake",
"wifi.ap.new",
"wifi.ap.lost",
"ble.device.service.discovered",
"ble.device.characteristic.discovered",
"ble.device.connected",
"ble.device.new",
"ble.device.lost",
"ble.connection.timeout",
"hid.device.new",
"hid.device.lost",
"http.spoofed-request",
"http.spoofed-response",
"https.spoofed-request",
"https.spoofed-response",
"syn.scan",
"net.sniff.mdns",
"net.sniff.mdns",
"net.sniff.dot11",
"net.sniff.tcp",
"net.sniff.upnp",
"net.sniff.ntlm",
"net.sniff.ftp",
"net.sniff.udp",
"net.sniff.krb5",
"net.sniff.dns",
"net.sniff.teamviewer",
"net.sniff.http.request",
"net.sniff.http.response",
"net.sniff.sni",
}
for _, e := range all {
addIfMatches(&events, prefix, e)
}
return events
}