mirror of
https://github.com/bettercap/bettercap
synced 2025-08-14 18:57:17 -07:00
new: new wifi.show.manufacturer parameter to show APs manufacturers (fixes #456)
This commit is contained in:
parent
99a60364cd
commit
5944189802
2 changed files with 68 additions and 22 deletions
|
@ -48,6 +48,7 @@ type WiFiModule struct {
|
|||
assocOpen bool
|
||||
shakesFile string
|
||||
apRunning bool
|
||||
showManuf bool
|
||||
apConfig packets.Dot11ApConfig
|
||||
writes *sync.WaitGroup
|
||||
reads *sync.WaitGroup
|
||||
|
@ -72,6 +73,7 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
|
|||
assocSkip: []net.HardwareAddr{},
|
||||
assocSilent: false,
|
||||
assocOpen: false,
|
||||
showManuf: false,
|
||||
writes: &sync.WaitGroup{},
|
||||
reads: &sync.WaitGroup{},
|
||||
chanLock: &sync.Mutex{},
|
||||
|
@ -245,6 +247,10 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
|
|||
mod.selector = utils.ViewSelectorFor(&mod.SessionModule, "wifi.show",
|
||||
[]string{"rssi", "bssid", "essid", "channel", "encryption", "clients", "seen", "sent", "rcvd"}, "rssi asc")
|
||||
|
||||
mod.AddParam(session.NewBoolParameter("wifi.show.manufacturer",
|
||||
"false",
|
||||
"If true, wifi.show will also show the devices manufacturers."))
|
||||
|
||||
mod.AddHandler(session.NewModuleHandler("wifi.recon.channel", `wifi\.recon\.channel[\s]+([0-9]+(?:[, ]+[0-9]+)*|clear)`,
|
||||
"WiFi channels (comma separated) or 'clear' for channel hopping.",
|
||||
func(args []string) (err error) {
|
||||
|
|
|
@ -81,14 +81,26 @@ func (mod *WiFiModule) getRow(station *network.Station) ([]string, bool) {
|
|||
}
|
||||
|
||||
if mod.isApSelected() {
|
||||
return []string{
|
||||
rssi,
|
||||
bssid,
|
||||
strconv.Itoa(station.Channel()),
|
||||
sent,
|
||||
recvd,
|
||||
seen,
|
||||
}, include
|
||||
if mod.showManuf {
|
||||
return []string{
|
||||
rssi,
|
||||
bssid,
|
||||
tui.Dim(station.Vendor),
|
||||
strconv.Itoa(station.Channel()),
|
||||
sent,
|
||||
recvd,
|
||||
seen,
|
||||
}, include
|
||||
} else {
|
||||
return []string{
|
||||
rssi,
|
||||
bssid,
|
||||
strconv.Itoa(station.Channel()),
|
||||
sent,
|
||||
recvd,
|
||||
seen,
|
||||
}, include
|
||||
}
|
||||
} else {
|
||||
// this is ugly, but necessary in order to have this
|
||||
// method handle both access point and clients
|
||||
|
@ -117,18 +129,34 @@ func (mod *WiFiModule) getRow(station *network.Station) ([]string, bool) {
|
|||
wps = tui.Dim(tui.Yellow(wps))
|
||||
}
|
||||
|
||||
return []string{
|
||||
rssi,
|
||||
bssid,
|
||||
ssid,
|
||||
encryption,
|
||||
wps,
|
||||
strconv.Itoa(station.Channel()),
|
||||
clients,
|
||||
sent,
|
||||
recvd,
|
||||
seen,
|
||||
}, include
|
||||
if mod.showManuf {
|
||||
return []string{
|
||||
rssi,
|
||||
bssid,
|
||||
tui.Dim(station.Vendor),
|
||||
ssid,
|
||||
encryption,
|
||||
wps,
|
||||
strconv.Itoa(station.Channel()),
|
||||
clients,
|
||||
sent,
|
||||
recvd,
|
||||
seen,
|
||||
}, include
|
||||
} else {
|
||||
return []string{
|
||||
rssi,
|
||||
bssid,
|
||||
ssid,
|
||||
encryption,
|
||||
wps,
|
||||
strconv.Itoa(station.Channel()),
|
||||
clients,
|
||||
sent,
|
||||
recvd,
|
||||
seen,
|
||||
}, include
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -225,9 +253,17 @@ func (mod *WiFiModule) colNames(nrows int) []string {
|
|||
columns := []string(nil)
|
||||
|
||||
if !mod.isApSelected() {
|
||||
columns = []string{"RSSI", "BSSID", "SSID", "Encryption", "WPS", "Ch", "Clients", "Sent", "Recvd", "Seen"}
|
||||
if mod.showManuf {
|
||||
columns = []string{"RSSI", "BSSID", "Manufacturer", "SSID", "Encryption", "WPS", "Ch", "Clients", "Sent", "Recvd", "Seen"}
|
||||
} else {
|
||||
columns = []string{"RSSI", "BSSID", "SSID", "Encryption", "WPS", "Ch", "Clients", "Sent", "Recvd", "Seen"}
|
||||
}
|
||||
} else if nrows > 0 {
|
||||
columns = []string{"RSSI", "BSSID", "Ch", "Sent", "Recvd", "Seen"}
|
||||
if mod.showManuf {
|
||||
columns = []string{"RSSI", "BSSID", "Manufacturer", "Ch", "Sent", "Recvd", "Seen"}
|
||||
} else {
|
||||
columns = []string{"RSSI", "BSSID", "Ch", "Sent", "Recvd", "Seen"}
|
||||
}
|
||||
fmt.Printf("\n%s clients:\n", mod.ap.HwAddress)
|
||||
} else {
|
||||
fmt.Printf("\nNo authenticated clients detected for %s.\n", mod.ap.HwAddress)
|
||||
|
@ -287,6 +323,10 @@ func (mod *WiFiModule) Show() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
if err, mod.showManuf = mod.BoolParam("wifi.show.manufacturer"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rows := make([][]string, 0)
|
||||
for _, s := range stations {
|
||||
if row, include := mod.getRow(s); include {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue