# bettercap changelog
> The Swiss Army knife for 802.11, BLE, HID, CAN-bus, IPv4 and IPv6 networks reconnaissance and MITM attacks.
- Vendor: bettercap
- Category: Security & Privacy
- Official site: https://www.bettercap.org/
- Tracked by: What's New (https://whatsnew.fyi/product/bettercap)
- Harvested from: GitHub (bettercap/bettercap)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'.
## Releases
### v2.41.7
- Date: 2026-05-11
- Version: v2.41.7
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.7
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.7
- **security** — Fixed mysql.server panic on crafted client handshake (remote DoS)
- **security** — Fixed zerogod IPP chunked body panic via OOB uint64 allocation
- **fixed** — Close connection on panic recovery in the TCP acceptor
- **fixed** — Fixed flags value (0x0c → 0xc0) in prefix option for ICMPv6 router advertisement
- **fixed** — Use only iwlist to detect supported channels
- **fixed** — Fixed dropped graph error
- **fixed** — Fixed JS SBCB deserialization and JSSVCB key int64 typing
- **fixed** — Apply int64 conversion for otto backwards compatibility
- **changed** — Enhanced PMKID validation and debug logging
###### 🐛 Fixes
- 🛡️ Fixed `mysql.server` panic on crafted client handshake (remote DoS)
- 🛡️ Fixed `zerogod` IPP chunked body panic via OOB uint64 allocation (#1263)
- Close connection on panic recovery in the TCP acceptor
- Fixed flags value (`0x0c` → `0xc0`) in prefix option for ICMPv6 router advertisement
- Use only `iwlist` to detect supported channels (fixes #1243)
- Fixed dropped graph error
- Fixed JS SBCB deserialization and `JSSVCB` key int64 typing
- `int64` conversion for `otto` backwards compatibility
###### 🔧 Improvements
- Enhanced PMKID validation and debug logging
###### Miscellaneous
- Bumped `actions/download-artifact` 5 → 8
- Bumped `actions/upload-artifact` 4 → 7
- Bumped `docker/login-action` 3 → 4
- Bumped `docker/setup-qemu-action` 3 → 4
- Bumped `docker/build-push-action` 6 → 7
### v2.41.5
- Date: 2025-12-15
- Version: v2.41.5
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.5
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.5
- **added** — Support for pcapng modern packet capture format
- **added** — ble.NumDevices() function to get the count of discovered BLE devices
- **added** — lan.NumHosts() function to get the count of discovered LAN hosts
- **added** — wifi.NumAPs() function to get the count of discovered WiFi access points
- **added** — Made BLEDeviceJSON accessible for external use
- **added** — JS mkdirAll function for directory creation
- **added** — JS appendFile function for file operations
- **fixed** — Panic in zerogod module when IPP request is nil
- **fixed** — Concurrent map write for zerogod module port discovery
- **fixed** — UI port binding logic and replaced panic with error logging
- **fixed** — In-memory kv-aliases creation when loading AP data from JSON to prevent nil access panic
- **fixed** — Buffered channel usage for signal.Notify
- **fixed** — Filter out invalid WiFi frequencies
- **changed** — Upgraded from google/gopacket to gopacket/gopacket
- **changed** — Replaced deprecated ioutil package with modern alternatives
- **changed** — Updated port name maps
###### ✨ New Features
- **Moved to pcapng format** - Modern packet capture format support (closes #939)
- `ble.NumDevices()` - Get the count of discovered BLE devices
- `lan.NumHosts()` - Get the count of discovered LAN hosts
- `wifi.NumAPs()` - Get the count of discovered WiFi access points
- Made `BLEDeviceJSON` accessible for external use
- Added JS `mkdirAll` function for directory creation
- Added JS `appendFile` function for file operations
###### 🐛 Fixes
- Fixed panic in zerogod module when IPP request is nil (fixes #1234)
- Fixed concurrent map write for zerogod module port discovery
- Fixed UI port binding logic and replaced panic with error logging
- Fixed in-memory kv-aliases creation when loading AP data from JSON (fixes nil access panic)
- Fixed buffered channel usage for `signal.Notify`
- Filter out invalid WiFi frequencies
###### 🔧 Improvements
- Upgraded from `google/gopacket` to `gopacket/gopacket`
- Replaced deprecated `ioutil` package with modern alternatives
- Updated port name maps
###### Miscellaneous
- Code formatting improvements via gofmt
- Makefile improvements for gofmt with `-s` and `-w` flags
- Fixed broken documentation link
- General code refactoring and minor fixes
This changelog was generated by [Changelog](http://github.com/evilsocket/changelog).
### v2.41.4
- Date: 2025-08-18
- Version: v2.41.4
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.4
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.4
Second hotfix release for https://github.com/bettercap/bettercap/commit/42da6121131a222ea8ceda1810884733fa9a4224
Codenamed: I HATE JAVASCRIPT.
### v2.41.3
- Date: 2025-08-18
- Version: v2.41.3
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.3
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.3
Hotfix release for cc475ddfba538c2c1b7c7b4039aaa5bae73dff2b
### v2.41.2
- Date: 2025-08-18
- Version: v2.41.2
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.2
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.2
- **added** — Add default username and password for the API to simplify initial setup and access control
- **fixed** — Correct tcp.proxy onData return value handling to ensure proper flow control in TCP proxy callbacks
- **fixed** — Ensure consistent behavior between HTTP and HTTPS servers
- **fixed** — Enforce callback signature checks to prevent runtime errors with invalid handlers
###### New Features
- 🔐 Add default username and password for the API to simplify initial setup and access control. (thank you @kkrypt0nn)
###### Fixes
- 🐛 Corrected tcp.proxy onData return value handling (fixes #788) to ensure proper flow control in TCP proxy callbacks. (thank you @LucasParsy)
- Ensured consistent behavior between HTTP and HTTPS servers.
- Enforced callback signature checks to prevent runtime errors with invalid handlers.
###### Miscellaneous
- Fixed minor typos and improved wording (including `ticker off` description).
- Maintenance: bumped GitHub Action `actions/download-artifact` from v4 to v5.
- Housekeeping: merged upstream and dependency-related pull requests.
This changelog was generated by [Changelog](http://github.com/evilsocket/changelog).
### v2.41.1
- Date: 2025-07-15
- Version: v2.41.1
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.1
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.1
- **added** — Queue handle is now passed to the packet proxy plugins to allow packet manipulation within the callback
- **added** — Wifi module now reports the current channel in state
- **added** — Added net.sniffer.interface parameter to sniff from a different interface
- **changed** — Updated Docker image to newer Golang version
- **changed** — Refactored deprecated ioutil calls to io equivalents
- **fixed** — Print event data instead of the whole struct for unhandled events
- **fixed** — Various unit tests fixes for Windows
- **fixed** — Routing tables unit tests fix for Linux
- **fixed** — Gracefully handled packets that would crash gopacket
- **fixed** — Fixed net.sniff stats output for local packets flag
- **fixed** — Fixed JavaScript number conversion issues for backwards compatibility
- **removed** — Removed unused module
###### New Features
- 🚀 Increased unit tests coverage considerably.
- 🐳 Updated Docker image to newer Golang version.
- 📦 Queue handle is now passed to the packet proxy plugins to allow packet manipulation within the callback (fixes #1202).
- 📡 Wifi module now reports the current channel in state.
- 🐍 Added net.sniffer.interface parameter to sniff from a different interface.
###### Fixes
- 🔄 Print event data instead of the whole struct for unhandled events.
- 🛠️ Various unit tests fixes for Windows.
- 🐧 Routing tables unit tests fix for Linux.
- 🔄 Refactored deprecated `ioutil` calls to `io` equivalents.
- ✅ Removed unused module (ref #1201).
- ⚠️ Gracefully handled packets that would crash gopacket (fixes #1184).
- 🛡️ Fixed net.sniff stats output for local packets flag.
- 🔄 Fixed JavaScript number conversion issues for backwards compatibility.
###### Miscellaneous
- 📚 Added contributors to README.
- 🔄 Various small fixes or general refactoring that did not warrant individual comments, including version bump for golang.org/x/net.
- 🔄 Multiple updates and fixes to issue templates and configuration.
- 🔄 Bumped all dependencies to their latest versions.
This changelog was generated by [Changelog](http://github.com/evilsocket/changelog).
### v2.41.0
- Date: 2025-01-31
- Version: v2.41.0
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.41.0
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.41.0
- **added** — Introduce zerogod module for ZeroConf / Bonjour impersonation attacks
- **added** — Make api.rest return stdout data after executing a session command
- **added** — Add addSessionEvent function for DNS and HTTP proxy script environments
- **added** — Add removeEventListener built-in function
- **added** — Implement support for named tickers
- **changed** — Add TLS support to DNS proxy
- **changed** — Implement backwards-compatible DNS record conversion
- **changed** — Support RFC3597 generic/unknown record types when Rdata field is present
- **added** — Introduce blacklist and whitelist support logic
- **changed** — Allow wildcards in blacklist configurations
- **changed** — Enhance IPv6 detection logic
- **fixed** — Add nil check for interfaces to prevent crashes in IPv6 handling
- **changed** — Improve readability of debug logs
- **changed** — Print JavaScript property conversion errors for better error tracking
- **fixed** — Catch nil values in DNS records
- **fixed** — Prioritize longer and more explicit hostnames in DNS proxy
- **changed** — Directly embed UI assets and remove UI submodule
- **changed** — Improve backwards compatibility for getHandshakeFileFor
###### New Features
- **ZeroGod Module**: Introduced the `zerogod` module for ZeroConf / Bonjour impersonation attacks.
- **API Enhancements**: `api.rest` now returns stdout data after executing a session command.
- **Session Event Handling**: Added `addSessionEvent` function for both DNS and HTTP proxy script environments.
- **Built-in Functions**: Added `removeEventListener` function.
- **Named Tickers**: Implemented support for named tickers.
###### Improvements
- **DNS Proxy Enhancements**:
- Added TLS support.
- Implemented backwards-compatible DNS record conversion.
- Support for RFC3597 generic/unknown record types if the `Rdata` field is present.
- **Blacklist and Whitelist Support**: Introduced logic to support blacklists and whitelists.
- **Wildcard Blacklisting**: Allow wildcards in blacklist configurations.
- **IPv6 Improvements**:
- Enhanced detection logic.
- Added a nil check for interfaces to prevent crashes.
- **Logging & Debugging**:
- Improved readability of debug logs.
- JS property conversion errors are now printed for better error tracking.
###### Fixes
- **DNS Proxy Stability**:
- Catch nil values in DNS records.
- Prioritize longer and more explicit hostnames.
- **UI Asset Handling**:
- Directly embedded UI assets.
- Removed UI submodule.
- **Compatibility**:
- Improved backwards compatibility for `getHandshakeFileFor`.
- **Miscellaneous**:
- Various small fixes and refactorings.
###### Miscellaneous
- **Documentation**:
- Updated `README.md`.
- **Credits**:
- Acknowledged the `grandcat` package.
**Full Changelog**: https://github.com/bettercap/bettercap/compare/v2.40.0...v2.41.0
### v2.40.0
- Date: 2024-09-14
- Version: v2.40.0
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.40.0
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.40.0
### v2.4.0
- Date: 2024-09-13
- Version: v2.4.0
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.4.0
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.4.0
- **added** — Support for 29bit OBD2 identifiers
- **added** — Implemented can.obd2 builtin parser
- **added** — can.fuzz now supports an optional size argument
- **added** — Implemented can.dup and can.dump.inject to read a candump log file
- **added** — can.dump reader will now sleep for the correct amount of time
- **added** — Added new wifi cipher suites and auth types
- **added** — Added new wifi RSN parsing
- **added** — Added CAN to session json object
- **added** — Implemented wifi.bruteforce for linux
- **added** — Implemented wifi.bruteforce for darwin
- **added** — ble, can, hid and wifi modules will now set a custom prompt
- **added** — Implemented can.filter
- **added** — can.fuzz command
- **added** — gps.set to manually set/override gps coordinates
- **added** — History file location can now be set via BETTERCAP_HISTORY env var
- **added** — Implemented can.inject
- **added** — New can module for CAN-bus
- **added** — Embedded ui
- **changed** — can.fuzz now expects a hexadecimal frame id
- **changed** — WPA3 is now correctly identified and reported
- **fixed** — Added better debug logging for core.Exec
- **fixed** — Fixed address reload on api.rest
- **fixed** — Stop can.dump reader when can.recon is stopped
- **fixed** — Fixed a nil pointer dereference when wifi.show is executed before wifi.recon on
- **fixed** — Fixed deprecation warning on macOS native code
- **fixed** — Fixed handshakes filename if wifi.aggregate is false
- **fixed** — Expanding file path in file read api
- **fixed** — Initialize wifi module state correctly
- **fixed** — Do not allow wifi.recon if wifi.bruteforce is running
- **fixed** — Added p2p_disabled=1 for wifi.bruteforce on linux
- **fixed** — Bring interface down for mac.changer module
- **fixed** — Do not attempt mac lookup if gateway is empty
- **fixed** — Do not report a routing error if the interface is disconnected
- **fixed** — Make sure that wifi channels are unique and sorted
- **fixed** — Disable ble module for BSD
- **fixed** — Fixed verbose gousb logging
- **fixed** — Using proper v2 package suffix
- **fixed** — Fixed device index use for BLE module
- **fixed** — Added packet_proxy_freebsd
- **removed** — Removed armhf build
75478a2 misc: small fix or general refactoring i did not bother commenting
5bc9dd9 fix: added better debug logging for core.Exec (fixes #1125)
97b4dcb new: added support for 29bit obd2 identifiers
c3999d6 new: implemented can.obd2 builtin parser
cf6fba6 chore: updated ui version
3775295 chore: updated ui submodule
b2035da fix: fixed address reload on api.rest
00c5b2c chore: updated ui submodule
b1ac9cd chore: updated ui submodule
5786ffd chore: updated ui submodule
72afa07 new: can.fuzz now supports an optional size argument (thanks musafir)
1c56622 fix: can.fuzz now expects an hexadecimal frame id (thanks musafir)
4c75995 fix: stop can.dump reader when can.recon is stopped
c4c7b8c chore: updated ui submodule
bb847fc new: can.dump reader will now sleep for the correct amount of time
7702207 new: implemented can.dup and can.dump.inject to read a candump log file
840f819 refact: refactored can dbc logic
31d93e7 new: added new wifi cipher suites and auth types
f0126c2 new: added new wifi RSN parsing
26b2c30 fix: fixed a nil pointer dereference when wifi.show is executed before wifi.recon on
575022f fix: fixed deprecation warning on macOS native code
a4c99df chore: updated ui
81e18d2 chore: updated ui
81adcc9 fix: fixed handshakes filename if wifi.aggregate is false
7d85483 fix: expanding file path in file read api
ac2d333 fix: initialize wifi module state correctly
9f61ec7 chore: fixed submodule url for github workflow
f3132ce chore: updated git workflows to init submodules
d8aeecb new: embedded ui
3ec7b01 new: added CAN to session json object
0202028 fix: do not allow wifi.recon if wifi.bruteforce is running
ef9a3ef misc: small fix or general refactoring i did not bother commenting
5cc7260 misc: small fix or general refactoring i did not bother commenting
77ae56c fix: added p2p_disabled=1 for wifi.bruteforce on linux (ref #1075)
1b91eb3 new: implemented wifi.bruteforce for linux (closes #1075)
d8e1128 fix: bring interface down for mac.changer module
08da91e new: implemented wifi.bruteforce for darwin (ref #1075)
b0d56e4 fix: do not attempt mac lookup if gateway is empty
23e074b fix: do not report a routing error if the interface is disconnected
2d03782 fix: make sure that wifi channels are unique and sorted
8d8af63 chore: added WPA3 to readme
6a6e942 chore: added github to funding
0ceb938 fix: WPA3 is now correcly identified and reported (fixes #1098)
6282fe3 new: ble, can, hid and wifi modules will now set a custom prompt (closes #1117)
d9a91d3 new: implemented can.filter
e45c9cc docs: added can-bus to readme
cc66b64 chore: removed unused files
c5d2022 fix: fixed github action macOS architecture and Windows build script
d733381 misc: small fix or general refactoring i did not bother commenting
e1e8a0b fix: fixed windows build via msys2/setup-msys2@v2
9266ee9 misc: small fix or general refactoring i did not bother commenting
13cab7b fix: fixed binaries building action
f619265 misc: small fix or general refactoring i did not bother commenting
72b1450 fix: setting PKG_CONFIG_PATH on windows builds
235017c chore: removed armhf build
86e87ab fix: attempt to fix tests on windows
cdefa3c fix: attempt to fix tests on windows
ee944d9 fix: attempt to fix tests on windows
fcf285a chore: more veborse errors in environment tests
7f22425 fix: fixed compilation on windows
1df51fd fix: fixed windows test failure in environment_test.go
afdc68f chore: refactored github workflows into separate files
9ab2e13 chore: refactored github workflows into separate files
6f1920f new: can.fuzz command
69744e6 fix: disable ble module for BSD (fixes #1115)
7636ca2 new: gps.set to manually set/override gps coordinates (closes #915)
9d5c38c fix: fixed verbose gousb logging (fixes #969)
2659a55 fix: using proper v2 package suffix (fixes #727)
76e136a fix: fixed device index use for BLE module (fixes #994)
93de427 new: history file location can now be set via BETTERCAP_HISTORY env var (closes #6
_[Truncated at 4000 characters — full notes: https://github.com/bettercap/bettercap/releases/tag/v2.4.0]_
### v2.33.0
- Date: 2024-08-09
- Version: v2.33.0
- Original notes: https://github.com/bettercap/bettercap/releases/tag/v2.33.0
- Permalink: https://whatsnew.fyi/product/bettercap/releases/v2.33.0
- **fixed** — Replaced nfqueue package
- **changed** — Replaced Travis with GitHub Actions
- **added** — Added GitHub workflows
- **fixed** — Added cover.out to .gitignore
- **fixed** — If interface name has not been provided, avoid default to a tun interface
- **fixed** — Updated gatt library to include fix for BLE-related issues
- **fixed** — Workaround for PCAP_SET_RFMON issue
- **fixed** — Every wifi frame injection operation on macOS will print an error
- **added** — Updated mac vendor lookup with IEEE datasets
- **fixed** — Fixed wifi support on macOS
- **added** — Updated golang.org/x/net for Go 1.23 compatibility
- **added** — Pushed new graph experimental module
- **fixed** — Close cpu profile
- **fixed** — Allow clearing ndp.spoof.neighbour to disable neighbor advertisements
- **added** — New ndp.spoof.router_lifetime option
- **added** — Switching to github.com/stratoberry/go-gpsd
- **fixed** — Give priority to iwlist as iw gives unsupported frequencies
- **fixed** — Filesystem related scripting functions will now resolve paths containing special characters
- **added** — Added fileExists function to the session scripting runtime
- **added** — Added loadJSON and saveJSON functions to the session scripting runtime
##### What's Changed
780032b misc: small fix or general refactoring i did not bother commenting
41fa4cd new: using simpler release file
107c8fd fix: fixed docker build
856c0d5 misc: small fix or general refactoring i did not bother commenting
0343e00 new: docker workflow
d68da21 fix: dockerfile fixes
7605f4a fix: replaced nfqueue package (fixes #1070)
dc621f5 misc: small fix or general refactoring i did not bother commenting
3e16c6d new: replaced travis with github actions (closes #1114)
dd71378 misc: small fix or general refactoring i did not bother commenting
5d2c173 misc: small fix or general refactoring i did not bother commenting
632d703 new: added github workflows (ref #1114)
8b24723 fix: added cover.out to .gitignore
9abf7c8 fix: if interface name has not been provided, avoid default to a tun interface
7beb27c fix: updated gatt library to include fix for #1095
b12ba79 fix: workaround for PCAP_SET_RFMON issue (fixes #819, https://github.com/the-tcpdump-group/libpcap/issues/1041, https://github.com/the-tcpdump-group/libpcap/issues/1033)
06623dd Merge pull request #1085 from SkyperTHC/master
2499d51 fix: every wifi frame injection operation on macOS will print an error (ref #448)
5858743 new: updated mac vendor lookup with IEEE datasets
0dc5f66 fix: fixed wifi support on macOS (fixes pr #1100, fixes #1090, fixes #1076)
02fa241 misc: small fix or general refactoring i did not bother commenting
c2ab5f4 reverted pr #1100 due to instability
7371a85 Merge pull request #1107 from stefanb/go1.23-support
9b6694f mereg
6951fbb fix: fixes cgo newline
9bf1474 Merge pull request #1074 from konradh/ndp-spoof-unset-neighbour
9cd1609 Merge pull request #1073 from konradh/ndp-spoof-router-lifetime
3df89fb Merge pull request #1100 from loks0n/fix-macos
74647db Update README.md
474215e Bump golang.org/x/net for Go 1.23 compatibility
826f13e new: pushed new graph experimental module
ca2e257 Merge pull request #1087 from testwill/file_close
7182222 fix: macos
043bd45 fix: close cpu profile
a950d3b sslstrip fix
5af1be3 fix: allow clearing ndp.spoof.neighbour to disable neighbor advertisements
4dc7bae new: new ndp.spoof.router_lifetime option
924ff57 Merge pull request #1005 from elleuc4/route_headings_fix
ee35550 Merge pull request #1008 from jansramek/master
76a7820 Merge pull request #1024 from half-duplex/ndp-ban
bdc389e Merge pull request #1023 from half-duplex/ndp-spoof-ip-fmt
32d997e Merge pull request #1036 from ttdennis/master
786dacf Fix BLE name assignment
cdd483e ndp.spoof: add ndp.ban
27bae1c ndp.spoof: fix format string
e5f8c16 fix: enable both ipv4 and ipv6 forwarding
58ca59b new: switching to github.com/stratoberry/go-gpsd (closes #938)
8e4a000 Update getting of possible channels (darwin)
44e2420 Skip line if no route headings found yet
24a5dfe Merge pull request #988 from tranzmatt/master
3f154cc Fix go/alpine Docker version to correct build breakage
e224eea fix: give priority to iwlist as iw gives unsupported frequencies (fixes #881)
4f3f55f fix: fs related scripting functions will now resolve paths containing special characters
a4fb94c Merge branch 'master' of github.com:bettercap/bettercap
11d9606 new: added fileExists function to the session scripting runtime
c81db63 Merge pull request #956 from BenGardiner/ipv6_anyproxy_fixes
eaf2b96 revert removal of default any.proxy.dst_address ipv4 address
2837108 new: added saveJSON function to the session scripting runtime
eff8135 new: added loadJSON function to the session scripting runtime
22de9d3 new: added session.stopped event (and fixed session.started event propagation)
fd160bf Merge pull request #953 from firefart/err
628c0b7 ndp.spoof: use validator for neighbour parameter, print targets on start, complain when a MAC can't be found (UDP thing doesn't always work)
2bc3d87 use ip6tables for any_proxy to ipv6 addresses
68924c3 do not swallow err on settxpower
ed4239f Merge pull request #913 from PeterDaveHello/I
_[Truncated at 4000 characters — full notes: https://github.com/bettercap/bettercap/releases/tag/v2.33.0]_