loading

On March 31st, 2015, Amazon launched the Amazon Dash button in an attempt to change the paradigm by which we regularly purchase consumables.

August 10th, Ted Benson publishes details for a fairly involved Amazon button hack on medium.com

August 26th , A coworker brings one in to work, throws it on my desk, and I explode in excitement. Unaware of what it was, and the work done by Ted, I set foot on writing my own exploit.

September 1st, With a successful working exploit in my toolbox, I finished writing a pairing procedure for the button and host computer as well as implemented a rudimentary ability to handle multiple buttons with ease.

tldr;

Wanna use your Amazon Dash Button for things other than buying stuff? Check out this program that will change your world!

Update 7/16/2016
Daemon Version 4.0 is now up and running! As per the old update, this ible will not be updated to reflect the new features. Visit the GitHub for instructions on how to use the latest features!
Also, Windows Defender flags my program for some reason. False positive obviously. A report has already been submitted to Microsoft for review. If you don't trust the EXE, review and run directly from the source;) that's the beauty of open source software!

Update 7/3/2016:
GitHub files have been updated, program is now open source under the Creative Commons License, newer daemon and Discovery program available! A few things have changed and the program should work with all of the newer buttons, but I've decided not to update this ible yet. Gonna make some bigger changes and write a second ible for it!

Step 1: Requirements

What you will need:

  • An Amazon Dash Button (any product will do)
  • A Windows PC
    • Because I can't be bothered to program anything else
  • An Android or iOS smartphone or computer with Wifi
    • Required to join the button to wireless
  • A home or work wireless network
    • Class C subnet or smaller (ignore this if you're setting it up at home)
  • The desire to subvert Amazon
  • An app or file to open on said PC
    • A picture!
    • A program! (calc.exe lol)
    • A URL (pandora.com !)
    • Endless possibilities!
<p>Hi there, Thank you for sharing this! I'm a noob and trying to see if I can set this up as a &quot;silent doorbell&quot; for my networking class, so I apologize if I'm missing something completely obvious. My question is in regards to part 2, when using a PC to set up the dash button. I am able to see the Amazon ConfigureMe in the wifi options and even connect to it. However, I'm confused by &quot;Follow the instructions to setup wifi, and then your button's light should be off.&quot; When I click on the Amazon ConfigureMe, my computer connects, but does nothing else and the dash button continues to blink blue. I was wondering if you could get into more detail about how to set up the dash button using a PC. Thanks again, I appreciate you sharing this!</p>
<p>Hi! Sorry for the late reply. If you don't wish to use a mobile device to setup the Amazon button, the process is a bit more involved. <br><br>Since you're in a networking class, I assume you're familiar with finding and navigating to a default gateway? Connect to the Amazon dash button with your PC, Find and http to the default gateway, and via the built in webserver you can setup the Wifi settings for the button. <br><br>I strongly suggest you setup the button with the mobile app and associate it with your Amazon account though. I realized if you do that, and you push the button at least once (Even if you didn't &quot;select a product&quot;) the next time you buy something from Amazon normally (not with the button) you will recieve a $5 credit! Doesn't matter what you buy!!! </p>
<p>I tried to configure the button using a computer w/ Wi-Fi by connecting to the &quot;Amazon ConfigureMe&quot; network and then browsing to 192.168.0.1 (the button's IP), but all it shows me is the serial #, MAC Address and firmware version.... I don't see anyway to enable Wi-Fi on the button. What am I missing? thanks</p>
<p>If you want to setup the button on the wifi that you have, just browse this command:<br><a href="http://192.168.0.1/?amzn_ssid=SPECIFIED_SSID&amzn_pw=SPECIFIED_PASSWORD" rel="nofollow">http://192.168.0.1/?amzn_ssid=SPECIFIED_SSID&amp;amzn_pw=SPECIFIED_PASSWORD</a> and the dashbutton will registered on that wifi connection with that password</p>
<p>Unfortunately I believe at some point Amazon has changed the firmware on their buttons and no longer allows the buttons to setup via their built in web server. </p>
<p>can i send a post using dashbutton directly to an arduino D1 mini??</p>
<p>post? like a POST request? Unfortunately you wont be able to go directly from dash button to arduino, but if you like, you could create a small script to send your POST request and activate it with this program! </p>
<p>Hi, finally i've found the solution to my problem. Using a script on D1mini that intercept the ARP packet, it detect any time the dashbutton is pressed, than i can make a post directly from arduino. The dashbutton is only used to send an &quot;hello world&quot; to the net where the arduino is listen. :)<br>http://qiita.com/7of9/items/9bcdfa8223b6ec791a5c look at here... </p>
<p>Thank you so much for this! I made a youtube video in hopes that it helps others! Thank you so much for sharing this fiveseven808! </p><p><a href="https://www.youtube.com/dashboard?o=U" rel="nofollow">https://www.youtube.com/dashboard?o=U</a></p>
<p>Glad you found a use for it! You're very welcome! </p><p>Unfortunately your link doesn't seem to work though. Thanks! </p>
https://www.youtube.com/watch?v=23gYHNKXG1E <br><br>Whoops!
<p>Hey people, any hacking experts here?</p><p>1) Can you make a mic work after set up once again - on each pressing of the button?</p><p>2) Can you send whats a mic is taking in over the same wifi instead of a simple mac address call?</p>
<p>Hey there, unfortunately there is no way to directly access the microphone on the device without building and designing custom firmware. Unfortunately I am not aware of any custom firmware that has access to the wireless bits though. </p>
<p>Hey, I have just got this running on a UK version of the Amazon Dash. It runs the batch file on my server perfectly! thank you - however, an order is still made on Amazon? have they updated the Amazon dash software recently?</p>
<p>I fixed this by blocking the Amazon Dash IP on my router! </p>
<p>Glad you got it working! Thanks for using this program! </p>
<p>Thanks for this! My button toggles play for my kitchen J. River Media Center zone.</p><p>Do you have instructions on how to use the Command Line Arguments to get running automatically when the computer boots? Thanks.</p>
<p>I figured it out. I did this and put it in a batch file:</p><p>start F:/Amazon-Dash/Button-1/AmazonButton_v4.0.exe 192.168.1.184 &quot;D:/batch files/Play-House.bat&quot; &quot;Play House Zone&quot;</p>
<p>Glad you figured it out! Thanks for using this! </p>
<p>Is it possible to get the Dash Button to work without sending my WIFI-data to Amazon?</p>
<p>If you have the older dash button versions, you would be able to web into the dash button itself (during pairing mode) and enter your credentials directly! However I am under the impression that this has changed in the recent past and is no longer an option. </p>
<p>Cool! We've got an internet button of our own - MESH Button!</p>
<p>My button seems to &quot;Deactivate&quot; after about 24 hours??? It didn't show up when I ran the discovery program, so I ran ipconfig, went to my routers website, found the button's IP under connected devices, and entered that IP. Did that cause an error? Or is it because its a new button version (JK29LP)? It also seems to be a slightly different IP too, every time it deactivates.</p><p>Awesome Instructable!</p>
Darn... sounds like you need to make a DHCP reservation in your router or DHCP server. Lemme know if you need help with that and I'll try and point you in the right direction. Thanks!
<p>Is there any similar configuration file i can run on my raspi? I don't have any pc running the whole day and i wanted to use it as a door bell :)</p>
https://medium.com/@edwardbenson/how-i-hacked-amazon-s-5-wifi-button-to-track-baby-data-794214b0bdd8#.xw3b2iljd<br><br>I'll be porting my app to python too so I can support other OSes sometime later :D
Been having a lot of trouble with discovery lately. Both new and old model buttons... Just can't seem to find them. <br><br>Thanks for the 4.0 update. It's a lot easier to change functions now. <br><br>Also, any chance to rewrite the work to use MAC address rather than ip? I've used up all my dhcp reservations and the changing up makes this a challenge.
<p>Hmm I can pick up the old buttons just fine. Is it affecting the operation of the program? like, are you having missed button presses? IIRC I think I changed the response timeout in the latest version of the program. If you have enough devices on your network to run out of reservations you may also have enough traffic that the ping packets from my program get lost/dropped/stalled. Let me know if things get better when less devices are on the network. If so, I'll try to lengthen the timeout (or make an INI editable variable). <br><br>The way the program works now, is that the discovery program pings everything in the subnet and then looks at the ARP table to find the amazon button MACs. After it find a button and it's associated IP, it sends out a continuous ping for that IP checking for a response. <br><br>The language I'm using (and the tools that windows comes with) does not lend itself to detecting ARP probes without other software. This program and instructable was written to get people up and running with minimal effort (and software dependency installs) and this was the way I chose to do it. However there exists a python script out there using the scapy module which allows packet manipulation and does exactly what you describe (checks for ARP probes from specific MACs)<br><a href="https://medium.com/@edwardbenson/how-i-hacked-amazon-s-5-wifi-button-to-track-baby-data-794214b0bdd8#.blu77bmue" rel="nofollow">https://medium.com/@edwardbenson/how-i-hacked-amaz...</a></p><p>I don't like the idea of telling people to install a bunch of software just for a single function (python, required modules for gui and packet capture) :P so I won't continue this person's work, however I encourage you to do so and create an instructable of your own :) It would probably be more reliable than my program! </p>
<p>Discovery tool still wasn't picking up the buttons. I ended up using the fing app on my iPhone to find the MAC and IP address. Then used the daemon to connect them. It worked out well. I now have 5 buttons (new and old versions) running on the system.</p><p>I also manipulated my reservations to free up some slots for these guys.</p><p>Now the harder task... convince my wife I'm not crazy... She's not buying into the whole home automation bit.</p><p>Thanks for your work on this. I hope you will continue to develop it further.</p>
<p>I can't figure out how to make it go strictly to a url. I have an internet shortcut on my desktop, and the link goes to the maker channel at IFTTT. I went through the AmazonButtonDiscovery programs, then chose the internet shortcut on my desktop. It seems to have done something, but not what I want. When I click the dash button, I get a popup that says:</p><p>Error Failed attempt to launch program or document:</p><p>Action:</p><p>&lt;C:\Users\name\AppData\Local\Microsoft\Windows\INetCache\IE\VXNYFEXB\({FTTT Maker Channel Key}</p><p>Params: &lt;&gt;</p><p>Specifically: The system cannot find the file specified</p><p>Line#</p><p>065: Run,%ptorun%</p><p>The current thread will exit</p>
<p>I think my issue is that I am trying to use this without an 'always on' web server like a Raspberry Pi. Is it possible to use a Dash with the IFTTT Maker Channel without a web server? If it's possible to use a Dash button to order items from the web, it should be possible to simply ping a Maker link. What's wrong with that line of thinking? At this point, the only solution is to either buy a Raspberry Pi to use as a server or buy one of Amazon's IoT buttons, which aren't released as of yet (https://www.amazon.com/AWS-IoT-Button-Limited-Programmable/dp/B01C7WE5WM).</p>
Looking at your initial post, it looks like your shortcut is in your internet cache, and not on your desktop. The button has worked fine with shortcuts for me in the past. Let me know if this is not the case. <br><br>It is not possible to use the dash for any purpose other than ordering specific items from Amazon without an always on server. <br><br>You are correct, in a sense that &quot;Amazon&quot; can do whatever they want with their button. They can make it IFTTT compatible if they &quot;want&quot; however, seeing as the AWS IoT button is $20, you can see that they are taking a huge loss selling the buttons at $5/$1/$free. They'll do whatever they can to prevent people from using it in an unintended way, because every button sold and not used to buy their products is a business loss for them. <br><br>This instructable is a &quot;hack&quot; in a sense that it allows you to use the dash button in a way unintended (and detrimental even!) to the manufacturers and sellers of this product.
<p>Is there any way to change what happens when it's pressed without re-configuring the button in the program every time?</p>
<p>Check out the latest release! Should be what you're looking for. <br>https://github.com/fiveseven808/AmazonDashButtonHack</p>
<p>If you run the amazonbutton_v3.3.exe, you'll be able use the command prompt and the button's IP to launch the daemon without having to re-discover it. I'm thinking about implementing a GUI type configuration in the daemon itself before i write a full on button manager though, so sit tight :D </p>
<p>I got discovery of the IP address ok, but it doesn't want to open a file. I get the error: Failed attempt to launch program or document: Specifically: The system cannot find the file specified:</p><p>Line# 122: Run,%DaemonCmd%</p><p>Any idea what the issue is? permissions of some sort?</p>
<p>That's pretty strange... When you extracted the zip file, both EXEs are in the same directory, right? </p>
<p>I finally figured out you needed both exe's to run this right. For some reason windows defender is throwing up on some potential viruses with this running. I'll post back when my virus scan completes.</p>
<p>Windows Defender flags my program for some reason. False positive obviously. A report has already been submitted to Microsoft for review.<br><br>If you don't trust the EXE, review and run directly from the script ;) that's the beauty of open source software! </p>
<p>Running several buttons now, including the new model. All seem to be working correctly. Thanks for the continued work. I look forward to seeing the next generation.</p>
<p>Glad to hear you're up and running! Let me know if there's anything specific I can do to improve the program! </p>
Is there an update for this to allow for multiple buttons to be run?
If all goes well in the next few days, I may rewrite the program! <br><br>I'm currently playing around with the Philips Hue system ;)
<p>Cool. That would be awesome. Also, if you could comment more about how to change the target app without having to go through the whole set-up again, I'd appreciate it. As I add buttons, I may want to rearrange the programming. Since I will already know the IP address of the button, I just need to know how to re-direct the button without having to run the discovery tool again.THANKS!</p>
<p>Hey there! I don't know if it's too late to reply but the program now handles multiple buttons! It's the same type of interface when discovering the buttons unfortunately, but it now handles multiple buttons much more gracefully! I have 5 buttons running now! :)<br><br>Double click on the other EXE (not the Discovery one) and it should pop up a box detailing how to run the Daemon if you already know the IP. Sorry I didn't reply sooner! </p>
<p>Very useful script. Thank you for your contribution. In order to support multiple buttons, do you simply run multiple instances of the program or can you pass multiple IP addresses and programs as arguments (ie. 192.168.xxx.xxx prog1.exe &amp;&amp; 192.168.xxx.xxn prog2.exe... etc.)?</p>
<p>Thanks! Glad you like it! Unfortunately you can't pass multiple IPs to the program yet, however the program supports being run multiple times and will spawn off new processes. Open up the non discovery EXE to get more info. </p><p>Enjoy! </p>
<p>Thanks for the update. I've ordered several buttons and will give this a try as soon as they come in.</p>
<p>Is there a way to make it work if I have 10 series ip address?</p>
The discovery program should automatically detect and scan your subnet, but will only scan up 10.*.*.1-254, hence the class C requirement. <br><br>If you can do DHCP reservation, you can assign your button to a reserved IP and use the daemon manually (open it to learn the commands). If however you have VLANs or other subnetting done on your network you will need to ensure that packets can reach from your server to wherever the button ends up.

About This Instructable

112,519views

225favorites

License:

More by fiveseven808:Amazon Dash Button Hack Windows 10 on your HP Stream 7!  Monitor Soundbar to Bluetooth Upcycle! 
Add instructable to: