Skip to content

events.stream

This module is enabled by default and is responsible for reporting events (logs, new hosts being found, etc) generated by other modules during the interactive session. Moreover, it can be used to programmatically execute commands when specific events occur.

Each module can generate an event with a custom payload and a unique identifier / tag depending on its meaning:

Event IDDescription
ble.connection.timeoutConnection to the specified BLE device timed out.
ble.device.characteristic.discoveredA new characteristic has been discovered for a BLE device.
ble.device.connectedConnected to the selected BLE device.
ble.device.lostA previously discovered BLE device is not in range anymore.
ble.device.newA new BLE device has been discovered.
ble.device.service.discoveredA new service has been discovered for a BLE device.
endpoint.newA new network host has been discovered.
endpoint.lostA previously discovered network host disconnected from this network.
gateway.changeIPv4 or IPv6 gateway change detected.
hid.device.newA new wireless HID device has been discovered.
hid.device.lostA previously discovered wireless HID device is not in range anymore.
http.spoofed-requestA HTTP request has been changed by a proxy module.
http.spoofed-responseA HTTP response has been changed by a proxy module.
https.spoofed-requestA HTTPS request has been changed by a proxy module.
https.spoofed-responseA HTTPS response has been changed by a proxy module.
mod.startedA specific module started.
mod.stoppedA specific module stopped.
net.sniff.*A new payload has been sniffed.
session.startedThe session started.
session.closingThe session is stopping.
syn.scanAn open port has been found on the target host.
sys.logSimple log message event.
tickAn event generated by the ticker module.
update.availableAn update is available.
wifi.ap.newA new WiFi access point has been discovered.
wifi.ap.lostA previously discovered WiFi access point is not in range anymore.
wifi.client.deauthenticationWPA/WPA2 deauthentication frame has been detected.
wifi.client.handshakeWPA/WPA2 key material has been captured.
wifi.client.lostA previously discovered WiFi client station disconnected from its AP.
wifi.client.newA new WiFi client station has been discovered.
wifi.client.probeA WiFi client station is sending a probe for an ESSID.

Start the events stream.

Stop the events stream.

Show the events stream ( LIMIT is an optional parameter ).

Events with an identifier matching this filter will not be shown (use multiple times to add more filters).

Used to remove filters passed with the events.ignore command.

Print the list of filters used to ignore events.

Clear the list of filters passed with the events.ignore command.

Clear the events stream buffer.

Wait for an event with the given tag either forever or for a timeout in seconds.

Define a new “trigger” that will run COMMANDS when an event with the specified TAG is triggered. Inside the COMMANDS parameter it is possible to use placeholders that will be replaced with the relative field of the event’s payload (it supports XPath queries on JSON between brackets).

Show the list of event triggers created by the events.on command.

Remove an event trigger given its TRIGGER_ID (use events.triggers to see the list of triggers).

Remove all event triggers (use events.triggers to see the list of triggers).

ParameterDefaultDescription
events.stream.http.format.hextrueIf true dumped HTTP bodies will be in hexadecimal format.
events.stream.http.request.dumpfalseIf true all HTTP requests will be dumped.
events.stream.http.response.dumpfalseIf true all HTTP responses will be dumped.
events.stream.outputIf not empty, events will be written to this file instead of the standard output.
events.stream.output.rotatetrueIf true will enable log rotation.
events.stream.output.rotate.compresstrueIf true will enable log rotation compression.
events.stream.output.rotate.format2006-01-02 15:04:05Datetime format to use for log rotation file names.
events.stream.output.rotate.howsizeRotate by size or time.
events.stream.output.rotate.when10485760File size or time duration in seconds for log rotation.
events.stream.time.format15:04:05Date and time format to use for events reporting.

Start bettercap with full date and time format for events:

Terminal window
sudo bettercap -eval "set events.stream.time.format Mon Jan 2 15:04:05 -0700 MST 2006"

Show every event:

Terminal window
events.show

Show the last 5 events, sleep one second and then clear the buffer:

Terminal window
events.show 5; sleep 1; events.clear

Ignore the endpoint.lost event:

Terminal window
events.ignore endpoint.lost

Re enable the endpoint.lost event:

Terminal window
events.include endpoint.lost

Start discovering BLE devices and wait that at least one is detected:

Terminal window
ble.recon on; events.waitfor ble.device.new

Same thing but with a 10 seconds timeout:

Terminal window
ble.recon on; events.waitfor ble.device.new 10

Whenever a new WiFi client station is discovered, launch a deauthentication attack and, whenever a new WiFi access point is discovered, try to associate to it:

Terminal window
events.on wifi.client.new wifi.deauth {{Client/mac}}
events.on wifi.ap.new wifi.assoc {{mac}}

Start bettercap without colors and terminal effects and write events to the file ~/bettercap-events.log:

Terminal window
sudo bettercap -no-colors -eval "set events.stream.output ~/bettercap-events.log"