Classy

I have a love/hate relationship with Dartmouth. While I love the school, most of the tech infrastructure is horribly outdated, and mainly serves as something to be worked around, rather than a useful tool. Finding classes is just like this. You can search by department, and by time period, though you'll have to continuously go back and start a new search from scratch. The results are also poorly formatted, and miss out on providing valuable information, like median, a class description, and prereqs (all things you'd have to search separately for).

Read More

SurfShield

In September, me and a few friends entered HackDartmouth III, a Dartmouth-based hackathon. I'd signed up for the one the year before, but me and my roommate slept through it, so this was the first one that I'd be doing at Dartmouth (I did one junior year of high school). We were undecided as to which project to pursue: a game similar to Sardines, a project that I worked on previously (that you can read about here), or something that more closely suited the APIs that were offered by sponsors, and the possible prizes associated with them.

Read More

Class-Dumping with Cycript

I keep forgetting how to do this, so I thought that I would just write it down somewhere. First, you'll need the classdump-dyld tweak package, which you can get from Cydia on the BigBoss repo (it's by Elias Limneos, who hosts the only reason I do tweak dev), and you'll also need cycript. Then, you'll need the application you want to dump running. In this case, I'm going to be doing it for Spotify.

Read More

Victor - Talking Back

I got it into my head that I wanted to be able to programmatically make my phone speak whatever I wanted it to. Effectively Siri, but unprompted, and without care for silent, or low volume. On a normal phone, this would be impossible. But on a jailbroken phone, there was probably a way to do it. I first started up by making an Activator event that could be passed a string, and would say it. It did this using the AVSpeechSynthesizer class, and using the com.apple.ttsbundle.Samantha-premium voice (which is Siri's default voice). I wanted to be able to use the voice that I normally use for Siri/Victor, which is a British man, but while it seemed to be in the system, and it was clearly being used for actual Siri, I couldn't figure out a way to trigger it through AVSpeechSynthesizer (the voice's name is Arthur).

Read More

Victor - Echo Dot

For Christmas, in addition to the WeMo switch I also got the Amazon Echo Dot. It's a great device, but it was a little bit complicated to work into my AI setup. Ideally, I would change it's wake word to 'Victor', and be able to add in custom actions, like 'Victor, play [movie] on Netflix'. I quickly learned, however, that this is impossible. So it was time to hack together a solution. I changed the wake word to 'Echo' to avoid having another AI name (Alexa) introduced into the house. Then, I set up a custom skill through Amazon who was triggered by 'Victor'. Commands through Echo to Victor would be handled by a custom Lambda function through AWS, and then pushed into the same 'tasks' pipeline as command sent through Siri from my phone. Instead, it would be triggered like 'Echo, tell Victor to play [movie] on Netflix'.

Read More

Victor - Belkin WeMo Switches

For Christmas, one of the gifts that I got was a Belkin WeMo Switch. It was only $30 on sale, and while it had middling reviews (like many of the WiFi-switches), it could be controlled through cURL commands, which made it very easy to hook into Victor. So I set it up, plugged in my light, and spent like 20 minutes trying to set it up with the app, which kept losing the connection. I can't really say it was easy to setup, but it's worked since fine, and it is indeed very easy to programmatically control.

Read More

Victor - Part 2

But of course, that isn't the end. Not even close. In the beginning of fall term of junior year, my computer was once again right next to the TV, and my levels of laziness had reached an all time high. I once again started to think of ways that I could control Spotify, Netflix, and my movies from the comfort of the futon (note: it was approximately three feet away from the computer). I pulled out the Kinect again, but remembered the problems that it had last time. I couldn't talk to it if I wasn't there, the speech recognition API didn't allow for a lot of commands, and it relied on something that was frankly, poorly supported and had next to no online documentation. So it was time for a change.

Read More

Victor - Part 1

I started this blog when I first got to Dartmouth. I'm now over a term into my junior year, and I still haven't mentioned one of my largest ongoing projects, and by far the one that I get the most enjoyment out of: Victor. It was around the summer of my freshman year when I first started messing around with the Kinect v2 SDK, and had the idea to build out an AI that could see the room, hear commands, and serve as a sort of custom built Siri. This idea for an AI would (eventually) be fleshed out into Victor.

Read More

Dartmouth Banner Possible Exploit

When you're requesting pages (such as transcripts, DASH, etc.) through Dartmouth Banner, you slowly accumulate cookies. But only one of them is actually used to verify who you are: the SESSID one. It's a base64 encoding of what appears to be 6 random alphanumerics, followed by your PIDM, the Banner specific code that was the root of the previous exploit. It locks you out if you try and use an old SESSID, and forces you to log in again.

Read More

Dartmouth ID Magnetic Stripe

It's been a while since I've played with the Dartmouth ID's, but my brother got me a Magnetic Reader-Writer for Christmas, so I've been having a blast messing around with it. I wrote a bit about the magnetic stripe over 2 years ago, but most of that was conjecture from one VERY out of date article I found online. So, let's take a look at what's on it now!

Read More