Cyrozap's Tech Projects

Computers. Circuits. Code.

Reversing the Symantec VIP Access Provisioning Protocol

Two factor authentication (2FA) is an amazing invention. For one thing, it can significantly increase the security of your online accounts without significantly increasing the hassle of logging in. Additionally, the most popular 2FA algorithms are available in both free software and proprietary software implementations. This weekend, I reverse engineered Symantec's proprietary 2FA token solution with the goal of creating a free software alternative.

On iPads and IMEI's

Approximately three years ago, I posted instructions on how to get an iPad data plan without having to own an iPad. Just for fun, I decided to check if that method still works and, well, it does! It has been three years, though, and I'd like to offer some improvements to the process using knowledge I've gained since my original post.

Pelican is Wonderful

As I mentioned in my last post, Pelican is the tool I now use to generate all the static HTML files that make up this site. Pelican allows me to write posts using either Markdown or reStructuredText and can utilize a large variety of plugins written in Python. There are a number of blogging platform similar to Pelican like Octopress and Jekyll (upon which Octopress is based), but Pelican was the most fully-featured platform that is also written in a language I'm very comfortable with.

The Blog is Back!

After over a year of silence, I'm blogging again! A lot has happened in the time I've been away, the most notable of which is probably the new look of the website. As you can see, I've abandoned my self-hosted WordPress blog in favor of a static blog hosted on Rackspace's Cloud Files. I did this for a number of reasons:

Mac SE Update

I just realized that I haven't posted any updates on my Macintosh SE in over a year! I've made a few big strides since then and I'm really getting excited about it.

Remember that RAM Issue I was having? Well, the computer managed to work on 2.5MB, but I really wanted the maximum of 4MB so I bought 2 x 1 MB 30-pin 60ns SIMMs on ebay for $4. Now, the computer works great! Well, not really. The HDD is toast (it's been making the "click of death"), so there's no OS. Luckily it still has a floppy drive! Unfortunately, it only takes 800k floppies and is completely incompatible with modern 1.4M floppies.

After I discovered that I was't going to get an OS running on the Mac via a floppy, I started searching for alternative means. First, I looked into SCSI to IDE adapters. Unfortunately, they are EXTREMELY expensive (on the order of hundreds of dollars). Next, I tried finding 50-pin SCSI drives. I then realized that, even if I was able to buy a drive like that, I would still have no way of loading an OS onto it. Finally, I started researching floppy disk drive emulators. After a bit of research, I discovered that they are more plentiful than many would think. Sadly, they only support 1.4M floppies.

For a while, I thought I was out of luck. But then, I discovered the blog of a computer engineer who, among other things, managed to create a floppy disk emulator for 68k-based Macintoshes. I really liked the concept and the design was proven so I decided to build a few for myself!

My first Mac floppy emu!

bladeRF: a USB 3.0 Software Defined Radio

I just backed this project! Why? Because for $400, I get one of the most flexible and inexpensive SDR's on the market. Not only do I get that, I also get in-depth documentation and guides on how to use it. I've been wanting a nice SDR for some time now, ever since I saw the OpenBTS demo using the Ettus Research USRP1. Unfortunately, the USRP1 is, to me, too limited to justify the price. Additionally, there is a very steep learning curve if you're a beginner like me. I'm still interested in cell phone networks, though, and with the pending release of the bladeRF, I will finally have a chance to play around with the technology.

Notice a Speed Increase?

Well, I've finally done it—I've purchased a VPS and now I'm hosting this blog on it! I'm still using CloudFlare for caching, spam-filtering, and DDoS protection, but now I'm running the blog on a network that is about two orders of magnitude faster than my home upload speed of 180 KB/s. It is VERY nice and the transition went much smoother than I expected!

CloudFlare is Awesome!

I've been trying out CloudFlare to try to speed up the site a bit and so far, it's working great! It's also handy because I can use it to bypass 1and1's 5 subdomain limit because I'm using CloudFlare's servers.

Unfortunately, this means I've had to reconfigure a bunch of stuff. I've already noticed that some things are breaking (https stuff) and I'm trying my best to fix them, but sometimes it's difficult to pinpoint the source of the problem.

My Current 3D-Printing Status

Hardware upgrade: After wiring the 8-pin CPU power connector to go to the relay board and connecting my Cupcake's new PSU, the machine no longer skips steps in the Z-axis nor in the extruder and the heated build platform and extruder nozzle heat up in a more timely manner. My reasoning for wiring an 8-pin CPU power connector to the relay board was to ensure that the heater elements would have enough power and not take it from the steppers. I'm pretty sure this works because the CPU power is on a separate rail from the normal connectors, but it may also just be because everything isn't running off the same strand of connectors any more. It really is a nice power supply and I can really appreciate the engineering and industrial design work that went into it. Anyways, to finish up, I just need to cut a large hole or a series of holes in the bottom of the Cupcake's wooden "PSU shelf" so when I put it in, the power supply will have a way to draw in air for cooling. Then, I'll be able to close up my Cupcake for a while.

Software upgrade: I'm still on ReplicatorG 34 because it's what I'm familiar with and is the latest supported by my Gen3 electronics, but that doesn't mean I can't improve the slicing speed! Just today I managed to install PyPy, a really fast python interpreter that has been shown to make slicing go 4-5 times faster. For instance, Brainy Walt now slices in only 6 minutes on my Core i7 MacBook Pro where before it would take around 30-45 minutes. This is really great because now I can try out new settings without having to wait forever for Skeinforge to re-slice things.

Here's a tip for those of you trying to install PyPy and tkinter-pypy on OS X Mountain Lion (and possibly Lion): If you get any ld errors about missing tk8.4 or tcl8.4, just find the "setup.py" file in the tkinter directory you're installing from and change the versions to 8.5 for both of them. Also, if you get any errors similar to that regarding X11, first make sure you have XQuartz installed, then run ln -s /opt/X11/include/X11 /usr/local/include/X11 in a terminal to symlink the X11 includes so the setup.py script (or whatever else) can find them.

RepRap status: Now that I've pretty much fully repaired my Cupcake, I can work on my Prusa Mendel without any guilt. All I need to do with it is figure out some temporary wiring scheme to test out the electronics and steppers, then I'll fit the heated build to the Y-axis plate and start trying out Slic3r.

Python Is Fun

Usually, I don't do much programming because it's always taken a lot of work to do even the simplest of things. However, since I've discovered Python, I've been having a blast. Just yesterday, I wrote a command line tool to upload files to Box.com. While I could have used somebody else's libraries to do the heavy lifting, I wanted to roll my own code. I thought it would be both more fun and more educational that way, and it was. My initial purpose for writing this program was that I could use it in a cron job to perform server backups. Now, because server backup was my primary goal and I can encrypt the backup archives before uploading, security wasn't much of an issue. Because I wasn't very concerned with the security of the transfers, I didn't bother to do things like check for SSL/TLS certificate validity. Additionally, I put my API key right in the code, so I can't just distribute it and let people see that. If you want it, I've posted it below (with my API key removed, of course).