Copynow Disclaimer Information
 The contents of all material available on this Internet site are copyrighted by Phrack Inc. 
unless otherwise indicated.
 
 Permission is granted to quote or reproduce parts or a whole article as long as the reference to 
http://www.phrack.org and adequate credit to the author is given (copynow).
 
 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 herein. 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 articles of Phrack 
Magazine are intellectual property of their authors.
 These opinions do not necessarily represent those of the Phrack Staff. 
