misc: small fix or general refactoring i did not bother commenting

This commit is contained in:
Simone Margaritelli 2024-09-22 14:00:39 +02:00
commit 8446d66d12
2 changed files with 37 additions and 40 deletions

View file

@ -8,6 +8,7 @@ import (
"github.com/bettercap/bettercap/v2/session" "github.com/bettercap/bettercap/v2/session"
"github.com/bettercap/bettercap/v2/tls" "github.com/bettercap/bettercap/v2/tls"
"github.com/evilsocket/islazy/str"
"github.com/google/gopacket" "github.com/google/gopacket"
"github.com/google/gopacket/pcap" "github.com/google/gopacket/pcap"
) )
@ -39,30 +40,29 @@ func NewZeroGod(s *session.Session) *ZeroGod {
return mod.Stop() return mod.Stop()
})) }))
mod.AddHandler(session.NewModuleHandler("zerogod.show", "", showFull := session.NewModuleHandler("zerogod.show-full ADDRESS", `zerogod\.show-full(.*)`,
"Show discovered services.",
func(args []string) error {
return mod.show("", false)
}))
mod.AddHandler(session.NewModuleHandler("zerogod.show-full", "",
"Show discovered services and their DNS records.",
func(args []string) error {
return mod.show("", true)
}))
// TODO: add autocomplete
mod.AddHandler(session.NewModuleHandler("zerogod.show ADDRESS", "zerogod.show (.+)",
"Show discovered services given an ip address.",
func(args []string) error {
return mod.show(args[0], false)
}))
mod.AddHandler(session.NewModuleHandler("zerogod.show-full ADDRESS", "zerogod.show-full (.+)",
"Show discovered services and DNS records given an ip address.", "Show discovered services and DNS records given an ip address.",
func(args []string) error { func(args []string) error {
return mod.show(args[0], true) what := ""
})) if len(args) > 0 {
what = str.Trim(args[0])
}
return mod.show(what, true)
})
showFull.Complete("zerogod.show-full", s.LANCompleterForIPs)
mod.AddHandler(showFull)
show := session.NewModuleHandler("zerogod.show ADDRESS", `zerogod\.show(.*)`,
"Show discovered services given an ip ADDRESS.",
func(args []string) error {
what := ""
if len(args) > 0 {
what = str.Trim(args[0])
}
return mod.show(what, false)
})
show.Complete("zerogod.show", s.LANCompleterForIPs)
mod.AddHandler(show)
mod.AddHandler(session.NewModuleHandler("zerogod.save ADDRESS FILENAME", "zerogod.save (.+) (.+)", mod.AddHandler(session.NewModuleHandler("zerogod.save ADDRESS FILENAME", "zerogod.save (.+) (.+)",
"Save the mDNS information of a given ADDRESS in the FILENAME yaml file.", "Save the mDNS information of a given ADDRESS in the FILENAME yaml file.",
@ -71,7 +71,7 @@ func NewZeroGod(s *session.Session) *ZeroGod {
})) }))
mod.AddHandler(session.NewModuleHandler("zerogod.advertise FILENAME", "zerogod.advertise (.+)", mod.AddHandler(session.NewModuleHandler("zerogod.advertise FILENAME", "zerogod.advertise (.+)",
"Start advertising the mDNS services from the FILENAME yaml file.", "Start advertising the mDNS services from the FILENAME yaml file. Use 'off' to stop advertising.",
func(args []string) error { func(args []string) error {
if args[0] == "off" { if args[0] == "off" {
return mod.stopAdvertiser() return mod.stopAdvertiser()
@ -79,9 +79,8 @@ func NewZeroGod(s *session.Session) *ZeroGod {
return mod.startAdvertiser(args[0]) return mod.startAdvertiser(args[0])
})) }))
// TODO: add autocomplete impersonate := session.NewModuleHandler("zerogod.impersonate ADDRESS", "zerogod.impersonate (.+)",
mod.AddHandler(session.NewModuleHandler("zerogod.impersonate ADDRESS", "zerogod.impersonate (.+)", "Impersonate ADDRESS by advertising the same discovery information. Use 'off' to stop impersonation.",
"Impersonate ADDRESS by advertising the same discovery information.",
func(args []string) error { func(args []string) error {
if address := args[0]; address == "off" { if address := args[0]; address == "off" {
return mod.stopAdvertiser() return mod.stopAdvertiser()
@ -95,19 +94,9 @@ func NewZeroGod(s *session.Session) *ZeroGod {
return mod.startAdvertiser(tmpFileName) return mod.startAdvertiser(tmpFileName)
} }
})) })
impersonate.Complete("zerogod.impersonate", s.LANCompleterForIPs)
mod.AddHandler(session.NewModuleHandler("zerogod.advertise off", "", mod.AddHandler(impersonate)
"Stop a previously started advertiser.",
func(args []string) error {
return mod.stopAdvertiser()
}))
mod.AddHandler(session.NewModuleHandler("zerogod.impersonate off", "",
"Stop a previously started impersonation.",
func(args []string) error {
return mod.stopAdvertiser()
}))
mod.AddParam(session.NewStringParameter("zerogod.advertise.certificate", mod.AddParam(session.NewStringParameter("zerogod.advertise.certificate",
"~/.bettercap-zerogod.cert.pem", "~/.bettercap-zerogod.cert.pem",

View file

@ -16,7 +16,7 @@ func addIfMatches(to *[]string, prefix string, what string) {
} }
} }
func (s *Session) LANCompleter(prefix string) []string { func (s *Session) LANCompleterForMacs(prefix string) []string {
macs := []string{""} macs := []string{""}
s.Lan.EachHost(func(mac string, e *network.Endpoint) { s.Lan.EachHost(func(mac string, e *network.Endpoint) {
addIfMatches(&macs, prefix, mac) addIfMatches(&macs, prefix, mac)
@ -24,6 +24,14 @@ func (s *Session) LANCompleter(prefix string) []string {
return macs 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 { func (s *Session) WiFiCompleter(prefix string) []string {
macs := []string{""} macs := []string{""}
s.WiFi.EachAccessPoint(func(mac string, ap *network.AccessPoint) { s.WiFi.EachAccessPoint(func(mac string, ap *network.AccessPoint) {