- check out the stylin' NEW Collusion haxor gear at Jinx Hackwear!!! -
- sign up on the Collusion Syndicate's infotainment discussion lists!!! -

Volume 17
Nov 2000


 HOME

 TechKnow
 Media Hack
 Parallax
 Reviews
 Fiction
 Humor
 Events
 Offsite

 Mission
 Responses
 Discussion
 #Collusion
 NEW!

 Submit a Story
 Collusioneers
 © & TM Info
 Contact Us


SETI@Home

Join the
Collusion
SETI Team!




Tools of the Trade
 by oubug

Introduction

If you ever read the book “Cryptonomicon” by Neal Stephenson then you already know that one of the main characters of the book had a laptop that contained all his tools of the trade. His Swiss Army knife so to say! In “Snow Crash” by Neal Stephenson the main character carried around his computer (a wearable body computer and glasses) that allowed him access to all his tools in order to fight the evils in a virtual world.

What are your tools of the trade? This is not tough to answer and everyone should have a response, I’d hope. The response really depends on the individual and the purpose of their trade. The tools of your trade are as unique as your personality. The tools of a hacker are similar yet different then say a software-engineer or a web developer. Whether your mission is “Do everything to win; stop at nothing; and if you have to break the law, break it” or “I’ll squash all those first class thrill seeking hacks once and for all”. You’ll need the proper tools or you will not be very productive (or destructive) at the goal you are trying to accomplish. The more tools you have in your toolbox along with the knowledge of how and when to use to use them, the more productive you can be at your task at hand. The purpose of this article is to get the reader (you!) to start thinking about and assembling the tools of your trade and adding them to your toolbox.

The word tool has many meanings for example, “something regarded as necessary to the carrying out of one's occupation or profession”. How did I get the definition quickly (take my word I got it in seconds)? I used a tool. I fired up my Internet browser (Netscape), clicked on Bookmarks, and selected a dictionary web site (www.dictionary.com). I typed the word “tool”, located and highlighted the definition I wanted, and then cut and pasted it into this article. As silly as it may seem this is a tool of a trade. I was very productive and accurate (for this very simple example). Right now, say you want to spoof your IP address. Is a tool for that your toolbox? This might be a good tool for you if you need it for your profession? Yeah... you’re getting the point... time (decrease), accuracy (increase), productivity (increase), etc.

I know I can’t cover everything in one article, for this is a very dynamic ever-expanding evolving topic. Luckily, we can use the response section of this article to add and discuss points I've skimmed over or skipped entirely. At this point in the article I’ll assume that you have a computer. Don’t laugh because you don’t really need one, you can borrow one. You’ll just need the necessary floppies and/or CD’s that contains all your tools, your toolbox. For example, work forces me to attend an M$ TechEd conference that I’ll go to. What the hell it’s a free trip/vacation/beer drinking party/seminar/conference. I find a kiosk in the corner, take out my toolbox, and see what educational fun I can have with the stuff. Maybe I can learn what they have put together. If you blow the computer then they’ll just re-image the machine after you leave. The most important lesson is don’t assume that the tools will be here, there, or anywhere.

I’ll start where else... at what I think is the beginning... the foundation. The foundation is the command shell, text editor and basic structured programming languages.

The Command Shell

What is the command shell? The command shell is the way the user interfaces with the operating system. These shells are programs that interpret the commands you enter, run the programs you have asked for, and send the results to I/O. These shells perform the same basic functions: they allow you to perform work on your operating system by executing commands. The shell can also be used as a programming language. You can create shell scripts that contain commands. These scripts are executed in the same way that you execute a program... on the command line after the shell prompt. When you run a shell script, the shell spawns a subshell. (A subshell is a new shell your current shell spawns to run this program or script.) Any command the shell script or program executes leaves the invoking shell unaffected. Shell scripts provide a means of carrying out very tedious commands, large or complicated sequences of commands, and routine or repetitive tasks.

The command shell is the center of our universe! Learn it!

The GUI is great, for some situations, but the command shell is way better! If you are involved with Unix then you already believe what I am saying religiosly, and more then your basic M$ OS user who is used to the so-called derivability/usability/etc. of the GUI. The command shell is where life begins and ends for the hardcore triple-x code crackers. Sure, but can you do many things from the GUI faster and quicker, but the command shell allows you to take control and automate any task, integrating many different tools to achieve your goal. The bottom line about the command shell is that it will increase your productivity if you apply yourself and learn it. The command shell will also make your life much easier.

Here are some command shell utilities for Unix, Linux, BeOS, M$ Windows systems, etc:

OS

Reference

Unix

System Manuals

Linux

System Manuals

Cygwin

http://sourceware.cygnus.com/cygwin

Perl Power Tools

http://www.perl.com/pub/language/ppt

UWIN

www.gtlinc.com/product/uwin/uwin.html

The Korn Shell

http://www.oreilly.com/catalog/korn/

Windows Command Shell

http://www.microsoft.com/technet/winnt/shellscr.asp

Don’t fight the command shell! Don’t bitch about GUI vs. Command Shell. Learn your command shell. The only other thing that I’ll say about the GUI is, from a developer’s point of view, it (GUI) can be used to control what the user can do and can't do. GUI’s all have user constraints built into them by the designers and developers. The command shell = freedom!

Editors

What is it that we do as hackers, programmers and slackers? We work with plain old text, plain new text, and just text. Text! How do you work with plain old text? You use an editor or an editor. What is an editor? (The word editor can start a flame war so beware!) An editor allows a user to manipulate plain old text. What features should an editor have? An editor should be customizable and an application development system all in one or one in all. Learn a text editor and become very proficient in using your text editor of choice. Choose an editor, know it thoroughly, and use it! Also make sure that your editor is available on all the different platforms you use. Your goal is to understand on text editor and become very proficient at using it. Here is a list of some good editors:

Editor

Reference

Emacs

http://www.gnu.com, http://www.cs.sunysb.edu/~kifer/emacs.html

XEmacs

http://www.xemacs.org

VIM (Vi IMproved)

http://www.vim.org/

CRiSP

http://www.vital.com

Zeus

http://www.zeusedit.com/

Elvis

http://www.fh-wedel.de/elvis

LaTeX

http://www.latex-project.org/

Notepad

http://www.get.the.hell.out.of.here.com!

Most of the editors listed above (except notepad ;) are configurable, extensible and programmable to different degrees. An editor should be configurable to your user preferences. An editor shouldn’t be obsolete just because a new programming language comes out. You should be able to teach your editor new tricks. The importance of an editor is the ability it provides to you, the user, to be able to program the editor to perform complex, multistep tasks in order to reduce your tasks. You can either burn your fingers out typing in commands, hitting keys to navigate around, or do it the easy way, press a group of keys that executes a macro and does what you need. What would you rather do? As crazy as it seems, your editor is a very important tool in your toolbox. I think the text editor is a very over-looked tool by some people, but not everyone.

Programming Languages

There are some really great programming languages available out there. Learn one. This might seem like a funny statement. Of course there are great programming languages out there in the world, so? I know, but I don’t call point and click knowing a programming language. In this whole article I believe this is the toughest section to get a reader to start to learn and use. It takes the most time, but the benefits are unlimited. Unix users like to use the power of the command shell that is augmented with tools such as awk, sed, grep, ls, etc., but there are also users who prefer a more structured tool like the objected-oriented language Python, Java and C++. There are some users that use Tcl as their language of choice. While still others prefer Perl for hacking out short command scripts.

The languages listed below are important enabling technologies. By understanding and knowing how to use these programming languages, they will allow you to hack up new utilities quickly, explore, manipulate information, and pull a rabbit from your hat. You can spend fifteen minutes on a crazy idea or you can spend ten hours or even three days. It's up to you.

Programming Language

Reference

GNU C/C++ Compiler

http://gcc.gnu.org/

Java

http://java.sun.com

Perl

http://www.perl.org/, http://www.perl.com

Python

http://www.python.org

Tcl

http://www.scriptics.com

I look at these more structured programming language as the get out of jail free card. Knowing one of these structured programming languages really well will allow you to really pull that rabbit from your hat. Trust me! You’ll be able to create any tool or utility you heart desires! You now can do anything whether you want to create or destroy, protect or intrude. You are IT!

Conclusion

The purpose of this article was to get you to take inventory of the tools of your trade. If you are a beginner then I know that I have provided you with a good starting point in order to help you start to develop a strong offensive and defensive foundation, and add three tools to your toolbox. If you are an expert then I hope this article forced you to take inventory of your toolbox. Sometimes we become comfortable with what we have and we never look to see if there is something we can use to increase our productivity and make our life easier (have some fun). No matter what level you are at, continue to learn and help others learn the tools of your trade.

Having the proper tools in your toolbox will make your life easier and more enjoyable while you are hacking. Be on the lookout for the necessary tools. Always look to add more tools to your toolbox. If you can’t find the tool your in need of, create new tools and utilities for yourself and your community. If this article got you thinking, then I’m happy for you. If this article started you thinking, developing, and working on the tools of “your” trade then this article hit it’s target and the world will be a better or worst place because of it.

- oubug