Title : Introduction
Author : Phrack Staff
---[ Phrack Magazine Volume 8, Issue 52 January 26, 1998, article 01 of 20
-------------------------[ P H R A C K 5 2 I N D E X
--------[ Choose your own $PATH adventure
Whew. You would be quite surprised at the evil wheels I had to set in
motion in order to get this issue out. According to Newton, a Phrack Issue
remains at rest or continues to move in a straight line with a uniform
velocity if there is no unbalanced force acting on it. This issue was at rest.
Its velocity was constant. And there were few forces acting on it. Anyhow,
after many machinations it's here. Enjoy.
I have a gripe. Something upon which I'd like dwell for a spell. Let's
talk about coding aesthetic (from the C programming standpoint). Now, this is
not a harangue about effective coding or efficient coding, I'll save those for
some other time (perhaps for the time when I feel I can write effective and
efficient code proficiently enough to vituperate to those who do not). I
want to touch down on a few topics of visual appeal, which are overlooked so
often.
The five major areas I will cover are indentation, brace placement,
use of whitespace, commenting, as well as variable and function nomenclature.
I suppose I should also mention that coding style is a personal preference
type of thing. There are all kinds of schools of thought out there, and all
kinds of methodologies on how to write pretty code. In the grand scheme of
things, none are really any more correct than any others, except mine.
C is, for the most part, a format free programming language. Code can be
written with all manner of whitespace, tabs, and newlines. The compiler
certainly doesn't care. The machine doesn't care. This can be a double
edged sword. There is quite a bit of room for artistic interpretation. And
just like in real life, there is a lot of crappy art out there.
Indenting your code is a must. Please, do this. Indentation is here for
one simple reason: to clearly and unequivocally define blocks of control.
However, 8 space tabstops are overkill. Unless you are using a 2 point font on
a 13" screen, 4 spaces should easily define your control blocks. This allows
you to maintain clarity on an 80 column screen while nesting blocks of control
much deeper then you would with 8 space tab stops. 2 space tabstop advocates
should be shot. However, don't let typography take over your code (ala ink
obscuring the intent). If you have 7 million levels of indentation, perhaps
you should rethink your approach to tackling the problem...
Bracing has a simple solution. The most effective use of bracing is in
placing them on newlines so that they neatly enclose the area of control. This
is especially important with nested levels of control. I know this generates
empty lines. Oh well. They're free. Blocks of control become easily visible
and it is easy to isolate one from another. This goes for functions as well
as conditionals and loop structures. I know I go against K&R here. Oh well.
In the pursuit of clear, readable code, whitespace is your friend. Single
space all keywords and all variables and constants separated by commas. It's
a simple thing to do to drastically improve readability. When you have a
series of assignments, one after another, it's a nice touch to line them up on
the closest relative 4 space boundary. And please, no spaces between structure
pointer operators and structure contents.
Commenting is a delicate matter. Descriptive, concise, well written code
shouldn't really need commenting, or at least very much of it. But this isn't
a rant about descriptive, concise, well written code. If you feel the need
to comment your code, follow a few simple rules:
- Keep the comment block as small as possible.
- Don't tab out your comment frames to line up with each other. That's
just plain fucking annoying. If you're doing that, you have too many
comments anyway.
- Commenting datatype declarations rather then the functions that
manipulate them is usually more helpful.
- If you must comment, keep your style as consistent as possible. If the
commenting detracts from the readibilty of your code, you've just ponied
up any clarification you might have achieved with the commenting.
The major exception to these rules are file headers. The beginning of
source and header files should always have some descriptive information,
including: file name, author, purpose, modification dates, etc... These
comment blocks should always have a simple vertical line of unobtrusive
astricks, framed with the required forward slashes. People using C++ style
commenting in C programs should be drawn and quartered.
The other exception to this rule is when you are writing code specifically
for the benefit of others. If the code is intended to be a learning tool,
copious commenting is allowable.
Variable and function nomenclature should have connotation as to what their
purpose in life is. As short as possible while still preserving some sort of
identity. Descriptive names are wonderful, but don't go overboard. Generally,
a condensed one or two word descriptor (possiblely connected via an underscore)
will work fine. And please, no mixed case. The only time uppercase characters
should appear in C code are in symbolic constants and macros (and possibly
strings and comments).
This tirade is the result of my experiences in reading and writing C code.
In my travels as a stalwart mediocre programmer, I have progressed through many
levels of maturity in my programming style. Much of my old code exhibits many
of the very things eschewed as anathema in this jeremiad. Well, what can I
say? I believe that I have grown. I am at home with the me. This is me
breathing. (Tell me what movie that's from, and I will give you a Phrack
Donut.)
Enjoy the magazine. It is by and for the hacking community. Period.
-- Editor in Chief ----------------[ route
-- Director of Public Operations --[ dangergirl
-- Phrack World News --------------[ disorder
-- Werdsmith ----------------------[ loadammo
-------- Elite --------------------> asriel
-- Santa vs. Jesus ----------------[ ISS vs. SNI
-- Festively Plump ----------------[ Cartman
-- Extra Special Thanks -----------[ No one.
-- Official Phrack CD -------------[ FLA/Flavour of the Weak
-- Official Phrack Drink ----------[ `The C Kilborn` (2.9 parts ketel one,
-----------------------------------| .1 parts tonic)
-- Shout Outs and Thank Yous ------[ Lords of Acid, cantor, Yggdrasil,
-----------------------------------| snokerash, Voyager, TNO, Jeff Thompson,
-----------------------------------| angstrom, redragon, Rob Pike, halflife
-- B.A. Baracus Phrack Fracas -----[ loadammo vs. Death Veggie
-- Original flip.c author (props) -[ datagram
-- Gas Face Given (drops) ---------[ solo, klepto
Phrack Magazine V. 8, #52, January 26, 1998. ISSN 1068-1035
Contents Copyright (c) 1998 Phrack Magazine. All Rights Reserved. Nothing
may be reproduced in whole or in part without written permission from the
editor in chief. Phrack Magazine is made available quarterly to the public,
free of charge. Go nuts people.
Subscription requests, articles, comments, whatever should be directed to:
phrackedit@phrack.com
Submissions to the above email address may be encrypted with the following key:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQENAzMgU6YAAAEH/1/Kc1KrcUIyL5RBEVeD82JM9skWn60HBzy25FvR6QRYF8uW
ibPDuf3ecgGezQHM0/bDuQfxeOXDihqXQNZzXf02RuS/Au0yiILKqGGfqxxP88/O
vgEDrxu4vKpHBMYTE/Gh6u8QtcqfPYkrfFzJADzPEnPI7zw7ACAnXM5F+8+elt2j
0njg68iA8ms7W5f0AOcRXEXfCznxVTk470JAIsx76+2aPs9mpIFOB2f8u7xPKg+W
DDJ2wTS1vXzPsmsGJt1UypmitKBQYvJrrsLtTQ9FRavflvCpCWKiwCGIngIKt3yG
/v/uQb3qagZ3kiYr3nUJ+ULklSwej+lrReIdqYEABRG0GjxwaHJhY2tlZGl0QGlu
Zm9uZXh1cy5jb20+tA9QaHJhY2sgTWFnYXppbmU=
=1iyt
-----END PGP PUBLIC KEY BLOCK-----
As always, ENCRYPTED SUBSCRIPTION REQUESTS WILL BE IGNORED. Phrack goes out
plaintext. You certainly can subscribe in plaintext.
phrack:~# head -20 /usr/include/std-disclaimer.h
/*
* All information in Phrack Magazine is, to the best of the ability of the
* editors and contributors, truthful and accurate. When possible, all facts
* are checked, all code is compiled. However, we are not omniscient (hell,
* we don't even get paid). It is entirely possible something contained
* within this publication is incorrect in some way. If this is the case,
* please drop us some email so that we can correct it in a future issue.
*
*
* Also, keep in mind that Phrack Magazine accepts no responsibility for the
* entirely stupid (or illegal) things people may do with the information
* contained here-in. Phrack is a compendium of knowledge, wisdom, wit, and
* sass. We neither advocate, condone nor participate in any sort of illicit
* behavior. But we will sit back and watch.
*
*
* Lastly, it bears mentioning that the opinions that may be expressed in the
* article of Phrack Magazine are intellectual property of their authors.
* These opinions do not necessarily represent those of the Phrack Staff.
*/
-------------------------[ T A B L E O F C O N T E N T S
1 Introduction Phrack Staff 12K
2 Phrack Loopback Phrack Staff 60K
3 Line Noise various 79K
4 Phrack Prophile on o0 Phrack Staff 07K
5 Everything a hacker needs to know about getting busted Agent Steal 72K
6 Hardening the Linux Kernel daemon9 42K
7 The Linux pingd daemon9 17K
8 Steganography Thumbprinting anonymous 35K
9 On the Morality of Phreaking Phrack Staff 19K
10 A Quick NT Interrogation Probe twitch 18K
11 Subscriber Loop Carrier voyager 48K
12 Voice Response Systems voyager 18K
13 Pay Per View (you don't have to) cavalier 19K
14 The International Crime Syndicate Association D. Demming 20K
15 Digital Certificates Yggdrasil 14K
16 Piercing Firewalls bishnu 31K
17 Protected mode programming and O/S development mythrandir 76K
18 Weakening the Linux Kernel plaguez 27K
19 Phrack World News Disorder 64K
20 extract.c Phrack Staff 08K
687K
-----------------------------------------------------------------------------
When Sen. Bob Kerrey (D-Neb.) was asked to define encryption, the results
were horrific. "Well, I mean, to answer your question, I mean, encryption is
-- the political equivalent of encryption is you ask me a question, I give you
an answer and you don't understand it," he managed. "I mean, I intentionally
garble the answer frequently. I intentionally garble the response so that you
can't understand what I'm saying. And that's -- you notice that I've got the
ability to do that."
-----------------------------------------------------------------------------
----[ EOF