home *** CD-ROM | disk | FTP | other *** search
-
- ---[ 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
-