mirror of
https://github.com/bettercap/bettercap
synced 2025-08-21 14:03:17 -07:00
new: ble, can, hid and wifi modules will now set a custom prompt (closes #1117)
This commit is contained in:
parent
d9a91d393e
commit
6282fe3451
7 changed files with 80 additions and 36 deletions
|
@ -81,7 +81,7 @@ func NewBLERecon(s *session.Session) *BLERecon {
|
|||
"Enumerate services and characteristics for the given BLE device.",
|
||||
func(args []string) error {
|
||||
if mod.isEnumerating() {
|
||||
return fmt.Errorf("An enumeration for %s is already running, please wait.", mod.currDevice.Device.ID())
|
||||
return fmt.Errorf("an enumeration for %s is already running, please wait.", mod.currDevice.Device.ID())
|
||||
}
|
||||
|
||||
mod.writeData = nil
|
||||
|
@ -100,11 +100,11 @@ func NewBLERecon(s *session.Session) *BLERecon {
|
|||
mac := network.NormalizeMac(args[0])
|
||||
uuid, err := gatt.ParseUUID(args[1])
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error parsing %s: %s", args[1], err)
|
||||
return fmt.Errorf("error parsing %s: %s", args[1], err)
|
||||
}
|
||||
data, err := hex.DecodeString(args[2])
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error parsing %s: %s", args[2], err)
|
||||
return fmt.Errorf("error parsing %s: %s", args[2], err)
|
||||
}
|
||||
|
||||
return mod.writeBuffer(mac, uuid, data)
|
||||
|
@ -190,11 +190,15 @@ func (mod *BLERecon) Configure() (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
const blePrompt = "{blb}{fw}BLE {fb}{reset} {bold}» {reset}"
|
||||
|
||||
func (mod *BLERecon) Start() error {
|
||||
if err := mod.Configure(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mod.SetPrompt(blePrompt)
|
||||
|
||||
return mod.SetRunning(true, func() {
|
||||
go mod.pruner()
|
||||
|
||||
|
@ -221,6 +225,8 @@ func (mod *BLERecon) Start() error {
|
|||
}
|
||||
|
||||
func (mod *BLERecon) Stop() error {
|
||||
mod.SetPrompt(session.DefaultPrompt)
|
||||
|
||||
return mod.SetRunning(false, func() {
|
||||
mod.quit <- true
|
||||
<-mod.done
|
||||
|
|
|
@ -144,11 +144,15 @@ func (mod *CANModule) onFrame(frame can.Frame) {
|
|||
mod.Session.Events.Add("can.message", msg)
|
||||
}
|
||||
|
||||
const canPrompt = "{br}{fw}{env.can.device} {fb}{reset} {bold}» {reset}"
|
||||
|
||||
func (mod *CANModule) Start() error {
|
||||
if err := mod.Configure(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mod.SetPrompt(canPrompt)
|
||||
|
||||
return mod.SetRunning(true, func() {
|
||||
mod.Info("started on %s ...", mod.deviceName)
|
||||
|
||||
|
@ -160,6 +164,8 @@ func (mod *CANModule) Start() error {
|
|||
}
|
||||
|
||||
func (mod *CANModule) Stop() error {
|
||||
mod.SetPrompt(session.DefaultPrompt)
|
||||
|
||||
return mod.SetRunning(false, func() {
|
||||
if mod.conn != nil {
|
||||
mod.recv.Close()
|
||||
|
|
|
@ -237,6 +237,8 @@ func (mod *HIDRecon) forceStop() error {
|
|||
})
|
||||
}
|
||||
func (mod *HIDRecon) Stop() error {
|
||||
mod.SetPrompt(session.DefaultPrompt)
|
||||
|
||||
return mod.SetRunning(false, func() {
|
||||
mod.waitGroup.Wait()
|
||||
if mod.dongle != nil {
|
||||
|
|
|
@ -86,11 +86,15 @@ func (mod *HIDRecon) devPruner() {
|
|||
}
|
||||
}
|
||||
|
||||
const hidPrompt = "{by}{fw}HID {fb}{reset} {bold}» {reset}"
|
||||
|
||||
func (mod *HIDRecon) Start() error {
|
||||
if err := mod.Configure(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mod.SetPrompt(hidPrompt)
|
||||
|
||||
return mod.SetRunning(true, func() {
|
||||
mod.waitGroup.Add(1)
|
||||
defer mod.waitGroup.Done()
|
||||
|
|
|
@ -666,11 +666,15 @@ func (mod *WiFiModule) updateStats(dot11 *layers.Dot11, packet gopacket.Packet)
|
|||
}
|
||||
}
|
||||
|
||||
const wifiPrompt = "{by}{fb}{env.iface.name} {reset} {bold}» {reset}"
|
||||
|
||||
func (mod *WiFiModule) Start() error {
|
||||
if err := mod.Configure(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mod.SetPrompt(wifiPrompt)
|
||||
|
||||
mod.SetRunning(true, func() {
|
||||
// start channel hopper if needed
|
||||
if mod.channel == 0 && mod.source == "" {
|
||||
|
@ -721,6 +725,8 @@ func (mod *WiFiModule) Start() error {
|
|||
}
|
||||
|
||||
func (mod *WiFiModule) forcedStop() error {
|
||||
mod.SetPrompt(session.DefaultPromptMonitor)
|
||||
|
||||
return mod.SetRunning(false, func() {
|
||||
// signal the main for loop we want to exit
|
||||
if !mod.pktSourceChanClosed {
|
||||
|
@ -732,6 +738,8 @@ func (mod *WiFiModule) forcedStop() error {
|
|||
}
|
||||
|
||||
func (mod *WiFiModule) Stop() error {
|
||||
mod.SetPrompt(session.DefaultPromptMonitor)
|
||||
|
||||
return mod.SetRunning(false, func() {
|
||||
// wait any pending write operation
|
||||
mod.writes.Wait()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue