Provable fairness is one of the building blocks of modern online gambling. Many Bitcoin casinos have popped up that use “provably fair” number generation algorithms. These algorithms guarantee that the numbers generated have not been influenced by either party in a way that is favorable for them. For a more detailed explanation of these systems, read this blog post. Recently, I have been introduced to the Counter-Strike: Global Offensive gambling scene. These online casinos have sprouted up from a legal loophole. Apparently, gambling with virtual items (CS:GO skins) that hold value on a market is not illegal. However, these items can be quickly traded for cash. Many of these CS:GO gambling sites claim to be provably fair. I will be[…]

This post is a basic primer on how provably fair betting websites and number generation algorithms work. It contains helpful background information for some of my future posts. Words to Know Provably fair number generation algorithms are built around cryptographic hashes. Provably fair systems rely on these hash functions taking input data (the plaintext or message) and outputting a representation of that data that can not be reversed, but is the same every time (the hash or message digest). These hash functions can be broken by brute force if the plaintext is is short enough. Therefore, in order for a hash to be secure, the plaintext must be long enough and complex enough so that the hash can not be broken[…]

A determined hacker can expose the origin IP address of a website behind a reverse proxy service using many methods. One of the methods I have seen used against me is scanning the entire IPv4 address space and making an HTTP request to every IP address with the Host header set to my domain. If the origin server responds to this request with the same page that is served over CloudFlare, the attacker will know that they have found the correct origin server. I wrote this script to generate an NGINX configuration file that will only allow access to a website from CloudFlare IP addresses. Although using the configuration that this script generates will make it harder to find your site’s[…]

Filesystem Information While searching through the partial filesystem I extracted from the package updates, I found /etc/dev.tar which appears to be a skeleton of the dev filesystem. We can infer several things about the partition layout on the internal MMC with this information. View the code on Gist. We now know that the internal MMC has 8 partitions and we know the names of all of those partitions. Next, in the open source code released by Amazon as required by the GPL, we can find the uBoot options that load the operating system. View the code on Gist. The environment variable ${root} is set in u-boot/board/ti/lab126/evm.c. View the code on Gist. This will set ${root} to /dev/mmcblk1p%d where %d is the index of[…]

Credit: Fmorrison (CC-BY-SA-3.0)

Update: You can view Ike Clinton’s paper that is mentioned in this article here. It is the basis for most of this research so far. There is also a Slack channel and wiki about this subject. The PCBs I ordered came in but I haven’t had time to solder the components on or test it out. A few people in the Slack channel have gotten their own code running on the Echo, so it is possible! Introduction I’ve been tentatively looking around for a root exploit or method for the Amazon Echo (not a referral link) since I got mine exactly a year ago. I love what it does and that it’s skills are being expanded every day by the Alexa[…]

Recently, a close friend sent me a link to this blog post. The blog post goes over some details about exporting package relationships for Ubuntu in a format that can be read by graph generating software. The blog post was made in early 2013, so I decided to try it myself and add a few things. I made some slight modifications to his code, which can be found below. The original blog post only contained image renderings. I imported the data into Gephi and produced several SVG renderings of the graph. I then overlayed the vector graphics onto a blank map using the Google Maps API. There are a few renderings with different graph parameters to choose from. The big dot at the[…]