Moving To a New Site

I have just decided that it's time to move on and have my own domain. All the posts in this blog will be moved to:

Personal posts will be transferred to:

Saturday, October 29, 2005

Hacking OpenSUSE

Eversince I've used my first Linux (Mandrake 9.2) I never wanted to go back to Windows. And in pursuit of finding the best Linux Distro, I find some time to install the latest OpenSUSE 10.0. I donwloaded the 5 CD ISO, burn to CD and install. Since I have many Workstations and only got 2 CD-ROMS to swap around, I tried looking for a way such that after installing OpenSUSE 10.0, I will no longer need any CDs if I want to add other packages. And here I found an article by Jem Mantzan about how to maximize your user experience in SUSE.

When you’re done installing OpenSUSE 10.0, your desktop system is not complete. You still need support for Java programs, MP3 audio files, and browser plugins for Macromedia Flash, Adobe Acrobat, RealPlayer, and Windows Media Video. You may also want to add support for playing DVD videos on your computer. Here’s how to effectively make the open source version of OpenSUSE 10.0 into SUSE Linux 10.0.

OpenSUSE is comprised entirely of free, open source software. What you will be doing in this tutorial is installing proprietary add-ons that add functionality. All of the browser plugins are proprietary and will require you to agree to software licenses. The DVD playback capabilities are in violation of the U.S. Digital Millennium Copyright Act (and similar laws in other countries), which many believe to be unconstitutional and a violation of consumer fair use rights. Click here for more information on DMCA reform. In other words, installing the DVD decoding software could be illegal where you live; therefore I’m not telling you to do it, but I’ll tell you how it’s done for educational and informational purposes.

Adding sources to YaST

First you’ll need to add some software repositories to your YaST installation sources list. Go into the YaST utility by clicking on the green Gecko menu in the lower left corner of your screen. Select System, then click on Control Center (YaST). You’ll be prompted for your root password. Go ahead and type it in, check the box next to Keep Password, and click OK.

You’re now in YaST, and the Software category is already selected by default. Click on the Installation Source icon. This will bring up a window that will allow you to add software repositories so that you can download the add-on software. You’ll notice that your CD or DVD installation media is already listed. Go ahead and disable it by clicking the Enable Or Disable button — we’re going to add an Internet address that will replace your discs. That way if you need to add software from the CDs or DVD, you can get the packages from the Internet instead of putting a disc into your computer. If you need to, you can just as easily enable the CD/DVD source later.

Click the Add button, then click on HTTP in the popup menu. Add the following Internet address to the Server Name field and then click on OK:

Now repeat this process and add the following servers to your installation sources using the FTP option instead of HTTP:


Without adding the preceding sources, it will not be possible to follow the next three steps. You can now close the Installation Source window.

Installing Thunderbird

OpenSUSE 10.0 doesn’t come with Mozilla Thunderbird. If you’re a Thunderbird fan, rather than download it separately, why not install it properly through YaST?

Go back to YaST, then select Package Management. In the Search box, type in MozillaThunderbird and click on Search. Click on the MozillaThunderbird checkbox in the right-hand pane, then click on Accept. When it’s done, click on Finish to go back to YaST.

Java support

To add support for the Java language both for standalone applications and as a browser plugin for Web applets, go into YaST, then select Package Management. In the Search box, type in sun and click Search. A bunch of packages will show up in the right-hand pane. Click the checkbox next to the following packages:

  • java-1_5_0-sun
  • java-1_5_0-sun-alsa
  • java-1_5_0-sun-jdbc
  • java-1_5_0-sun-plugin

There is no harm in selecting all of the java-1_5_0-sun packages (you’ll notice that there are a few more that weren’t selected), but they are not necessary for running Java programs. If you’re a Java programmer, of course you’ll want at least some of the other packages. When you’re done selecting them, click on Accept. When it’s done installing, click on Finish in the popup window to go back to YaST. Your computer will now be able to run Java programs and applets.

Flash, Acrobat, Windows Media, MP3, and RealMedia support

Go back into the YaST software manager. In the Search box, type in w32codec-all and click on Search. A single package should appear in the right-hand pane. Click the checkbox next to it.

Erase your previous search term in the Search box, type in acroread and click on Search. Click the checkbox next to the acroread package in the right-hand pane. You’ll have to accept a software license agreement to continue.

Now search for flash and click Search. Select that package for installation by clicking its checkbox and agreeing to its license.

Search for realplayer and click Search. Click its checkbox. You only need the RealPlayer package itself — the other search results are not necessary.

Search for mplayer and click Search. Click its checkbox. You don’t need the other package that appears in the search results.

Search for kaffeine-mozilla and click Search. Click its checkbox.

When you’ve done all of this, click on Accept. Other packages will be dependent on some of these, so you’ll have to click Continue in the Automatic Changes screen that comes up. After that, all of the packages you just selected will be installed and your Firefox Web browser will have all of the plugins it needs. You’ll also have the ability to play MP3 music files. A popup window will appear when it’s done — just click on Finish and you’ll be brought back to YaST.

DVD playback

I couldn’t find any SUSE installation sources for the DVD decoding program, so you’ll have to download it on your own. Go to your Gecko menu, then select Internet, then Web Browser, then click on Web Browser (Konqueror). When Konqueror opens, copy and paste in this address:

Or just click here if you want a link. Konqueror will ask you what you want to do with the file. You could save it to your Desktop, then double-click it to install it, but an easier way is to select the Open With button. That will bring up a popup window. In that window, click on System, then Configuration, then Package Manager (KPackage). (If you do not have KPackage installed, go back to the YaST software manager and install the kdeadmin3 package, then restart this process.) The KPackage program will read the DVD decoding package from the Web. Click on the Install button at the bottom of the KPackage window, then click on Install in the next window too. You will be asked for your root password; type it in and press Enter. Shortly thereafter, the DVD decoding library will be installed. Click on the Done button, then close KPackage and Konqueror.

Next you’ll have to modify the video player so that it will play DVDs. While it originally had this functionality built in, Novell has removed it to make life more difficult for people who want to watch DVDs on their computer.

Go into YaST and select Software Management. The familiar package selection screen will come up. In the Search box, type in xine and then click Search. About two dozen entries will appear in the right-hand pane. Right-click on all of the blue-colored packages (there should be at least two) and select Update from the drop-down menu. Click on Accept when you’re done, and then click on Continue in the ensuing Automatic Changes screen. The updated software will now download and install properly. When it’s finished, a popup window will ask you if you’d like to install more software. Click on Finish and you’ll be brought back to YaST’s software manager.

You now have the ability to play commercial DVD movies on your computer — put one in and try it, if it’s legal where you are. A popup message should appear when you put in a DVD movie. If it asks you if you want to play the movie with Kaffeine, click on Yes and you’ll go straight to the video player. In some instances the disc may be recognized as a data disc, and SUSE will ask you if you want to open the DVD with K3b. In that case, click on Ignore, then go to the Gecko menu, select Multimedia, then Video Player, then click on Media Player (Kaffeine). When Kaffeine starts, click on the Open DVD icon.

Tuesday, October 18, 2005

Using JavaScript to Rotate Google Adsense and YPN ContentMatch Ads

By: Amr Awadallah

I wanted to test the performance of Adsense versus YPN-Content match on my site, so I wrote this little javascript wrapper to rotate both ad formats, 50% of the time for Google Adsense and 50% of the time for Yahoo-YPN-ContentMatch.

Feel free to use it, but note that you need to paste your ads in the correct places as demonstrated below. Just copy the javascript code for adsense and ypn ads and put them in the googlead and the yahooad variables, respectively. But make sure to make these changes to the javascript ads:

  1. replace all " with \"
  2. end each line with \n
  3. replace /script with \/script

<script type="text/javascript">

var i = Math.random()
var googlead = PASTE ADSENSE AD HERE
if (i < 0.5)


This is an example of how to paste your ad javascripts correctly into the googlead and yahooad variables (do not use these as is, otherwise you will end up sending me money Image ):

var googlead = "
<script type=\"text/javascript\"><!--\n
google_ad_client = \"pub-1023215734600446\";\n
google_ad_width = 728;\n
google_ad_height = 90;\n
google_ad_format = \"728x90_as\";\n
google_ad_type = \"text\";\n
google_ad_channel =\"3618420306\";\n
google_color_border = \"CCCCCC\";\n
google_color_bg = \"FFFFFF\";\n
google_color_link = \"000000\";\n
google_color_url = \"666666\";\n
google_color_text = \"333333\";\n
<script type=\"text/javascript\"\n

var yahooad = "
<script language=\"JavaScript\">\n
<!--\nctxt_ad_partner = '2432839150';\n
ctxt_ad_section = '1181';\n
ctxt_ad_bg = '';\n
ctxt_ad_width = 728;\n
ctxt_ad_height = 90;\n
ctxt_ad_bc = 'A1A5A9';\n
ctxt_ad_cc = 'FFFFFF';\n
ctxt_ad_lc = '0000DE';\n
ctxt_ad_tc = '737374';\n
ctxt_ad_uc = '439341';\n
// -->\n
<script language=\"JavaScript\"\n

Sunday, October 16, 2005


By: Robert Storey

Ubuntu LinuxUbuntu has stormed the Linux distribution scene like no other project before. Although barely a year old, it has already succeeded in attracting thousands of satisfied users ranging from absolute Linux beginners to seasoned UNIX administrators. What are the secrets of this tremendous success? A quality product combined with friendly community resources and clearly stated objectives. Robert Storey, no longer able to resist the forces of humanity, set out to investigate this new king of Linux distributions.

Greatest Hits

Don't look back; something might be gaining on you.
- Satchel Paige, baseball player

The first release of Ubuntu Linux (version 4.10) occurred on 2004/10/20, and life hasn't been the same since. Unless you've been living under a rock in Antarctica, then surely you've heard of Ubuntu, which now tops the charts on the DistroWatch greatest hits list.

I must confess that I was caught off guard by the overnight success of Ubuntu, and thus neglected to review it (or even download it) when it first arrived on the servers. However, it's just as well that I didn't bother, because for the past year, not a week has gone by without somebody writing an Ubuntu review and posting it to one (or all) of the popular geek web sites. Indeed, it's become something of a joke that the only things you can't avoid in life are death, taxes and Ubuntu reviews.

The first anniversary of Ubuntu has just passed, and as of last week, the world has once again been treated to a new release (version 5.10), code-named Breezy Badger. Unable to avoid the onslaught of the Ubuntu steamroller, I have decided to at last concede defeat. I downloaded the CD, installed it, hacked it, contemplated it, meditated over it for a whole weekend, and now it's time for me to share my thoughts about this operating system with the rest of the world.

Money Talks

Ubuntu is Debian-based, a fact which warms my heart because I've been a Debian fan since the time of The Ark. There was a time when Debianistas were regarded as a small and mysterious cult, admired as "quaint" but doomed to extinction because (as everyone knew) RPM-based distros were destined to rule the universe.

Fast forward a few years, and the Linux world looks very different. Debian-based distros have experienced a renaissance which more or less began with the release of Knoppix in 2003. In the beginning Knoppix was just a live CD, but once it acquired a decent installation program, developers swiftly jumped on the bandwagon and hardly a week went by without yet another "Knoppix knock-off" being released.

Needless to say, not all of these distros have been successful - many disappeared soon after version 0.1-alpha was announced. Fortunately, some of the better ones have endured. Debian is clearly on a roll, which raises the question - why choose Ubuntu? What does it offer that the rest of the Debian family doesn't?

The answer to this mystery appears to have as much to do with marketing as technical excellence. Like some of its commercial competitors, Ubuntu is available on a two-CD set enclosed in a slick-looking cardboard case. Unlike commercial distros, Ubuntu is considerably cheaper with a price tag of US$0.00, shipping included. Furthermore, if you request one set, you'll probably receive 10 with instructions to hand out the other nine to friends and enemies alike. Of course, CDs sent by snail mail take time to arrive, so if you want Ubuntu fast the simple solution is to download it. In fact, if you can forego the sophisticated look and feel of the packaged CDs, downloading is the socially responsible thing to do since somebody does in fact pay for those CDs.

The "somebody" in this case is South African multi-millionaire, Mark Shuttleworth, who generously donated US$10 million to create the Ubuntu Foundation. The foundation's philosophy is that Ubuntu is free and will always be free. Furthermore, it is released under the GPL, meaning that if ever it somehow becomes unfree, anybody can grab the source code and morph it into a new operating system with no need to pay royalties.

Can't We Just Get Along?

For those new to the world of Debian, a little bit of background is required to understand The Big ControversyTM that has erupted over Ubuntu's existence. Debian's great claim to fame has always been APT (Advanced Package Tool), which makes installing, removing and updating software a breeze. This is no small feat because Debian is the biggest of all distros, with over 15,000 packages in its repository. Juggling so much software is the work of about 1000 developers, most of whom are under-praised and unpaid for their monumental efforts.

To make this massive project manageable, Debian is segregated into three releases - stable (currently nicknamed Sarge), testing and unstable (nicknamed Sid for the mentally "unstable" kid in the movie Toy Story). Not surprisingly, all the latest and greatest software is found in the unstable branch. Therefore, the most up-to-date Debian-based distros tend to be based on Sid.

Despite the name, unstable does not mean that the operating system or its applications are likely to crash. However, it does mean that the package collection constantly changes. New packages are added and old ones are kicked out on a daily basis. The best way to think of unstable is that it's a moving target. This can cause problems when you go to install new software - thus, distros based on unstable can suffer from "package breakage", a serious disease that can lead to hair loss (as well as a smashed computer monitor).

To solve this problem, once every six months Ubuntu syncs with Debian's unstable package collection, but then goes its separate way. Thus, as time passes, the two distros get out of sync. This has some people concerned, among them, Ian Murdock, Debian's founder. In an interview at, Ian pulled no punches:

"If anything, Ubuntu's popularity is a net negative for Debian. It's diverged so far from Sarge that packages built for Ubuntu often don't work on Sarge. And given the momentum behind Ubuntu, more and more packages are being built like this. The result is a potential compatibility nightmare."

Ian's main concern is that Ubuntu is not truly Debian compatible, and that development efforts are being sapped as everyone concentrates on Ubuntu. Contributing to the controversy is the fact that Ubuntu is not a member of the Debian Common Core (DCC) Alliance. In the true tradition of online discourse, this has generated some significant flame wars.

Going Live

As someone once said, politics is the world's second oldest profession. So let us now leave the political flame-fest behind and get down to what really matters, Ubuntu's technical prowess.

I've already mentioned that Ubuntu comes as a two-CD set, but actually that is a little misleading. There are two CDs in the spiffy cardboard package, but you don't really need both. One is a live CD which allows you to boot up and run Ubuntu without installing it to the hard drive. The other CD is for installation only.

I fired up the live CD to see what it could do. Most users will probably find it works as expected, but I found it to be a little bit awkward. Not bad, just not aesthetic. Booting the CD brings up what appears to be a text-mode installation program. You have to answer a few questions and then there is a lengthy wait while Ubuntu does hardware detection and configuration. Eventually, you will be presented with a brownish GNOME-based graphical desktop. I was slightly disappointed to see that the live CD did not automatically recognize the computer's hard drive, but I was able to mount it manually. Mounting the hard drive may not be important to you, but it would be crucial if you were trying to rescue data (one of the best uses of a live CD). Rescuers will probably be somewhat dismayed to discover that logging on as user root is not allowed (fortunately, buried in the menus is the ability to open a root window).

Aesthetics aside, the Ubuntu live CD works OK as a demo. You can use it to show off for your friends, test your hardware compatibility before installing, or to perform emergency surgery on a crippled hard drive.

Taking the Plunge

Ubuntu gets a lot more interesting when you actually install it. The installer is a slightly modified version of Debian's, and is ncurses-based (that is, text-mode with menus) rather than graphical. Although some users seem perturbed that there are no fancy graphics, the whole installation procedure is really very simple and even greenest of newbies should have little problem with it.

Although not required, you'll get far more mileage out of the installer if your computer is plugged into the Internet (preferably broadband). Ubuntu will attempt to use DHCP to find the network, but if you're not connected to a router or DHCP server you'll be given the chance to type in network parameters (necessary if you want to connect via pppoe or dial-up). Once the network is found, considerable additional software will be downloaded and installed. The only drawback to all this is that it can take quite a while, and if your network connection is slow or the servers are very busy, installing Ubuntu could occupy several hours. This is why you might consider downloading the DVD edition.

An issue that has produced much comment (and the requisite flame wars) is that Ubuntu randomly chooses a password for root, and you will have no way of knowing what it is. Therefore, unless you make an incredibly lucky guess, you will not initially be able to log on as root. This sounds disastrous, but really isn't. What actually happens is that the installer requires you to create one user, and that (first) user will automatically be given membership in the exclusive admin group. This user will then have almost as many privileges as root, including the ability to change the root password. Thus, without ever knowing the original root password, you'll be able to change it to your liking and then you can log in as root. Presumably, this convoluted process is to prevent inexperienced newbies from logging in as root and running amuck, gleefully trashing the file system with commands like "rm -fr *".

The exact procedure to change the root password: click System --> Administration --> Users and Groups, and then click Show all users and groups. Then choose root and click Properties.

As an alternative, you can open up an xterm and type:

sudo passwd root

Although not required, it might not be a bad idea to give your privileged first user a special name - I chose the name "big-cheese". You can later create at least one other user who will lack admin privileges. Although the Ubuntu FAQ assures us that it is safe to be surfing the Internet as big-cheese, I don't get a warm and fuzzy feeling doing this. One of the first laws of network security is to keep user privileges to a minimum.

Upgrading to Breezy Badger

If you've already installed a previous version of Ubuntu and now want to update to Breezy Badger, there is no need to start from scratch. In the true Debian tradition, updating is dead easy.

If you're updating from a Breezy Badger beta or release candidate, all you've to do (as root) is open an xterm and type:

apt-get update
apt-get upgrade

If you're upgrading from Hoary Hedgehog to Breezy Badger, the process is just a little more complicated. First edit file /etc/apt/sources.list and change all occurrences of the word "hoary" to "breezy". If you're updating from a beta or RC version, you will probably also have to comment out the first line in /etc/apt/sources.list which refers to the cdrom - it should look something like this:

deb cdrom:[Ubuntu 5.10 _Breezy Badger_
- Release Candidate i386 (20051005)]/ breezy main restricted

Commenting out the above line means that Ubuntu will no longer nag you to insert a CD into the drive - it will go directly to the Internet in search of packages. Thus, with your /etc/apt/sources.list properly altered, you can now run these commands:

apt-get update
apt-get dist-upgrade

It should be noted that upgrading can take quite a long time. Just how long depends on the number of packages that need upgrading, and the speed of your Internet connection. It definitely helps to have broadband, but even then be prepared to let your machine run overnight.

Updating and Installing Software

Even if you've installed from scratch, don't be surprised when the very first time you log in, a message will pop up informing you that updates are available. To perform the required magic, you will need to log in as the privileged user (big-cheese?), and then run the Ubuntu Update Manager. Just follow the menus, as so:

System --> Administration --> Ubuntu Update Manager

Packages are being added and updated all the time, so you will no doubt be seeing new messages every few days admonishing you to update again. Although that may get wearisome, it is in fact a good idea to keep your package collection up-to-date for security reasons and to stamp out bugs.

Ubuntu also includes Synaptic, the famous user-friendly GUI package manager. It's so easy to install/remove software with this tool that I won't bother explaining it. Just point-and-click, and you'll know.

That having been said, one little "gotcha" is that, by default, Ubuntu limits itself to a relatively small package collection. Most users will not be satisfied with this for very long, but there is a simple little secret for fixing the problem. As the privileged user (or as root) fire up an editor and take look at the self-explanatory file /etc/apt.sources.list, which should contain (among other things) the following:

## Uncomment the following two lines to add software
## from the 'universe' repository.
## N.B. software from this repository is ENTIRELY
## UNSUPPORTED by the Ubuntu team, and may not be under
## a free licence. Please satisfy yourself as to your rights
## to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the
## Ubuntu security team.

# deb hoary universe
# deb-src hoary universe

# deb hoary-security main restricted
# deb-src hoary-security main restricted

# deb hoary-security universe
# deb-src hoary-security universe

Once you've uncommented the universe and (optionally) the security repositories, run the following command:

apt-get update

You will then find that the list of available packages has greatly expanded. Despite all the dire warnings from the developers, there are few risks in using these additional repositories. However, it has already been pointed out that Ubuntu's packages are seriously out of sync with Debian's, so don't try to add additional repositories to /etc/apt/sources.list. If you fail to heed this warning, you'll almost certainly experience the dreaded package breakage.

Once you've done the above, you should find that all the KDE apps are available for installation. Ubuntu is GNOME-based, but you can certainly run KDE as your desktop. However, if you want to work in KDE most or all of the time, consider installing Ubuntu's alter-ego, Kubuntu.

If you're a little more daring, you might want to add the debian-marillat repository to /etc/apt/sources.list (use testing/main). This will allow you to install Lame, MPlayer and other software which has "problems" with software patents and the DMCA. As for just where you can find the nearest debian-marillat repositories, you'll have to do some Googling.

Swatting Bugs

I don't expect any OS to be trouble-free, but I did encounter a few more bugs with Breezy Badger than anticipated. Fortunately, Ubuntu has a nice bug reporting form. I'm pleased to say that the first bug I reported was swiftly acknowledged and fixed. The second and third bugs are still pending. The others were acknowledged but the developers didn't feel that these were bugs.

The first bug involved the hdparm command. This has already been fixed, so I needn't say anything more about it.

The second bug involved my favorite text editor, Xemacs, when running under GNOME. The problem is that it won't recognize X fonts which, among other things, prevents me from typing in non-Roman scripts. As a temporary fix, I've solved the problem by not using GNOME and instead running IceWM.

The most serious bug still on my pending list concerns the video driver. Although the installer correctly identified my video card as radeon, I noticed that performance in graphics mode was sluggish. I attempted to confirm this by running glxgears, which revealed a further surprise - if you launch glxgears in an xterm on Hoary Hedgehog, it will report frame rate, but on Breezy Badger it fails to do so. I later learned that you can force it to do so by running the command:

glxgears -printfps

That's all very nice, but I discovered to my chagrin that when (using my mouse) I attempted to drag the window with the spinning gears, Ubuntu froze. I no longer had a mouse cursor and the keyboard was dead. Only a hard reboot could restore the system to normal. I repeated this experiment several times, with the same fatal result.

I have found the fix for the problem, but this bug definitely needs to be addressed by the developers. First, I searched for (and then installed) an accelerated video driver for the Radeon card. To find out what was available for Radeon, I did this:

bob@x31:~> apt-cache search radeon
xserver-xorg-driver-ati - X.Org X server -- ATI driver
fglrx-control - Control panel for the ATI graphics accelerators
xorg-driver-fglrx - Video driver for ATI graphics accelerators
xorg-driver-fglrx-dev - Video driver for ATI graphics accelerators
(devel files)
gatos - ATI All-in-Wonder TV capture software
radeontool - utility to control ATI Radeon backlight functions
on laptops

Then I checked to see if xorg-driver-fglrx was installed (it was not):

bob@x31:~> dpkg --get-selections | grep xorg-driver-fglrx

So then I installed it:

root@x31:~> apt-get install xorg-driver-fglrx

With the new driver, my video performance has improved and glxgears no longer crashes the system. However, esoteric bugs like this could easily blow away even experienced geeks, let alone newbies. Hopefully this issue will be resolved soon.

Minor Quibbles

A minor annoyance was that the wrong kernel was installed. In this case, "wrong" was not disastrous. What happened was that a 386 kernel was installed even though I have a 686 processor. The machine ran OK, but performance clearly suffered. I initially filed a bug report, but the developers replied that the Ubuntu CD just doesn't have room for multiple kernels so they have to go with the lowest common denominator, which is 386. You can check which kernel is installed as follows:

root@x31:~> uname -r

The solution is to upgrade your kernel. If you're upgrading to a 686-based kernel, the command would be as follows:

apt-get install linux-686

I assume the above is a non-issue if you install Ubuntu on an AMD64 or PPC.

Though by no means a bug, Ubuntu has been criticized for not including a built-in firewall. The official response to this complaint is that - since most services are turned off by default - no firewall is needed. Personally, I find that explanation as satisfying as saying you don't need to lock the door of your house because there's nothing to steal inside. If nothing else, I'd rather have a firewall for the warm fuzzy feeling it gives me. Fortunately, you can easily add one. Probably the easiest one to install and configure is firestarter. I actually prefer guarddog, because it gives more precise control over the firewall rules, but it's also a little more complex to set up.

Another little quibble is that Ubuntu doesn't protect you from accidentally deleting or overwriting files by careless use of certain commands. In particular, rm, cp and mv can cause you grief, but even cat can be dangerous. I know I've mentioned this problem too many times before in other reviews I've written, but in Ubuntu the situation is especially severe since not even the dangerous root user is protected. As an example of how disastrous this can be, if you meant to type rm -r *.bak but instead typed rm -r * .bak, you can kiss all the files in your current directory goodbye. The way to prevent this is to enable interactive mode with the -i option. You can also prevent overwriting files with cat by using the "noclobber" option. The way to do all this is edit files .bashrc and .bash_profile in your home directory (and especially in /root) and add these lines:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
set -o noclobber

The Road Ahead

Various reviews I've seen about Ubuntu have attacked the release names (Hoary Hedgehog, Breezy Badger and upcoming Dapper Drake), or the "ugly" brown GNOME screen background (which is easily changed). I consider such "flaws" to be trivial. When push comes to shove, I want my operating system to "just work", and in this department Ubuntu delivers.

Despite a few fixable bugs, it's hard not to like this distro. I greatly appreciated the rock solid package management - never once did I have to pussyfoot around with the notorious broken packages which plague Debian unstable fans. Similarly, upgrading Ubuntu was a breeze. The default GNOME interface is very intuitive, a great relief to Linux novices as well as more jaded users. The installer might not be pretty, but it works as promised. There were lots of thoughtful little touches, such as powernowd (which keeps your processor cooler) being installed and started automatically.

Ubuntu is still not my favorite distro, but it comes very close. And I must confess that I've only been running it a few days, so I can't swear that it won't crash under worst case conditions (though my Ubuntu-loving friends assure me it's solid as the Rock of Gibraltar). There is some grumbling that Ubuntu's repository of packages is not quite as massive as Debian's, though it seems to be catching up fast.

A big plus is the helpful and friendly Ubuntu online community. When you're racking your brain with what seems like an insurmountable problem, it's good to know that assistance is just a few mouse clicks away. You probably won't be told to RTFM, but if you need an FM to R, some good references include the Unofficial Ubuntu Guide and the amazingly-detailed Debian Reference Manual.

Ubuntu started with a huge advantage by being well-funded, but ultimately a distro is judged successful only if it attracts a large and stable user base. With the number of Ubuntu converts increasing by leaps and bounds, it would seem that this is one operating system that won't go away anytime soon. Needless to say, some geeks will stubbornly refuse to test Ubuntu until the next ice age. Others will hesitate, experimenting with distro after distro, seeking the "perfect operating system" but never quite finding it. The huge collection of Linux/BSD systems listed on DistroWatch is a testimonial to how difficult it is to make a decision. However, after spending weeks trying to get XYZ distro to recognize your wireless card, it's really nice to have an OS that just works. Spending your life wandering in search of Utopia can have consequences. One might keep in mind the words of Aneurin Bevan... We know what happens to people who stay in the middle of the road. They get run down.

Copyright Notice
Copyright (C) 2005 Robert Storey
Verbatim copying and distribution of this article is permitted in any medium, provided this copyright notice is preserved.
Note: If you'd like to discuss this article, please do so on the DistroWatch Weekly page.

Reverse Engineering Software

By g0df4th3r

Here is a short tutorial to explain some reverse-engineering techniques. Reverse engineering is the modifaction of data to make it do what you want to do. You MUST realise that reverse engineering can be used illegally, and doing so can lead you into trouble, and hurt our economy and developers. You can though use it legally too, for example:

Some wargames present challenges that require the modifaction of applications.

It helps understand some of the very basics of assembly.

You may develop techniques useful in finding exploits, or exploiting them.

Greated debugging skills, at lower-level, and learning about patching and similar.

This is why reverse-engineering should be learned, not to learn how crack programs illegally, as this takes away profit from the software industry, and we want better programs and games. Let's now continue on with the tutorial.

The Program and the Objective

For a start, you have to know what we are going to reverse-engineer, don't you?

Here is the short program written in C++:



int main() {
int i;
for (i=100; i <= 200; i++) {
cout << i << "\t";
if (i == 0) {
cout << "You won the challenge, congragulations.";
else {
cout << "You failed to complete the challenge. Please try again.";

This program, written in C++ for MS-DOS, it is very simple. If I write anymore tutorials on this subject, the programs will be more compilicated and most likely win32. Anyway, the programs counts up from 100 to 200. You objective is to count down to 0. The program must be compiled in its original form. So how can we change the compiled application to display the string "You won the challenge, congragulations." instead of the string "You failed to complete the challenge. Please try again.". This, with our tools, is infact easy. By understanding how to do it, it does not take long to figure out similar challenges. You will, however, have to know some basic assembly (which I will tell you) to do these operations. By this you will not have to know how to write full blown assembly applications (I can't really) but to read assembly code, in a pseudo affect. To do this, you must learn some very basic assembly. I am listing the important ones below, do not worry if you do not understand these, as I will explain what things do throughout the tutorial.

Assembly Rundown:

Here are some basic assembly functions. The will help throughout the tutorial.
These are not designed to teach assembly, and are not explained very well.

Jumps and Calls

je destination - Jump if equal
jne destination - Jump if not equal
jmp destination - Unconditional jump, always jumps ot destination.
jl destination - Jump if not less
jle destination - Jump if less or equal
ja destination - Jump if greated (above)
jae destination - Jump if greater or equal
jnl destination - Jump if not less
jng destination - Jump if not greater
call destination - Calls a subroutine

Jumps are easy to remember. If you haven't noticed, the operators are derived from abrievated english.


je - Jump if Equal
jae - Jump if Above or Equal

Stack operations

push src - Pushes data on the stack (memory). Used for calls, passing data to subroutines.
pop src - Takes data off the stack, puts it into a register.

Stack is last in first out (LIFO) meaning the last piece of data you push in, is the first data you pop out.

Math Operators

inc src - Increment by one (src++)
dec src - Decrement by one (src--)
add src, number - Adds the number to src. ie. src=1, number is 3 so it is 4.
sub src, number - Subtracts the number from src. ie. src=4, number is 3 so it is 1.


cmp src, data - For example, if src=1 and data=1, then the cmp was true.
test src, data - Another comparision operation, useful for testing is a register is zero.


nop - No Operation.

Studying The Program

Programs Needed

Although you can use many tools to get the task done, I will be writing this tutorial to work with these two tools under windows.



Which can be found quite easily, and I believe are both freeware, or offer freeware packages.

If you are working under *nix, then you will have to learn how to use appropiate programs on your system (like gbd).

Finding out what to change

To change this program, we need to study it. You could pull out a hex editor, or a cheap disassembler, and go reading through the assembly, but that would mean more work for you. So, we will use W32Dasm, as it is great for studing the program. To change the program, we are using Hiew (Hacker's View) which is quite easy to use.

So, what do we need to change. In this tutorial we will be reverse-engineering this program in two different way, whose output will be similar, but a little different.

Studing the program is the most important part you do. First run the program and examine it output. It counts up from 100 to 200, and then prints a string: "You failed to complete the challenge. Please try again.". This is enough to start tracking down the operations and the desired result.

Make 2 copies of the application which you have compiled. Open up W32Dasm, and select Disassembler-> Open File to Disassemble. Locate the original application, and open it. This should start the disassembly process, which is quite quick for this application. When disassembly is done, make sure the font is of readable type. If not, change it to something more suitable by going to Disassembler -> Font -> Select Font. Now, what do you think we have to do to find out what to change. I will tell you, we have to find our string "You failed to complete the challenge. Please try again." (without quotation marks).

There is two ways we can find this out:

One way is to go to the string references by clicking on the the toolbar option Str Ref (string references) or by going to the menu option Refs and String Data References. This is all the strings used by out application. The majority of them being junk (to us) added by the compiler. You can then search down through this list, which is in alphabetical order, for our string. When you find the string, double click on it, and you should be taken to a new location in the disassmbly listing.

The other way is by going to Search -> Find Text, and searching for our string. Type in something like "You failed" without the quotation marks.

I am now assuming you are near a push instruction. Above this push instruction is our string, and some text. This looks like this:


* Referenced by a (U)nconditional or ©onditional Jump at Address:

* Possible StringData Ref from Data Obj ->"You failed to complete the challenge. "
->"Please try again."
:00401196 68A2A14100 push 0041A1A2
:0040119B 685C044200 push 0042045C
:004011A0 E88F810000 call 00409334
:004011A5 83C408 add esp, 00000008

Now, we are most interested in where the program decided to choose this option, instead of an other option. So, look at the second line. It has this written within it: 00401180©. The © means that it was from a conditional jump, meaning it was not a jmp statement, it had some critera to judge what to do. So now, we want to see the instruction that called this, so go to Goto -> Goto Code Location. Type in the text box, the location, which is 00401180 (may differ on your computer). We can now see this:


:0040117E 85DB test ebx, ebx
:00401180 7514 jne 00401196

* Possible StringData Ref from Data Obj ->"You won the challenge, congragulations."
:00401182 687AA14100 push 0041A17A
:00401187 685C044200 push 0042045C
:0040118C E8A3810000 call 00409334
:00401191 83C408 add esp, 00000008
:00401194 EB12 jmp 004011A8

The failed string area was called by a jne (jump if not equal) statement. Look at the statement above it, is reads test ebx, ebx. This statement test that ebx is equal to zero, ebx holds the number used for the loop. Now, we know that ebx cannot hold zero without changing the code, but in this example, we don't care. We just want the jump to never occur, because if it doesn't, the winning string is displayed, and although we didn't actually match the objective, we got the string. So how do we stop this jne statement occuring? By replacing it with a nop instruction (No Operation). This way it will continue on, and print our string. So, how do we change this. Okay, take down the offset when you are over the jne statement (when it is green/blue highlighted, green in jumps, you are over the statement), which can be seen in the status bar. For example, on my computer, the status bar reads this:


Line:309 Pg 4 of 607 Code Data @: 00401180 @Offset 00000780h in File:crackme.exe

So I know the offset I want to change on my computer is: 00000780. The h tells me it is a hex number. The offset may differ on your computer, so remember the one which corresponds to you, not me.

Reverse Engineering the Program

We will now use Hiew. We want to open a copy of our application (I told you to make 2 before), because W32Dasm is using the original, and we want to keep the original application. Now, you can open Hiew, and work your way through directorys to find the application, or you can do as I prefer and drag the copied exe icon into the hiew.exe icon, and it will open our application (same as issuing the command hiew file.exe in MS-DOS). You will now be presented with a hole bunch of characters on your screen. Press F4 for Mode, and select Decode (shortcut being pressing enter twice). Now, press F5 for Goto. Type in the offset, for me it is 00000780, but I can type in 780. Zeros to the left can be taken out, for example 00102101 would be 102101, but you can leave the zeros in to, if you prefer. You should be at the jne statement. Before I tell you how to change the program, I have to tell you this important note.

Every instruction in assembly is represent by a numerical instruction, called opcode. For example, JNE is 75, JE is 74, nop is 90. Statements like jne have parameters (like destination) and therefore take more bytes (our jne statement opcode is 7514). When changing a program, you must remember that when you change an instruction, you must not just leave the paremeters there, as these will turn into invalid instructions, usually causing an error. So, every 2 bytes relating to the instruction must change. For example if we wanted to change our jne statement (7514) into a nop, we must use 90 twice, so the opcode would be 9090. You do not have to remember opcodes, you can type in assembly codes, but knowing how to replace codes is important. Do not stress if you do not fully understand what I just said, as it will be demonstrated again soon.

Okay, now, lets change our jne statement. Press F3 for edit, and then press F2 for Asm (short for assembly). A box will open, with the asm instruction used. Delete this instruction, and type in "nop" without the quotation marks. Now what happens is directly related to the important note above. Our jne opcode was 7514, we typed in a nop which opcode is 90, 14 now makes an invalid instruction. So, we must replace this byte with another nop instruction, so type in nop, press enter, then escape to close the asm dialog. Press F9 for update, and then F10 for Quit. Run the application through the command line, and you will notice the end statement change from "You failed to complete the challenge. Please try again." to "You won the challenge, congragulations.". Although it still counts up. Now, we are going to reverse-engineer this application once more, to make it count down, completely fulfilling the objective, and furthering your understanding of the situation.

Reverse Engineering the Program - Part 2

What we do now is more compilicated, and requires a more deeper understanding of assembly (not too much more though). What we are going to do is make the application count down, and then display the winning string. We have already done the basic study, so we can skip that, now we want to look at the original application again (not the one we just engineered) and work out what to do. Realise that I have added comments in this readout, which are not displayed in W32Dasm (for obvious reasons), ; is the comment symbol, read these comments, it tells you what the code is doing. Here is the section we are looking at, which is the one we were looking at before, and a bit more up:


* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0040117C© ; The below jle statement jumps back to this, forming a loop.
:00401159 6878A14100 push 0041A178
:0040115E 53 push ebx
:0040115F 685C044200 push 0042045C
:00401164 E8EF7F0000 call 00409158
:00401169 83C408 add esp, 00000008
:0040116C 50 push eax
:0040116D E8C2810000 call 00409334
:00401172 83C408 add esp, 00000008
:00401175 43 inc ebx ; Increase ebx by one
:00401176 81FBC8000000 cmp ebx, 000000C8 ; Compare ebx with 200, used by jle
:0040117C 7EDB jle 00401159 ; Jump is less or equal than 200.
:0040117E 85DB test ebx, ebx ; test if ebx is 0, same as before.
:00401180 7514 jne 00401196 ; Jumps to failed message, like before.

* Possible StringData Ref from Data Obj ->"You won the challenge, congragulations."
:00401182 687AA14100 push 0041A17A
:00401187 685C044200 push 0042045C
:0040118C E8A3810000 call 00409334
:00401191 83C408 add esp, 00000008
:00401194 EB12 jmp 004011A8

From my comments, you should see the low level structure of a for loop. The jle jumps back through the whole process if it is under 200 (hex C8, assembly uses hex). We can see the inc increases ebx by 1 each time called.

So psedu of this is:

if x is less or equal to 200, goto loop
end loop
if x does not equal 0 goto the failed message, leave here, returns after back to pseudo.
if x does equal 0 print failed message
below code initialises the cleanup and exit processes

Which is very easily translated to any HLL, using the provided for loops or other type of structure.

Now we have to change this code, to make it count down to zero, and display our message. So, first we have to change the inc, because we want it to decrease the number. Then we must change the cmp instruction, as we want it to compare with zero, not 200. Then, we have to change the jle (jump if less or equal) because we want it to jump if greater/above than 0 which is the instruction ja, not jae (jump if above or equal) because than it will go down to -1, and will jump to the failed message. So, lets get the offset of the first instruction we want to change (which is the following line)


:00401175 43 inc ebx

The offset on my compiled program is 00000775h, as said before yours may differ.

Now, lets get to hiew. Open your 2nd copy, the copy which is unmodified. Get to the decode place (F4 -> Decode) Goto our offset (F5, type in offset) and now lets change these instructions. Please note when I say the line looks like the example, I mean under the Asm (F2) dialog. You should be at a line which reads:


inc ebx

Using F2 (Asm) you should change this too:

dec ebx

Now, there should be no need to add any nops here or anything, as both inc and dec use 2 digits for opcode.

Now we have to change this line (do not change until I fully explain)


cmp ebx, 000000C8


test ebx, ebx

Now, to do this we must refer to my special note I had before. cmp ebx, 000000C8 opcode is 81FBC8000000

We spilt this into twos:
cmp ebx 200
81 FB C8 00 00 00

Now, test ebx, ebx opcode is (in groups of two)
test ebx and 0
85 DB

So we must replace the 00's and C8 with nops.

So go to asm dialog where the cmp instruction is, change it to test ebx, ebx. We must than change the remain 8 bits, which is grouped into 2. Which means 4 nops, so write nop, press enter, and repeat 3 more times. (You can change opcode directly, just don't press F2 while under edit, however it is harder to remember opcode than the asm instructions.

Did you notice how after changing these instructions, the jle statement, which had disappeared, is back. This is because once you start an invalid instruction, it will affect the whole program, nearly every statement following changes, if not all. That is why it is very important to count you bytes.

Now we must change the statement which reads:


jle 000000759


ja 000000759

(please note that yo do not have to use tabs, spaces are suffecient)

After doing this, you should now press F9 to update, and F10 to exit.

Now you can run the code in your DOS, and see if you completed it correcly or not, if you did, congradulations, if not, bad luck, do try again, or if having severe problems reply to this thread of PM me.


That concludes this tutorial. I hope you enjoy. Good Luck. God Speed. uhh I forget if there are any more expressions for "Good Luck" Well Just Enjoy.

Good Luck

Sunday, October 09, 2005

Free Domain Name Registration

Freebie Bombard's is a free domain registration. You may get your free domain name by simply referring others to sign up to their free domain name registration. Earn 200 points and you get a .com, .net, .org, .biz, .us domain, earn 100 points and you get .info domain free.

Click here for a genuine FREE domain name

Friday, October 07, 2005

Top Google Adsense Keywords

Google Adsense has become a major money source for webmasters. By displaying Ads from Google to any webpage, the webmaster is paid per click on the ads. But before an ad could be clicked, the webmaster should find a way to drive traffic to their site, therefore, playing with keywords is a vital technique in order to drive traffic to their site. Some top Google Adsense keywords are enumerated below, with some advertisers willing to pay as much as $49.00 per click! The keywords below are grouped according to category and the numbers on the right are the amount an advertiser is willing to pay per click. Happy Googling! =)

Health and Life

peritoneal mesothelioma 48.38
mesothelioma 33.83
mesothelioma symptoms 31.41
mesothelioma info 25.79
asbestos cancer 19.34
asbestos mesothelioma 19.06
prostate cancer treatment 17.20
malignant pleural mesothelioma 16.30
asbestos 11.55
prostate cancer 11.07
lexapro and alcohol 10.27
asbestos lung cancer 10.12


eloan 33.27
eloan com 28.47
equity line of credit 23.46
consolidate loans 21.03
home equity loans 20.98
home equity line of credit 18.65
credit repair 14.76
chase credit 14.12
credit counseling 13.98
consumer credit counseling 11.68
line of credit 11.12
capital one credit 11.07


cheap term life insurance 20.10
home insurance quote 16.18
home owner insurance 15.65
group health insurance 14.10
health insurance cost 13.89
auto cheap insurance 12.90
american general life insurance 12.74
life insurance broker 11.73
direct car insurance 11.12
cheap health insurance 8.62
cheap insurance 8.07
insurances 6.70


mesothelioma lawyers 48.61
vioxx attorney 37.22
lexington law firm 33.91
lexington law 31.43
texas lemon law 19.68
car lemon law 19.26
find a lawyer 14.18
accident lawyer 11.50
find an attorney 9.58
bankruptcy attorney 8.58
seattle personal injury attorney 7.36
florida medical malpractice lawyer 5.80

Car Hire

alicante car hire 27.24
alicante airport car hire 22.65
car hire malaga 17.31
car hire in malaga 15.39
car hire florida 13.74
rental car in costa rica 13.06
car hire spain 11.81
budget car hire 11.67
car hire in spain 11.43
car hire malaga airport 10.90
car hire malaga spain 19.49
cyprus car hire 9.25


domain name search 27.24
domain name lookup 22.65
purchase domain name 17.31
cheap domain names 15.39
internet domain registration 13.74
register internet name 13.06
cheap domain 11.81
registering domain name 11.67
domain search 11.43
registering domain 10.90
register domain names 19.49
domain name 9.25

Web Hosting

dedicated hosting 15.34
ecommerce hosting 12.13
best hosting 11.26
register web page 11.24
cheap hosting 11.11
cheap web hosting 9.57
hosting reviews 8.94
cheap asp hosting 8.86
domain hosting 8.85
linux hosting 8.83
web hosting 8.59
register a web site 8.12


computer rental uk 13.71
projector rental 12.83
computer rental 11.00
hard drive recovery 8.24
microsoft certification 8.20
wireless security camera 6.12
online computer science degree 5.64
dell computer 5.50
gateway computer 5.42
computer phone system 5.36
computer leasing 5.28
computer based training 4.27


anti spam software 13.71
medical billing software 12.83
help desk software 11.00
debt solutions 8.24
email marketing software 8.20
call center software 6.12
survey software 5.64
crm software 5.50
scheduling software 5.42
nursing pda software 5.36
mlm software 5.28
pda medical software 4.27


anti spam software 12.25
spam 12.06
anti virus protection 5.50
spy software 5.50
anti virus 5.42
anti virus software 4.89
anti virus downloads 3.90
free anti spy ware 3.76
spyware blocker 3.06
removing spyware 3.05
adware spyware removal 3.04
anti virus download 3.02


affiliate marketing 12.90
payperclick 11.05
adwords 8.97
search engine marketing company 8.91
affiliate programs 8.77
per click 8.18
sponsored links 7.70
pay per click 6.38
making money on the internet 6.32
email marketing 6.25
make money on the internet 5.35
pay for click 4.88


money exchange rates 8.58
make extra money 7.91
make money fast and easy 7.85
make money quick 7.44
ways to make money fast 7.13
hard money lenders 6.70
money at home 6.57
making money on the internet 6.32
make money from home 6.21
make money at home 6.12
money making ideas 6.00
money lenders 5.71


voip canada 11.40
voip test 9.69
att voip 8.94
voip testing 8.22
lingo voip 7.81
vonage voip 7.38
voip service 6.87
voip equipment 6.75
home voip 5.83
residential voip 5.80
voip training 5.52
business voip 5.45


debt problems 11.69
debt consolidation services 11.44
consolidate credit card debt 11.34
debt solutions 10.43
online debt consolidation 9.19
debt consolidation 8.86
debt 8.48
debt management 8.38
credit and debt counseling 8.03
debt consolidation information 7.27
bad debt 4.51
debt free management 3.04

Credit Card

capital one credit card 11.42
student credit cards 11.21
low interest credit card 10.51
accept credit cards 10.46
airlines credit card 10.38
visa gift card 10.33
student credit card 9.41
credit card processing 8.72
credit card applications 8.14
credit card services 7.66
visa cards 7.36
one credit card 7.32


lendingtree 18.50
fha refinance 12.27
ocean finance 12.12
budget rental 11.94
refinance second mortgage 11.60
incorporate in arizona 11.20
should i refinance 10.46
consolidate 10.39
merchant account 10.17
current mortgage rate 9.84
why incorporate 9.51
online future trading 9.22


at t phone 14.95
voip phone service 10.52
voip phone system 8.19
att cellular phone 7.94
broadband phone 7.27
satellite phone rental 7.20
satellite phone 6.87
cingular cellular phone 6.82
internet phone 6.36
voip phone 4.82
phone system 4.73
cingular cell phone 4.68


online degree 13.22
education degree online 12.56
criminal justice degree online 11.48
degree education on line 10.71
online accounting degree 9.92
online paralegal degree 9.41
online nursing degree 8.59
mba degree online 8.06
online psychology degree 8.01
master degree on line 7.64
online master degree 7.20
degree at home 6.25


adult friend finder 11.16
her first lesbian sex 8.01
friend finder 7.52
adult friend 7.19
adultfriendfinder 5.92
datingagency 4.60
free online dating 3.72
dating 2.61
datingservice 2.37
friend 2.08
datingsites 2.01
datingsite 1.68


video conferencing 9.01
att wireless ringtone 8.40
data recovery los angeles 8.31
data recovery service 7.93
hard drive recovery 7.75
online data backup 7.75
cheap conference call 6.84
cable company 6.50
dsl provider 6.26
high speed satellite internet 6.21
dsl internet 5.78
fax services 5.21

Tuesday, October 04, 2005

Yahoo Domains Articles and Reviews

Yahoo Domains are selling like hotcakes these days, here are some resource/reviews about Yahoo Domains.

Yahoo! Small Business offers Yahoo! Domains for $9.95/year. Here's a roundup of reviews and other links related to Yahoo! Domains:

  • PC Magazine review - Editor's Choice, thanks to ease-of-use
  • has a bad user review due to poor customer response
  • UpperHost gives them a 70% favorable review, saying they're a bit expensive and weak on features
  • Tony Cooper's Marketing Madness explains how to grab an expired Yahoo domain
  • MyCgiScripts offers a script to check for expires Yahoo domains

    Overall, Yahoo offers an extremely reliable brand and service -- but you pay a slight premium compared to GoDaddy. Still, Yahoo Domain registration comes in lower than the overpriced Network Solutions and even Dotster.

  • Knoppix: A Linux or Windows User Power Tool

    Ever since the began its campaign against the use of pirated software, me and my friends began using Linux. My first Linux Distro is Mandrake 9.0 way back almost 2 years ago. Now I’m using Mandriva and has also tried Ubuntu and Kubuntu. But I really fell in love with Mandriva LE 2005 because of its ease of use and of course its Linux kernel which is known for its stability and security (definitely better than Microsoft Windows). At first I used to dual boot Windows XP and Mandriva LE 2005, but since everything I need is in Mandriva, I decided to get rid of Windows permanently, and haven’t think of going back to Windows again. Imagine using Linux for almost 2 years and I have no problem with virus, worms, or Trojans… not a single encounter! It’s true that there are some occasional program crashes, but I could live with those rather than frequent OS crashing known in Windows. Then I came to encounter Knoppix, a Linux Live CD distribution. A Linux distro you could run directly from your CD ROM. After I got my copy of Knoppix 4.0.2, I have discovered a lot of useful tools for administering your system and yes, also hacking you Windows System. Below is an excerpt from an article from by Cyrus Peikari and Seth Fogie about useful tools in Knoppix.

    KNOPPIX (The Security Tool Distribution)
    In almost every line of professional work, the practitioner has a group of tools they use to perform their daily tasks. Typically, the most used tools are kept close at hand on a utility belt, in a pocket, or a toolbox/bag. This same principle applies to the security professional who is typically is able to use the standard tools available on almost any operating system to perform basic trouble shooting. However, once the job gets a bit complicated, the security professional often requires a specific program that is not locally available. This means precious time must be spent downloading the programs to a local computer, or making a trip back to the lab for the necessary equipment. For times like this, we recommend KNOPPIX.
    KNOPPIX is "a bootable CD with a collection of GNU/Linux software, automatic hardware detection, and support for many graphics cards, sound cards, SCSI and USB devices and other peripherals. KNOPPIX can be used as a Linux demo, educational CD, rescue system, or adapted and used as a platform for commercial software product demos." Or in short, it is a full OS with a wide range of programs that are run straight from the CD to allow a user to turn any PC based system into an instant Linux based security Swiss Army knife, with a full kitchen sink thrown in to boot.
    Download and Installation
    KNOPPIX is a freely available software package available at, or one of its mirrors ( Until recently, it was possible to order a CD copy of this distribution, but thanks to greedy patent scrounging individuals and companies trying to claim ownership over "mouseclicks on online order forms", KNOPPIX is currently not available on a CD ROM. Regardless, you can still download this 700 MB file from numerous online mirrors.
    Once you have obtained a copy, you simply need to burn it to a CD. Ironically, this is the most complex part of running KNOPPIX. First you need a 700MB CD, preferably a CD-RW so you can reuse the same CD when you download a KNOPPIX update. Second, you will need a CD burner with software that can create a bootable CD ROM from an ISO image. For Windows users, this includes Nero and EZCD Creator. In the case of Nero, you simply:

    1. Open Nero (not in wizard mode)

    2. Select File _ Burn Image

    3. Locate KNOPPIX _V######.ISO

    4. Click Burn!
    After a few minutes waiting for the CD to burn, you are ready to install.
    For the numerous GUI based operating systems I have installed, I have never experienced an easier installation than KNOPPIX. Before installing, I checked my computers (Dell 8200 Inspiron) BIOS to verify that the CD ROM was listed as an optional boot device, and then I simply placed the new CD in my computer and turned it on.
    After a short pause as the PC performed its POST operations, KNOPPIX began to load. During the following few minutes, the OS will perform some automatic configuration and setup. Everything from the monitor, to the sound card, and even wireless network card are automatically detected and the appropriate drivers installed. I have tested my disc on several systems, ranging from a Gateway PII to my P4 laptop and have had equal success. In other words, KNOPPIX redefines what plug and play was meant to be.
    The tools
    This is only meant to be a short and non-technical intro to KNOPPIX. While this OS deserves a full 1000-page manual describing and defining the many tools and programs available, we leave the details of each tool and how they work for you to discover. We will cover the basic types of tools provided, with an example or two, and let you discover the rest. This will basically be a simplified version of the KDE program menu provided by KNOPPIX, as illustrated by the figure below. It is important to note that in each of these folders there is a RTFM link that directs you to literature on the tools included in each section. There is also a shell link in each folder that provides the user with numerous command line only tools. While there are many benefits to a GUI based environment, you will find that some of the best tools and programs are not available outside a text based command line.
    Xchat for IRC, telnet, Mozilla web browser, Kmail, and even Lynks (a text based web browser) are available for your amusement and/or use.
    Since KNOPPIX operates solely from the CD/RAM, there are some key components that you might want to setup before any extensive use. For example, printer configurations, SWAP file, network settings (if they are not provided by DHCP), modem settings, wireless card settings, and other pieces of an OS that are typically configured when an OS is installed are available for your management. Note that any update to these settings needs to be stored permanently if you want to save them. By default, all write access to the systems hard drives is disabled.
    This group of programs contains the typical applications that you will find in a default install of most any version of Linux. Games, system settings, text editors, office tools, etc. are all listed in this folder for your use. While these programs are most likely not the reason you would use KNOPPIX, they are some of the more common programs that would be greatly missed if they were not included.
    This grouping primarily focuses on FreeRadius, which is simply a Radius server that can be used to authenticate users to a network or service. One use for FreeRadius is to authenticate wireless users and allow them access to network resources.
    This small group of tools are all command line based programs. Their main purpose is to provide a user with a method to retrieve and then crack system passwords. For example, the infamous john is provided, which is a very common program useful for cracking DES encrypted passwords, which are found on most Unix systems.
    If you want to protect data from intrusive elements, you need to encrypt it. This section provides the tools to get this done. From a simple ROT-13 encryption script, to cryptcat, SSL tools, and gpg, KNOPPIX provides its user with a solid set of encryption tools.
    KNOPPIX includes two of the most commonly found firewall programs available on Linux. The first is the very well known iptables that uses a list of rules to determine if data is permitted to leave or enter the host computer. The second is Shorewall, which is much more than just a simple rules based firewall. If you are at all interested in either of these programs, then KNOPPIX is a great place to test these programs functionality.
    While much of security focuses on detection, prevention, and penetration testing tools, forensics is equally as important. With tools such as The Sleuth Kit, a user can peer deep inside their system to see what data is hiding in unallocated space and memory. Other programs are available that can help prevent others from snooping on you, such as wipe.
    A honeypot is a program or system that is used to catch hackers and log their methods of operation. KNOPPIX provides two such programs. The first, LaBrea is essentially a hacker/worm tar pit. By taking advantage of the technicalities of a communication session, LaBrea will keep a worm or hacker stuck waiting for network replies, which are slowed to a crawl. The second, HoneyD is small program that emulates a whole network of computers, including services and programs. In theory, this type of program will cause an attacker to spend all their time probing the honeynet, thus keeping them away from the real network (which should not be available in the first place!).
    An Intrusion Detection System should be part of every network. While it offers no proactive protection, it can help an administrator determine if their network is under attack, and how an attacker gained access. KNOPPIX provides Snort as an IDS, with syslogd (log capturing) and Swatch (log monitoring) to help narrow in on any attack attempts. With these three programs, you can detect, log, and monitor everything from porn abuse, to IIS attacks.
    Penetration Testing:
    The first thing you should note about this group of tools is that they are all command line based. Ironically, there are more of these types of tools available with KNOPPIX then any other type. In the pen-test shell, you will find everything from dsniff, to sendmail attacks, ADM program, and more. Just be careful with these programs, as their use can constitute an illegal attack. The Figure below is a screen shot of the numerous command line tools available.
    If you need to setup or test a server on your network, KNOPPIX is an excellent choice. You can narrow down the appropriate configuration settings, or server tests without worrying about breaking the OS. Included are samba, VNC, apache, bind, and more.
    The ability to sniff network traffic is essential to any network or security administrator. KNOPPIX includes numerous sniffers, and supporting programs such as ettercap and dsniff. In addition to sniffers, this section of tools also includes packet creation/injection tools, such as IPMagic and nemesis. With these programs you can create your own custom made packets for testing purposes.
    Vulnerability Testers:
    Vulnerability testing programs are used to test for the existence of potential problems in computers and program. Included in this section are programs like nessus and nmap, both of which have a reputation for being able to detect open services, and problems with those services. Other programs like chrootkit (checks local system for indication of root kits), are also available to detect any existing vulnerabilities on the local system.
    Wireless Tools:
    This section is the reason I have a copy of KNOPPIX with me at all times. In a matter of three minutes I can turn my laptop into a fully function wireless auditing tool. Using kismet, airsnort, or wardrive, and a network card, I can detect wireless networks, capture the data on the network, and even crack the WEP encryption that is widely used. If you are interested in testing out the power of Linux with regards to WLAN analysis, KNOPPIX is definitely the place to start.
    This short overview of KNOPPIX does not do it justice. However, if any of what you read interests you, please just download and burn off a copy for yourself. This is one packaged collection of software that will not fail to impress you. From the standard office programs (one of which I am using to write this overview), to the more nefarious penetration testing tools, KNOPPIX provides a powerful system in the palm of your hand. Now, if only they would make a version of KNOPPIX for my PDA!