Thanksgiving 2015

Tis the season for us to unpack all the holiday crazy that comes with the post-Halloween holiday adventure. Thanksgiving and Christmas. Cooking, planning, setting up, and a lot of decking of the halls!

So we start with Thanksgiving. Weeks ago we took advantage of the 50% discount deal at our local supermarket and made room for the frozen Turkey in our basement fridge. Then we slowly accumulated all the other ingredients to our “feeding an army for two people” style of Thanksgiving. On that Monday, November 23rd. I caught a little video from a television and network cooking personality, Mr. Alton Brown. He recommended that people could defrost and brine a turkey at the same time. So I had a frozen Turkey in my freezer and I had never brined a Turkey before and didn’t know how it would turn out. Following Mr. Browns advice, I hauled out the twenty-pound bird and found that my biggest stock pot fit it like a glove. The directions couldn’t have been more direct and simple. Strip the Turkey of it’s webbing and plastic wrap, then put a cup of Kosher Salt in the vessel along with 2L of hot tap water in the vessel and stir until the salt is dissolved. Then add 4L more cold water to the vessel and then put the turkey in. I put it so that the main cavity was pointed up at me, so as I added more water (water to fill all the way around the turkey) it wasn’t going into the cavity, so I poured into the cavity until the entire bird was submerged. Then I wrapped the top in plastic wrap and put it in the basement, behind locked doors. No refrigeration required! As the turkey defrosted itself, it also brined itself. When I temped out the bird two days later it was at about 45 degrees and then I stowed it in the fridge until we were ready to cook it. When I was set, I poured the water off and then rinsed it with fresh cold tap water, all the cavities and everything. Then I put it in the roasting pan.

The oven was set at 350 degrees, however, it was running hot for about twenty minutes, so the first shot was at about 400 degrees. I knew something wasn’t right because the turkey was making a lot of snap, crackle, and pop noises. When I checked the temperature I noticed the temperature disparity and corrected the dial, which brought the oven back into calibration.

There were two competing schools of thought during the cooking process. The first one was that I had accidentally turned our turkey into Lot’s Turkey, a solid pillar of salt. The other school was “it defrosted and it didn’t amount to crap.” and that the salt was pretty much just a silly affectation. I held out hope, mostly because of the sage words of Mr. Brown, whom I trust when it comes to food preparation and cooking.

We were a little taken aback when the temperature probe indicated that every part of the turkey had reached about 170 degrees, it was well and truly done. I asked, “How much juice is in the pan?” and the answer was “Not very much, if any. Only what it was basted with.” We had made enough of our own with the basting juices made with turkey broth concentrate and sauteeing the neck. I let the turkey settle for about ten minutes and then carved into it.

The meat was so moist and juicy that it fell apart as I carved into it. The entire dinner was spent marvelling at just how amazing it all was and how we’ll never do a turkey any other way than this. So simple, a saltwater bath for three days changes so much about a turkey! And just like Mr. Brown promised, the brine really shines for leftovers. The turkey is usually tough and dry as cardboard by the time its leftovers, but with the brined turkey it is nearly as amazing each time we take little out of the fridge for dinner it’s still amazing!

I can’t understand why everyone doesn’t brine their turkey. We’ll brine ours from now on, fresh and leftovers are just the tip of how amazing this is. The turkey probably was fully thawed in a little over a day! The three days just added to the brine’s power to make the bird juicy and amazingly flavorful.

Just for the record, the turkey wasn’t related to Lot at all, it wasn’t salty. It was amazing.

Weak Certificates

I’ve got an odd little problem at work. I’ve got a Ricoh copier in the Traverse City office that I apparently now can no longer manage remotely due to an error in SSL. The error that Firefox throws is ssl_error_weak_server_cert_key and in Google Chrome it’s ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY. In both situations I understand what the issue is, that the SSL layer is weak because the Diffie-Hellman key is not big enough.

I’ve run into this issue before, mostly with self-signed certs and the browsers have usually allowed me to click on an exception and get on with my day. Except for Firefox and Chrome now, that is no longer the case. The browsers just refuse to display the webpage. I understand the logic behind it, everyone wants a more secure web, but sometimes what we are really after isn’t privacy or security, but rather just getting our work done.

I still need to connect to this copier and manage it, and frankly my dear, I don’t really care that much that the transactions be secure. In a way, this security is irrelevant. The traffic on our WAN is flowing over a Meraki VPN site-to-site link, so it’s already secure. This is security on top of security, and it’s in the way.

So I thought about using the awful Internet Explorer for this and I chafe at even considering using one more wretched bit of Microsoft technology – there has to be a better solution. So when you run into little bits like this the best way forward is to pursue my favorite solution, heterogenous computing! There’s more than one way to get what you are after. So if Firefox and Chrome won’t work, and Internet Explorer is unthinkable, how about Opera?

So I downloaded Opera and installed it. Then browsed to my copier in Traverse City. Opera told me about the error, but it also provided me with an exception button and then once I clicked that, the error was bypassed and my copiers remote management screen appeared.

So now I’ll add Opera to all the other browsers I have on my computers. The answer is competition. I wonder sometimes if there isn’t a special browser out there for IT type people like me. They’ll render anything, ignore any “privacy or security” type errors, all so people like me can get our jobs done. For now, Opera seems to lead the pack, at least for this. Thank you Opera!

Afterwards, for HAL

In the movie 2010, Dr. Chandra explains to the other characters the reasoning behind HAL 9000’s break with sanity and why HAL ended up purging the Discovery of all it’s human inhabitants. During this discussion, Dr. Chandra turns on the comm channel and asks HAL 9000 about the missing crew members. HAL hasn’t a clue what happened to Frank or Dave or those in hibernation. Everyone is shocked that HAL, instrumental in such a terrible act now can’t remember a jot of any of it. Dr. Chandra explains, after turning off the comm that he introduced a tapeworm that destroyed selected memories from HAL’s system.

A matter of mercy. To not remember.

I have done something very similar here, to this blog. Since about 2010 I’ve been sharing unpleasantness and pain with friends and family members using WordPress and password-protected blog posts. I only gave the password out to people who were not involved with “That Place That Must Not Be Named”. The sense here is that pain shared is pain cleaved. The more people knew of my problems, the less the problems affected me because those that cared for me could see everything that was to see and there were many conversations privately regarding “That Place That Must Not Be Named”.

It bears mentioning that the public IP address space for “That Place That Must Not Be Named” is permanently banned on this blog. I do not care either way, but at least it is something. Not that anything can be done to me now, I am beyond their reach.

So, I have sent my own tapeworm, after a fashion. I have dumped many postings, certainly all the ones with the passwords, and I have eliminated the Category from my blog entirely. The memories only exist in my Journal now.

It’s a bid, in a way, to attempt to forget everything between 1998 and 2013. The only thing that will really help is time, as the distance in time grows I will recall less and less of “That Place That Must Not Be Named” until it’s just a fuzzy blur. Something happened for those 15 years, but it’s all gone now. It’s the best and most adaptive thing I think I can do for myself and those that truly care for me. It just fades away. Much like the physical representations, such as the pins, tokens, and photos – the congratulatory cardstock emblems of “xx years of service” that have been shredded into chaff. I would throw away all the relationships but there are only a spare handful that I retain because they are truly special to me, the rest have been forgotten. Their names allowed to fade, the images of their faces growing blurry and indistinct.

Maybe somewhen down the line I will open up my journal and I will read through my life’s history. I will endure all the pain and tears and all the horribleness again, but not now. Now is the time to lose every mooring to “That Place That Must Not Be Named”. It’s taken a long while, but I feel that my progress in moving on has been a solid and successful one.

Now that I am no longer in Hell, those that visited can all attest that I am a far more happier soul now than I was for a very long span in the past.

If somehow, you are a part of “That Place That Must Not Be Named” and you aren’t a “Special Person”, you are invited to forget all about me and lose this blog’s address. If you have my name and number, forget those as well.

What ever happened to Dave and Frank? I’m very enthusiastic about the mission and I have total confidence in my abilities to execute my programming… 🙂

Killing SpotifyWebHelper

I’ve had a problem with Spotify for a while now on my Mac. The damn program opens up spontaneously all by itself unbidden. What’s really annoying is that it also frequently auto-starts and auto-plays tracks I didn’t want to play.

I found out that when I start my Mac, or start Spotify itself, there is another application which is automatically started called SpotifyWebHelper.

I’ve noticed that when I go into Activity Monitor and kill this app, the unwanted automatic start and play problem goes away. That’s good, but it’s not really the answer. The answer is to murder SpotifyWebHelper.

So I turned to the CLI, you can issue the command killall spotifywebhelper and press enter. That does kill it, but what I want is to prevent it from ever being run. So I unloaded it from launchctl and deleted it’s LaunchAgent .plist file. When Spotify starts, it puts it all back.

Then I went where SpotifyWebHelper is located and renamed it. Spotify repairs this as well. Then I tried to set the SpotifyWebHelper application in ~/Library/Application Support/Spotify so that it had no posix rights whatsoever by chmod a-rwx SpotifyWebHelper. The next time you run Spotify, it fixes it all by itself.

This is less of a feature and more of a virus. A zombie virus, you just can’t kill it.

But I have killed it for good, and here is how to be free of SpotifyWebHelper:

  1. Quit Spotify
  2. Open Terminal, killall SpotifyWebHelper
  3. cd ~/Library/Application Support/Spotify
  4. rm SpotifyWebHelper
  5. cd ..
  6. chmod a-w Spotify
  7. Close Terminal, done!

After that, you will be free of the horrible SpotifyWebHelper bullshit and Spotify won’t automatically run and play things you don’t want it to.

HP Pavilion Boot Loop Problem

Yesterday I ran into a devil of a time with a HP Pavilion slimline workstation at work. This machine was beyond it’s warranty with HP, so no help from them. I had a machine that presented these symptoms:

  • Computer powers up normally.
  • All BIOS-level diagnostics pass.
  • No error codes or beep codes whatsoever.
  • Once the HP BIOS Splash screen fades, the computer should boot into Windows. In this case, Windows 7. It does not. The computer reboots into the HP BIOS Splash screen. Ad infinitum.
  • You can enter BIOS Setup, you can also access the Boot Menu to select other boot sources, however the F11 key to start System Restore is unresponsive.
  • All first-tier efforts to clear the error were taken. BIOS reset to factory conditions, as well as holding down the power button to clear the power supply controller. None of these resolved the issue.

I then plugged in a copy of Knoppix that I downloaded and installed on a USB memory stick. I could have also burned the ISO file to a DVD and used that as well, but the USB was handy. When I use Knoppix this way, I like to enter this “Knoppix Startup Cheatcode” into the prompt right after it boots: “knoppix 2” (without quotes, of course) and this starts the Knoppix system in  the INIT 2 run level, which is single-mode text only interface. I don’t need X-Windows, and in this case, that just gets in the way.

Once at the CLI for Knoppix, I figured the boot flag, the boot manager, or the MBR was shot for the primary partition on the hard drive in the machine. Diagnostics indicated that the primary hard drive was fine, so it wasn’t a physical failure in the HD. I knew that the first (and only) hard drive in systems like these were most likely /dev/sda, you could search the “dmesg” log if you have doubt on where in the /dev the primary hard drive is. Knoppix has the “fdisk” command, so that was my next stop. I knew that this particular HP machine had a Windows Recovery partition stuffed in it, so when I started “fdisk” I displayed the partition map and there were three partitions: /dev/sda1, /dev/sda2, and /dev/sda4. I looked at the sizes and figured that the biggest one was the damaged partition, the middle one was probably for swap or scratch or something, and the last one seemed sized properly for the recovery partition. Honestly it was a guess. I turned the bootable flag on for /dev/sda4 and then off for /dev/sda1, then wrote the partition map to disk and then issued the command “shutdown -r now” to reboot out of Knoppix. Technically you could have just unplugged the machine, but I’m a big fan of orderly shutdowns even when the consequences are irrelevant – it’s a good habit to have.

The machine booted to the HP BIOS Splash screen, and then Windows Recovery started. Once the recovery partition got going I noticed a cutesy HP menu appeared offering me a selection of options. I started out with the simplest option which was something like “Microsoft Windows Boot Recovery” and it ran for maybe a second and then offered to reboot. I went for the reboot and that fixed the issue. Windows started but instead of a regular startup it went to the recovery menu, which I found fine since that was where I was going to go anyways by pounding the F8 button like a madman. I selected “Safe Mode With Networking” and then plugged in my USB memory stick containing TRON and got TRON working on the system.

Once TRON was done, I rebooted and let chkdsk naturally freak out about the structure of the NTFS partition in /dev/sda1. Chkdsk did what it had to do, and the system booted normally. I then set it for redeployment.

I figure if anyone else has this issue, this blog post might be helpful. If it helped you out, and you’re willing, maybe dropping a wee tip in Bitcoin or Dogecoin would definitely be appreciated.

Sandboxing FTW

After I reminded people that I offer a complimentary attachment checking service through my office I got a submission from one of our warehouse operators in Texas. It was an oddly-named attachment called UmjSJCk.zip. I saved it to my Mac and opened Terminal. Then unpacked the zip file and it unpacked to Quotation.exe. I giggled a bit when I ran the file command on it and saw that it was a Windows executable. Exactly what I expected. So I put it in a folder called sandbox and started my copy of Windows XP that I have in VirtualBox. The OS has it’s hard drive set to immutable, so any changes or write activities that the OS does is not sent to the VHD image, but rather to a “snapshot” VHD image on the side. Each time I start the OS, it’s as if I am starting it for the first time, because when an immutable VM finds something (anything) in the snapshot folder, it dumps it first then creates a new snapshot image for writes. I make sure the sandbox can’t see anything beyond my Mac by assigning it’s LAN connection as a Host-Only Adapter. That means that the VM can only see VirtualBox’es fake network host and nothing else.

So start this sandbox Windows XP, mount the sandbox folder as a drive to the sandbox – set as Read Only also, by the way, no baby-backwash here… and then double-clicked on Quotation.exe. It loaded a process and started to grope the network connection. Of course it did. So, with the bug trying it’s best to reach out and fetch it’s payload I clicked on the little red close control and told VirtualBox to power off the virtual machine.

Poof. All gone. Changes and everything. Then I dumped the sandbox contents.

I think whats more concerning here is that my scan using ClamAV on my Mac in regards to this data showed no infected data. Well, it certainly was trying to be nasty.

Then I start to wonder about the inherent usefulness of VirtualBox when it comes to airgapped computing when it comes to privacy and really being paranoid about encryption. But then I realize that when I turn off my Airport on my MBP, that it’s just as good as anything I could screw around with in VirtualBox. An infection in my MBP? Heh… piff.

Better Credit Card Security

While talking with a friend, who is enduring some unpleasantness the conversation turned to issues with using credit cards to buy things, like food for example. That got me thinking, how would I design a really strong way to prevent data breaches?

Encrypt everything!

Well, perhaps not that, but hash everything. Here’s what I talked myself into, of course none of this is rational because nobody will effect a planetwide shift in payment processing based on what this yokel has to say, but still, here goes.

Issuing Bank sets up credit account, there are four key fields that are important for the classic transaction, name, number, expiration date, and CVV2. I think one could also establish a timebased one-time-password secret as well, it would operate like Google Authenticator functions. So you’d need a secret that the bank generated for their systems and the physical card too. You’d need a smart chip on the card so it could forward the TOTP code to the credit terminal at the point of sale.

The bank sets up a TOTP secret, so it’s named JQP Credit Card (or account number or whatever) and the secret is: 6B57078FB88A4DD73E447D2647DCEC7D04C3D887951BA6A2D8DBA294E0B60579. This number is forwarded to the credit card terminal. Right now it’s 726995, but in thirty seconds it’ll be something else. Since the credit card terminal and the bank share sync’ed time via time.nist.gov, there is no risk that there would be some sort of mismatch between the two.

The customer goes to the credit card terminal and swipes, a value is entered and a timestamp is recorded, all of this is already parts of a credit transaction. The terminal can read the name, expiration, CVV2, whatever from the magnetic stripe and the smart chip forwards the TOTP code, then the terminal assembles this into a EDI transaction:

JOHN/Q/PUBLIC#1111222233334444#1015#170#726995 and applies SHA256 to it, to create:

621d3dd5a66277a7ab3737f306728e3c4bc5f3cd20c8730c37cc61c6575de0ba

This is stored in a database and then forwarded to the bank with the timestamp, so it’ll look like this:

987654321#621d3dd5a66277a7ab3737f306728e3c4bc5f3cd20c8730c37cc61c6575de0ba#15.09#1426615839

So the bank will be presented with a Customer ID, SHA-256, they’ll have the total dollar amount, and they’ll have Epoch time, or the number of seconds from 00:00:00 UTC, January 1, 1970. This could be easily done by a Linux kernel by the output of date -j -f “%a %b %d %T %Z %Y” “date” “+%s”

The bank would then have everything they need, they’d have the secret key, which with the Epoch time from the transaction would give them the TOTP calculation, which would generate the answer 726995. Then they’d have the card details from the customer ID, the SHA-256, and the amount. They could then calculate the hash on their own:

621d3dd5a66277a7ab3737f306728e3c4bc5f3cd20c8730c37cc61c6575de0ba

And authorize the transaction.

Even if the card details were stolen by someone copying the numbers off the card, they wouldn’t get the TOTP secret. Plus the TOTP secret is changing every 30 seconds. If someone tried to run this transaction and guessed at the TOTP code, they’d generate this:
987654321#a1b714fba988632200c78a5b9021bca5b48f149b036aa901c03173f0f2de5399#15.09#14266158 and the bank would instantly detect this incorrect SHA hash and cancel the card and ship a new one.

This is rather involved but the practical upshot is, if a vendor kept these transactions in a database and someone stole the database to use for their own nefarious needs, the presence of the TOTP and SHA-256 would make the data in the database worthless because the TOTP has no predictable pattern if you don’t know the secret, and SHA-256 is very sensitive to even the smallest change in the input data that it’s hashing. This would free vendors, banks, and customers from risking PII leakage or identity theft.

I’ve also thought that this would be a great way to secure SSN’s as well for use with the government, they know your SSN and you know your SSN, so when communicating over a possibly compromised channel you can authenticate not with your SSN, but with the hash of your SSN.

John Q. Public, 123-45-6789 -> 01a54629efb952287e554eb23ef69c52097a75aecc0e3a93ca0855ab6d7a31a0

Geek Excursions: BitMessage

Along with my curiosity surrounding Bitcoin, there is a similar technology that has been released for public use called BitMessage. This system is a really neat way to securely communicate in a secure method that involves absolutely no trust whatsoever. It’s a completely decentralized email infrastructure and has captured a lot of my spare attention. BitMessage works a lot like how Bitcoin does, you can create email addresses on the fly, they are a long sequence of random characters that your system can display because you have both a public key and a private key. In a lot of ways BitMessage deals with the biggest problem surrounding PGP/GPG, which is key management. Nobody really wants to manage keys or use the system because it’s extra work. Plus even with PGP/GPG, your identity is written on your keys for everyone to see.

Getting started with BitMessage is a snap. First you need to download the BitMessage client, and you can get that at bitmessage.org. There’s a Windows and Mac client available, you can start it and be instantly attached to the BitMessage network, ready to create new “BitMessage Addresses” and throw them away just as easily. So, for example, you could reach me by sending me a BitMessage to this address: BM-2cWAk99gBxdAQAKYQGC5Gbskon21GdT29X. When you send a message using BitMessage, its to this address and from an address that your client makes, so the conversation occurs securely and since every node has a copy of the data it’s impossible to tell who is getting what information. I think an even more secure method would be to cross BitMessage with a PGP/GPG key. The only problem with a key like that is that classically PGP/GPG keys require that you include your email address as a subkey so that you can be identified by a human-readable email address when looking for your public key or when someone else is looking for it, to verify a signature for example. The PGP/GPG system doesn’t require an email address, you can of course create a public and private keypair using PGP/GPG and make the email address up from whole cloth, and instead just let people know the key ID that you want them to use. So technically if Alice wanted to secretly communicate with me, we could give each other our public keys to start and then use BitMessage as the messaging mule. I don’t see how any eavesdropper could make sense out of any of that data flow. It’s unclear what the contents are, the PGP/GPG encryption keeps the contents of the message secure, and BitMessage itself seriously obfuscates if not outright eliminates being able to tell where the messages are ultimately going to or coming from.

I have to admit that BitMessage is very user friendly and very handy to have. My only issue with it is that I don’t know anyone who uses it, but perhaps this blog post will change that. If you are interested in this bleeding-edge crypto/privacy software, I encourage you to chat me up on BitMessage for serious matters or for fun.

Geek Excursion: Cryptocurrencies

I’ve been thinking on and off about Bitcoin ever since it was written years ago. Right around the end of last month, in December I thought I would look into it again. Turns out the environment has grown considerably since the last time I looked at it, by leaps and bounds! I figured now would be a great time to dip my big toe into the stream, so I found an online exchange and pursued Bitcoin with them. This exchange was ExpressCoin and the purchase deal was mailing them a US Postal Money order, they’d cash it and then send me the Bitcoin equivalent. Since this was a conversion from Fiat money (in this case United States Dollars) to Bitcoin, the exchange rate was around $330 per Bitcoin. The $10 investment gave me 0.03120712 Bitcoin.

Right after that I started lurking on the Bitcoin subreddit on Reddit and discovered two other currencies, Litecoin and Dogecoin. Then just after that I discovered the Cryptocurrency Faucet websites, places where they hand out free money for proving that you’re human with a captcha, and the off chance that exposing you to advertising will pay for the money flowing out of the faucet.

I still think a great part of all these cryptocurrencies is still quite firmly fixed in the hobbyist framework, the enthusiasts are on the “bright” side of the currency and the speculators are on the “dark” side of the currency. All of these currencies that I’ve engaged with display pretty wild volatility in comparison with any linked Fiat. My buy-in rate was around $330 per Bitcoin, and now weeks later, that’s at $218.87 per Bitcoin. There seems to be two camps developing, the first camp is quite keen on ignoring the Fiat exchange rate and trying to ignite their currencies inside themselves. One of the most positive and tightly knit communities surrounds the Dogecoin. Seeing how the Dogecoin enthusiasts communicate and cope with their currencies volatility is a lesson in lighthearted, altruistic generosity. People who hold Doge appear to be very ready to donate it to other people as encouragement, sympathy, or even on a lark. As you go from Doge to Litecoin to Bitcoin you see a lot less of the pleasantries and a lot more of the cold hard business of currency work and trading.

I think one of the most fascinating parts of these new currencies is how everything is starting from the very beginning – including questions of trust and honor. Because all of these coins are decentralized and unregulated there is no capacity for a “chargeback” mechanism, and when this runs up against mechanisms in other currencies, like the Fiat, where there are “chargeback” mechanisms in place, you run the risk of being seriously defrauded. I completely understand the fear and the very careful progress that these cryptocurrency traders make, but it does speak volumes about just how awful and corrupt some people are. We don’t assume people are trustworthy and honorable, so we need many complicated structures in place to cope with the unknowns. This gap in honor is, I feel, a huge part of what these currencies should work on next. How do you measure honor? How do you establish trustworthiness? I got to thinking about it, and every time I think I have a solution I run into an edge case that blows my concept out of the waters. The only thing that I think might work is arranging honor and trustworthiness in a way similar to the “Web of Trust” that PGP and GPG cryptographic systems rely on to establish trust. PGP/GPG never really took off for mass adoption and that’s always been a very sad thing for me, but I really like the “Web of Trust” idea that they pioneered. That people can trust others when there is reputation on the line, backed by money perhaps, there would need to be some sort of contingency addressing on the line as well. So if Bob wants to establish his trustworthiness and his honor he puts his money on the line for it. But the problem with this is that someone who is not honorable could just come along and lie about Bob and take his money, sending you right back to the start again. It’s fascinating, that Bitcoin decentralized money, but we need to figure out how to decentralize trust as well.

The US Government has done its due diligence in preventing egregious misuse of the Bitcoin currency to be used for illegal purposes by attempting to regulate how centralized exchanges transfer Fiat into the cryptocurrencies. It seems that Bitcoin and all the others are very elegantly designed in so far that despite all these regulations there is a community of individuals willing to operate as nano-exchanges that help bring everything back to its decentralized and unregulated roots. Half of the fun of playing with cryptocurrencies is being at ground zero for all these fascinating developments and arguments and seeing how something so new develops and unfolds.

So far I’ve got some small parts of a Bitcoin, some small parts of a Litecoin, and gobs of Dogecoin. For myself, I am very interested in figuring out ways to secure the relationships between traders, working on terms of honor, trust, and faith. If anyone has ideas that they would like to share, please leave them in the comments below. I would really love a nice conversation about securing honor, trust, and faith between traders.