
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
node-dash-button-mon
Advanced tools
Uses a WiFi interface in monitor mode to listen to dash button presses.
node-dash-button-mon is a library for detecting Amazon Dash button presses.
Note: If your WiFi adapter can't do monitor mode, use this project by hortinstein instead.
node-dash-button-mon allows you to detect dash presses by listening to WiFi frames via a wireless adapter in monitor mode (using tshark). This generally results in a faster response time since those can be picked up before the button fully connects to your wireless network.
I've noticed that from time to time tshark won't pick up a button press (the MAC address just never shows up in the output). Because of this, it'll use the ARP method as a fallback. You can only use both methods if you have two network adapters (ethernet + wifi, or 2x wifi). This is because a wireless adapter in monitor mode can't listen to ARP requests since it needs to be connected to your network.
Credit to hortinstein's node-dash-button project for the ARP detection method.
Not all wireless adapters can do monitor mode, so make sure yours can.
I was able to get the built-in wireless adapter on the Raspberry Pi 3 into monitor mode using this project. Once the firmware was installed, I put the adapter in Monitor mode using nexutil -m.
Mode should say "Monitor" in iwconfig
pi@raspberrypi:~ $ iwconfig
wlan0 IEEE 802.11 Mode:Monitor Frequency:2.442 GHz Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
apt install tshark
apt install libpcap-dev
npm install node-dash-button-mon
let dash = require('node-dash-button-mon');
// Configuration
dash.config.iface.tshark = "wlan0"; // wifi adapter in monitor mode
dash.config.iface.arp = "eth0"; // ethernet adapter (can't be the same as the wifi adapter in monitor mode)
dash.config.timeout = 8000; // Don't run more than once in 8 seconds
let PotatoButton = {
name: "Potato";
mac: "8c:89:a5:1c:70:72"
}
// call AddButton for any buttons you have
dash.AddButton(PotatoButton.name, PotatoButton.mac, (button) => {
console.log(`${button.name} button pressed!`);
console.log(`MAC: ${button.mac}`);
});
dash.Listen();
dash.config.iface.tshark
string (default: 'wlan0') Wireless adapter in monitor mode to use with tshark
dash.config.iface.arp
string (default: 'eth0') Network adapter to use for listening to ARP requests (can't be the same as tshark adapter)
dash.config.timeout
int (default: 8000): Timeout between button presses (debounces the callback functions)
dash.config.debug
bool (default: false): Show additional console logs
dash.config.listeners.arp
bool (default: true): Listen to ARP requests
dash.config.listeners.tshark
bool (default: true): Use tshark to listen to wifi frames
Make sure you can run tshark from the console:
tshark -i wlan0 -l -T fields -e wlan.sa
Pull requests welcome!
FAQs
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.