Close

Does this project spark your interest?

Become a member to follow this project and don't miss any updates

2014 DEFCON Hat

What is that on your head?

This project was created on 07/25/2014 and last updated 3 months ago.

Description
I'll be bringing a little something special to DEFCON this year. Hack my hat to get on the scoreboard. Well, assuming I can finish the build in time and convince TSA to let me carry it on the plane ;-D
Details

This quick selfie shows the hat scrolling "Hackaday" and "WS2812". I have completed the hardware and will fill in the build-logs below as time permits.

The project is more than just the display. It's a hacking challenge for the attendees of DEFCON. Inside is a WiFi router. Hack in the access point and try to load any webpage. You'll see the rules of the game listed in your browers. If you can crack the any of the password hashes you can leave your alias for the scoreboard and push your own messages to the hat. Are you up to the challenge? See you in Las Vegas August 7-10, 2014!

The display uses the Adafruit Arduino Neopixel Library to address the WS2812b pixels.

Components
  • 1 × 5m strip WS2812b (bare) Cut in 7 strips of 32 pixels
  • 1 × Arduino Duemilanove
  • 7 × 1.2k resistors
  • 7 × 1000uF Electrolytic Capacitors
  • 2 × USB A to B Cable Connectors and Accessories / Telecom and Datacom (Modular) Connectors
  • 1 × Micro-USB cable
  • 1 × TP-Link WR703N WiFi router
  • 1 × Single row pin headers
  • 1 × Stovepipe hat As tall as you can find
  • 1 × Opaque Black Tights

See all components

Project logs
  • Generating the passwords

    3 months ago • 0 comments

    I wanted the passwords to be easy enough to crack in an hour or so, but difficult enough that one person couldn't own the entire scoreboard before others had a chance to try.

    After testing out dictionary passwords I decided they were way too weak to meet my goals. It seemed I could crack them in a matter of minutes. The next option was to work on a set of random passwords that had a low enough complexity that they could be cracked with brute force. Here's the python script I used to generate these passwords:

    https://gist.github.com/szczys/16d1a7f74562df77bcde

    It randomly generates passwords 5-7 characters long using different combinations of complexity. I limited to just lower case, lower case with digits, lower case with digits and some punctuation, and all letters with digits and some punctuation. Here are the hashes that were present on the "Dune" edition of the hat I had at DEFCON.

    $1$k1A.oEfd$YJtFsXZNn1Zq34vEldnTv.

    $1$T32VFNwS$7kZpnNYHXzNV07KJ3m6hZ/

    $1$q1Ua5jBW$IWSZqSRK3kvnL/4Krm6xm.

    $1$FBvAZ0i2$G7H1uk3rHSI0zKzw7myeR1

    $1$jSGzFyds$78CbA09m6YgEdSUVEjOcd1

    $1$rrV7HIPm$MVFv95EK.f7UUomZMCaeD0

    $1$Fl/KNPPm$sbdJJL3UMTrppWeOaCiaw/

    $1$pRCHtYeD$DQA28mWfd/zKW2DPRLl7Z.

    $1$UFYgJKaC$qytApbTJUCpmtnfjXBrVE1

    $1$BCJ68oKP$K9T7oVTfapcb9EX34NyD0/

    $1$pnn6bdKK$ncjpe13la8pyRmtPd5v531

    $1$M8cX97wv$Ztjim7ibK4c0IJiwTRPIk1

    $1$j/9TWSHL$Ph3yyMic/OqdeaTpJ86PY.

    $1$m3O9.lgC$JxBr7Bcwz0PBAYaN6TSAB0

    $1$aphP39AX$k3B6qMip/J7ewB1roqj2Y/

    $1$Mq/swjWv$LCHZziYsMJjKFZV3Ab6jl0

    $1$JvBpbitq$fHo3UMkBQ3cTKwnBFbWEn1

    $1$2bhG3f84$94YyLk0Pw6iHZV5LQFDyH0

    $1$8aZKl6Gz$wMdf/ZFcq/QF81hgP/3L1/

    $1$XihHdf3J$eq3UMF8EyLSaXjzw6icUS1

    $1$KrBLsJof$3G4ptTyRX728QezNA4hze0

    $1$iaunhija$r1cOhGTKj1yTGzgKcA.i8.

    $1$u45.7iGq$.KTu6Zw7TvikxwRCIAguv.

    $1$c8vG0Low$R3mlrnHzOVv0GTe.ysOIy/

    $1$.pYOFTc.$4aMnUQxozeDwDvRGCYhQX/

    $1$d.rGXJXt$qde4r1EfadCel3trWwU4w/

    $1$bUWLmYBu$JSJUF6tyPLNQECuwlkiqU0

    $1$X2LlG60q$gT86uTptIQI8fxaLo4u/4/

    $1$g2o66b/L$awsk0MAKZGDFWAnRsz3051

    $1$cyKEf3Su$jHKNRoCsJLVbI8A1QWbLc0

    $1$YxcPyMks$gxC9NbkM/yXhfXKY00NiX1

    $1$Ow14Be7Z$DbRcP.5DU/XV3HFHYLrv3/

    $1$oRreJLeJ$snULj6sNuSYn9grRwUIs20

    $1$nlZzN.lV$4wgQ.ucQbcmX8kYYYGajK/

    $1$6ys0vv5j$WZfnconHxBHqOBDKBlO21/

    $1$3FXvqV7w$E8tTMSQcKWkHNKfNc6q3k1

    $1$nlW27qUs$LeVGHIYG3yEx7kcrijh8L0

    $1$9kOP7y5d$7WnB5JiBJqYoiLZIcuPX0.

    $1$DM0h90bU$1e/NTzSN7f859kFU0fSz40

    $1$9vnCuQB7$gtzzYmrZ5MVw8AOmkdE4B.

  • Calculating Color

    4 months ago • 0 comments

    Okay, so it's fun to have multiple colors -- otherwise why use RGB strips?

    So far I have two colors, red for stock messages and green for hacked messages. What's the big deal, how hard could it be to add more colors? Well, there's a few things to consider.

    First off, I'm using a bit-packed array as a frame buffer. That is to say, each pixel is one bit in an array so there is no room for a different color code for each pixel. At the very least this would require one byte for each of pixels in the 32x7 array. To make that meaninful I'd need equally large arrays to store the messages. Not this time around.

    The second thing that makes color choices tricky is that I'm limited on how much current I can supply. This display is running from a 6000 mAh external cellphone battery. I'd like to pull less that 2A. I figure the character "8" has the most illuminated pixels. If filled the display with 8's and drove those pixels with all three colors at full brightness: 5.3 characters x 17 pixels x 60 mA = 5.4A. 

    Even though I could pull 2A, I want the battery to last longer than that. So I want to run single colors at 66% intensity, and mixed colors at an equal level.

    Primary colors are easy:

    • Red, Green, or Blue driven separately at a level of: 0b1010 1010 (decimal 170)

    Mathematically mixes should sum to decimal 170:

    • Yellow = Red and Green both driven at 0b0101 0101 (decimal 85 or just right shifted by one)
    • Cyan =  Green and Blue both driven at 0b0101 0101
    • Magenta = Blue and Red both driven at 0b0101 0101

    I'm not sure if there's a simple way to do this programmatically. For now I'm going to store these values in a PROGMEM array.

  • Problems with the Router

    4 months ago • 0 comments

    I had a very strange problem with the router. When I would push custom messages to the hat from the command line:

    echo "Message" > /dev/ttyUSB0

    I would get the last character displayed twice on the Hat. This is strange because the same thing does not happen from my desktop computer. And, I hooked up an FTDI breakoutboard to "listen in" on the Arduino's RX/TX lines and it doesn't pick up the repeated character.

    My friend ben suggested I try the command:

    stty < /dev/ttyUSB0

    on both machines. The desktop has a bunch more flags set. I was able to fix the router problem by using this command:

    stty -F /dev/ttyUSB0 -opost -onlcr -isig -icanon -iexten -echo -echoe -echoctl -echokes

View all 5 project logs

Discussions

coflynn wrote 4 months ago null point

Any luck getting people to hack it?

Are you sure? [yes] / [no]

Mike Szczys wrote 3 months ago null point

Yes indeed, I'm working on an article right now that discusses it. Watch our front page in the next couple of days for that.

Are you sure? [yes] / [no]

Similar projects