IT Field Day

This is teh story of how Royal Caribbean should rethink their IT security. lel. Prepare for some atrocious grammar. Engineer just don Kare.

First day on the cruise, Guandi97 and I were forbidden from bringing our laptops. This was a family vacation they said, no laptops! Doesn’t matter, Guandi97 don’t give a shit. MacBook Prestige level 9001 appears out of nowhere. Engie was blocked from bringing his powerhouse W530. Too bad, Raspberry Pi to the rescue. If you can’t bring it…build it.

Even before everyone had gotten on the ship, we were already set up for launch at the onboard Starbucks. Attempting to get some “Free Internet”.

Because of the lack of time and knowledge, we had decided to hit their Internet Cafes first. Scout out some vulnerabilities and attempt to access the internet through the Ethernet ports. Unfortunately, we were met with login paywalls again and again. This needed to be dealt with! But not before we fudged up their desktops. IT Department can’t stop us! hueh hueh huehcopter incoming.

All of the desktops were lockdown hard. But we did find that some old tricks still worked. Including systemCMD.COM and Windows + R shortcut key. We were able to launch Paint. Havoc ensued. We still can’t believe people believed our shit paint job. “IT Working. Do not use.” Might sound legit. But…lenny face? lolwut.

These signs stayed up for at least 3 days.
*Backgrounds courtesy of Guandi97’s OP Paint skills


Compared to an actual sign found aboard the same ship. Lol.


We even attempted to create our own IT badges. But once we saw the real IT guy, who actually wore a uniform with a legit looking badge, we threw ours out. For obvious reasons.

We managed to get “free internet” heuh heuh

That’s not to say we didn’t have any trouble along the way. Several times we had to instigate operational room lockdown. Too many a times, random bystanders would walk into the room. Two people even had the galls to ask us if we were “hacking”. Dafuq, monica. At one point, we even had to go on full red alert, abort mission and run around the cabin corridors like SHTF.


Much of the technical is documented here:
The script was created afterwards, borne out of extreme laziness.

  • Ethernet ports are unprotected. You can access the printer control station from any port conveniently labeled with the IP range…
  • No one batted an eye when we took out a Raspberry Pi and started exploring their network at the Starbucks. Cables everywhere, screen flashing with text, looking like l33t haxxors. Even though we got plently of looks on the airplane to Florida.
  • Need to plug in an HDMI port to stateroom TV? Just unhook the HDMI cable used by Ship TV and plug in your own device. No need to call IT for an adapter or use a universal remote to bypass the menu lock.
  • There’s so much to explore on the ship, particularly with IT.
  • IT guy works in card room on deck 14 of Oasis of the Seas. Broken mesh panel allowed us to access one of the desktop’s towers and plug in a Fedora live usb. “Prepare thy anus” was announced. IT guy didn’t even notice, probably on Reddit or Imgur.
  • Woman next to us didn’t understand the one device logged in only plan she purchased. ( ͡° ͜ʖ ͡°)
  • wpa_cli reassociate doesn’t seem to work properly for protected networks. Doesn’t matter, “royal-wifi” is unprotected anyway.
  • Computers in Internet Cafe are pretty locked down. Nah..
  • black hat stuff.
  • Once we had access to Google, it was game over GG. Ship’s IT security stood no chance against our Google Fu.IT Guy works

Ultimate Tic-Tac-Toe

Finally finished this weekend challenge. Well, technically it was finished two weeks ago, I just managed to fix most of the bugs yesterday. There are two modes, Win By 1 and Win By 3. Essentially, you can play against the AI until someone wins one grid, or three grids in a row.

Win By 1 – AI uses a combination of Minimax and Alpha-Beta pruning
Win By 3 – AI uses a Monte Carlo simulation

The UI sucks, as always. I am just bad at creating GUIs.

The source code is available on Github.

Placement new

I am still intrigued by the use of malloc() and “placement new” to create objects on the heap in C++. This allows you to construct an object at a particular location in memory. Basically memory that has already been allocated.

Malloc() only allocates the requested amount of memory and returns a pointer to it. Whereas, new combines mallac() with a call to the object’s constructor which initializes the object.  In order to use malloc() with a class, you would have to explicitly call the objects constructor. As well as explicitly calling the object’s destructor!!!

Please do not use placement new unless you really need to place an object in a specific part of memory.


Unturned Editor for OSX [Preview]

Unturned is a sandbox multiplayer game much like Minecraft. It was recently Greenlit on Steam, and gained a huge amount of popularity in the following few days. The game currently saves player data in the registry (on Windows). Which I thought was a bit strange. Turns out, the developer used PlayerPrefs from Unity.

The key value needs to be converted into Windows-1252 encoded bytes, then decoded as if it were encoded in UTF-8. Each character’s unicode will then need to have ’32’ subtracted from it. Then we mod every character by 255, such that we get an ASCII character. You can read more about the encoding/decoding process here.

On Macs, save data is actually stored in a .plist file. Which can be parsed, and only need to be decoded as if it were UTF-8 encoded. Here is a prototype application which parses the .plist file and displays the decoded ‘inventory_’ value. We can then edit this string to give the player any item, ammo, etc.

Coded in C/C++



The source code has been released on Github.  To be honest, this is something I probably won’t be maintaining anymore.

Download Link:




This is a simple file integrity monitor/scanner. I started this after the BlackShades incident. Thought it would be a fun project to do, and a great way to learn more about file I/O.
I stopped playing TF2 for a whole day for this?!?!?! ohmygherd so OP.

pengusniffv1 pengusniffv1-2


Was bored. Rewrote Qt calculator example with new ‘engine’ and the ability to define expressions with parenthesis. Will probably add more features for the lawlz. Nuff said.



Ultron, an automatic homework fetcher/parser. I started working on this to reinforce what I learned using Qt. Too bad I don’t have access to my Moodle account anymore, time to add new features.

All of my GUIs look simple and plain. That will be something I will work on when I have time. Learning Qt is pretty fun :)




Learning how to use the Qt Framework for creating GUIs on Linux. My second application is real simple. I call it Moose. This works the same way as, except everything is on your own computer, and you don’t have to worry about third party.

Moose utilizes your local MTA to send emails. Simple GUI allows you to change the To:, From:, Name:, Subject: headers. Depending on how you have your /etc/hosts setup, sending time will differ from a few seconds up to a minute. moose



Rootkits: Subverting the Windows Kernel [Source/PDF]

This is an extremely useful book on rootkits: Rootkits: Subverting the Windows Kernel


It took me awhile to find all of the source code examples in the book. Since has been taken down, and that is where the book directs you to download from.

These are the examples listed in the book:


Development of a simple x64 bit operating system is now in progress! Matt and I are working on creating a PDF that will explain the methodologies of it’s boot/load/run process.
As well as releasing the source code on GitHub. More information can be found here.

Please visit our forums for questions.