Archive for the 'Software' Category
Hex-curious?
Have you ever wondered how to make sense of hexdumps?
e1a02000e5d00000 e3500000012fff1e e3a00000e2800001 e7d23000e3530000 1afffffbe12fff1e
Or been curious to know what exactly does a bxeq lr instruction mean in assembly?
![<br />
0: e1a02000 mov r2, r0<br />
4: e5d00000 ldrb r0, [r0]<br />
8: e3500000 cmp r0, #0<br />
c: 012fff1e bxeq lr<br />
10: e3a00000 mov r0, #0<br />
14: e2800001 add r0, r0, #1<br />
18: e7d23000 ldrb r3, [r2, r0]<br />
1c: e3530000 cmp r3, #0<br />
20: 1afffffb bne 0x14<br />
24: e12fff1e bx lr<br />](http://farm7.static.flickr.com/6222/6310844790_b549a75205.jpg)
If so, then you should sign up for the introduction to assembly programming and reverse engineering class. You can learn assembly programming and machine architecture using reverse engineering techniques on your own code. In this class we will write code, compile it into an executable and then disassemble it to learn about registers, stacks, branches, function calls and argument passing, structs and other common idioms.
Experience with any programming language is required; the examples in the class with be in C, with dissassembly into ARM assembly. Bring your own laptop with arm-elf-gcc and associated binutils installed to follow along.
No comments30 days of watches
Inspired by Ranjit’s instrument-a-day (Make coverage), I’m writing a new wrist watch face every day for my progamable inPulse watch (more background). The full sources are posted online for others to build on.
Day 1 was a fixed point 3D rendering engine with a rotating Utah Teapot, day 2 was a rolling odometer or aviation altitude ticker display and day 3 is a 24-hour analog clock. This last one still needs some work.
3 commentsHackable wrist watch makes Dick Tracy dreams come true
The inPulse watch is a great platform to hack on. It has an ARM7, 32 KB of flash and 8 KB of RAM, Bluetooth, a buzzer, an OLED screen and a button. Not much by today’s standards, but plenty to play around with. The programming environment is very much like a microcontroller; no multitasking, no dynamic memory, and very constrained memory/cpu. That is, of course, what makes it so much fun.
Read more
Debian-NYC Novice Night
Debian-NYC would like to invite you to our next Novice Night.
Novice Nights are Debian-NYC’s meetings for everyone. If you would
like to install Debian, come on by. If you would like help with
configuring or making Debian do what you need, we can do that too. If
you want to hang out with Debianistas to pick up tips and tricks, come
on by. We can also provide some help with other derivatives of Debian,
such as Ubuntu.
Novice Nights are free-form: bring your questions, and you’ll be able
to talk to people to answer them. There isn’t a set structure here or
presentation, so you can come and go as you would like. There may be
mini-presentations throughout the night. We will be able to help with
new installations or fixing/configuring existing ones. We can make
installation CDs or USB drives. You should bring your computers you
would like help on (and your friends!).
We welcome groups. If you have a group attending, feel free to contact
us in advance so that we can prepare something for you. If you have
questions, please direct them to Richard Darst
Where and When: Eyebeam, Tuesday, January 18th, 2011. Come and go as
you like between 6pm and 10pm.
Getting there: See Eyebeam directions. Eyebeam is on the west side of
Manhattan, in Chelsea. (540 W. 21st Street, (between 10th and 11th
Avenues) New York, NY 10011) A/C/E/1/2/3/L trains are the closest, and
Eyebeam is right next the Hudson River Greenway.
Contact: IRC on #debian-nyc on irc.debian.org ; debiannyc@vireo.org ;
or Richard Darst (rkd at zgib dot net).
Web: http://wiki.debian.org/DebianNYC/NoviceNights
No commentsCraft Night & Special Talk: FONT SECRETS REVEALED
Fonts cannot be shared and when they do not work right, you are not allowed to fix them. Making your own typefaces is a black art, hidden in mystery.
A long time ago programs were the same, but the free software movement has freed the knowledge, tools and the business of software.
Now it is time to free fonts.
This introductory talk and Q&A reveals how to design typefaces using only free software—and how to make money doing it.
Topics Include:
- Installing GNU/Linux and Libre Graphic Design Tools on Your Laptop
- Typeface Design Principles, Font Editor Secrets
- How Graphic Design Businesses Can Profit From Libre Fonts
Thursday, August 5th, 2010 – 6-9pm, held jointly with our regular Craft Night
~ Free Fonts ~ Free Libre Open Source Software ~ GNU/Linux ~ GPL ~ Wikipedia ~ Creative Commons ~
~ Free Culture ~ Open Font Library ~ Inkscape ~ Open Font License ~ FontForge ~ Public Domain ~
A talk by Dave Crossland
1 commentExtracting + Graphing Wii Fit data

I ordered a miCoach, which is the Adidas version of the Nike+. When it gets here I plan on opening it up to play with the data, but in the mean time I started with some better-travelled exercise bits and bytes: WiiFit body test data. Starting with Jansen Price’s excellent blog post on the subject, I slowly worked through the data and wrote a python script to interpret the binaries and save them to a CSV. I was able to generate the nice graph above. There was a lot of trial and error, but here’s an overview of the process:
- Copy Wii save game data to the SD card. This is done from Wii Options > Data Management > Save Data > Wii
- Find the save game data on the card. It’s in something like ‘private/wii/title/RFPE’, although different regions may have slightly different codes. RFPE is the code for WiiFit Plus. Copy the WiiFit data.bin file from the SD card to your local machine.
- Decrypt data.bin. This is explained pretty well here. To create the keys I ended up creating text files with the hex string for each and then using “xxd -r -p sd_iv_hex sd_iv” et al to save a binary version. If you’re getting “MD5 mismatch” errors, you probably saved the keys incorrectly. If you aren’t sure, check the file size. They should be 16 bytes each.
- Run the decrypted RPHealth.dat through a parser (I wrote one in Python for this)
- Run the CSV through your favorite graph generation library. I use flot because Google Charts don’t handle dates very well.
More details, including the source for the Python script can be found over on my blog: Kellbot!
2 commentsThe Web Application Approval Process.
There’s a lot of discussion going around on the web about the controversial new device placed onto the free market by Apple Computers, the iPad. I was thinking about the app store approval process, and the potential for how shall we say, abuse that might occur through such a system. That’s when it occurred to me, Apple is right. Developers should be able to safeguard the experience of their users. So I opened up the terminal.
Here’s the php code that you might want to use on your web applications to let iPad users know that their device might not meet the user experience requirements that you feel are necessary for the full enjoyment of your applications. You know, requirements such as screws on the device, or the ability to multitask, or install software without an approval process controlled by some megalomaniac in Cupertino. I’ve modeled the response to be somewhat familiar in wording to apple developers. You know, just to show that I care.
Anyways, if you like me feel that the iPad is ruining the web experience for users, and don’t want to see your web applications tainted by it’s inferior design choices use the code below to protect yourself and your work. You aren’t making a tool, you are creating an experience. Remember place the code such that it executes before your page data is displayed. If you have a header include or something that would be an awesome location.
1 commentMarch Madness: Product Info Screen Scraping!
Since everyone else appears to be at SXSW, I suppose I’ll have to step up for today’s March Madness. I bring you: a screen scraper for retail products on ecommerce sites.
While I’m hardly the first person to write such a tool, finding useful examples or libraries among the hundreds of pages of screen scraper spam has proven difficult. I ended up writing one from scratch in PHP using the DomDocument object.
The goal of the scraper is to come up with the product title, price, and 3 most likely product photos from any given product URL. In order to make it a bit faster (it’s pretty painfully slow), I attempt to filter out images which are obviously not product photos (those which are very long/tall, those which are not displayed in the browser). Then for a bit of extra fun, it sorts the image array by it’s “likeliness” to be a product photo. Obviously it needs some refining to actually be useful.
2 commentsMarch Madness Day 3
Under the wire… with a rather boring script. Here’s an apache log parser that uploads log data to MySQL. Interesting part about it? If your user auth field has LDAP data this will parse that properly.
Click through for code…
Read more
March Madness! Day 2.
So today I decided to mix things up a bit. I figure, how else can one honor the time honored world of languages than by paying homage to the language wrought by Knuth himself…. LaTeX.
Here’s the resulting PDF: m2
I will post the associated EPS file later, currently NYCR’s blog is very anti EPS.




