The term developed originally in the United States university computing community in the positive sense described above, but as used in the media, it has become synonymous with "software cracker".
The term hacker is used in four senses in common use:
"Script kiddie" is reserved for a cracker of little or no skill who simply follows directions or uses a cook-book approach without fully understanding the meaning of the steps they are performing.
See also jargon file.
The hacker community (the set of people who would describe themselves as hackers, or who would be described by others as hackers) falls into at least three partially overlapping categories. The word hacker probably derives from the somewhat derogatory hack, used in the newspaper industry typically to refer to a Journalist who types his stories without checking his facts first.
One who knows a (sometimes specified) set of programming interfaces well enough to write novel and useful software without conscious thought on a good day. This type of hacker is respected within the development community for the freedom they represent, although the term still carries some of the meaning of Hack, developing programs without adequate planning. This zug-zwang sets freedom and the ability to be creative against methodical careful progress. Corporate programming environments typically favor only either the good hackers, or the careful computer scientist.
At their best, Hackers can be surprisingly productive. Industry standard rates of development are in the range of 6-10 lines of code (debugged, and documented) per hour. A Hacker in stride can produce a few hundred lines of code an hour as thought translates itself directly into code. As a result a Hacker may be able to sketch out the full shape of a program to a level of quality that can be used for demonstrating ideas in less than a week. Thus it isn't hard to see what some companies find useful in Hacker talent.
The down side of Hacker productivity is generally agreed to be in maintainability, documentation, and completion. Very talented hackers may become bored with a project once they have figured out all of the hard parts, and be unwilling to finish off the details. This attitude can cause friction in shops where other programmers are expected to pick up the half finished work, decipher the structures and ideas, and bullet-proof the code. In other cases, where a Hacker is willing to maintain their own code, a company may be unable to find anyone else who is capable or willing to dig through code to maintain the program if the original programmer moves on to a new job.
Hacker -- Black Hat, or Cracker The popular press tends to use the terms "hacker" and "cracker" interchangeably for someone who attempts to break into or otherwise subvert the security of a system or network. This usage is annoying to many in the developer community who grew up with the primary meaning in the Guru sense, and would prefer to keep it that way.
However, within the programming community, "hacker" is generally a term of respect or acknowledgement of skill while "cracker" is used for someone who is skillfully malicious or committing criminal (not simply illegal) acts. Some former hackers and crackers are now employed by companies online to test their security and report on weaknesses.
Software cracking is the process of removing any sort of software enforced protection scheme from a piece of software.
There are several recurring tools of the trade used by hackers to gain unauthorized access to computers:
1) A black-hat hacker turned white-hat. See below.
2) A white-hat hacker who uses black-hat techniques to satisfy their employers, for whom they act as white-hat.
White hat hackers often overlap with black hat depending on your perspective. The primary difference is that a white hat hacker observes the hacker ethic, a sort of golden rule of computing similar to: Do unto others as you would have them do unto you. Like black hats, white hats are often intimately familiar with the internal details of security systems, and can delve into obscure machine code when needed to find a solution to a tricky problem without requiring support from a system manufacturer.
An example of a hack: Microsoft Windows ships with the ability to use cryptographic libraries built into the operating system. When shipped overseas this feature becomes nearly useless as the operating system will refuse to load cryptographic libraries that haven't been signed by Microsoft, and Microsoft will not sign a library unless the US Government authorizes it for export. This allows the US Government to maintain some perceived level of control over the use of strong cryptography beyond its borders.
While hunting through the symbol table of a beta release of Windows, a couple of overseas hackers managed to find a second signing key in the Microsoft binaries. That is without disabling the libraries that are included with Windows (even overseas) these individuals learned of a way to trick the operating system into loading a library that hadn't been signed by Microsoft, thus enabling the functionality which had been lost to non-US users.
Whether this is good (white hat) or bad (black hat) may depend on whether you are the US Government or not, but is generally considered by the computing community to be a white hat type of activity.
hacker n. [originally, someone who makes furniture with an axe]
The term `hacker' also tends to connote membership in the global community defined by the net (see the network and Internet address). For discussion of some of the basics of this culture, see the How To Become A Hacker FAQ. It also implies that the person described is seen to subscribe to some version of the hacker ethic. It is better to be described as a hacker by others than to describe oneself that way. Hackers consider themselves something of an elite (a meritocracy based on ability), though one to which new members are gladly welcome. There is thus a certain ego satisfaction to be had in identifying yourself as a hacker (but if you claim to be one and are not, you'll quickly be labeled bogus). See also geek, wannabee. This term seems to have been first adopted as a badge in the 1960s by the hacker culture surrounding TMRC and the MIT AI Lab. We have a report that it was used in a sense close to this entry's by teenage radio hams and electronics tinkerers in the mid-1950s.
- A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary.
- One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming.
- A person capable of appreciating hack value.
- A person who is good at programming quickly.
- An expert at a particular program, or one who frequently does work using it or on it; as in `a Unix hacker'. (Definitions 1 through 5 are correlated, and people who fit them congregate.)
- An expert or enthusiast of any kind. One might be an astronomy hacker, for example.
- One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations.
- [deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence `password hacker', `network hacker'. The correct term for this sense is cracker.
(Note: this list includes a few crackers.)