Technology is Applied Magic

A few hours ago, Rebecca and I were walking through the Schwabstrasse S-bahn stop in Stuttgart, and as we reached the escalator to go up, we felt a cold wind coming down from the street level.  I was wearing only a short-sleeve polo shirt and a pair of light pants, and so we stopped to put on warmer clothing.  Only a few hours earlier, we were having paella on a warm Malvarrossa beach in Valencia, Spain.

As we were putting on our jackets and gloves, Rebecca made a comment that reminded me of one of Arthur C. Clarke’s three laws:

Any sufficiently advanced technology is indistinguishable from magic.
She observed that we had not been outside since stepping out of our friends' car and into the Valencia airport, and had we instead taken the Valencia metro to get to the airport, we would have been able to step underground in downtown Valencia and then return above ground in downtown Stuttgart, having not been outside and exposed to any sort of weather or natural light the entire distance across three countries. We were completely comfortable in the clothing we wore in the warm Valencian weather up until the point of reaching the Stuttgart street level, and that to me is amazing.

So I was pleasantly surprised as I came across this image while catching up on some of my RSS feeds:

Transit Map of the World’s Transit Systems

It’s a great little drawing, based on the London Tube map, that shows all of the worlds metropolitan mass transit systems either currently in existence or in the works.

The culmination of our technology, ranging from efficient metro systems to air travel to client control systems, is indistinguishable from magic for nearly everyone who’s lived before the 20th century (and even for certain people living in the 21st century, for that matter).

Image via strange maps.


For a few days now, I’ve been unable to reach http://de.php.net, not because the site has been down but because of incorrect DNS configuration by de.php.net’s Germany host. When you request a PHP manual page, PHP.net does this trick of geo-locating your IP and redirects you to your closet PHP.net mirror.

If you take a look, de.php.net is actually a CNAME record for php3.globe.de, which is in turn authoritative at ns1.dns-service.net. The problem is ns1.dns-service.net doesn’t have a record for php3.globe.de:

Searching for de.php.net A record at k.root-servers.net [193.0.14.129]: Got referral to d.gtld-servers.net. (zone: net.) [took 48 ms]
Searching for de.php.net A record at d.gtld-servers.net. [192.31.80.30]: Got referral to ns1.easydns.com. (zone: php.net.) [took 42 ms]
Searching for de.php.net A record at ns1.easydns.com. [216.220.40.243]: Got CNAME of php3.globe.de. and referral to m.root-servers.net [took 76 ms]
Searching for php3.globe.de A record at c.root-servers.net [192.33.4.12]: Got referral to C.DE.NET. (zone: de.) [took 36 ms]
Searching for php3.globe.de A record at C.DE.NET. [208.48.81.43]: Got referral to ns1.dns-service.net. (zone: globe.de.) [took 46 ms]
Searching for php3.globe.de A record at ns1.dns-service.net. [212.124.35.10]: Reports that no A records exist. [took 133 ms]
Response: No A records exist for php3.globe.de, and php3.globe.de does not exist. [Neg TTL=86400 seconds] Details: ns1.dns-service.net. (an authoritative nameserver for globe.de.) says that there are no A records for php3.globe.de, and that the hostname php3.globe.de does not exist. The E-mail address in charge of the globe.de. zone is: guardian@globe.de. NOTE: One or more CNAMEs were encountered. de.php.net is really php3.globe.de. 

Normally when the master nameserver is non-functional, DNS queries should fail-over to slave nameservers and pages are served normally. However, in this case the master nameserver is fully functional - it just doesn’t have a record for php3.globe.de. What’s funny is that the secondary nameservers for globe.de, ns2.dns-service.net and ns3.dns-service.net, have the correct A record for php3.globe.de, which means that the servers’ zone serial numbers are off and master->slave propagation isn’t happening correctly.

I’ve easily solved my problem by just adding the correct entry into my local machine’s hosts file, but I shouldn’t have to do this (nor does this fix the problem for everyone else in Germany). This just goes to show that DNS can be complicated and even the pros mess up every once and a while.

Update

It seems to be working today. It took three days after I posted before someone at Globe.de noticed the problem and added the correct DNS entry.

I’ve been mulling over upgrading my iPhone’s firmware to 1.1.1 for the last few weeks but have been put off by the complexity of it. All the tools and steps had been outlined so it was merely just running through the steps, but there were a ton of them, and it seemed like more of a pain in the ass than it was worth. Well, the hacker community has come through again with a easy solution, and now the 1.0.2->1.1.1 process is pretty painless. If you have an unlocked 1.0.2 iPhone and used AnySIM 1.0x to do it, you must “virginize” your iPhone before you can upgrade to 1.1.1. Apparently AnySIM 1.0x had a bug that damaged the seczone of your baseband firmware, causing the 1.1.1 upgrade to brick your iPhone. With the new release of the iphone-elite RevirginizingTool, here’s how you do it on a Windows machine:

  1. Make sure iTunes is configured to sync your contacts to something (e.g. Windows Address Book) and your photos are backed up (I lost the photos on my iPhone).
  2. Virginize your iPhone back to 1.0.2 OS and baseband using RevirginizingTool
  3. Use iTunes to upgrade to 1.1.1
  4. Jailbreak 1.1.1 using CARNAVAL
  5. Use AppTapp (installed by CARNAVAL) to install BSD Subsystem and OpenSSH
  6. SCP AnySIM 1.1 to your iPhone
  7. Run AnySIM
  8. GREAT SUCCESS!!!

Assumptions

  • You have an unlocked 1.0.2 phone that used AnySIM 1.0x
  • You have BSD Subsystem and OpenSSH packages installed (install with Installer.app aka AppTapp)
  • You have a strong WIFI signal
  • If you have a virgin phone, just use iTunes to upgrade to 1.1.1 and then skip to step 4

Detailed Procedure

Step 1

Run a full sync on iTunes to back up all of your settings. This will take care of your address book and most of your various settings. Copy off any photos you want to your computer.

Step 2

Download this. This is the latest release from the iphone elite team packaged with a script that will automatically virginize your iphone by backing up your seczone and flashing the baseband to its factory 1.0.2 state. Now SCP (try WinSCP) this file to your iPhone using login "root" and the default password of "alpine". SSH into your iPhone using root/alpine, and then make sure the file is in your iPhone's root directory, since the default home (really /private/var) is a partition mounted with noexec. Move the file from root user's home to the file system /: ```bashmv ~/virginiser.tar.gz /``` Then change dir to /, then run this command (all on one line, or you can run each command between the && separately): ```bashtar -xzvf Virginiser.tar.gz && ./Virginiser/virginise.sh && mv Virginiser/seczone.backup .``` This untars the archive, runs the automated script, and then copies a backup of your seczone to the filesystem /. SCP this seczone.backup file to your computer. Hold down the power button, slide to confirm, and then reboot your iphone. Now you should have a 1.0.2 iphone locked but still jailbroken.

At this point I recommend using iTunes to restore your iphone to 1.0.2 factory fresh. I had some problems with CARNAVAL installing its version of BSD Subsystem and OpenSSH over my previous installations using AppTapp. After the iTunes restore, it’ll reboot to exactly how a 1.0.2 iphone comes out of the sealed box - needing activation and SIM-locked.

BTW, this step is basically an attempt to automate the manual steps shown here, so if you have trouble or need more detail, just read that page.

Step 3

Use iTunes to upgrade to 1.1.1. You should now have a factory fresh equivalent of a 1.1.1 iphone.

Step 4

Download CARNAVAL and unzip. Connect your iPhone to your computer using the USB cable. Make sure you kill iTunes.exe and iTunesHelper.exe in your Windows Task Manager. Run the file "(CLICK HERE) by brasuco.bat", which will walk you through the process. FOLLOW THE INSTRUCTIONS CAREFULLY. During one of the steps, you are asked to create a URL link to http://jailbreak.toc2rta.com - if that URL doesn't take you back to the activation screen as expected, no worries, just tell clear it and type into the Safari URL bar this address instead: http://jailbreak.kengz.com. Visiting this will download the exploited TIFF, essentially rooting your iPhone. After you've followed all CARNAVAL instructions and learned about Brazil, you should be greeted with a fully jailbroken and activated iPhone.

Step 5

CARNAVAL installed AppTapp, which shows up as Installer on your iphone's home screen. Use that to install BSD subsystem and OpenSSH. Now go to your iphone's WIFI settings to find your iphone's IP address. You should now be able to SSH/SCP into your iphone using root/alpine.

Step 6

Download AnySIM 1.1. Unzip AnySIM-1.1.zip, which will give you a anySIM.app directory. SCP this directory (not just the files) into your iPhone's /Applications directory. Then chmod all the files inside your iphone's /Applications/anySIM.app/ directory to +x (0755 will work). Once this is done, reboot your iphone to find the AnySIM icon on your iphone home menu.

Step 7

Run AnySIM, slide to confirm, and go get a cookie.

Step 8

You now have a fully jailbroken, activated, and SIM-unlocked iphone. You also have Installer.app, a aptitude like application that lets you install a ton of really cool third party applications over the air, complete with notifications of application updates.

Good Luck

The entire process only takes about 30 minutes. I've been running 1.1.1 for a few days and haven't noticed any problems. I really dig the increased speaker volume and the space, space to add a period and a space when using the keyboard. Good luck, and leave a comment this works for you (or if you have any questions or suggestions).

iPhone owned

This is the first time I’ve been back in the States since the iPhone was released, and after getting a chance to play with one yesterday, I decided I had to go out and buy one today. The problem is that AT&T-locked JesusPhone doesn’t work in Germany without a little bit of hackery, and Apple’s just-released-last-week 1.1.1 firmware is reported all over the internet to brick hacked iPhones. Would an AT&T store in Mount Pleasant, SC turn over so many iPhones that they would already be selling boxed 1.1.1 models?

South Carolina isn’t exactly a technology hotspot, so I took a bet that I could buy a boxed iPhone with an older, perhaps original 1.0, firmware (flip-flops and sundresses, on the other hand, sell like hotcakes here). I won my bet and within an hour of getting home, I had a completely unlocked iPhone with a myriad of cool unofficial apps, thanks to tools like iBrickr and PACAY. My new iPhone now has a youtube viewer, OpenSSH, BSD utilities, a wifi stumbler, flickr uploader, and a completely cool Over The Air application installer.

The device is incredibly well built and solid. It’s smaller than I had imagined, but the screen is definitely adequate for browsing. The touch screen obviously lacks tactile feedback, but it’s also the most accurate touch interface I’ve ever used. I’m able to type much faster than I ever could using normal keys and T9.

With it unlocked and freed from Apple’s proprietary grip, the iPhone is very special. Free and open source software on such a beautiful piece of hardware is very exciting, but when Apple sets out to hamper such innovation and creativity, I can’t help but think of their past mistakes with closed systems. Things could have turned out very differently had MacOS been a little more open early on, and things may very well turn out similarly if Apple doesn’t change their ways. Here’s to hoping Google’s gPhone will be the IBM PC to Apple’s II.

Highly useful link: Unlock your iPhone using the latest AnySIM