# 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]_