.ad888bo. 8 .ad88888bo. .88. .88. _______ 888P'`88 88 8888 8888 8888 8888 UUUUUUUUUUU 888 8888 8888 8888 8888 8888 UUUUUUUUUUUUUUUUU 888 888 8888 8888 8888 8888 _UUUUUUUUUUUUUUUUUU 888 88 8888 8888 8888 8888 OUUUUUUUUUUUUUUUUUUU 888 8 `Y8888888P' `88888888' _OOUUUUUUUUUUUUUUUUUUU 888 OOOUUUUUUUUUUUUUUUUUUU 88P 2 _OOOOUUUUUUUUUUUUUUUUUUU 8P 22 OOOOOU~~~UUUUUUUUUUUUUU ' A collection of _2 _OOOOO UUUUUUUUUUUUU people offering 2~ OOO~ UUUUUUUUUUUUU diversity, instruction, 22 _OOO _UU UUUUUUUU complex ideas, 22 OO~ ~~ ~UUUUUU and some... hehe you'll see ;) 2 _OOO_OOOO___ _UUUUUU 2 OOOOOOOOOOOOOUU UUUUUU 22 OOOOOOOOOOOOOOUU UUUUU~ _______ 2 _OOOOOOOOOOOOOOUU UUUUUUUU ~~~~~~~NATIONS OF ULYSSES OOOOOOOO~ UUUUUU ______________OOO OOOOOOOOOOOOOO ______UUUUUUUUU_ NNNNNNNNNOOOOOOOOOOOO OOOOOOOO~~OOOOOOU~~~~~~ ~UUUUU ___NNNNNNNNNN __OOOOOOOOOOOO OOOOOOOOOOOO____ _UUUUUU_ NNNNNNNNNNN~~ NNOOOOOOOOOOOOO OOOOOOOOOOOOOUUUUU ~~~UUUU __NNNNNNNNNNN _NNNOOOOOOOOOOOOOO_ OOOOOOOOOOOOUUUUUU_ UUUU NNNNNNNNNNN~ NNNNOOOOOOOOOOOOOOO ~O ~~OOOOOOUUUUUUU UUUUUU _NNNNNNNNNNNN NNNNNOOOOOOOOOOOOOOOO_ OO OOUUUUUUU UUUUUUUUU NNNNNNNNNNNNN NNNNNOOOOOOOO~OOOOOO~O OO ~~~~~ ~UUUUUU NNNNNNNNNNNNNNNN__N NNNNNOOOOOOO_OOOOOOO OO_ OO_ _ UUUUUU NNNNNNNNNNNNNNNNN~ ~NNNNOOOO~~OOOOOOOO ~O ~OOOO ~U UUUUUU~ NNNNNNNNNNNNNNNN _OOOOOOOOOO OO OOOOOOO___ UUUUUUUUUU NNNNNNNNNNNNNNNN OO~OOOOOOOO~ OO OOOOOOUUUUUU UUUUUUU~ NNNNNNNNNNNNNNNN_ __N _O OOOOOOOO OOO_ OOOOOUUUUUUUUUUUUUUU NNNNNNNNNNNNNNNNNNNN O~ OOOOOOOO OOOOOOO~OOUUUUUUUUUUUUUU~ NNNNNNNNNNNNNNNNNNNN___N_ OO OOOOOOO OOOO OUUUUUUUUUUUUU ~~NNNNNNNNNNNNNNNNNNNNNNNO OOOOO~ OOOOO ~~~~~~~~~ NNNNNNNNNNNNNNNNNO_ _ OOO _OOOOO ~~~~~~NNNNNNNOOO~ OOOOOO . NNNOO _OOOOOO A Special Happy Birthday NNNOO O O OOOOOOO Wish to Substance! NNOOO__OO _O__OOOOOOOO We love you ;) NNOOOOOOOO OOOOOOOOOOOO NOOOOOOOOOOOOOOOOOOOOO ~OOOOOOOOOOOOOOOOO~~ OOOOOOOOOOOOO ~~~~~~~~~ *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:*.*:* ~~~~~~~~~~~~~~~~~~~~~~~~~Nations of Ulysses Issue #2~~~~~~~~~~~~~~~~~~~~~~~~~~~ *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:*.*:* Staff: lusta, pbxphreak, enderX, icesk Ok, here's the lineup hehe........ Introduction........................................................lusta In Rememberance.....................................................pbxphreak IrdA Network Stack Implementation...................................Accipiter Telco Stuff.........................................................pbxphreak Introductory to Perl................................................lusta Oh no not another "make your own weapon article" hehe...............polder k0d3z, k0d3z, and more k0d3z........................................pbxphreak Ident daemon explained..............................................enderX A lil something personal............................................lusta Skytel Prepaid Paging...............................................pbxphreak Scans...............................................................pbxphreak Shell Scripting (basics)............................................lusta PECompact v.096 (available to download).............................Jeremy A Brief Guide on Datapac............................................wsx DMS Switches........................................................pbxphreak helloworld.c (never coded in c before? heh look here)...............effect Introduction to Spread Spectrum Technology..........................Phuzzy L0gik ascii art (presented at the top)....................................KKR & lusta *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:* After the first issue, I received a lot of feedback. I have decided in this issue, to set a directive for this zine, and also offer a little vision of who we are, and what we're doing. I have given thought to what a zine is about, and have read other zines to get a kind of idea of what layouts, information, and structure each one provides. Each zine seems to be individual in their 'set-up'. First i want to express that the directive of Nou is to provide a sort of learning format for the writers and for its readers. It is also meant to offer a platform for a group of people to express their knowledge, spend time together, and have fun. If i chose for this to be a "high profile" type of magazine, I could omit certain offerings, and keep it to one particular area of information. But, instead, it is more important for me to experience the minds, feelings and humor of the writers, and to share this with our readers. So, if you experience an article that you can't necessarily appreciate as being informative, then try to experience it through humor, or through feeling. I have also chosen not to set a certain standard for the writers. That may turn some of you off, but, for me, I consider that anything a friend of mine has to offer, or share is valuable. Although, I offer criticism to the writers, as I invite you to do also, but at the same time, we all share different passions. Appreciate what everyone enjoys or has fun with. In this issue, I am taking this chance to learn a little, and that will be apparent to some of my advanced readers. Because of that, I try to offer information given by advanced writers, to present a sort of spectrum for reading. If you have any comment about anything in the zine, please mail us at nou@mail.com. Thanks again for your interest, if you care to contribute, or get to know us, we can be found in #nou on efnet. ;) ~lusta *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* A True Person (Rip Sean O'Brien) by pbxphreak On Friday August 13th, 1999 a tragic car accident happened. My friend spee passed away. He was a true friend to everyone I talked with on the computer. Although I did not know him as well as I would like to have, he still was an important person to me. I talked to him for about 2 and a half - 3 years on irc, conferences, and was going to meet him at Defcon or coming to his town and visit, but I never got the chance to. I wish I did. Everyone I know always says postivie things about him. I will remember him as a team partner when I use to hand in the occastional article for the zine system failure. It meant a lot to me that I was on the same team as spee That meant a lot to me. To me, I will always remember him saying one thing over and over on one conference I was on with him late at night then continuing into the next morning where I talked to him on it at school on the payphone. He would repeatedly say "pbxphreak I want a pony" . That made me laugh, and ever since I found out about what happen to Sean on friday, Thats all that is in my head, me remembering his voice over and over, and yes it brings a tear to my eye. I wont be able to chat with him, but I will still will be able to rememeber the memories of sharing those long conversations on conferences on the phone and those funny talks on irc. I will always remember teasing Sean on irc by calling him the Spanish Princess :) That made me laugh. Well we all know that Sean has gone to a good resting place upstairs, and he will be watching over all of us. If you would like to send mail to the spee memorial email address and give your condolences that will be properly delivered then email spee-memorial@omni-net.net. Thank you spee for your company over the past years. I will miss you dearly. Your Friend Chris McCoy (pbxphreak) *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:* IrdA Network stack Implementation by Accipiter NOTE: I originally wrote this document for, and presented it in #HackPhreak on Undernet. It's re-printed here because lusta is nice to me, and I find her to be a strikingly attractive woman. (Plus, I want to whore my skills. ;) IrDA (Infrared Data Association), as most of you know, is Infrared Communications. For those of you unfamiliar with Infrared Communications, basically, It sends data via an invisible beam of light (way over in the Red Spectrum, hence the name "infrared"). This is the type of communication usually found in Television/VCR/Stereo Remote controls, some types of Lock systems, and more recently, Handheld PDA (Personal Data Assistant) devices, most notably, the Modern HPC (Handheld Personal Computer). Used in HPCs, IrDA provides for short range high speed, line of sight, point to point cordless data transfer. To use IrDA as a network interface on an HPC, you obviously need a Network Stack Implementation. A Stack is a set of network protocol layers that work together to establish communications with other devices on a network. A minimum implementation for IrDA only requires 3 layers (Physical, Data Link, and Network), while the rest of the layers are optional, depending on the use of the device, as well as the requirements for the system to communicate with. Data packets are protected with a cyclic redundancy check (CRC-8 for short packets and CRC-16 for long packets). The physical layer of the stack is optimized for low power usage, and can be implemented using inexpensive hardware, so it would be relatively cheap to add Infrared capability to existing/new devices. ---- Physical Layer ---- On the lowest layer of the Stack, the IrDA sets different physical layer protocols for actual infrared beams, The first of which, is SIR (Serial Infrared Protocol). SIR defines an asynchronous serial Comm format (Meaning the data can be transferred in bursts, rather than one long stream), and has a maximum speed of 115,200 bps. The second protocol is FIR (Fast Infrared). FIR is used extensively in Wireless LAN environments, and can achieve a top speed of 4Mbps. ---- Data Link Layer ---- The Data Link Layer is the Second layer in the Stack. The IrLAP (Infrared Link Access Protocol) is a variant of the HDLC (High-Level Data Link Control) and SDLC (Synchronous Data Link Control) protocols. IrLAP contains modifications of these protocols to handle Infrared-exclusive features providing a sort of Universiality to IrDA communications. IrLAP is a protocol specializing in reliable data transfer, allowing other (upper) layers to concentrate on other tasks. IrLAP does NOT, handle error correcting, as it farms the error-correcting out to the upper layers. For example, if you have 2 HPC machines transferring files over Infrared, and you put your hand in front of the beam, IrLAP notifies higher level protocols of the error, and they take over for correcting the problem. The discovery protocol of the Data Link Layer is used for Negotiating connections, as well as probing detected devices. If you put 2 infrared HPCs in close proximity to one another with Infrared enabled, you'll notice they pick each other up, usually describing the character-istics of the other. You'll see the other machine's network name, description, and in some cases, the Model of the machine. A side note: When IrDA devices are establishing a connection, they will always communicate with each other at 9600 bps, regardless of the specified setting. After the devices successfully connect, and swap info regarding capabilities, they'll adjust the speed according to the inferior device's maximum rate. ---- Network Layer ---- The third, and final layer (for a typical IrDA network stack) is the Network Layer. The Network layer contains IrLMP (Infrared Link Management Protocol), a sort of multiplexing of communication for infrared devices. IrLMP allows multiple Infrared transfers with multiple devices simultaneously over IrLAP. These multiple devices, or "service access points" are known as LSAP-SELs (Link Service Access Point Selectors). Because of the lack of a Transport Layer in the IrDA Stack, LSAP-SELs are equivilant to TCP/IP port numbers. IrLMP also uses IAS (Information Access Service). The IAS is a service protocol for the IrDA Stack, and allows services to add an entry to the local machine's IAS, and in turn, allow clients to probe this information, and establish a connection. An optional protocol integrated into the Network Layer, is TinyTP. TinyTP provides flow control on IrLMP connections, and also supports optional Segmentation and Reassembly services. TinyTP will break up large data, send it as small bits, then rebuild them on the receiving end. The broken data bits are called SDUs (Service Data Units). General Infrared Communication can be found on http://www.irda.org/ Information on the Optional IrDA Protocols can be found on: http://www.irda.org/standards/standards.asp A List of IrDA compliant members can be found on: http://www.irda.org/members/members.asp *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* Telco Stuff by pbxphreak PBX's: A PBX is a private phone switch used by large companies that require an internal phone system. PBX's are the devices that ask you to dial an extension or operator when you connect to them. PBX's with less than 50 users are called key systems. PBX's consist of a small phone switch or specifically PBX switch, a group of outbound trunks, which are nothing more than phone lines to the outside, a set of telephones and a bunch of users. Voice Mail Boxes and Hacking Them: Voicemail is a sort of answering machine. Its effectively a small computer that will record phone messages, and often allow for more advanced features (like forwarding of messages and stuff). A voice mail box (VMB) is a account on a voice mail system. Basic hacking of voicemail systems in pretty well entering a voice mail box number and guess at the pass code usually is a default pass such as the box number, 1111, 1234, 5555 or 9999 or in a 3 digit voice mail box 111, 123, 999 or the box number. If you find the admin box, you are in luck, then you can create your own boxes. ONI: ONI is operator number id, this is when for example you call your operator up and ask her/him to dial 1-800-CALL-ATT by doing this you are hiding your number and the AT&T operator asks what number you are calling from, and basically you can tell her/him any number you want :) Central Office (CO): A central office is where the telephones in the network are connected. It is the gateway to the rest of the telephone system, this includes dial tone, telephone ringing, connection to other telephones, long distance carriers and outside trunks, this is all done here. Switch: A switch is a piece of hardware that connects telephone calls. There are three types of switches. a) the dail tone switch, b) the remote switch and c) the toll switch. Dial tone switches are the switches that connect directly with your telephone and provide you with your dialtone. Toll switches connect offices with toll switches and toll switches with other toll switches. The third type of switch is a remote switch. These are large PBX switches connected to a central office. So in lamans terms a switch is where telephone traffic is routed from one destination to another. Some common dialtone switches are 1AESSS, 5ESS 2000, DMS-10, DMS-100, Toll switches are DMS-200, DMS-250, DMS-500 and a remote switch is a GTD-5 EAX. Conclusion: Cya nex time! :) *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* Introductory to Perl...(special thanks to monir and rob for your help) The Practical Extraction and Report Language (Perl) is a scripting language that has all the capabilities of awk and sed, but with many more features. Perl was originally designed to operate on files like awk and sed do, generating reports and handling very large files. However, Perl was designed as a core program to which features could easily be added. Over the years, Perl's capabilities have been greatly enhanced. It can now control network connections, process interation, and even support a variety of database management files. At the same time, Perl remains completely portable. A Perl script will run on any Unix system, as well as most other operating systems such as Windows and Mac. Perl is also used extensively for implementing CGI scripts on Web sites. Now let's get started with some of the basics... ------------------------------------------------------------------------------ Perl Command Line Operations You can execute any Perl command line from the shell command line by using the command perl with the -e option. The Perl command you want to execute should then be entered and quoted within single quotes. perl -e 'print "hello";' You can use Perl this way for simple operations. Perl will not read input from the standard input unless you explicitly instruct it to with a while loop. The following example searches for the pattern "blondes." The file h0ez is first read by the cat command and piped to the perl command as standard input. cat h0ez | perl -e 'while () { if (/blondes/) { print; }}' This command line use of Perl is rarely used. Normally, Perl commands are placed in script files that are then executed, much like shell scripts. ------------------------------------------------------------------------------ Perl Scripts Usually, Perl commands are placed in a file that is then read and executed by the perl command. In effect, you are creating a shell in which your Perl commands are executed. Files containing Perl commands must have the extension .pl. This identifies that file as a Perl script that can be read by the perl command. There are two ways that you can use the perl command to read Perl scripts. You can enter the perl command on the shell command line, followed by the name of the Perl script. Perl will read and execute the commands. $ perl gimmesex.pl You can also include the invocation of the perl command within the Perl script file, much as you would for a shell script. Place the following shell instruction on the first line of your file. This automatically invokes the Perl shell and will execute the following Perl commands in the script. /usr/local/bin is usually the location of the perl command line (or usr/bin/perl for OpenLinux). The command `which perl` will return the location of Perl on your system. #!/usr/local/bin/perl Then, to make the script executable, you would have to set its permissions to be exectuable. The chmod command can make the file executable, turning it into a program that can be run on the command line. You only have to do this once per script. You do not have to do this if you use the perl command on the command line (I found this out the hard way). $ chmod 755 gimmesex.pl The entire Perl script is validated before it is executed, checking for errors ahead of time. Should there be any, they will be displayed on your screen, specifying line numbers and error messages. Many of the error messages can be obscure. Common errors might be: - failing to enter semicolons at the end of a line. - control structures must have blocks; they cannot have just a single command, as is the case in C. - variables must always be prefixed with a $ symbol. This is very different from C. Parts of a Perl program can be split into separate files and then read into a main file with the use command. Such files end with the extension .pm and are referred to as either packages or modules. Often, they contain enhanced operations for tasks such as file handling or text searches. ----------------------------------------------------------------------------- Perl Input and Output: <> and print A Perl script can accept input from many different sources. It can read input from different files, from the standard input, and even from pipes. Because of this, you have to identify the source of your input within the program. This means that, like ashell program, you have to explicitly instruct a Perl script to read input. A particular source of input is identified by a file handle, a name used by programs to reference an input source such as a particular file. Perl already sets up a file handle for the standard input and the standard output, as well as the standard error. The file handle for the standard input is STDIN. The same situation applies to output. Perl can output to many different destinations, whether they be files, pipes, or the standard output. File handles are used to identify files and pipes when used for either input or output. The file handle STDOUT identifies the standard output and STDERR is the file handle for the standard error. If you're familiar with c at all (which most of the readers of this zine are), then you're most likely familiar with these terms already. First we'll examine how Perl uses the standard input and output, and later discuss how particular files are operated on. Perl can read input from the standard input or from any specified file. To read from a file, a file handle name is placed between the less-than/greater-than symbols, . To read from the standard input, you can simply use the STDIN file handle, . Whatever the command reads is placed in a special variable named $_. You can then use this variable to manipulate whatever has been read. For example, you can use $_ in a print command to display what was input. If the line read by is not assigned, it is automatically placed in $_. If the print command has no arguement, it will print the value of $_. If the chmod command has no arguement, it operates on $_, cutting off the newline. You can use the print command to write data to any file or to the standard output. File handle names are placed after the print command and before any data such strings or variables. If no file handle is specified, then print outputs to the standard output. print STDOUT "beesh\n"; print "beesh\n"; A null file handle, <>, is a special input operation that will read input from a file listed on the command line when the Perl script is invoked. Perl will automatically set up a file handle for it and read. If you list several files on the command line, then Perl will read the contents of all of them using the null file handle. You can think of this as a cat operation in which the content s of the listed files are concatenated and then read into the Perl script. ------------------------------------------------------------------------------ Perl Variables and Expressions Perl variables can be numeric or string variables. Their type is determined by context, the way they are used. You do not have to declare them. A variable that is assigned a numeric value and is used in arithmetic operations is a numeric variable. All others are treated as strings. To reference a variable in your program, you precede it with a $ symbol, just as you would for a shell variable. You can use the same set of operators with Perl variables as with c variables, with the exception of strings. $myname = "Jen"; For a numeric variable, you can assign a number. This can be either an integer or a floating point value. Perl treats all floating point values as double precision. $mynum = 25; $price = 10.82; Perl also supports arithmetic expressions. All the standard arithmetic operators found in other programming languages are used in Perl. $mynum = 3 + 6; $price = (5 * ($num / 3); Perl supports the full range of assignment operators found in C. The ++ and -- operators will increment or decrement a variable. the += and -= and their variations will perform the equivelant of updating a variable. For example, i++ is the same as i = i + 1, and i += 1. Increment operations such as i++ are used extensively with loops. You can easily include the value of a variable within a string by simply placing the variable within it. In the following example, the value of $nameinfo would be the string "My name is Jen\n": print "the number of items is $mynum \n" $nameinfo = "My name is $myname \n" To assign data read from a file to a variable, just assign the result of the read operation to the variable. $mydata = ; When reading data from the keyboard into a variable, the carriage return character will be included with the input string. You may not want to have this carriage return remain a part of the value of the variable. To remove it, you can use the chomp command. chomp removes the last character of any string. With data input from the keyboard, this happens to be the carriage return. chomp $myinput; #!/usr/local/bin $myname=; chomp $myname; print "$myname just ran this program\n"; ----------------------------------------------------------------------------- The last section of this instructional is Arrays (until the next issue)... Arrays and Lists In Perl, you can create an array by assigning it a list of values. A list of Perl consists of a set of values encased in parentheses and separated by colons. ( 23, 41, 92, 7 ) You assign this list to the array you wish to create, preceding the array name with an @ sign. This assignment will initialize the array, sequentially beginning with the first value in the list. @mynums = (23, 41, 92, 7); Once the array has been created, you can reference its individual elements. The elements start from 0, not 1. The mynums array has four elements, numbered from 0 to 3. You can reference individual elements using an index number encased within brackets. [0] references the first element, and [2] references the third element. print $mynums[0] ; print $mynums[2] ; You can change the value of any element in the array by assigning it a new value. Notice that you use a $, not an @ sign, preceding an individual array element. The @ sign is used to reference the entire array and is used when you are assigning whole lists of values to it. The $ sign references a particular element, which is essentially a variable. $mynums[2] - 40; There is no limit to the number of elements in the array. You can add more by simply referencing a new element and assigning it a value. The following assignment will add a fifth element to the mynums array. $mynums[4] = 63 Each array will have a special variable that consists of a # and the name of the array. This variable is the number of elements currently in the array. print "$#mynums"; When assigning a list to an array, the values in a list do not have to be of the same type. You can have numbers, strings, and even variables in a list. Similarly, elements of the array do not have to be of the same type. One element could be numeric, and another string. @myvar = ( "jen", 11, 4.5, "a floral bouquet"); You can reference the entire set of elements in an array as just one list of values. To do this, you use the array name prefixed by the @ sign. print @mynums; The list of values referenced by an array name can be used in a string, just as the value of a variable can. $myreport = "Here are the numbers I have: @mynums \n"; print $myreport However, individual elements of an array are variables and need to be referenced using an index and the $ sign. $myelement = "This is the value of the third element: $mynums[2] \n"; print $myelement; Array Management Functions: List Operations: Perl has a set of functions designed to help you to easily manage arrays. With simple commands you can perform common array operations such as listing the contents of an array, sorting an array, or sequentially referencing each element one by one. In this respect, you can think of an array as a list, and these functions as performing list operations. Both push and pop operate on the end of an array, adding or removing the last element. You can think of them as adding or removing an element at the end of a list. push adds a new element to the end of the array. push takes as its arguements the array, followed by a list of values that you want added as elements to the array. pop will return as its value that last element. The shift and unshift operators work on the beginning of a list. shift will remove the first element in a list, making the next element the first one. The unshift operation adds a new element to the beginning of the list. shift takes as its argument an array and returns the value of the first element it removes. unshift takes its arguement an array followed by the value of the element you want to add. It then returns the total number of elements now in the array. The sort operation will sort the elements in an array according to the system's character set, usually the ASCII character set. sort will arrange elements in ascending order. The sort operation returns the list of sorted values. The split operation is used to create an array and assign it values derived from a string. The values are determined by a specific delimiter that is used to sement the string, forming the different values that will be assigned to elements in the array. split is often used with lines of input data that are already arranged into fields that are separated by a delimiter such as a comma or colon. You can use the grep function to search an array or any list. grep takes as its arguements a pattern and a list, usually an array. grep returns the value of the element matched. Associative Arrays An associative array uses strings to index elements in an array, instead of numbers. You can think of the index string as a keyword that you can use to find an element. In Perl, an associative array is defined with a % prefixing the array name. The list of values that is assigned consists of an index string and element value pairs. An index string is followed by the elemets value, which is then followed by the next index string and element value, and so on. % city = ('Denver', 4, 'Englewood', 86, 'Arvada' 7, 'Boulder', 53) ; You reference an element in an associative array using its index string. The index string is encased in single quotes and braces (not brackets). print $city('Englewood'); To add a new element in an associative array, you need to provide both the string to be used as the index for this element as well as the element's value. $city{'Evergreen'} = 45; To reference the list of values for an associative array you use the % sign with the array name. print %city; Perl also has a set of list operations designed to work on associative arrays. With these operations, you can generate lists of keys or values. They are helpful for easily iterating through an associative array. The keys operation takes as its arguement an associative array and returns a list of all the index strings used to reference the elements in that array. Having obtained the index strings, you can then use them for referencing each element in the array. This introductory will be concluded in the next issue of nou, and will consist of Control Structures/Loops/Conditions/String Functions and Pattern Matching. I will also try to put together a list of functions and line operations for the conclusion. Hopefully I will also be able to offer something made in perl (yes, by me) for the next issue as well, to demonstrate it better. Thanks ;) for more information on Perl check out these sites: www.perl.com www.cis.ufl.edu/perl comp.infosystems.www.authoring.cgi ~lusta *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* -+-+-+-+-+-+-+-+-+-+-+-+- -+ MiniBazooka HOWTO +- -+-+-+-+-+-+-+-+-+-+-+-+- actually, i got this idea while reading eXult666's article in NOU #1 about pen razors. ive always wanted to write an article about pencils. in this article ill try to explain as easy as possible how to make a mini bazooka with a pen and some dynamite, HEH. im very sorry to say that i never got the condom bazooka to work, so i had to write about the dynamite method instead, shrug, but dont worry.. this one works even better. anyway, dont bother about my broken english, remember that im from norway. HEH! Equipment needed ---------------- 01) a pen u can open 02) 2-3g dynamite (or something like that) 03) a match 04) a teacher 05) something to clean up the ink with Building this fuqr ------------------ THE PENCIL: .----------------------------.__________ .--| ! '-----._ button --> | ! ! _!> <-- ink thingy `--| !__________.-----' `----------------------------' STEP #01: ok, so u got a pen handy. remove the "button" from it, then carefully fill the "hole" with the dynamite. make sure u dont blow urself away or anything.. hole .----------------------------.__________ | | ! '-----._ `-> .-> ! ! _!> | | !__________.-----' | `----------------------------' xxx xXXXx xXXXx <-- this is exactly what dynamite looks like. xxx STEP #02: when everything is under control, put the match into the hole and stuff it into the dynamite (or something). then remove the "ink thingy" (yeah u know what i mean, asshole) basically, the mini bazooka is ready to use. HEH! .----------------------------.__________ | ! '-----._ .-> ======X ! ! _! <- removed | | !__________.-----' match `----------------------------' STEP #03: alright. u have just built urself a bazooka and ur ready to fire it. its easy as hell, just point it at ur worst teacher at school and use another match to get the match that is into the pencil on fire (confuzing? HEH), just like the ASCII illustration shows below.. .----------------------------.__________ | ! '-----._ ======! ! _! X | !__________.-----' x `----------------------------' x x <- another match (on fire) What happens ------------ .----------------------------.__________ <<>| .--------------. '-----._ flamez -> vVv><< _ ooo00o000 -> teacher <>>>| `--------------' __________.-----' `----------------------------' ..or something like that. anyway, we've come to this article's EOF. remember that this tool can be very dangerous in wrong hands, and keep in mind that i wrote this article just for fun and in a sarcastic way. NOT!@# HEH! -+-+-+-+-+-+-+-+-+- -polder@lower.org <- plz send me shitloads of mail. HEH!!! eye l0ve y0u m1cah -+-+-+-+-+-+-+-+-+- *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* k0d3z, k0d3z and m0re k0d3z by pbxphreak ok, first off i would like to greet everyone in NOU and thank you for all your support and feedback to my last article on lines versus trunks. I enjoyed getting yer emails and comments on irc. I could do this article in all 3l1t3 sp34k. but i wont cause no one cares about that shit anymore. :) let me ask you something. do you think k0d3z is a thing of the past. think about that for a minute. you say to yourself, nah thats all old sk00l shit. well your wrong. i prooved to myself lately that systems are still as insecure as they were years ago. I am sure everyone remembers the old kick ass 800-955-1213 mitel pbx system with the 13 digit k0de. that system was a hard one to forgot with a 13 digit k0de all being 0's :) well lately when bored i usally just hand scan, and found some weird ass shit. like those boxes on 800-SKYTEL2 in the 916xxxx range with pw's the same as the box, 1111, 1234 or 9999. you see these lame ass admins of the systems are still stupid, they seem to want to invite hackers inside the system so they can fuck around and get free shit. If i had the option I would *personally* take a shot gun and kill all those stupid sysadmins of different systems who dont get rid of default stuff. You can still scan 800-SKY-xxxx and find empty skytel boxes that no one uses with default passwords, like mine, I have had for over 5 years now, and *NO ONE* gives a flying shit about it. like up till last week the pbx I was using locally to me had simple an extension I dial into and I get a dialtone, then from there I simply hit 9 for an outside line and b00m, all set for long distance :) see yet again stupid things, and this is 1999. this isnt suppose to happen now ;) and today i was bored at work so i decided to scan 800-XXX-MAIL and found 800-408-MAIL and 800-800-MAIL and yet again 408-MAIL had box 112 with the password 1111 (which will probably go down after yer reading this article) and some other box which could only be accessed within the system, which means u can send msgs when u access yer box but people couldnt leave u msgs from the outside world, when you dialin you get a fax noise, so its no good unless you have boxes within the system :) which I got :) well there is just another example of stupid system admins with their default shit. one more system which is even stupider was 800-800-MAIL with tonnes of boxes where u can enter the box by just hitting the "#" key as the pw, hence no PW, that works for about 25 boxes on the system, 129, and 132 are 2 examples. so like i said, the stupidity is still there among the system admins. so to wrap up. the k0d3z are still out there. you just have to find them. trust me. THEIR OUT THERE WAITING FOR YOU. :) cya next time! :) *muah* *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* /* eidentd.c one person, compact identd daemon this daemon sits on port 113 and answers auth requests with whatever is in IFILE. it is non-blocking and makes use of select(). the timeout for data to be sent is currently set to 2 seconds which may be too short but it certainly shouldnt be. this daemon is most notable not for its simple function but instead for its implementation of select() and non-blocking sockets tested on solaris and linux 2.2.xx, no reason it shouldnt work on all *nix platforms enderX - 16 Aug 1999 */ #define IFILE "/etc/ident" #include #include #include #include #include #include #include #include #include #include #include int s, fl; struct sockaddr_in addr; void do_clean(int sig) { close(s); exit(0); } int main() { fd_set sfd, fds; int ret, tsock, fd; struct sockaddr_in inaddr; struct timeval tv; char buf[128], *p; s = socket(AF_INET, SOCK_STREAM, 0); if (s == -1) { perror("Unable to allocate socket"); exit(-1); } /* setup signal handling */ signal(SIGPIPE, SIG_IGN); signal(SIGHUP, SIG_IGN); signal(SIGINT, do_clean); signal(SIGTERM, do_clean); signal(SIGKILL, do_clean); signal(SIGQUIT, do_clean); memset((struct sockaddr_in *)&addr, 0, sizeof(struct sockaddr_in)); fl = 1; /* make the socket non-blocking by first getting the flags currently set on the socket, adding the bit for the O_NONBLOCK flag and then setting the flags for more information see setsockopt.2 and fcntl.2 (man pages) */ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &fl, sizeof(int)); ret = fcntl(s, F_GETFL, 0); ret |= O_NONBLOCK; fcntl(s, F_SETFL, ret); addr.sin_family = AF_INET; addr.sin_port = htons(113); /* make sure to always check the return code of bind() because the port may be in use, etc. */ ret = bind(s, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)); if (ret < 0) { perror("Unable to bind port"); exit(-1); } fl = sizeof(addr); getsockname(s, (struct sockaddr *)&addr, &fl); ret = listen(s, 10); if (ret < 0) { perror("Listen failed"); exit(-1); } fl = sizeof(struct sockaddr_in); /* fork() returns -1 on error else it returns 0 in the newly created child process and the pid of the child process in the parent process. thus if (ret > 0) we can exit the parent process and the child proc will be left running in the background as we are returned to our shell */ ret = fork(); if (ret == -1) { perror("Unable to fork"); exit(-1); } if (ret > 0) { printf("Identd daemon started in background. [pid: %d]\n", ret); exit(0); } FD_ZERO(&sfd); FD_SET(s, &sfd); while (1) { /* select() is very important to use when doing non-blocking daemon-type code. what select() does is it stops the daemon until there is a connection and then it proceeds. if this select() call right here was taken out the CPU would go to 100% from all the accept() calls. for more information see select.2 (man select) */ select(s+1, &sfd, NULL, NULL, NULL); ret = accept(s, (struct sockaddr *)&inaddr, &fl); if (ret > 0) { memset((char *)buf, 0, 128); p = buf; tsock = ret; /* setting SO_KEEPALIVE is necessary to make sure whatever is connecting to our ident daemon has enough time to read() the data we reply with before we close() the socket */ fl = 1; setsockopt(tsock, SOL_SOCKET, SO_KEEPALIVE, &fl, sizeof(int)); ret = fcntl(tsock, F_GETFL, 0); ret |= O_NONBLOCK; fcntl(tsock, F_SETFL, ret); FD_ZERO(&fds); FD_SET(tsock, &fds); tv.tv_sec = 2; tv.tv_usec = 0; /* select() used again to see if there is data to read() and also to implement the timeout so that the daemon wont hang if someone connects and does not do anything */ ret = select(tsock+1, &fds, NULL, NULL, &tv); if (ret <= 0) { close(tsock); continue; } fl = read(tsock, buf, 127); /* this should not be necessary but on some OS's select() seems to be slightly broken and thus we need to check the return of read() */ if (fl <= 0) continue; /* okay now here is a little bit of string parsing without using string library functions. the strings library is evil! */ /* p == the beginning of buf fl == the amount of data read we want to set p to the end of the data in buf so we add fl to it and - 2 because the last two chars are "\n\0" and we want to write over those later */ p += fl - 2; /* we continue to form ident response.. since p currently equals the end of the data in buf, we can simply write straight to p. after we write to p we add the amount written to the pointer so that it will again be at the end of the data in buf and we can continue to append to that data */ memcpy(p, " : USERID : UNIX : ", 19); p += 19; /* open IFILE (/etc/ident) and read the first 10 bytes to p which is set to the end of the data in the buffer */ fd = open(IFILE, O_RDONLY); fl = read(fd, p, 10); close(fd); /* we again update p so that it is at the end of the buffer the reason we do "p += fl - 1;" instead of p += fl; is because we assume the last char in /etc/ident '\n' and we dont want that. note: this isnt a very good assumption but this would be the case if you do something like "echo ender > /etc/ident" */ p += fl - 1; /* we then add "\r\n" to the end of buf to conform with the identd RFC and once more update p to be the end of buf */ memcpy(p, "\r\n", 2); p += 2; /* since p is at the end of buf we can get the difference of its address and the address of buf and that is the length of our identd reply. no need to call the evil strings library function strlen() */ write(tsock, buf, p - buf); close(tsock); } } } *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:* A lil something on a personal level... Those of you that know me well, know that i study philosophy. As a passion of mine, I study different realms of 'being'. Getting to know people, their perceptions, their own passions and what they are a stand for, offers insight and personal growth. The internet offers a huge realm of different personality, belief, experience and opinion. Sharing those things, allows one to have access to places, feelings and 'ways of being' that they wouldn't have even known. Consider all of knowledge, and also consider what you know that you know, and what you know that you don't know. If you assume that those two 'types' of knowledge are all you have access to, then you will be limited. However, if you consider that what you know that you know, and what you know that you don't know are only a small percentage of full knowledge, you then have access to what you don't know that you don't know. Which in turn could be called 'possibility'. in·teg·ri·ty Pronunciation: in-'te-gr&-tE Function: noun Etymology: Middle English integrite, from Middle French & Latin; Middle French integrité, from Latin integritat-, integritas, from integr-, integer entire Date: 14th century The quality of being complete or undivided. So, assume that you are of integrity with knowledge. Then you would be able to be with possibility. If integrity is to be of 'wholeness' or 'completion', then to be of integrity with knowledge would mean having access to what you don't know that you don't know. Invention, perception without judgement or hesitation, objectivity and communication; these are the ways to access possibility. Most people are confused about what integrity really is. Most consider it's 'being a good person', having morals, honesty, etc. Sure authenticity is a way of integrity, butonly for the reason that it isn't 'broken' or untrue. Like a bicycle that has a broken spoke would be without integrity, because it cannot perform, thus being incomplete. My reason for this article, is to maybe offer some insight on availability. If you are to see that you are just a piece of something bigger, and appreciate the other 'pieces', then you have access to unlimitation. Therefore being of integrity with possibility. I think I hear everyday, "Jen, you take the internet too seriously" or "it's just irc, it isn't real". That may be how some people cope with harshness, or cruelty from others online. However, I see that every person I communicate with, whether online or offline offers something to my possibility (the 'don't know what you don't know'). The assumption isn't that everyone tells the truth, or that noone runs a con. Because everyone runs a racket, whether it be as small as their lipstick or the fake rolex they wear. Everyone does something to cover up something. That's how people assume their characteristical traits. Being comical, shy, or brutal are all ways of covering up who a person really is. The only way beyond this, is through communication. True communication, finding yourself in others, being a stand for people, taking a risk to allow yourself to be one with others. After you find authenticity in your communication with others, everything changes. ~lusta *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* Skytel Prepaid Paging by pbxphreak -.- Why Skytel Prepaid Paging? -.- Well this i just my thoughts. i think prepaid paging is the best thing that ever happened to the paging world. you dont have to worry about giving yer d0x to them. this way u can sign up under any name u want, and you don't have to worry about bad credit to sign up with the damn company. in the past i had bought a friend a pager becuase he was too young so i bought him one under the same name as mine. so that meant 2 pagers under one name, and we ended up not paying for any of the services, so thus i had bad credit of like 115 bux :( shitty life eh? well that explains a bit about why skytel prepaid paging rox in my thoughts. -.- Who can get Skytel Prepaid Paging? -.- Well anyone can get this service. fedz, warez kids, narqs, losers, brainers, wannabee g1mps, elite-o-burrito haxor dudes, and even loser lamers like TRON! -.- Why is Skytel Prepaid so great? -.- NO BILLS! NO HASSLES! NO CREDIT CHECKS! NO IMPORTANT INFO NEEDED! -.- How to order from Skytel? -.- Simple call the National Sales Center at 1-800-456-3333 and ask for the prepaid paging department. They will gladly transfer you. :) -.- Comparing Skytel to Prepaid Skytel -.- I have a Skyword pager. My pager includes the following: - Personal 800# - Nationwide Coverage - Internet Email Address - Voicemail - Numeric Paging - Alphanumeric Paging - Page Recall - Operator dispatch for Alpha Text messaging - Personal Greetings All this and it cost about $60 bux US a month. Just dont ask me how I am paying for it :) SKYTEL IS EXPENSIVE!!! GO WITH PREPAID!! -.- Skytel Prepaid Paging Packages -.- Skytels prepaid paging service is broken down into 5 pagers. . Digitz ($79.95) Pager Features: - FLEX Technology extends battery life and improves page reliability - Holds up to 16 messages - Easy-to-use 2-button operation and Easy-To-Read Backlit Display - Simple two-button design for easy operation - Shows date and time - Built-In Alarm Clock - 3 Musical alerts or silent vibration - Clear-Vue lighted display - Notes time of message - Locks important messages - Saves messages when off - Removable belt clip for wearable flexibility - Low battery alert - Uses one AAA battery Package Details: - Numeric FLEX pager - 1,000 Message Units or 3 Months of Service, whichever comes first - Personal Toll-Free Pager Number - Local and Nationwide Coverage On-Demand - Voice Mail - Personal Greeting - Page Recall - Automatic Message Unit Counter - Activation Fee - Motorola Standard One-Year Warranty . Wordline ($129.95) Pager Features: - FLEX Technology extends battery life and improves page reliability - Receives numeric or word messages from family and friends - Includes three info updates – top news stories, sports and entertainment - One line display that scrolls to show the numeric or word message - Total memory of 2200 characters - Holds up to 16 messages - Set a bookmark in an info update - Shows date and time on standby - Notes time of message - 3 built in alarm clocks - Private time for the ability to turn off all pager alerts during pre-selected times - 8 Musical alerts or silent vibration - Locks important message - Option to delete individual messages or erase all - Saves message when off or changing the battery - Uses one AAA battery Package Details: - Alphanumeric FLEX pager - 1,000 Message Units or 3 months of service, whichever comes first - Personal Toll-Free Pager Number - Local and Nationwide Coverage On-Demand - Caller ID - Internet E-mail Address - Operator Dispatch - Callers can speak with an operator who relays fully detailed, typed messages directly to the pager - Information Services - The latest news, sports and entertainment headlines - Voice Mail - Personal Greeting - Page Recall - Automatic Message Unit Counter - Activation Fee - Standard Warranty . Expedition ($179.95 - Watch Pager) Pager Features: - Receives numeric or word messages - FLEX technology - Holds up to 16 personal messages. The maximum number of characters allowed per message is 104 with a total memory capacity of 1,280 characters. - Silent visual alert or 5 selectable music alerts - One line message that scrolls forward and backward - Two month battery life - FLEXtime automatically updates watch to keep correct time zone - Requires Zinc Air Battery Package Details: - Beepwear Pager Watch - 1,000 message units or 3 Months of Service, Whichever Comes First - Personal Toll-Free Pager Number - Local and Nationwide Coverage On-Demand - Caller ID - Internet E-mail Address - Operator Dispatch - Callers can speak with an operator who relays fully detailed, typed messages directly to the pager - Information Services - The latest news, sports and entertainment headlines - Voice Mail - Personal Greeting - Page Recall - Automatic Page Counter - Activation Fee . Sporty ($179.95 - Watch Pager) Pager Features: - Receives numeric or word messages - FLEX technology - Holds up to 16 personal messages. The maximum number of characters allowed per message is 104 with a total memory capacity of 1,280 characters. - Silent visual alert or 5 selectable music alerts - One line message that scrolls forward and backward - Two month battery life - FLEXtime automatically updates watch to keep correct time zone - Requires Zinc Air Battery Package Details: - Beepwear Pager Watch - 1,000 message units or 3 Months of Service, Whichever Comes First - Personal Toll-Free Pager Number - Local and Nationwide Coverage On-Demand - Caller ID - Internet E-mail Address - Operator Dispatch - Callers can speak with an operator who relays fully detailed, typed messages directly to the pager - Information Services - The latest news, sports and entertainment headlines - Voice Mail - Personal Greeting - Page Recall - Automatic Page Counter - Activation Fee . Pro ($199.95 - Watch Pager) Pager Features: - Receives numeric or word messages - FLEXtime automatically updates watch to keep correct time zone - Holds up to 16 personal messages. The maximum number of characters allowed per message is 104 with a total memory capacity of 1,280 characters. - Silent visual alert or 5 selectable music alerts - One line message that scrolls forward and backward - Two month battery life - Timex Data Link System allows user to transfer information from PC to watch and send messages from the software to a pager - Stores up to 150 name and telephone entries - Requires Zinc Air Battery Package Details: - Beepwear Pager Watch - 1,000 message units or 3 Months of Service, Whichever Comes First - Personal Toll-Free Pager Number - Local and Nationwide Coverage On-Demand - Caller ID - Internet E-mail Address - Operator Dispatch - Callers can speak with an operator who relays fully detailed, typed messages directly to the pager - Information Services - The latest news, sports and entertainment headlines - Voice Mail - Personal Greeting - Page Recall - Automatic Page Counter - Activation Fee -.- Conclusion -.- Trust me. Skytel is the best paging company worldwide. If u want to go with Skytel then get Skytel Prepaid. No other alternatives. FUCK local paging, and those other prepaid paging companies. They don't offer what Skytel has to offer. Trust me. I have checked them out! hehe :) -.- Help me! I am in a differnt country -.- If you already have Skytel Prepaid and are in a differnt country than Canada or USA. Here is a list of dialups to use to check your messages or to give to someone to leave u a message that lives in a different country then here you go: Country Access Number Notes Australia 1-800-12-8078 Bahamas 1-800-934-6451 Bahamas 1-800-934-6451 Barbados 1-800-534-2170 Belgium 0800-1-4389 Bermuda 1-800-825-0311 Canada 800-759-8255 Chile 1230-020-3220 China 10-800-524-4624 Colombia 980-1-52547 Costa Rica 001800-234-4793 Denmark 8001-8671 El Salvador 0-1-800-234-9578 Finland 9-800-1-59402 France 05-90-3223 Germany 0130-8-18414 Greece 00800-12-2613 Guam 1-800-671-0150 Guatemala 099-0082 Hong Kong 800-5688 Hungary 00-800-11144 Indonesia 001-800-011-0277 Ireland 1-800-55-5523 Israel 177-150-1572 Italy 1678-77100 Japan 0031-12-3373 Luxembourg 0800-6170 Malaysia 800-2652 Mexico 95-800-759-8255 Netherlands 06-022-7548 Netherlands Antilles 0031-12-3373 New Zealand 0800-447036 Norway 800-15617 Panama 001-800-507-0089 Portugal 0501-12-707 Singapore 800-1200-457 South Africa 080-09-92588 Sweden 020-79-3976 Switzerland 155-2154 Taiwan 0080-13-8341 Thailand 001-800-12-066-0249 United Kingdom 0800-89-3648 Uraguay 000-413-598-0371 Venezuela 8001-2458 EOF *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:* Skytel Scans by pbxphreak Here are some skytel boxes I scanned recently. Do what you want with them 800-203-4010 (numeric) 800-203-4012 (numeric,text) 800-203-4013 (numeric,text) 800-203-4016 (numeric,text) 800-203-4018 (numeric,voice) 800-203-4019 (numeric,text) 800-203-4021 (numeric) 800-203-4022 (numeric,text) 800-203-4023 (numeric,text) 800-203-4024 (numeric,voiemail) 800-203-1758 (numeric,voice,text) 800-203-7269 (numeric,text) 800-213-4012 (numeric,voice,text) 800-436-4573 (numeric,voicemail) 800-436-4590 (numeric,voice,text) 800-436-4591 (numeric) 800-436-4592 (numeric) 800-436-4593 (numeric) 800-436-4594 (numeric) 800-436-4595 (numeric) 800-437-9229 (numeric) 800-437-1303 (numeric,voicemail,text) 800-437-5767 (numeric) 800-437-8903 (numeric,text) 800-437-0825 (numeric,text) 800-482-1809 (numeric) 800-757-4455 (numeric,voice) 800-759-1368 (numeric,text) 800-759-9821 (numeric,text) *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:* Basics of Shell Scripting (BASH) You can combine shell variables, control structures, expressions and commands to form a shell script. You can create this script file using any standard editor. To run the shell script, you the execute its script file. You make a script file executable by setting its execute permission using the chmod command. The executable permission for the chmod command can be set using either symbolicor absolute references. The symbolic reference u+x sets the execute permission of a file. The command chmod u+x hello will set the execute permission of the hello script file. You can now use the script file name hello as if it were a linux command. You only need to set the executable permission once. Once set, it remains set until you explicitly change it. hello echo "Hey Sexy!" $ chmod u+x hello $ ./hello Hey Sexy! $ An absolute reference will set read and write permission at the same time that it sets the execute permission. A 700 will set execute as well as read and write permission for the user, 500 will set only execute and read permission, 300 only execute and write permission, and 400 only execute permission. $ chmod 750 hello $ ./hello Hey Sexy! $ It is helpful to include in a script file, short explanations describing what the file's task is. Any characters entered on a line after a sharp sign will be ignored by the shell. hello #The hello script says hi to your sexy ass echo "Hey Sexy!" Variables are used extensively in script input and output operations. The read command allows the user to interactively enter a value for a variable. Often read is combined with a prompt notifying the user when to enter a response. Another form of script input, called the Here document, allows you to use lines in a script as input to a command. This overcomes the need to always read input from an outside source such as a file. You assign a value to a variable with the =. You type the variable name, the =, and then the value assigned. $ greeting="hi" Once you have assigned a value to a variable, you can then use that variable to reference the value. You can reference the value of a variable, using the variable name preceded by a $. Thus, wherever a $ is placed before the variable name, the variable name is replaced with the value of the variable. $ echo $greeting hi You can obtain a list of all the defined variables with the set command. If you decide that you do not want a certain variable, you can remove it with the unset command. Although variable values can be made up of any characters, problems occur when you want to include characters that are also used by the shell as operators: space - used to parse arguements on the command line asterick, question mark, and brackets are used to generate lists of file names period - represents the current directory dollar sign - used to evaulate variables Double and single quotes allow you to quote several characters at a time. Any characters within double or single quotes are quoted. A backslash quotes a single character (the one it precedes). If you want to assign more than one word to a variable, you need to quote the spaces separating the words. You can do so by enclosing the words within double quotes. Here's 3 examples, in the first example, the double quotes enclose the words separated by spaces. In the second example, the quotes also enclose a period, treating it as a character. In the third example, an asterisk is also enclosed within the quotes. The asterisk is considered just another character in the string, and is not evaluated. $ notice="The zine will be released this weekend" $ echo $notice The zine will be released this weekend $ message='The issue came out on time.' $ echo $message The issue came out on time $ notice="You can find the program i wrote with ls *.c" $ echo $notice You can find the program i wrote with ls *.c Double quotes, however, do not quote the dollar sign. A $ next to a variable name enclosed within double quotes will still be evaluated, replacing the variable name with it's value. $ winner=stoner $ notice="The fat kid that eats the most pies is $winner" $ echo $notice The fat kid that eats the most pies is stoner On the other hand, there may be times when you do not want a variable within quotes to be evaluated. In that case, you would have to use the single quotes. Single quotes suppress any variable evaluation an treat the dollar sign as just another character. $ winner=stoner $ result='The name is in the $winner variable' $ echo $result The name is in the $winner variable You can always quote any special character, including the $ operator, by preceding it with a backslash. The backslash is useful when you want to evaluate variables within a string and also include $ characters. $ winner=stoner $ result="$winner won \$100.00" stoner won $100.00 If you place a command within back quotes on the command line, that command line is first executed and its result becomes an arguement on the command line. In the case of assignments, the result of a command can be assigned to a variable by placing the command within back quotes to first execute it. Think of back quotes as a kind of expression that contains both a command to be executed and its result, which is then assigned to the variable. The characters making up the command itself are not assigned. $ listc=`ls *.c` $ echo $listc main.c prog.c lib.c Keep in mind the difference between single quotes and back quotes. Single quotes treat a command as a set of characters. Back quotes force execution of the command. There may be times when you accidentally enter single quotes when you mean to use back quotes. The first example shows with single quotes, and the second with back quotes: $ lscc='ls *.c' $ echo $lscc ls *.c $ lscc=`ls *.c` $ echo $lscc main.c prog.c Single quotes allow you to assign the written command to a variable. Entering the variable name preceded by the $ on the command line, will execute the command. $ lsf='ls -F' $ $lsf mydata / reports / letters $ Within a script you can use the echo command to output data and the read command to read input into variables. Within a script, the echo command will send data to the standard output. The read command reads in a value for a variable. It is used input a value for a variable. The read command litterally reads the next line in the standard input. You can combine the echo command with the read command to prompt to prompt the user to enter a value and then read that value into a variable. greetvar echo Please enter a greeting: read greeting echo "The greeting you entered was $greeting" $ ./greetvar Please enter a greeting: hi The greeting you entered was hi $ When dealing with user input, you must consider the possibility that the user may enter special characters. Any special characters in a linux command, whether in a script or not, will be evalutated unless quoted. If the value of a variable is a special character and the variable's value is referenced with a $, then the special character will be evaluated by the shell. However, placing the evaluated variable within quotes prevents any evaluation of special characters such as $. In the greetsvar script, $greeting was placed within a quoted string, preventing evaluation of any special characters. However, if $greeting is not quoted, then any special characters it contains will be evaluated. There are times when you want these characters evaluated. Suppose you want to retrieve the list of files beginning with characters the user enters. listfiles echo Please enter a file reference: read fref echo The files you requested are: $fref $ ./listfiles Please enter a file reference: *.c The files you requested are: calc.c lib.c main.c $ When you invoke a script, you can enter arguements on the command line after the script name. These arguements can then be referenced within the script using the $ and the number of its position on the command line. greetargs echo "The first argument is:$1" echo "The second argument is:$2" echo "The third argument is:$3" echo "The fourth argument is $4" $ ./greetargs Hello Hi Sup "How are you" The first argument is: Hello The second argument is: Hi The third argument is: Sup The fourth argument is: How are you $ A set fo special arguments allows you to reference different aspects of command line arguments. The $# argument contains the number of arguments entered on the command line. The $* references all arguments in the command line. The $@ also references all the arguments on the command line, but allows you to separately quote each one. The let command performs operations on arithmetic values. With let you can compare two values or perform arithmetic operations such as addition or multipliction. $ let 3*5 15 or $ let "res = 3 * 5" $ echo $res 15 $ Control Structures With the test command, you can compare integers, strings, and even perform logical operations. The command consists of the word test followed by the values being compared, separated by an option that specifies what kind of comparison is taking place. $ num=5 $ test $num -eq 10 $ echo $? 1 or you can use brackets: $ [ $num -eq 10 ] Do not confuse string comparisons and integer comparisons. To compare two strings for equality, you use =, to compare two integers, you use the option -eq. The if command if begins with the word if and is followed by a command whose exit condition will be evaluated. After the command, the word then goes on a line by itself. Any set of commands may then follow. The word fi ends the command. The else word allows an if structure to choose between two alternatives. ughelse echo Enter s to list file sizes, echo otherwise all file information is listed. echo -n "Please enter option:" read choice if ["$choice"=s] then ls -s else ls -l fi echo bye $ ./ughelse Enter s to list file sizes, otherwise all file information is listed. Please enter option: s total 2 1 monday 2 today $ The if structure is often used to check whether the user entered the appropriate number of arguments for a shell script. The # contains the number of arguments the user entered. Using $# in a test operation allows you to check whether the user entered the correct number of arguments. If an incorrect number of arguments has been entered, you may need to end the shell script. You can do this with the exit command, which ends the shell script and returns an exit condition. The elif structure stands for "else if". With elif, you cn choose between several alternatives. The first alternative is specified with the if structure, followed by other alternatives, each specified by its own elif structure. The alternative to the last elif structure is specified with an else. If the test for the first if structure fails, control will be passed to the next elif structure, and its test will be executed. If it fails, control is passed to the next elif and its test is checked. This continues until a test is true. Then that elif has its commands executed and control passes out of the if structure to the next command after the fi word. The case structure begins with the word case, an evaluation of a variable, and the word in. A set of patterns then follow. After all the listed patterns, the word esac ends the case command. case string in pattern) commands ;; pattern) commands ;; *) default commands ;; esac The while loop repeats commands. A while loop begins with the word while, and is followed by a command. The word do follows on the next line. The end of the loop is specified by the word done. myname again=yes while ["$again"=yes] do echo -n "Please enter your name:" read name echo "The name you entered is $name" echo -n "Do you wish to continue?" read again done echo bye $ ./myname Pleas enter your name: Lusta The name you entered is Lusta Do you wish to continue? yes Please enter your name: Jen The name you entered is Jen Do you wish to continue? no bye The for structure without a specified list is equivalent to the list $@. $@ is an argument variable whose value is the list of command line arguments. In the next issue, I will provide a chart of variables/commands/comparisons. I hope this helps you get started. Special thanks to ender for your help in this article. *smooch* ;) ~lusta *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* PECompact by Jeremy Collake (with attached download) PECompact is a utility that compresses Windows 9x/NT4/w2k executables, while leaving them completely functional. PECompact compresses the code, data, selected resources, and import/export table of a win32 executable and optimizes its structure. It then installs a symbiote which decompresses the executable at run-time without any noticeable speed difference. Load time can actually be improved in some cases because less data is required to be retrieved from the disk or network. Features: - Compresses Windows executables and DLLs significantly, while leaving them 100% functional. - Compresses code, data, import/export table, and selected resources. - Advanced section merging and resource data restructuring capabilities. - Trims, optimizes, and realigns PE structure. - Preserves shell icon and version information, or any other resources you chose to leave uncompressed. - Uses my own JCALG1 compression library, which offers decent compression speed, great compression ratio, and extremely rapid decompression. - Removes debug information and other optional directories from the executable prior to compression. - Sets new, correct checksum in PE header. - Compatible with all win32 operating systems (win95,win98,NT,w2k,etc). - Highly configurable and easy to use. - Shell extension support. - Written in 100% assembly language for maximum performance and minimum size. *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* A Brief Guide on Datapac by wsx h0h0h0 like I noticed that there isn't too much information on the Canadian x.25 packet switched network known as Datapac, so I decided to make a file myself. I've tried to make each explanation as easy to understand as possible for all the newcomers out there. I didn't use any neat ascii formatting so it looks pretty plain. On With Thee Show HEH! Datapac is a national public data communications network, anyone in Canada can access Datapac, and so can people using other PSN's (Packet Switched Networks). This service is offered through Bell and the Stentor Alliance. Think of Datapac as a long distance telephone network, but instead of voices transmitted data is. The service uses packet switching, meaning data is transferred in "packets" 256 bytes in size. The Datapac network is completely digital, and offers error checking to make sure data is sent the way it was meant to be. Datapac's alternate routing capability allows for data to be sent everytime without packetloss. Accessing Thee Almighty Datapac The majority of the people access Datapac through a phone line, but there are companies that require leased lines for fast response times. I'm feeling lazy now so I will explain in the next NOU on how to access this PSN. HEH! Legitamite Uses For Datapac Businesses in Canada have many practical and efficient uses for Datapac. I myself just found out recently that they verify credit cards and debit cards over this PSN network HEH! Here are the most common uses for Datapac: - personal banking services - file transfers - retail point-of-sales-networks - inventory control - reservations systems - credit verification - data collection - inquiry/response - order entry - e-mail - interactive communications I also noticed that the computer store Compucentre and Business Depot use Datapac to access a fileserver in Toronto that shows products in stock and their prices. Conclusions Although small this file gives you a basic knowledge on Datapac in future NOU issues I will go into deeper detail on this x.25 Packet Switched Network. For now seeya HEH! -wsx *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* DMS Switches by pbxphreak Hi :) here is some info for you on DMS Switches for all you switch ninjas out there :) DMS-10 Carrier Class Switching System: Low initial product cost and low operating costs make the DMS-10 a proven life cycle leader that provides the fastest return on investment of any switching system in its class. The DMS-10 delivers advanced features such as Meridian Digital Centrex, integrated Digital Subscriber Line (xDSL) services for internet access, Basic rate interface (BRI) and Primary Rate Interface (PRI) ISDN services, Advanced Intelligent Network (AIN) services and a wireless interface. Designed for small to meduim applications, the DMS-10 fits the need for competitive service providers requiring low-to-meduim line size voice and data networking. A single DMS-10 can provide access to 320 ISDN PRI links or more than 20,000 lines. As your market penetration grows, large cluster configurations can extend coverage to a wider area. For flexible service delivery to remote subscribers the DMS-10 supports the full portfolio of Nortel Networks remote access solutions, such as the Star Remote System, and the AccessNode and AccessNode Express. In addition, the DMS-10 also supports the TR303 generic interface which allow you to connect to non-Nortel remote devices. DMS-10 is a key element in Nortel Networks powerful unified networks solutions strategy that spans data and telephony. Unified networks enables you to take advantage of your existing revenue generating infrastructure while seamlessly adding data and internet optimized segments. This powerful union of the time-tested and the leading edge-built on the highly economical DMS-10 platform-puts you in an enviable competitive position. DMS-100/200 Local Switching System: The modular DMS-100 local switching system directly serves residential and business subscribers with leading edge communication solutions. Hundreds of local carriers around the world rely on this fully digital system to reliably deliver superior local exchange end office capabilities for serving areas, large metropolitan business districts, large corporations, and a variety of other applications. The same hardware and software components of the DMS-100 system can be used for a high capacity toll center with optional leading edge operator and directory services. This DMS-200 Access Tandem terminates trunks as a traffic concentrator between local exchanges. DMS-200 system options include a large tandem that supports as many as 112,000 trunks and the DMS-100/200 system, the first integrated Local Exchange/Toll Center solution. BENEFITS: - The DMS-100 system's modular hardware and software design offers impressive versatility so lines, trunks, and features can be added easily and cost-effectively. - This flexible solution can grow to over 135,000 lines and extend revenue generating services to remotes in outlying areas as much as 650 miles away. - With the industrys largest menu of service options, the DMS-100 system provides extensive residential and business services ranging from basic telephone service to megabit data access for all market segments. DMS-250: The DMS-250 SuperNode is a high capacity switching system designed to anchor the networks of interexchange carriers. Through the advanced DMS SuperNode processing architecture, state of the art hardware, optimized system software and maximum processing capacity, the DMS-250 provides high-speed message handling capacity to meet the most demanding voice and data communications needs of today's long distance users. The modular, scalable system architecture of the DMS-250 system allows network providers to add processing capacity, memory capacity, trunk capacity and services as they are needed. The DMS-250 can be configured to handle from 480 to 100,000 trunks depending on call configuration. Enhanced processors additonal switching matrices, peripherals, and trunk cards can be added without redesigning the system or interrupting service. DMS-300: The DMS-300 switching system processes worldwide telephone traffic for voice data and video between national and international networks. Offering a full suite of signaling capabilities, the DMS-300 enables public network carriers to expand service portfolios and establish operations as full-service providers of national and international communications. The DMS-300 is part of our proven family of DMS public network switching systems. DMS switching systems are used throughout the world by the leading public network carriers, who count on Nortel Networks products to provide the highest level of reliability. The DMS-300 architecture is designed to support the sustained levels of traffic over multiple busy hour peaks which are characteristic of international calling patterns. The DMS-300 incorporates a redundant architecture design to provide non-blocking network features. BENEFITS: - The platform to build the sustainable competitive advantage essential for profitable growth. - The capability to increase revenue streams through value added services - The power to control costs through precise and timely management tools - The ability to position your company as a total telecommunications provider to your customers. DMS-300/250 - Combined Long Distance and International Switch: Designed as an international gateway switch, the DMS-300/250 system processes worldwide telephony traffic between national and international networks. This large-capacity digital switching system is capable of supporting up to 70,000 trunks on a highly reliable, robust and versatile gateway platform. Features: Providers can drive down the costs and expand the revenue opportunities of their networks through a combined DMS-300/250 system. With a single software load on the same DMS hardware platform, providers can deliver the long distance features of the DMS-250 switch along with the gateway features of the DMS-300 - sharing common DMS Maintenance and Administration Position (MAP) interfaces and tables. BENEFITS: - Reduced costs through sharing of switching equipment - Reduced operations, administration, maintenance, and provisioning (OAM&P) expenses through equipment and training efficiencies. - Additional revenues with the combined, expanded feature set. - Modular, scalable architecture meets a wide range of trunk size requirements. - Flexibility in service development and differentiation. - Standards-compliant platform interworks with network switching and transmission equipment, including different versions of ISDN, supplied by a variety of vendors. DMS-500 - Local and Long Distance Switch: The DMS-500 Local and Long Distance Switch is a DMS SuperNode application that combines local services of the DMS-100 switch, toll and operator services of the DMS-100/200 Traffic Operator Position System (TOPS), and long distance services of the DMS-250 switch. In addition to the trunk connections supported by the DMS-250, the DMS-500 delivers all line types currently supported by the DMS-100 system for residential and business applications. The DMS-500 is a total solution with one of the industry's most application rich portfolios of carrier services loaded with major capabilities that are market-ready today. These include local services, long distance services, call center services, operator services, and data services. And, as part of the Nortel Networks Succession network plan, the DMS-500 is uniquely positioned for the evolution to data-centric communications. BENEFITS: - Ability to quickly generate new revenue through new services, new markets and new end-to-end telephony offerings - Fully functional local/long distance switch enabling revenues to be generated on both sides of the switching business - Maximum market flexibility for service providers - selling or reselling long distance services. - operating with or without operator services. - offering business and residential line services. - Cost and operational efficiencies gained in combining DMS-100/200 and DMS-250 services: - reducing front-end hardware requirements - reducing office site and environmental requirements - centralizing operations, administration, maintenance, and provisioning - Expanded pre and post sales service support to build a network, train the staff, and operate the network, if needed. - Multi-vendor network operability ensured with the DMS-500 Supernode system's open architecture. Thats all folks. Cya Next time :) *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* Quote of the Issue (sorry not as good as last time) Geez I can't wait to get my own Free ISP? I mean !!!!!! that way I can't be banned cause of my cheap ISP now! *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* The important thing is this: to be able at any moment to sacrifice what we are for what we could become. ~Charles DuBois *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* hello.c DOCUMENTED by ght0child (ghetto-child) This is hello.c, to introduce you to the wonderful world of C programming. I hope this enlightens you and stuff... **************** * hullo.c * * by ght0child * **************** #include void main() { printf("Hello World!@#$\n"); } **this is what it sounds like in my head** You have to include the stdio thing... to print stuff There has to be a function called main, in every C prog.... if it's not all return 0; then its void... trust me... printf is the thingy that prints text and crap... if you feel adventurous add a \a ... { these } things contain stuff.... Now you can code hello.c Move on to bigger and better things like hello.c with two functions (which is about the extent of my c skill) *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* Introduction to Spread Spectrum Technology Phuzzy L0gik --------------------------------------------------------- Just in case certain people feel the need to freak out: This article was written solely by me, myself and I and does not represent any work done for, or on behalf of any organization company or institution that I am or have ever been affiliated with and should not be interpreted as such. Oh, also since this was put together under very tight time constraints I cannot guarantee that everything is verifiably correct (though I'm pretty sure I got all my facts straight). --------------------------------------------------------- Spread spectrum technology was developed during WWII to provide a more secure modulation technique for military radio communications. Conventional forms of radio communication were (and still are) highly susceptible to interference, detection, interception and jamming. This is because conventional radio signals contain all its power in a very small portion of the available frequency bandwidth. These signals are referred to as 'narrow band' signals. Therefore any signals on or near the narrow band frequency can cause interference and/or jamming of the transmission. Out in the field this could spell disaster. A new more secure modulation technique was necessary to overcome this fault. Spread spectrum technology overcomes this by spreading a narrow band signal over a much larger portion of the frequency than necessary. Essentially, you are hiding the signal inside a bunch of noise. The main idea is that if you increase the transmission bandwidth you increase the probability that the received information will be correct. This is referred to as 'process gain'. For those interested, this result can be derived mathematically by analyzing Shannon's equation for channel capacity; as follows: capacity = bandwidth log2 (1 + Signal Power/Interference Power) Looking at this equation you can clearly see that as the bandwidth increases, the value of Signal/Interference power decreases. This is exactly what makes spread spectrum modulation much more resistant to interference and considerably difficult to detect. On top of the obvious performance advantages, spread spectrum technology utilizes code division as a method of authentication. Code division is a process in which a signal is given a mathematical code (geek translation: mapping the dimensions of vector space over a finite field into a vector space of higher dimension :P ) which is constantly changing over time. Even if a transmission were to be intercepted, the information contained within is useless unless each code for every given point in time is known. Reassembly is virtually impossible, making this a very secure and extensible modulation technique. REFERENCES www.ece.orst.edu/~rodrigfr/cdma/cdma.html *.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*:*.*.*:*.*:*.*:*.*:*.*:*.*:* Well, that's it for this issue... Next issue will contain second part to MYSQL, also second part to Introduction to Perl. Thanks for your intrest, and special thanks to everyone that participated in the creation of, and that supported this zine. b4b0, 9x, alpha, #hackphreak and #2600... eye loff yew ;) _ " _ _ " _ (_\|/_) (_\|/_) _ " _ _ " _ (/|\) (/|\) (_\|/_) " _ (_\|/_) (/|\)_\|/_) (/|\) (/|\)