Ptolemy’s Gate

December 15, 2007 by stickiestome

The demon saw Kitty the moment she moved. A wide mouth opened in the stubby, featureless head; double rows of teeth descended from above and rose from the lining of the jaw. It snipped its teeth together curiously, making a noise like a thousand scissors, slicing in unison. Folds of gray-green flesh shifted on either side of the skull, revealing two golden eyes that glinted as they turned on her.

 

Kitty did not repeat her mistake. She stood stock-still, barely six feet from the bent and snuffling head, and held her breath. The demon scraped a foot experimentally against the floor, scoring five thick claw gashes in the tiles. It made a curious crooning noise deep in its throat. It was sizing her up, she knew it was, appraising her strength, debating whether to attack. In the final moments of crisis her brain took in many irrelevant details of its guise: the flecks of gray hair about the joints, the bright metal scales upon the torso, the hands with too many fingers and too few bones. Her own limbs shook; her hands twitched as if to encourage her to run, but she fought against her fear and beat it down.

 

Then a voice came: sweet and female, curiously inquiring. “Aren’t you going to run, my dear? I can only lope along on these club feet. Ah me, so slow! Try it. You never know–you might escape.” So gentle was the voice it took Kitty a moment to realize it came from the dreadful mouth. It was the demon that spoke. Numbly she shook her head.

 

The demon flexed six fingers in an incomprehensible gesture. “Then at least step toward me,” the sweet voice said. “It would save me the torture of hobbling over to you on these poor club feet of mine. Ah me, so sore! My essence flinches from the pull of your harsh, cruel earth.”

 

Again Kitty shook her head, slower this time. The demon sighed, bowing its head as if crushed and disappointed. “My dear, you have no courtesy. I wonder whether your essence would disagree with me if I ate you. I am a martyr to indigestion. . . .” The head rose; the eyes sparkled, the teeth snipped like a thousand scissors. “I will risk it.” Without pause the leg joints bent and sprang, the jaws opened, wide, wide, wide; the fingers clasped. Kitty fell back, screamed.

 

A wall of silver shards, thin as rapiers, rose from the floor, spearing the demon as it leaped; a flash, a shower of sparks–its body burst into lilac flames. It hovered in midair for a split second, twitched, emitted a single gout of smoke, then drifted softly to the floor, light as burning paper. A little voice whispered, sad, resentful: “Ah me . . .” Now it was nothing but a husk, which fell in upon itself and presently dwindled into ashes.

 

Read more of ptolemy’s gate here

Flyte

December 15, 2007 by stickiestome

Septimus Heap tipped six spiders into a jar, screwed the lid down tight and put them outside the door. Then he picked up his broom and continued sweeping out the Pyramid Library. The Library was cramped and dark. It was lit by a few fat candles that spat and spluttered, and it smelled weird–a mixture of incense, musty paper and moldy leather. Septimus loved it. It was a Magykal place, perched right at the top of the Wizard Tower and hidden away deep inside the golden Pyramid, which crowned the Tower. Outside, the hammered gold of the Pyramid shimmered brightly in the early-morning sun. After Septimus had finished sweeping, he made his way slowly along the shelves, humming happily to himself while he sorted out the Magykal books, parchments and spells that the ExtraOrdinary Wizard, Marcia Overstrand, had, as usual, left in a mess. Most eleven-and-a-half-year-old boys would rather have been out in the bright summer morning, but Septimus was where he wanted to be. He had spent quite enough summer mornings outside–and winter ones, come to that–in the first ten years of his life as Young Army soldier, Boy 412. It was Septimus’s job, as Apprentice to the ExtraOrdinary Wizard, to tidy the Library every morning. And every morning Septimus found something new and exciting. Often it was something that Marcia had left out especially for him: maybe a Conjuration that she had come across late at night and thought might interest him or a dog-eared old spell book that she had taken from one of the Hidden shelves. But today, Septimus reckoned he had found something for himself: it was stuck underneath a heavy brass candlestick and looked slightly disgusting–not the kind of thing that Marcia Overstrand would want to get her hands messy with. Very carefully he pried the sticky brown square off the bottom of the candlestick and put it in the palm of his hand. Septimus examined his find and felt excited–he was sure it was a Taste Charm. The thick, brown, square tablet looked like an old piece of chocolate; it smelled like an old piece of chocolate; and he was pretty sure it would taste like an old piece of chocolate too, although he wasn’t going to risk it. There was a chance it might be a poison Charm that had dropped out of the large box labeled: TOXINS, VENOMS AND BASYK BANES, which teetered unsteadily on the shelf above.Read more of flyte hereRead more Septimus Heap here 

Bourne Identity

December 15, 2007 by stickiestome

“You appear to be a mass of contradictions,” Dr. Washburn said. “There’s a subsurface violence almost always in control, but very much alive. There’s also a pensiveness that seems painful for you, yet you rarely give vent to the anger that pain must provoke.” “You’re provoking it now,” said the man. “And we’ll continue to do so, as long as there’s progress.” “I wasn’t aware any progress had been made.” “Not in terms of an identity or an occupation. But we are finding out what’s most comfortable for you, what you deal with best. It’s a little frightening.” “In what way?” “Let me give you an example.” The doctor put the clipboard down and got out of the chair. He walked to a primitive cupboard against the wall, opened a drawer, and took out a large automatic handgun. The man with no memory tensed in his chair; Washburn was aware of the reaction. “I’ve never used this, not sure I’d know how to, but I do live on the waterfront.” He smiled, then suddenly, without warning, threw it to the man. The weapon was caught in midair, the catch clean, swift, and confident. Break it down; I believe that’s the phrase.” “What?” “Break it down. Now.” The man looked at the gun. And then, in silence, his hands and fingers moved expertly over the weapon. In less than thirty seconds it was completely dismantled. Read this excerpt here  

Physik

November 27, 2007 by stickiestome

The pale light of a frosty autumn morning was trying to shine in through the high windows at the back of the ground floor of Warehouse Number Nine. It was not helped by the thick green glass in the tiny windows or by the layers of grime that covered them, but it did its best and eventually emerged as long shafts of feeble brightness swimming with great shoals of
dust.
“Where did you say this wretched mirror was, Alther?” asked Alice crossly, as she negotiated her way out from underneath a stuffed elephant. Alther was sitting on an ebony chest, which was firmly bound with thick iron straps and secured with a huge lock. DUTY UNPAID: IMPOUNDED was stamped all over it in bright red, as though some past Customs Officer had
lost his temper and taken it out on the chest.
Alther looked ill; he felt as if he had eaten a bucketful of dust and washed it down with the slime from a bag of moldy carrots. He had spent the last hour Passing Through the most dusty, mildewed and decrepit pile of junk it had ever been his misfortune to Pass Through. There were so many large objects tied up in sacks, sealed in trunks and stuck at the back
of inaccessible stacks that the only way to check every single piece in the use was for Alther to Pass Through. So far he had found nothing and he had only checked maybe one thousandth of the available junk and rubbish piled up in Alice’s warehouse. Alther could not even think straight,for the loud snores and foul-smelling burps–and worse–that wereemanating from Spit Fyre stopped his dusty, muddled thoughts frommaking any sense at all.

“It’s a Glass, Alice, a Glass–not a mirror,” Alther corrected grumpily. “And if I knew where it was, I wouldn’t be sitting here feeling like I’d been trampled by a herd of Foryx, would I?”

“Don’t be silly, Alther,” snapped Alice. “Foryx don’t exist.”

“Are you sure, Alice? You’ve probably got a whole stash of ‘em stored up here somewhere,” said Alther testily.

“When I was little, I used to think Foryx existed,” said Jenna, hoping to help things along. “Nicko liked to scare me with bedtime stories about them–all half-decayed and slimy, horrible warty faces, huge feet with great claws running forever around the world and crushing everything in their path. I used to have to watch the boats from my window for hours
before I forgot about them.”

“That’s not a very nice thing to tell your little sister, Nicko,” said Alther

 

Read excerpts from more Angie Sage books here

Read more from Physik here

Detect an iPhone User

October 20, 2007 by stickiestome

Article I found on http://www.askdavetaylor.com/detect_apple_iphone_user_web_site_server.htmlThe key to detecting a browser type is to remember that there’s an environment full of information transmitted with each query sent from the web browser to the server. It includes the obvious things like the requested data file (which can be an HTML document, GIF or JPEG image, AVI movie, FLV animation or related) and the IP address of the browser’s computer, but it also includes a critical variable called HTTP_USER_AGENT. Visit with a regular browser from a regular computer and you’ll see something like this: HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727) Here you can see that I’m testing from Firefox (which identifies itself as Mozilla for historical reasons) running on Windows XP (though it’s identifying it as Windows NT for some cockamainie reason) and that I’m also running .NET. Grab that same environment value from a slick Apple iPhone query, though, and the values are quite a bit different: HTTP_USER_AGENT=Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C25 Safari/419.3 Pretty interesting reading if you’re a geek: You can see where it’s also identifying itself as Mozilla, but this time as Mozilla/5.0 rather than Mozilla/4.0. The string “iPhone” appears, which is what we’ll key on, but notice also that it says that it’s on a system with a “CPU like Mac OS X”, just as we iPhone users have been suspecting for a while. You can see the basic test we’ll need to do here to ascertain if the visitor is using an iPhone or not: if their HTTP_USER_AGENT environment value contains the string “iPhone”, we’ve got a match. Otherwise it’s something else on some other device or computer. You can do this test and act on it in a zillion different places, ranging from the actual Web server ruleset to JavaScript code to PHP conditional code to even having a separate “gateway” script page that everyone hits and redirects them to the iPhone or non-iPhone version of your Web page and site. A JavaScript snippet might look like this: var agent=navigator.userAgent.toLowerCase(); var is_iphone = ((agent.indexOf(‘iPhone’)!=-1); if (is_iphone) { conditional code goes here } Rather do it as a shell script? Me too.Here’s how I’d do that as a rudimentary Linux shell script:#!/bin/shif [ ! -z "$(echo $HTTP_USER_AGENT | grep iPhone)" ] ;then echo “Location: iphone/index.html”else echo “Location: index2.html”fiexit 0 This post is also available here 

Oracle 10g on Tiger

October 20, 2007 by stickiestome

Taken from the orablog at http://www.orablogs.com/sergio/archives/000781.html

 

Installing Oracle Database 10g on Mac OS X

Recently Oracle and Apple announced the availability of Oracle Database 10g for Mac OS X. In in this — longer than usual — blog post, I document my experience installing the Oracle database on my Mac. In a subsequent post, I’ll talk about my experience installing Oracle HTML DB. These instructions should not be considered a best practice, but they are steps that worked for me. I tried to incorporate as many screenshots as possible to help you when you are performing the install.

 

1. Hardware Requirements

The Quick Installation Guide states the following hardware requirements:

• 512 MB RAM

• 1GB or twice the size of RAM swap space

• 400MB of disk space in /tmp

• 2Gb disk space for software files

• 1.2Gb disk space for database files

I performed my installation on an iMac G5 with 1Gb of RAM and 160GB of disk.

2. Operating Sytems Requirements

Oracle Database 10g is only supported on Mac OS X Server. As I was just experimenting, I installed on regular OS X. There are no doubt minimum requirements. You can verify the version of Mac OS X, by executing the following command:

# sw_vers

Below is what I saw when I executed this.

 

 

3. Install Developer Tools

To install the Oracle database, you need a C compiler. I didn’t have one installed, so I signed up for a (free) Apple Developer Connection (ADC) account to download the Developer tools. To do this, sign in to ADC then click on Download Software then Developer Tools. First, download and install Xcode Tools v1.1 then download and install Dec 2003 gccLongBranch Tools Installing Xcode 1.1

 

After installing these packages you, verify you have the correct version of gcc installed by issuing the following command:

# gcc -v

Make sure you have at least the version as shown below.

 

 

Mac OS X LeopardPreOrder Now. Free Shipping Lowest Price Guaranteed $129.00www.Amazon.Com/Mac-Leopard

 

MactoolboxIphone, Ipod and macbook fixes. Apple pro’s at your service.www.mactoolbox.com

 

MerlinProfessional project management software for Mac OS X.www.merlin2.net

 

GoToMeetingSave Time & Money w/ GoToMeeting Do More, Travel Less. Try Free Now!www.GoToMeeting.com

 

 

4. Create Required User and Groups

The Quick Installation Guide suggests to start the Workgroup Manager. I didn’t find one on my system, so I imagine this is a OS X Server thing. I used the command line instructions from the Database Installation Guide 10g for Mac OS X instead.

First, make sure you’re root by executing in a Terminal:

# sudo sh

 

Determine Available Group ID

Execute the following command:

# nireport . /groups gid name | more

You’ll see a list similar to the one below.

70 www

74 mysql

75 sshd

76 qtss

78 mailman

79 appserverusr

80 admin

81 appserveradm

99 unknown

Choose an unused group ID. I chose 600.

Create oinstall Group

Using the available group ID, create a group called oinstall by executing the following three commands:

# nicl . -create /groups/oinstall

# nicl . -append /groups/oinstall gid 600

# nicl . -append /groups/oinstall passwd “*”

Create dba Group

Repeat the steps above to determine another available group ID. I chose 601. Then, create a dba group by executing these commands:

# nicl . -create /groups/dba

# nicl . -append /groups/dba gid 601

# nicl . -append /groups/dba passwd “*”

Create the Oracle Software Owner User

First, find an unused user ID, or UID, by executing the following command:

# nireport . /users uid name | more

You’ll see a list similar to the following:

27 postfix

70 www

71 eppc

74 mysql

75 sshd

76 qtss

77 cyrus

78 mailman

79 appserver

502 sleuniss

I chose 601 as an available UID. Create the oracle user by executing these commands. Substitiute the gid and uid you chose where appropriate:

# nicl . -create /users/oracle

# nicl . -append /users/oracle uid 601

# nicl . -append /users/oracle gid 600

# nicl . -append /users/oracle shell /bin/bash

# nicl . -append /users/oracle home /Users/oracle

# nicl . -append /users/oracle realname “Oracle software owner”

 

Here’s what it looked like.

 

Next, add the oracle user to the dba group:

# nicl . -append /groups/dba users oracle

Create a home directory and change the owner and group:

# mkdir /Users/oracle

# chown oracle:oinstall /Users/oracle

Finally, set the password for the oracle user:

# passwd oracle

 

5. Create Required Directories

Based on the suggestions in the Quick Installation Guide, I created two directories, one for the Oracle software, and one for the datafiles. Strictly speaking two separate directories are not required here.

Create the Oracle Base Directory

Create the Oracle base directory as follows:

# mkdir -p /Volumes/u01/app/oracle

Create Directory for Datafiles

Create the directory for datafile as follows:

# mkdir -p /Volumes/u02/oradata

Change Groups and Permissions for Directories

Change the groups and permissions for the directories you just created by executing these commands:

# chown -R oracle:oinstall /Volumes/u01/app/oracle

# chown -R oracle:oinstall /Volumes/u02/oradata

then:

 

# chmod -R 775 /Volumes/u01/app/oracle

# chmod -R 775 /Volumes/u02/oradata

6. Configure Kernel Parameters

As is often the case when installing Oracle on Linux or other flavors or UNIX, certain kernel parameters will have to be adjusted for Oracle to run properly. The Quick Installation Guide specifies the proper minimum values.

To verify the kernel parameter values, execute:

# /usr/sbin/sysctl -a | grep corefile

# /usr/sbin/sysctl -a | grep sem

# /usr/sbin/sysctl -a | grep maxproc

Here’s what I saw:

 

I only had to adjust two values by executing these commands:

 

To make these values stick, that is, presist after a reboot, edit /etc/sysctl.conf and add lines for values that need changing. I used vi to edit the file, but you can use any text editor.

 

Set Shell Limits

For performance reasons, shell limits need to be adjusted. Begin by navigating to the directory that contains the IPServices script.

# cd /System/Library/StartupItems/IPServices

Using any text editor, edit the file IPServices and add the following ulimit commands inside the StartService() function:

ulimit -Hu 2068

ulimit -Su 2068

ulimit -Hn 65536

ulimit -Sn 65536

Here’s where I put them:

 

7. Configure Oracle User’s Environment

The installer is run from the oracle user. Before you can run the installer, however, the environment for oracle has to be set properly.

Create .bash_profile

While logged in as oracle, I created a file called .bash_profile using a text editor.

 

Execute .bash_profile

Run the .bash_profile as follows:

oracle$ . ./.bash_profile

8. Add Hostname to /etc/hosts

Because I performed my installation on machine at home, which gets its IP address through DHCP from a wireless router, I had to make sure the installer could find this IP address by adding it to my /etc/hosts file. You may not need to do this, depending on how your machine is networked. If, during the install process, you see an error related to the installer not being able to determine the IP address, stop the installer, perform these steps and launch the installer again. As Root, edit the file /etc/hosts and add an entry with your hostname and IP address. I determined my IP address by executing the following commands as root:

sh-2.05b# hostname

sh-2.05b# ifconfig -a

The first command returned sergio-g5.local. The second returned configuration details for each network device in my iMac. The one I’m using is en1, an Airport card. The IP address for that is 192.168.0.5. So, I added a line to my /etc/hosts file to make it look like this:

 

9. Install Oracle

Download the Files

If you’re like me and you don’t have the CDs, you can download the necessary files from OTN. To install the database, you’ll need the file ship_mac_db.cpio.gz While you’re there, you might as well get the Companion CD, ship_mac_companioncd.cpio.gz and HTML DB 1.6 as well. I downloaded the files to the desktop while logged using my own account, so for the oracle user to access these files, I first moved the file from the Desktop to the /tmp directory and then copied them there to a stage directory in /Volumes/u01/app/oracle/, owned by oracle by executing the following commands from within a Terminal:

 

sleuniss% cd Desktop

sleuniss% mv ship_mac_db.cpio.gz /tmp

sleuniss% su – oracle

oracle$ mkdir /Volumes/u01/app/oracle/stage

oracle$ cd /Volumes/u01/app/oracle/stage

oracle$ cp /tmp/ship_mac_db.cpio.gz .

 

Uncompress the File

While in the stage directory, issue the following commands to uncompress the file:

oracle$ gunzip ship_mac_db.cpio.gz

oracle$ cpio -idm < ship_mac_db.cpio

When I did this, I was presented with a message after the first command, Operation not permitted. Not sure what that was about, but it seemed harmless.

Launch Installer

To launch the installer, run the script runInstaller in the Disk1 directory.

oracle$ cd Disk1

oracle$ ./runInstaller

 

Keep clicking Next until you are asked to run a script as root. To do so, launch a new Terminal and become root. Then execute these commands:

sh-2.05b# cd /Volumes/u01/app/oracle/oraInventory/

sh-2.05b# ./orainstRoot.sh

Accept all the default values, and keep clicking Next.

Choose Edition

When prompted to choose a database edition, I selected Enterprise.

Choose Starter Database

I chose to create a General Purpose starter database

Choose Character Set

I changed from the default to AL32UTF8. This is not necessary unless you plan to to use Unicode or multibyte characters in your database.

Database File Storage

Earlier, during preparation for this installation, I set up a location for database files in /Volumes/u02/oradata. When prompted for the location on the file system for database files, change the default value.

Database Schema Passwords

The installer allows you to set all password to be the same.

Install

After a quick glance at the install summary, it’s time to kick off the installation.

Run root.sh

When prompted to run root.sh, run the following commands as root:

sh-2.05b# cd /Volumes/u01/app/oracle/product/10.1.0/g5db/

sh-2.05b# ./root.sh

End of Installation

You’ve reached the end of the installation

Logging in

To run SQL*PLUS, you’ll need to configure the PATH to the executables. While logged in as oracle, execute these commands:

oracle$ cd /Volumes/u01/app/oracle/product/10.1.0/g5db

oracle$ export ORACLE_HOME=`pwd`

oracle$ export PATH=$PATH:$ORACLE_HOME/bin

Now you can run SQL*PLUS. You may want to add these environment variable settings to the oracle user’s .bash_profile for subsequent sessions.

 

That’s it, the 10g database is installed. In the next few weeks, I’ll write up some instructions to install Oracle HTML DB as well.

CHM reader for mac

October 20, 2007 by stickiestome

I keep getting stuck with windows apps and docs that I need but cant run on my mac. Well here’s a way to open CHM files on the mac.

 

Chimp Publisher’s Description:

 

Chimp lets you view all those pesky CHM files that are floating around. CHM stands for Compiled HTML, and it’s used by Microsoft Windows for help files, documentation, magazines and eBooks. Chimp lets you open these files with the elegance and ease you’d expect from OS X.

 

Chimp features:

 

* Document-wide searching

* Document-wide printing

* Editable bookmarks

 

What’s new in this version:

 

* Export to PDF (10.4 only)

* Spotlight indexing

* More compatible with unusually formatted files

* Bug fixes

 

http://www.spherasoft.com/chimp.html

 

Download from : http://www.spherasoft.com/download/chimp.dmg

Antivirus for Mac

October 20, 2007 by stickiestome

I suppose Norton is the household name for antivirus but its not free. I know scores of free antivirus programs for the Windows platform but didnt know of any free antivirus for Mac. A quick search in google landed me at http://www.clamxav.com/index.php

 

From the site:

 

ClamXav is a free virus checker for Mac OS X. It uses the tried, tested and very popular ClamAV open source antivirus engine as a back end.

 

Back in the days before OS X, the number of viruses which attacked Macintosh users totalled somewhere between about 60 and 80. Today, the number of viruses actively attacking OS X users is…NONE! However, this doesn’t mean we should get complacent about checking incoming email attachments or web downloads, for two reasons. Firstly, there’s no guarantee that we Mac users will continue to enjoy the status quo, but more importantly, the majority of the computing world use machines running MS Windows, for which an enormous quantity of viruses exist, so we must be vigilant in checking the files we pass on to our friends and colleagues etc. For example, if you’re a wise person and you’ve turned MS Office’s macro support off then you’re not going to notice that virus which is hiding inside this month’s edition of Extreme Ironing.doc which your friend sent you. If you then forward that document to a less wise person who has not turned off the macro support, then you have most likely just sent him a shiny new Pandora’s Box with a sign saying “Open this end”!

 

Flippancy aside, I’m sure you get the idea: check the file before opening and/or sending it on to someone else. This gives you the opportunity to avoid the file altogether or at least copy and paste any vital information into a new document and send that instead.

 

Don’t forget, if you run VirtualPC you can still become infected and lose valuable data on your Mac even though technically you’re running Windows inside a sandbox. VPC will run any application you tell it to, virus or no virus, it doesn’t know the difference. You can protect yourself slightly by not using VPC’s “shared folders”, but that’s a useful feature which you shouldn’t have to be without.

 

 

I tried it out and it picked up a couple of viruses in my MS Excel. Unfortunately it did not clean them

Uncover a lost product key on Windows

October 20, 2007 by stickiestome

There are several methods you can use to uncover a lost product key for a version of Windows that you currently have installed.

 

For older versions of Windows you can extract the product key from the Windows Registry. Click Start | Run and then type regedit and click OK.

 

For Windows 95 and Windows 98, browse to this key:

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductID

For Windows NT 4.0, browse to this key:

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID

Alternatively, there are also some free scripts and freeware software programs that can help you:

 

Magical Jelly Bean Keyfinder: This is probably the best tool for this task. In addition to finding and identifying product keys for Windows 95/98/ME/NT/2000/XP, it can also uncover product keys for installed versions of Microsoft Office.

Windows Key Finders: This is actually a group of tools that can be used for unearthing product keys for different versions of Windows.

Belarc Advisor: This free utility builds a detailed profile of your installed software and hardware. (As suggested in the discussion thread by ShadyHouse).

Whichever method you use, make sure you write down the product key and put it in a safe place for future reference.

 

How to Hack the iphone (1.1.1)

October 20, 2007 by stickiestome

- DO NOT FOLLOW THESE INSTRUCTIONS IF YOU HAVE EVER MODIFIED YOUR BASEBAND –

 

INTRODUCTION

 

Jailbreaking iPhone software v1.1.1 is an involved process, but can be

accomplished with the documentation here. The following steps will be

explained in-depth. Please read them thoroughly before proceeding.

 

0. Downgrading to 1.0.2 (if necessary)

1. Preparing the iPhone for a jailbroken update

2. Performing a software update, leaving you with a jailbroken v1.1.1

3. Forcing v1.1.1 to mount read-write so you can access it

4. Installing SSH and BSD world

5. Activating with a Non-ATT SIM

6. Patching SpringBoard to allow third-party applications

7. Clean-up

 

STEP 0: DOWNGRADING TO 1.0.2

 

Certain steps must be run prior to upgrading to v1.1.1. If you have already

upgraded to v1.1.1, follow these steps to downgrade back to v1.0.2.

 

1. Make sure you have a copy of the v1.0.2 firmware handy. It can be downloaded

here: http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3823.20070821.vormd/iPhone1,1_1.0.2_1C28_Restore.ipsw

 

2. With the iPhone turned on, hold down the POWER and HOME buttons

simultaneously for ten seconds (until the screen goes dark). Then release

POWER while CONTINUING TO HOLD DOWN HOME for another 15 seconds.

 

At this stage, the iPhone WILL APPEAR TO BE POWERED DOWN, but it is actually

in a special type of recovery mode allowing software downgrades. If you

see the “Connect to iTunes” icon, you’ve placed the phone into the wrong

recovery mode, and will need to try again.

 

3. While continuing to hold HOME, launch iTunes. You should be prompted to

restore your iPhone. If your iPhone instead boots up, then you powered it

down instead of putting it into downgrade mode, so give step 2 another try.

 

Once iTunes is up, you can now release HOME. You will be prompted to

restore your iPhone (if you are not, try step 2 again). Hold down the

OPTION key (or SHIFT if you’re running Windows) and click RESTORE.

You will then be prompted with a file selection window allowing you to

select a firmware file. Select the ‘iPhone1,1_1.0.2_1C28_Restore.ipsw’

file you downloaded in step 1, and begin the restore.

 

4. After the restore is complete, you’ll be told that the process failed, and

the iPhone will be in recovery mode. This is normal. Grab a copy of

NullRiver’s Installer.app from http://iphone.nullriver.com/beta/ and

attempt to install the Installer.app. This will cause your phone to boot

again, however the installation of Installer.app will fail (it’s OK).

 

5. Congratulations, you’re now back at 1.0.2. You’ll need to get shell access

to move onto the next step. Since you have Installer.app right there,

just run the installer again. This time it should succeed. Now activate.

 

Drudge has prepared a package called Trip1Prepz, which is designed

for people having to downgrade. It will perform all the necessary

preparations from STEP 1 without needing to set SSH back up, etcetera.

 

After Installer.app has been installed, go to this URL in Safari:

http://conceitedsoftware.com/iphone/beta

 

This will prompt you to add a community source to Installer. Once you’ve

done this, you should see Trip1Prepz listed as a package. BEFORE

INSTALLING IT, connect to iTunes, and ensure that you have an ‘update’ or

‘check for updates’ button. This is important, because once you install

Trip1Prepz, iTunes will no longer give you an option to update, but

only restore.

 

Once you’re up in iTunes, stay connected and install Trip1Prepz from

Installer.app.

 

NOW SKIP “STEP 1: PREPARING THE IPHONE FOR A JAILBROKEN UPDATE” COMPLETELY!

 

Alternatively, if you don’t want to use Trip1Prepz, you’ll need to

get going again with SSH and BSD world. This method will require that you

DO execute the preparation steps in step 1.

 

To do it this way, use Installer.app and install the “Community Sources”

package. This will add the “OpenSSH” package to the installer manifest.

Now install BSD Subsystem then OpenSSH and you should be able to get back

into your iPhone (root password is dottie). You’ll also want to add

BSD Subsystem. Now move onto the steps below (do not skip them in this case).

 

STEP 1: PREPARING THE IPHONE FOR A JAILBROKEN UPDATE

 

NOTE: This step requires you to be at iPhone software v1.0.2. If you are

not, please see STEP 0: DOWNGRATING TO 1.0.2 before proceeding.

 

Before upgrading to v1.1.1, some preparations must be made. The v1.1.1

update re-jails the iPhone. We’re going to use a little hack which will

keep 1.1.1 from being able to jail once you upgrade.

 

The way this hack works is this: An “update” in iTunes is unlike a “restore”,

in that the /private/var partition is preserved. The iPhone jails itself

to /private/var/root/Media. We’re going to move Media out of the way and

replace it with a symlink to /. This fools v1.1.1 into jailing to /, which

really is no jail at all. This will allow us to access the root filesystem,

which we’re going to throw into read-write mode later on.

 

1. Connect the iPhone to iTunes! It is critical that iTunes already

recognize your phone and that you have the “update” button available to you

BEFORE making the changes below. This is because executing the steps below

will otherwise cause iTunes to go into recovery mode, which will NOT WORK

with this jailbreak. Open iTunes, and if you have a “Check for Updates”

button, click it. You will be prompted to upgrade to 1.1.1. Tell iTunes

to “Download Only”; DO NOT click “Download and Install”.

 

Once you see the “update” button, DONT CLICK IT, but continue to step 2.

 

2. While still connected to iTunes, SSH into your iPhone while still at

version 1.0.2. If you don’t have SSH set up, see STEP 0’s steps four and

five to install OpenSSH.

 

Now execute the following commands:

 

mv /var/root/Media /var/root/Media.old

ln -s / /var/root/Media

 

Your Media folders should now look like this:

 

lrwxr-xr-x 1 root wheel 1 Oct 10 12:06 Media -> /

drwxr-x— 7 root wheel 272 Oct 10 10:51 Media.old

 

If it doesn’t look like this, try again.

 

3. If you plan on activating later using a Non-AT&T SIM (or without iTunes),

you’ll want to back up your existing copy of the lockdownd binary

(we’ll use these later)…

 

cp /usr/libexec/lockdownd /var/root/lockdownd.1.0.2

 

STEP 2: PERFORMING A SOFTWARE UPDATE

 

Now that you’ve symlinked Media -> /, you are ready to perform an update to

1.1.1. This MUST BE DONE WITH THE UPDATE BUTTON, and NOT the restore button.

The update process preserves your /private/var partition, while the restore

blows it away (which will just re-jail you).

 

Click the UPDATE button in iTunes, and upgrade to 1.1.1

 

If you didn’t listen and shut iTunes, you may no longer have an update button.

If this is the case, you’ll need to delete the symlink, put Media back,

start iTunes, then repeat STEP 1 again.

 

STEP 3: FORCING READ-WRITE MODE

 

If you’ve followed the steps properly, your iPhone should now be jailbroken, but

not yet writable. To confirm this, shut down iTunes and use iPHUC to connect

to the iPhone. Run ‘ls’ and you should see the root folders (Applications,

System, etc). If you see iTunes_Control, then you’ve botched a step and

will need to start over at STEP 0.

 

Forcing read-write mode involves overwriting the part of the disk partition that

contains /etc/fstab. This is done by writing to /dev/rdisk0s1. The included

iphuc-jailbreak code supports a command called “putjailbreak” which does this.

After we overwrite the disk, we’ll reboot and the iPhone will be mounted in

read-write!

 

1. Run iphuc:

 

Make sure iTunes is closed

killall iTunesHelper

 

- If you are on OSX/Intel: ./iphuc-jailbreak.osx

- If you are on OSX/PPC: ./iphuc-jailbreak.ppc

- If you are on Windows: ./iphuc-jailbreak.exe

 

NOTE: If you are using Windows, you’ll need to grab an existing iPHUC

distribution to get all the remaining files

 

2. You should now be connected to your iPhone. Test this by running ‘ls’, and

make sure you see ‘dev’ among the list of directories. If you see

iTunes_Control, then you haven’t jailbroken properly and will need to start

again from STEP 0.

 

3. We are now going to overwrite part of the disk partition with our payload

using the 2K file included in this distribution called rdisk0s1.

In iphuc, execute this command:

 

putjailbreak rdisk0s1 /dev/rdisk0s1

 

4. The upload should be relatively quick. Once finished, reboot your iPhone.

You’re now in read-write mode, and jail broken! You can test this by

connecting again with iphuc after rebooting and running:

 

getfile /etc/fstab fstab

 

Open the file, and you should see the options for / to be ‘rw’ instead of

‘ro’. If you still see ‘ro’, then something’s gone wrong, try repeating

from step three.

 

STEP 4: INSTALLING SSH AND BSD WORLD

 

At this stage, you can crack shell on iPhone in the same way that you did

with 1.0.2. If you’re using a Mac, the easiest way is using the iPhone

SSH Installer for Mac, which can be found here:

 

For Mac:

http://iphone.natetrue.com/iPhone_SSH_Install_for_Mac.zip

 

1. Just run iPhoneMacSSHInstall.sh in that package and it will walk you through

an automated install of SSH:

 

sh iPhoneMacSSHInstall.sh

 

The new root password for v1.1.1 is ‘alpine’, once it’s finished:

 

ssh -l root iphone

 

Your SSH keys are likely to change, so if you get any errors about an

incorrect key, you can:

 

rm -f ~/.ssh/known_hosts

 

from your desktop’s home directory and try again.

 

2. Once you’re in, you will also want to install the BSD world. NerveGas has

built a new version of the BSD subsystem that doesn’t require libarmfp.

Download and extract the following files:

 

http://iphone.natetrue.com/BSD_Base-2.0.tar.gz

http://iphone.natetrue.com/BSD_Extra-2.0.tar.gz

 

tar -zvxf BSD_Base-2.0.tar.gz

tar -zvxf BSD_Extra-2.0.tar.gz

 

Change into each of these directories and run:

 

cd BSD_Base

scp -r * root@[IPHONE IP]:/

cd ../BSD_Extra

scp -r * root@[IPHONE IP]:/

 

For Windows:

 

1. Follow the instructions here:

http://cre.ations.net/blog/post/howto-install-ssh-on-your-iphone

 

NOTE: If you download Nate True’s iPhone SSH kit you will need to

grab iphoneinterface.exe from his latest iBrickr release to

actually make it work.

 

STEP 5: ACTIVATING WITH A NON-AT&T SIM

 

If you’re using an AT&T SIM that will activate through iTunes, skip this

step and just activate through iTunes.

 

To activate with a non-AT&T SIM, we’ll need to copy over that lockdownd

binary and activation certification we backed up when we were on v1.0.2

and do a little hackery, then copy the v1.1.1 lockdownd back when we’re done.

 

NOTE: In order for afc to start, you must BOOT the phone with

lockdownd v1.1.1, so do not reboot the phone during this process. If

you have no choice, copy lockdownd v1.1.1 back after, then reboot

again to make sure afc comes up.

 

1. Back up v1.1.1’s lockdownd:

cp /usr/libexec/lockdownd /var/root/lockdownd.1.1.1

 

Now overwrite the iPhone’s copy with your old v1.0.2 copy:

cp /var/root/lockdownd.1.0.2 /usr/libexec/lockdownd

 

And upload the certificate included in this distribution:

scp iPhoneActivation.pem root@[IPHONE IP]:/System/Library/Lockdown/

 

Now:

killall lockdownd

 

This will restart lockdownd with v1.0.2’s version

 

2. Download iASign from http://iphone.fiveforty.net/wiki/index.php/IASign

 

bunzip2 iASign-v0.2.tar.bz2

tar -xf iASign-v0.2.tar

cd iASign/bin

 

Overwrite iASign’s iPhoneActivation.pem with the one provided in this package

cp /path/to/1.1.1-jailbreak/iPhoneActivation.pem /path/to/iASign/bin/

 

Now run: ./iASign.mac –automatic iPhoneActivation_private.pem

 

After a while, it should complete and say “New State: Activated”, but it

doesn’t really work. Don’t worry, we’re almost there!

 

3. Now copy the v1.1.1 lockdownd back and restart it:

 

cp /var/root/lockdownd.1.1.1 /usr/libexec/lockdownd

killall lockdownd

 

4. Run iAsign once more:

 

./iASign.mac –automatic iPhoneActivation_private.pem

 

It should look like this:

Activating…

InvalidActivationRecord

New State: Unactivated

 

Don’t let iAsign fool you, the phone is now activated.

 

STEP 6: PATCHING SPRINGBOARD

 

The new version of SpringBoard has been hard-coded to allow only factory

applications to run. We’ve coded up a patcher that will fix this “bug”,

and back up your original SpringBoard app.

 

1. Upload the springpatch binary included with this distribution:

 

scp springpatch root@[IPHONE IP]:/usr/bin

 

Then low into your iPhone and run it:

 

$ springpatch

 

SpringBoard Patcher for iPhone v1.1.1

Brought to you by the iPhone Dev Team

Successfully patched /System/Library/CoreServices/SpringBoard.app/SpringBoard

Original backed up to:

/System/Library/CoreServices/SpringBoard.app/SpringBoard.original.

Please reboot your iPhone or kill springboard for changes to take effect.

 

If it exits successfully, you can now restart SpringBoard to enable third

party applications:

 

killall SpringBoard

 

2. You will need to list at least one application in:

 

/System/Library/CoreServices/SpringBoard.app/M68AP.plist

 

This is the new “DisplayOrder.plist”. The application MUST be placed just

before the MobileStore application. The reason for this is that MobileStore

is placed at the end of the Springboard to specifically hide other

applications. Adding at least one application appears to break free from

this.

 

For example, if you have installed NES.app, your M68AP.plist will be modified

to look like:

 

 

displayIdentifier

com.natetrue.iphone.nesapp

 

 

displayIdentifier

com.apple.MobileStore

 

 

STEP 7: CLEAN UP

 

You’ve now successfully jailbroken your iPhone and set up shop. Congratulations!

 

Before you can sync, you will need to remove the symlink you created:

 

rm /var/root/Media

mv /var/root/Media.old /var/root/Media

 

That’s it!

 

- iPhone/iTouch Dev Team

 

Available here

 

 

  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">