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>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>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>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 it possible to get the Dash Button to work without sending my WIFI-data to Amazon?</p>
<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
<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>
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.
<p>Hi. Thanks for the tutorial! Would it be possible to drop button presses into a SQL database? I work in an IT department and we want to see precisely how much time we spend on each job, but we work at multiple computers. Logging a button push for starting and stopping a timer at each workstation would work perfectly. I was going to look into coding it myself but it's been years since I did that and well, it looks like this is most of the way there! </p>
Hey there! You're very welcome! While I'm not familiar with database interfaces, if you made a small script that could write an entry to your SQL database every time it ram, my daemon would be able to execute it upon every button press. Hope that helps!&nbsp;
<p>Unfortunately the boss will want a self contained utility, not a 3rd party app that uses scripts. He'll see that has messy and incomplete. Would it be possible to obtain your source code?</p>
<p>If you're still interested, source has been posted! It's a very simple concept, messily executed :P I'm sure you can do better! </p>
<p>Found the source, not sure why I missed it before. Maybe will look into SQL linkage. Thanks again!</p>
<p>Finally got it! Never did get AmazonButton_Discovery.exe to work but I used <em>Who Is On My WiFi </em>to get the IP for the button. Then AmazonButton_v2 works fine. I used it to execute a Python script, Send_Text.py to send me a Text. Here's the script:</p><p>import smtplib<br>server = smtplib.SMTP( &quot;smtp.gmail.com&quot;, 587 )<br>server.ehlo()<br>server.starttls()<br>server.login( 'TomDunlap@xMail.com', 'mailpass' )<br>server.sendmail( '&lt;Tom&gt;', '&lt;**********@vtext.com&gt;', 'You have Snail-Mail in the box' )</p><p>Now I just have to build the circuit and install it on my mailbox.</p><p>Looking at this way: http://imgur.com/a/Xz9Iu</p>
<p>Hmmm I think the issue of my discover program is that it doesn't take into account possible new mac addresses that amazon is using for their buttons. My program ARPs around to find the dash button and checks the mac against a small built in list known to be associated with Amazon. Can you provide me the first half of your button's mac so I can integrate it? <br><br>Thanks for that python script! It looks awesome! I may have to borrow it! </p>
<p>Sure, it's 192.168.xxx.xxx</p>
<p>Check out the newer version I just uploaded! It supports a lot more MAC address now! </p>
<p>BTW, I'm happy you figured out how to use the actual button server! If you're proficient enough in python, you might wanna use the code listed in your link, it's a much smarter implementation than mine (less network traffic) :P the only benefit of my program is that you don't need to have python or any other environment installed, but then again, there are other options for that haha.</p>
<p>The only problem with that Python code in the link is that I could never get &quot;scapy&quot; to work. I may give it another try though.</p>
<p>Could you be able to turn this into a real business? Could you find a source for the Dash button and then auto-program it through a cloud application and then license that application and the Dash devices to retailers? I can think of a million ways to monetarily optimize this simple concept! you in for being a part of it?</p>
<p>I didn't actually read the EULA that came with the Dash buttons but I feel like it would be against the TOS :P <br><br>Currently, given the amount of sophistication in the Dash button, I believe Amazon is currently losing money on every button sold. Since my instructable isn't really a thing yet, they don't care that a few people are using it different than intended. However it's conceivable that if this instructable were to gain traction, they could change the way their button would operate and it would break compatibility with my program. <br><br>Even though there are still ways to exploit it's functionality like this, there would be no easy steady supply of buttons as it's currently offered one type of button per Amazon prime customer. Since I believe they're losing money on every button, I doubt they'd offer it in bulk. </p>

About This Instructable

104,394views

216favorites

License:

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