Sunday, November 30, 2014

The Bare Roots Server Resets

The decision was made - not by me, actually unilaterally by the server owner - that the world of the Bare Roots server, a YouTuber-only Minecraft server of which I am a member, will be reset. This means that the current world, along with all progress in it, will be blown away and replaced with a brand new map from a different random seed. This is after just six months of content production on the current map.

I can't say I'm happy about the reset, but I'm not angry or sad. I've been away (actually I vanished completely from our group) from the server for the past two months, and I welcome the chance to get back in sync with everyone as we start building our world anew. The server owner said that this reset is also an attempt to jump-start activity in the server - I'm not the only one who's been away. Of course, map resets are not a sustainable or particularly effective means of infusing the server with activity, historically speaking, but hey, it's a try.

Attempts will be made to bring in some new characters. Three have left and one is considering; I suppose we're all busy with real life. I've heard that there will be some "gimmicks" - gameplay modifications - in the new world, but no specifics are out yet.

I recorded my final episode on this map today, just the nineteenth in the series. Hopefully, next season will last longer and I'll be able to produce more interesting content.

Saturday, November 29, 2014

FMod - Certificates Issued

Today, I was busy studying for my online courses. I did, however, issue Abiathar VeriMaps Extended Distinction certificates (that's a mouthful) to a few members of the community who contributed to Abiathar, beta testers and icon artists. The certification process is really easy: I just fire up the VeriMaps Certificate Generator console program I wrote a couple days ago, type the name of the person and their distinction (e.g. "creator of Abiathar" for me), move the public-key ACERT file to the appropriate section of my public Dropbox, and send the private-key ASIGN file's contents to the recipient via forum PM.

This system seems to have reignited some interest in modding; some people messaged me back saying that they're going to try to make use of the certificate.

Friday, November 28, 2014

FMod - v2.2

I did some more testing of the new Abiathar v2.2 features, especially VeriMaps. It works perfectly on all of Abiathar's level formats (except TED5 MapTemp/MapTHead, where it is disabled because there isn't a convenient no-op zone to put the signature). I generated a certificate for Anonymous and put it and its public verification certificate in my public Dropbox so people can experiment with VeriMaps. I also tweaked the upgrade code so that depsfiles with no default set won't get upgraded, as there is no audio support for them anyway. I also made it so the VeriMaps Signature option does not appear for people without a VeriMaps signing certificate.

I published v2.2 on the PCKF and Keen:Modding, plus the command-line VeriMaps inspection utility. I am still awaiting replies and feedback.

Thursday, November 27, 2014

FMod - Cryptographic Signature

I'm on Thanksgiving break now, and in my breaks between being thankful, I made a serious push toward the release of Abiathar v2.2. The really hard parts - the actual manipulation of music and sound - have been done for a few weeks. Today, I finished up the smooth-upgrade routine for this version, which copies the new portions of the dependency file from defaults.aconf. (It was a lot easier than I expected.)

So, I did something kind of unusual. I decided to add a means of crypto-signing the levels, which writes an encrypted hash of the main level data to the no-op zone of the gamemaps file. That way, the game can load the file without getting confused and Abiathar can do whatever it wants. The certificates for level signing will be distributed to noteworthy people in the community. Matching public keys will be placed in my public Dropbox so that the hashes can be verified.

The purpose of this setup is to let people know who modified a level set last - whether it has been modified from its original version, say, by a mirror host. It is not copy protection or edit protection; anybody is free to open a signed dependency file and save it. If they modify it, however, the signature will become invalid - or the signature of the modifier, which is easy to detect. Therefore, it can't be used to see whether somebody had the original idea for a level, just who modified it last, which can prove that it was not modified from the state intended by the last author.

I call it VeriMaps, and it's nicely integrated into Abiathar now. It looks for a VeriMaps private key file in the current directory and will use it to sign saved levels once a menu option is checked. (Hashing and signing are somewhat expensive operations.) The signature state is always displayed in the status bar. It indicates whether signing is in use, who the signature purports to be from, and whether it is authentic. (Authenticity is checked by downloading the appropriate public key from my Dropbox, all automatically.)

Finally, I thoroughly tested the audio management on all three supported episodes. It worked great on Keen 4 and 5, but I got a patch offset wrong for Keen 6. After fixing that, everything seems good! v2.2 will hopefully come out tomorrow.

Tuesday, November 25, 2014

Collecting the Plaintext Password of an Already Logged-on Windows User

In a previous post, I explained how to set up a scheduled task to nab a logging-on user's password. I said that you could kick them off their session if you wanted to use that technique when they log on again, but getting their password if they're already logged in is probably easier.

To start, you'll need WCE and PsExec. Open an elevated command prompt with permissions on the target computer (typically domain admin). Navigate to the directory containing WCE and PsExec, then type this command:

psexec \\target -s -c -f wce -w

Replace "target" with the name of the remote computer containing the user's session.

The WCE output, including the plaintext passwords of all logged-on users, will be delivered to your console in a second. That was easy!

Monday, November 24, 2014

Robotics - Post-Meet Adjustments

Using what we learned from our experience at the first meet, we started to refine our robot for the next meet, which is in just two weeks. We wrote some agenda items on the whiteboard so that we have some goals to work towards.

First, we switched the gearing so that the wheels go immensely faster than they did before. The difference is amazing, and we can do a sort-of drift effect. With the amplified speed, we discovered another hardware problem: the right wheel wasn't moving all the time. After tightening its axle hub, everything was good.

To test the driving, we had to take our main battery off the charger and re-flash the Samantha module. The former part of that posed a problem: the battery connector is immensely difficult to disconnect. When we did that, it shorted and blew the fuse. Once we replaced that, the Samantha was easily flashed and everything was good.

We also rearranged the NXT and Samantha mounts to be more easily accessible and to make room for the eventual ball hopper.

While they did all this tinkering, I made a shopping list for things we need. It includes:

  • USB A-B cable
  • Allen wrenches
  • Tetrix Flat Max metal pieces
  • Replacement fuses

Saturday, November 22, 2014

Collecting the Plaintext Password of a Logging-on Windows User

I made a passing mention to WCE a little while back, and today I found a fun use for it. Suppose you need the password for a domain account. For example, you're a domain administrator who needs to investigate a problem user quickly: breaking the SAM/NTLM hash would take a while; resetting the password would destroy encrypted files and alert the user.

If you have administrative access to a workstation on which the target user will log on, you can use the aforementioned Windows Credentials Editor to steal the plaintext password, at least on Windows 7. (Windows 8 seems to have disabled the Digest Authentication module that leaks the password.) You'll probably need to disable or add an exception to the antivirus software, or alternatively use a PE packer - WCE is regarded in some places as a hacking tool. (Makes sense.)

Using your form of admin power, be it local or domain (use the ADMIN$ or C$ share), drop the WCE executable and a batch file containing the following somewhere on the target computer:

wce -w > pwd.txt

Open MMC and add the Task Scheduler snap-in pointed at the target computer. Add a scheduled task with the following settings:

  • General tab
    • Click "Change User or Group" and select SYSTEM
    • Check "Run with highest privileges"
    • Check "Hidden" if you want to be extra sneaky
  • Triggers tab
    • Add a new trigger
      • Pull down "Begin the task" and choose "At log on"
      • Choose "Specific user", then "Change User" specifying the target account
  • Actions tab
    • Add a new action
      • Ensure "Start a program" is selected
      • "Browse" to select the batch file
  • Conditions tab
    • Uncheck "Start the task only if the computer is on AC power"
  • Settings tab
    • Uncheck "Allow task to be run on demand"
    • Uncheck "If the running task does not end when requested, force it to stop"
Save the task. When the target user next logs on, their password (and that of any other logged-on user) will be dumped to pwd.txt. If you're impatient, you can kick them off, hoping that they don't suspect anything and that they'll log right back on.

EDIT (11/25): Alternatively, you can use PsExec to grab it from an existing session immediately and silently. See the new post.