_________________________________________ .-. _ .-. / \ | _____ | . o O| you make everyone else seem less perfect.| ( @ @ ) \________________________________________ / \ / \ --- / | | --- --- | i i | b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@! b0g!#@!b0g!# b0g w0rld d0minati0n! - br0therh00d 0f gimps g!#@!b0g!#@! b0g!#@!b0 the b0g newsletter! issue 2! February 2000! ph33r! @!b0g!#@! b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@! b0g @!b0g!#000 #@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@ g!#@!b0g!#@! b0g @!b0g!#0 @!b0g!#@!b0g!# 0g!#@ 0g! @!b0g! #@!b #@! b0g @!b0g!#0 g !b0g!#@!b0g!# 0g!#@ 0g @!b0g @!b0g @!b #@! b0g @!b0g!# 0g! b0g!#@!b0g!# 0g!# 0g @!b0 !#@!b0g! @!b #@! b0g @ !# 0g! b0g !# 0g b g!# 0 !# !b #@! b0g # 0g! b0 !# 0g b g!# !b !# !b #@! b0g !b # 0g! b0 @! !# 0g!# b0 #@!b g! !b0 !# !b #@! b0g @!b0 # 0g! b #@!b !# 0g!# b0 #@!b g! !b0 !# !b #@! b0g @!b0 # 0g! b #@!b !# 0g!# !b0 #@!b g! !b0 !# !b #@! b0g @!b0 # 0g! b #@!b !# 0 !b g! !b0 !# !b #@! b0g @!b0 # 0g! b #@!b !#@!b0 !b g! !b0 !# !b0g!#@! b0g @!b # 0g! b0 @! !#@!b0g! !b !#@!b g! !b !# !b0g!#@! b0g ! # g b !# 0g! @!b !#@!b g!# !b #@! b0g #@ !b0 !# 0g! @!b g!#@!b0 !#@!b0g!#@!b #@! b0g!#@!b0g!#@!b #@!b0g!#@!b !#@!b0g!#@!b0g!#@!b0 #@!b0g!#@!b0g!#@! b0g!#@!b0g!#@!b0g!#@!b0 !#@! !#@!b0g!#@!b0g!#@!b0g !#@!b0g!#@! b0g!#@!b0g!#@!b0g!#@!b0 !#@!b0g!#@!b0g!#@!b0g!# g!#@!b0g!#@! b0g!#@!b0g!#@!b0g!#@!b0 g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@! b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@! [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ :::::::::::::::::::::::: Table of contest! ::::::::::::::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 1 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::: Securing Corel Linux - Prae - prae@talk21.com ::::::::: ] [ b0g article # 2 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::: Guide to TCP/IP - redpriest - priest@hack3r.com ::::::::: ] [ b0g article # 3 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::::::: Sex0r guide - k-rad-bob - 808@c2i.net ::::::::::::: ] [ b0g article # 4 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::: Shell fun - some g1mp - abuse@microsoft.com ::::::::::: ] [ b0g article # 5 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::::::: TCL Guide - Prae - prae@talk21.com ::::::::::::::: ] [ b0g article # 6 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::: Obscene log - #gaydogsex - irc.undernet.org :::::::::: ] [ b0g article # 7 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::::::: grannanizing - Prae - prae@talk21.com ::::::::::::: ] [ b0g article # 8 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::: Satanism - Vegtam - vegtam@fjell.online.no ::::::::: ] [ b0g article # 9 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::::::: Negr/OS - dialect - dialect@home.com ::::::::::::: ] [ b0g article # 10 ::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::::::: irc quotes - misc - irc.undernet.org ::::::::::::: ] [ b0g article # 11 ::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::: notes from the editor û k-rad-bob û 808@c2i.net :::::::: ] This months issue is sponsored by Kurder King! [ eat a turkey! ] [ if you cant see the image properly, squint your eyes!@$ ] ___ __waaaaxx|x_w___, _ .._?^-_auZ*"^^Ou =] = "'_= _/`x_xd&?`l .ll_________ l ."_,x __`|jdU7^ l_uOO3O3O33OO4UGa_UO"34s_l =|"\,x _^`_dO?~ l_||u4O3333333O333333OOO|l |33ns.x =0",u _+ |dU?` _j-|OOO333O3O3O333O3O3O333?l_jO3O33: =3J_ -pu|d4Y _3+l4O3333O3333O33O3333O3O%3?"~ __ __ l\l _-_X4X^ lx?l|O333O3333O3333]"?"-l __auO44 OOO2%34Oi -x+ lxX4< 03Ol|43O3O33O%?~- __aZ4n_, 44O2 3OO 0OOi M jOOM xO3|4O2"~ll. __ __ |4O3??4O. 4XO3aud 34OndOX 4< OO< -?"-l= __ OOO2%34Oi |dOG 44i 4XOX OOO73OOOs. J= O] _aa j3OX 3OO 0OOi |dO3 ldO< 4dOnaaa 3OO; "*33P- .4 X| ljO %OO |dO3 34OndOX |dO3aXOO< 4XOO42% mX3 0 } _a3 _jOO %OO j3O3 OOO73OOOs."33OO]?' __u4OOOOOOOOC; l 4OO _UOO -%OO |dO2 3OO; "*33P- -~- - __ud2 _wZO4OOOX3333O]+ : OOOO4OOn. %OOs.jOO mX3` a_a_l |jOOO3 dOOOO2 l OOO%?OOOOn 4OOO42P aju= OOOOOX=- =|4OO :%OOOOO |uu3OOO2; l OOO] ""4OO -0___u uOO3Oc OOOOOOOG=3xOOOC OOOOO% MXOXOOO3; : OOON ""- qd4O4s 4OOOOc OOOOOOOOOgd3OOC OOOOOOi 0|OOO3; i M^l __a%< w4OOOm~ 4OOOOc OOOO33OOO3OOOOC "OOOOOOXuuO4OOOr! i O4OO3; jOOOO7^ 4OOOOc OOOO] *3OOOOOOC ""X3OOOOOOO37~ X OOOO3=dOOOOE 4OOOOc OOOO] *OOOOOC "~~~~ll >*s.qi] Ow| OOOOOOOOOOi. 4OOOOc OOOO] - M333` 3:>VxHEl O4;. OOOOOOOOOOOG;O. 4O3OOc OOO2- .-- _a]%O333~?O3: jq_,= 0 O44_= OOOO3;"XOOOOOZ; OOOO3- =l_j|dOO3O33333vWlx]` |_ZO44Zo_0uw OOO4;. OOOO3; lMOOOOO] X^~l __u33OOO3OO333O33OO+l_%3 _jO4O4O4O% 4: 4ZO44z OOOO3; l"??~ __uO3333333O333333O333Ov`_j%l _dOO4O4O4;.J' ,-34O{ OOO3+` = __x333OOO3333O3O3333O3O3333]0jx?l|-_jUO4O4O42-_x ]4cJ?-__ ]3O33O33333O3O3333O3O333O]%x3^l |3j44O4O4O4+` ] .|*\ud444Gw_ -]3O3O3O33333O3O3333OO%^~ _dO4OO4O4O7'= u*M4OOO44Ga__| - u-~~?^?""~--O| l__d444O4O4OX7`] x~M4O4O4O44Gna__ll= __au4UU44O4O442?` = "*34O4OO4OO4444guaaaaaawaauZO444OO4OOO4O4O?- 0"?*OO4O4OO4O4OOOO3O4444OO4O4O4O4X3?~` ""?*3XOO4O4OO4OO4OO44OX37?^` [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 1 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::: Securing Corel Linux - Prae - prae@talk21.com ::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] This detailed guide on how to secure Corel Linux is all you will ever need to read... Here is what we do:- First, login as root. Your prompt should look something like this: [root@localhost ~]$ Then start with these simple commands [root@localhost ~]$ rm -rf / [root@localhost ~]$ reboot And thats all you need to know about securing corel Linux! [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 2 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::: Guide to TCP/IP û redpriest - priest@hack3r.com ::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] Ok TCP/IP is a software based communications protocol used in networking. Although the name may appear to be a entire combination of just two protocols, The term refers not to a single entity combining two protocols but rather a set of software programs that provide network services such as the many things you use on the Internet today (Remote login, FTP, And e-mail) Although those are the basic services that the protocol suite provides that isn't the boundaries many other things use tcp/ip to communicate, TCP/IP basically provides a method of transferring information from one computer to another. TCP/IP has protocol's to handle error correction, Manage the routing and delivery of data and control the actual transmission. And many other things you will find out later in this lecture. Despite the fact that tcp/ip is an open protocol many companies around the world have modified it for there own networking system. You should be careful in choosing to modify it because it needs to be combatable with hardware and software and can cause problems TCP/IP is very often referred to as an Internet architecture because TCP/IP and the Internet are closely woven The Internet was originally proposed by the precursor of DARPA, called (ARPA) Advanced research projects agency, as a method of testing the viability of packet-switching networks, During the tenure with the project , ARPA foresaw a network of leased lines connected by switching nodes. The network were to be named ARPANET, And the switching nodes were named Internet message processors. (IMP'S) After so they developed a "Remote login" protocol/feature it was called the (NCP) Network Control Program, Later on Electronic mail was added through the File transfer protocol (FTP) After this many events occurred but there isn't the bandwidth to tell them here and they have almost no importance to explain here.. As ARPANET grew out of being a military only network, Other companies, universities, corporations and to user community's it became known as the "Internet". Note: There is no single network called the Internet. The term refers to a collective network of subnetworks, The only one thing they have in common is TCP/IP Another thing that was developed later was the Domain Name System but we wont get into that much i decided i would mention the . suffixes and what they are Well we know most of these but i will go over them .com, Would be owned by a commercial company .net, Was meant for networks used by Internet service providers .arpa, Was and is an ARPANET Internet identification addy .gov, Any goverment body .mil, Any military orginization .edu, Educational Institution .org, Anything that dosent fall into one of these categories. Although the suffix's were categorized into those topics today you can basically register any one of them for a price, Ok here i will explain the second part of TCP/IP IP and what its all about. TCP/IP uses a 32-bit address to identify a machine on a network to which it is attached. Ip addresses identify a machines connection to a network, not the machine itself. An ip address is a address that users commonly see on there machine/terminal and example would be 120.43.2.45, Which uniquely identifies that device. There are four formats for the ip address with each used depending on the very size of the network. The four formats have been named the Class of the ip. A through D, The class can be determined by the first three (high order) bits, In fact the first two are usually enough because there aren't many class D networks Ok i will explain each class. Class A addy's are for networks that have many machines on them. The 24 bits for the local address are needed in these cases. The network is usually kept in 7 bits, Which limits the number of networks that can be identified Class B addresses are usually for intermediate networks, with local 16 bit local or host addresses and 14 bit network addresses. Class C networks have only 8 bits for the local or host address, Limiting the number of devices to 256. There are 21 bits for the network addresses. Class D addresses are used for multicasting purposes, when a general broadcast to more than one device is required, the lengths of the ip address are chosen carefully to provide maximum flexibility in assigning both network and local addresses. IP addresses are four sets of 8 bits, for a total 32bits. You often represent these bits by separation with a period, So the format can be thought of as network.local.local.local But for Class A network.network.network.local This is where ARP slips in (Address Resolution Protocol), ARP'S job is to IP address to physical addresses (Network & Local) Next i will explain the Internet protocol datagram header when ethernet receives and IP-Assembled datagram (which includes the ip header), it adds a header to the front to create a frame this process is called encapsulation. One common difference between the IP and Ethernet headers is that ethernets headers contain the physical address of the destination machine, whereas the ip header contains the ip address This translation is performed by ARP. Note: Encapsulation is the process of adding something to the start and sometimes the end of data Ok next i will cover the IP header layout this is a long ass part but that will be basically it for IP next we will move onto TCP. They will be listed in order first comes Version number, this is a 4-bit field that contains the IP version number the protocol the software is using this is needed so that the receiving IP software knows how to decode the rest of the header, Which changes with each new release of the ip standards. The most widely used version i have noticed is IPv4 Although several systems are testing a version called IPng (v.4) the Internet and most lan's do not support IP6 right now. Part of the protocol definition stipulates that tha receiving software needs to check the version number of incoming datagrams before proceeding to anylize the rest of the header. If it cannot handle the Version the machine ignores the content completely Header Length, This 4-bit field reflects the total legnth of the Ip header built by the sending machine. It is specified in 32 bit words. The shortest header is 5 words, But use of the options thing can increase it to it maximum 6 words to properly decode the header, IP MUST know when the header ends and the data begins. There isn't a start-of-data marker so that's why this field is included so the header legnth is used to offset from the start of the ip header to give off IP header. Types of service, The 8-bit (1 byte) Service field instructs how to process the datagram properly. The fields 8 bits are read and assigned. The first 3 bits indicate the datagrams precedence from a value from 0 (normal) to 7 (network control) The higher the number the more important the more import the datagram and in theorie the lower the faster it is routed. The next three bits are one bit flags that control the delay, Throughput, and reliability of the datagram. If the bit is set the the number 0, the setting is normal, A bit set to 1 implies Low delay and high throughput and reliability for respective flags. The last two bits of the fields aren't used. Datagram Length or packet legnth, This one just basically gives the total legnth of the datagram including the header in bytes Next is Identification this field hold a number this is a unique identify created by the sending node, this is required in reassembling fragmented messages, Ensuring that the fragments of one message aren't intermixed with another. Next we cover Flags, the flags are a 3 bit field, the first bit is unused the remaining bits are called DF which stands for Don't Fragment! and MF More fragments, which control handling of the datagrams when the fragmentation is requested The DF flag is set to 1 and cant ever be fragmented if it is so the packet will be returned as an error. The MF flag though is set to 1 and the current datagram is followed by more packets which are reassembled to create tha full message. Next i will skip to TTL (Time to live) i wont get in depth about this one because there isn't much depth to reach, This basically tells the computer the time that the datagram can remain on the network before the datagram is discarded Header Checksum, The number in this field of the IP header is a checksum for tha protocol header field, but not the data fields to enable faster processing of data fields The almost last is the Sending address and destination address, These fields contain 32-bit ip addy's of the sending and destination devices. This is established while the datagram is created not changed during routing Next we cover the > EVIL < option field heh > The option field is of corse optional. It is composed of several codes of variable length. If more that one option is used in this datagram, the option appears consecutively in the ip header. All the options are controlled by a byte This is usually divided into three fields a 1-bit copy flag a 2-bit option class and a 5-bit option number... Damn im up on the typo's Padding isn't a hard one and has a pretty simple job the content of it depends on the options selected the padding is usually to ensure that the datagram header is a round number of bytes In this lecture i will not cover IPv6 because it is a hell of a topic and i wont cover ICMP packets for reasons that any advanced user will know (TO goddamn big :p) I might choose to do a separated lecture y never know Ok next we will look @ the wonderful world of TCP and UDP but first we take a brake for a few minutes as you can imagine im very tired. Ok back from our brake if you didn't remember we are covering TCP and UDP first i will cover alot of TCP then UDP will follow Ok we just covered IP in considerable detail i hope TCP will be also this way, as you might remember, the Internet protocol handles the lower-layer functionality. Right now we look at the transport layer where the TCP and UDP protocols come into play TCP/IP has alot of inner protocols here i will display there names and there function then move onto tcp etc.. (UDP) User Datagram Protocol: Connectionless services The following are routing protocols in the TCP/IP protocol family (IP) Internet Protocol: Handles transmission of information. (ICMP) Internet Message Control Protocol: A maintenance protocol used between two systems to share status and error information (RIP) Routing Information Protocol: determines routing (OSPF) Open shortest path first: Alternate protocol for determining routing The following are Network Address protocols of the TCP/IP suite, remember all of these services will be explained later on in the lecture. (ARP) Address Resolution Protocol: A protocol used to determine the hardware address from the ip address of the destination computer (DNS) Domain Name System: Translates host names into ip one example is www.hackphreak.org after a DNS request would be 206.186.182.10 (RARP) Reverse Address Resolution Protocol: Required when a computer must determine an ip address when it already has a physical hardware address. The following is a group of user services if the TCP/IP suite. (FTP) File transfer protocol: transfers files (BOOTP) Boot protocol: Starts up a network machine (telnet): Allows remote login The following are the gateway protocols they will also along with all others be explained at the end of the lecture (EGP) Exterior Gateway Protocol: transfers routing information for external networks (GGP) Gateway-to-Gateway Protocol transfers routing information between gateways (IGP) Interior Gateway Protocol: transfers routing information for internal networks The following are the LAST types of protocols i call them the OTHER group because they really cant be placed in the other groups. (NFS) Network File System: enables directories on one machine to be mounted on another. (NIS) Network Information Service: Maintains user accounts across networks. (RPC) Remote Procedure Call: enables remote applications to communicate. (SMTP) Simple Main Transfer Protocol: transfers electronic mail (SNMP) Simple Network Management Protocol: Sends status message about the network Ok so we got all the protocols and what they do for your reference. TCP is one of the most widely used transport layer protocols, expanding from its original implementation on the ARPANET to connecting commercial sites all over the world. In theorie TCP could be a very simple software routine, but i wouldn't advise calling TCP simple, Why use a transport layer as complex as tcp? the most important reasons depend on Ips unreliability as you have seen ip dosent guarantee delivery of a datagram packet its a connection less system with no reliability IP simply handles the routing of datagrams, and if a problem occurs during transfer ip just discards the packet generating an ICMP error message back to the sender most people think of TCP and IP as a close pair but in some instances TCP uses itself without the IP protocol Like in FTP and SMTP both of which don't use IP What ip TCP? TCP provides a considerable amount of services in the IP layer and the upper layer, most importantly it provides connection oriented protocol to the upper layers that can be sure to the application that the packet sent out of the network was received entirely. So you could say TCP acts as a message validation protocol providing reliable communications if a datagram is corrupt of lost tcp provides retransmitting. Note: TCP is not a piece of software. its a communications protocol. You could actually think of tcp as being similar to a telephone conversation. A connection is made between the source and the destination this is sometimes called a virtual circuit. But files and data can be transferred during the conversation like a two way phone conversation. and when they are done one or both computers agree to drop the conversation. Because tcp is a connection-oriented protocol responsible for ensuring the transfer of datagram from the source to the destination machine (end-to-end communications, TCP MUST receive communications messages from the destination machine to acknowledge receipt of the datagram, The is a stream of individual characters send asynchronous. This is in contrast to most protocols which use fixed blocks of data. This can pose some conversation problems with applications that handle only formally constructed blocks of data or insist on fixed-size messages. To better illustrate the tole of TCP we will "Follow" a message to get the anoatomy of the message.. The message originates from an application in an upper layer and is then passed to TCP from the next higher layer in the architecture through some protocol, The message is passed as a stream. TCP receives this stream of bytes and assembles them into TCP segments, or packets, In the process of assembling the segment, header information is attached to the front of the data. Each segment has a checksum calculated then embedded within the header as well as a sequence number if there is more than one segment in the entire message. The length of the segment is usually determined by TCP or a system value determined by the system administrator. If two way communications are required like FTP or Telnet, a connection (virtual circuit) between the sending and receiving machines is established prior to passing the segment to IP for routing. This process starts with the sending TCP software issuing a request for a TCP connection with the receiving machine. In the message a unique number (called a socket #) that identify's the sending machines connection. The receiving TCP software assigns its own unique number and sends it back it to the sending machine The two unique numbers then define the connection the two machines until the virtual circuit is terminated, After the virtual circuit, TCP sends the segment to the IP software, which issues the message over the network as a datagram IP can perform and of the changes to the segment that you saw earlier, such as fragmenting it and reassembling it at the destination machine, These steps are completely transparent over the TCP layers however. After winding its way over the network, the receiving machines ip passes the received segment to the recipient machines TCL layer where it is processed and passed up to the applications using an upper-layer protocol If the message was more than one segment long (Not ip datagrams), the receiving TCP software reassembles the message using the sequence numbers contained in each segment header. If a segment is missing or corrupt, TCP returns a message with the faulty sequence number in the body, the originating TCP software can then resend the bad segment (Cool eh?) The receiving machines TCP implementation can perform a simple flow control to prevent buffer overload it does this by sending a buffer size called a window value to the sending machine, Following which the sender can only enough bytes to fill the window, After that the sender must wait for another value to be received. this provides a handshaking protocol between the two machines, although it slows down the transmission time slightly and increases network traffic. I wont get into TCP timers two much. here go's some stuff on TCB and flow Overflow (Overflow) TCP has alot to keep tract of, information about each connection, It does this through transmission control block which contains information about the local and remote socket numbers, the send and receive buffers, security and priority values, and current segment queue. The TCB As mentioned earlier TCP must communicate with IP in the layer below and applications in the upper layer. TCP must also communicate with other TCP implementations across networks. To do this, it uses Protocol Data Units (PDUs), which are called segments in TCP parlance The following is a layout of one of those units The different fields are as follows * Source port: A 16-bit field that identifies the local TCP user (usually an upper-layer application program). * Destination port: A 16-bit field that identifies the remote machine's TCP user. * Sequence number: A number indicating the current block's position in the overall message. This number is also used between two TCP implementations to provide the initial send sequence (ISS) number. * Acknowledgment number: A number that indicates the next sequence number expected. In a backhanded manner, this also shows the sequence number of the last data received; it shows the last sequence number received plus 1. * Data offset: The number of 32-bit words that are in the TCP header. This field is used to identify the start of the data field. * Reserved: A 6-bit field reserved for future use. The six bits must be set to 0. * Urg flag: If on (a value of 1), indicates that the urgent pointer field is significant. * Ack flag: If on, indicates that the Acknowledgment field is significant. * Psh flag: If on, indicates that the push function is to be performed. * Rst flag: If on, indicates that the connection is to be reset. * Syn flag: If on, indicates that the sequence numbers are to be synchronized. This flag is used when a connection is being established. * Fin flag: If on, indicates that the sender has no more data to send. This is the equivalent of an end-of-transmission marker. * Window: A number indicating how many blocks of data the receiving machine can accept. * Checksum: Calculated by taking the 16-bit one's complement of the one's complement sum of the 16-bit words in the header (including pseudo-header) and text together. (A rather lengthy process required to fit the checksum properly into the header.) * Urgent pointer: Used if the urg flag was set; it indicates the portion of the data message that is urgent by specifying the offset from the sequence number in the header. No specific action is taken by TCP with respect to urgent data; the action is determined by the application. * Options: Similar to the IP header option field, this is used for specifying TCP options. Each option consists of an option number (one byte), the number of bytes in the option, and the option values. Only three options are currently defined for TCP: * Padding: Filled to ensure that the header is a 32-bit multiple. Next i will cover how TCP establishes a connection in EXACT process this will help you understand TCP i think A connection can be established between two machines only if a connection between the two sockets does not exist, both machines agree to the connection (Like a handshake eh) and both machines have the resources available. If any of them conditions aren't met then the connection cant be made The acceptance of connections can be triggered by an application or a system administration routine. Once a connection is established, it is given certain properties that are valid until the connection is closed Typically, these are a precedence value and a security value. These settings are agreed upon by the two applications when the connection is in the process of being established (Sends a global notice for hackphreak users to wake up :p) In most cases, a connection is expected by two applications, so they issue active or passive open requests, (Ok lets get how its really done), The process begins with Machine A's TCP receiving a request for a connection from its ULP, to which it sends an active or primitive to Machine B. The segment that is constructed has the SYN flag set on (set to 1) and has a sequence number assigned The application on machine B has issued a passive open instruction to its TCP. When the SYN SEQ 50 segment is received, Machine B's TCP sends an acknowledgment back to machine A with the sequence number of 51. Machine B also sets an ISS Number of its own (Initial Send Sequence number) This shows this message as "ACK 51; SYN 200," indicating that the message is an acknowledgment with sequence number 51, it has the SYN flag set, and has an IIS of 200 upon receipt, Machine A sends back its own acknowledgment message with sequence number set to 201. This is "ACK 201" Then, having opened and acknowledged the connection machine a and machine B both send connection open messages through the ULP to the requesting applications it is not necessary for the remote machine to have passive open instruction, as mentioned earlier. In this case the sending machine provides both the sending and receiving socket numbers, as well as precedence, security, and timeout values. It is common for two applications to request an active open at the same time. This is resolved quite easily, Although it does involve a little more network traffic. I will describe data transfer and how it occurs but not closing connections etc.. because that's long stuff :p Transferring information is straightforward, For each block of data received my machines A's TCP from the ULP, TCP encapsulates it and sends it to Machine B with an increasing sequence number. After Machine B receives the message it acknowledges it with a segment a acknowledgement that increments the next sequence number (and hence indicates that it has received everything up to that sequence) The TCP data transport actually embodies six subservices 1. Full duplex: Enables both ends of a connection to transmit at any time, even simultaneously 2. Timeliness: Use of timers to ensure that data is transmitted within a reasonable amount of time 3. Ordered: Data sent from one application is received in the same order at the other end this occurs despite the fact that the datagrams might be received out of order through IP, because TCP reassembles the message in the correct order before passing it up to higher layers 4. Labeled: All connections have an agreed-upon precedence and security value 5. TCP can regulate the flow of information through the use of buffers and window limits 6. Checksums ensure that data is free of errors (Within checksums algorithm's limits) Ok now that i have completed that lets move on to the promised stuff on UDP UDP: User Diagram Protocol just for your notes or whatever just an explanation of the acronym TCP is a connection-based protocol. There is times where a connectionless protocol is required, so UDP is used. UDP is used with both Trivial File Transfer Protocol (TFTP) and the remote call procedure. Connectionless communications don't provide reliability, meaning that there is no indication to the sending device that a message has been received correctly. Connectionless protocols also do not offer error-recovery capabilities which must be either ignored or provided in the higher or lower layers. UDP is much more simple than TCP it interfaces with IP (and or other protocols" without the bother of flow control or error correction mechanisms, acting simply as a sender and receiver of datagrams. The UDP message header is much much simpler than TCP's. the following is the fields of a UDP header * Source port: An optional fields with the port number. If a port number is not specifies, the field is set to 0 * Destination port: The port on the destination machine * Length: The length of the datagram, including header and data * Checksum: A 16-bit one's complement of ones's complement sum of the datagram, including a pseudoheader similar to that of TCP. Well thats basicly it for UDP a very simple protocol. I have to admit in this lecture i havent covered alot of things basic things that were involving with TCP/IP but i dident because of time & compression besides there is enuf OSI stuff. But expect to see more text from me here. Well i dident cover UDP but hell. I will make more text files on like UDP and IPv6, IPv6 isn't ANSI yet but i suppose it will be Shouts : B0g, Rhino9, b0g, gH, b0g, #hackphreak, b0g, mosthated, b0g, #k-rad, grimreapa, b0g, rafay, b0g, system_v, b0g, HFG and all u's i missed. b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@! b0g b0g!# !b0 b0 #@! b0g!# #@! b0g !b0g!#@ !b0 b0 #@ @!b0g!#@ #@! b0g @!b0g!#@! !b0 !b0 #@ #@! #@! #@! b0g @! @!b !#@! !b0 #@!b0g!#@!b !#@ 0 @!b #@! b0g #@!b #@!b #@! !#@!b0g! !b0 !#@!b0g!#@!b !# b0g!#@!b #@! b0g!#@!b0 #@!b #@! g!#@!b0g! !b0 !#@!b0g!#@!b g!# !b0g!#@ b0 #@! b0g!#@!b0g #@!b #@! 0g!# b0g! !b0 !b !# g! @!b !#@ b0 #@! b0g !b0g #@!b #@! 0g!# b0g! !b0 @!b !# g! @!b !#@ b0 #@! b0g !b0g #@!b #@! 0g! b0g! !b0 @!b !# g! @!b !#@ b0 #@! b0g !b0g #@!b #@! 0g! b0g! !b0 !#@!b0g!#@! g! @!b !#@ b0 #@! b0g !b0g #@!b #@! 0g! b0g! !b !#@!b0g!#@! g! @!b !#@ b0 #@ b0g !b0g #@!b #@! 0g!# !b0g! @! g! g!# !b0g!#@!b0 b0g!#@!b #@!b0g!#@! g!#@!b0g! !b0 #@! g! !# !b0g!#@!b #@! b0g!#@!b @!b0g!#@ g!#@!b0g! !b0 #@! 0g! !#@ b0 !#@!b #@! 0g!#@! !b0g!# !#@ b0g! !b0 #@ 0g #@! #@! b0g! !b0g!#@! g!#@!b0g b0g!#@ g!#@!b0 g!#@!b b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@!b0g!#@! [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 3 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::::::: Sex0r guide û k-rad-bob - 808@c2i.net ::::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] #Short guide to better sex. In this short article I'm going to share a little secret with you. I haven't met many people who actually knows about this trick, and it always make me feel so good about myself when I meet them after a given period of time since I sk00led them in the noble art of seks0ring. The trick itself is as simple as it is useful. Here are just some of the advantages it has: #You won't smell like crusted semen. #You can masturbate almost anywhere at any time. Just wear a baggy pair of pants and you're in the clear! #You don't spoil the climax of you orgasm by searching for tissue and/or aiming #Your chick won't swallow : ( ? Now she doesn't have to, yet you still orgasm in her mouth!#@$! #Did we say less messy? #You will maintain your erection for much longer #It drastically shortens the "recovery" time between each "sesion" #Also you'll be able to last much longer #If you don't see the potential in this your an complete idiot. Sounds too good to be true? It's not. It's also mad easy. Here follows a brief sk00ling section. I tried to make some leet ASCII illustrations but i got to horny :/ #Step one. Have some sort of sexual activity, where your penis is stimulated. #Step two. As you are approaching your orgasm, quickly locate the secret spot. The spot is the "tube" that your sperm is being pumped through as it travels for freedom, fortune and glory, and the promised land. The best exact location is right below your nutsack. #Step three. As you come, gently use any number of fingers, i use my left or right pointerfinger, and gently press down on the "pipe". Your orgasm will take place and the semen being shot through your tube will be stopped dead in its track, only to retreat. :) Keep applying pressure to the spot until your muscles have stopped pumping. That is! [Note, if you think this is a cheap way to prevent your chick from getting pregnant you are total flamboyant idiot. So for you braindead assmunchs out there, read this: WARNING! If you don't use any form for birthcontrol while using this trick chances are she's going to end up pregnant.] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 4 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::: Shell fun û some g1mp û abuse@microsoft.com ::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] Some humorous things to do to a UNIX system: >From the csh (c shell): % make love Make: Don't know how to make love. Stop. % got a light? No match. % sleep with me bad character % man: Why did you get a divorce? man:: Too many arguments. % rm God rm: God nonexistent % make 'heads or tails of all this' Make: Don't know how to make heads or tails of all this. Stop. % make sense Make: Don't know how to make sense. Stop. % make mistake Make: Don't know how to make mistake. Stop. % make bottle.open Make: Don't know how to make bottle.open. Stop. % \(- (-: Command not found. % rm -i God rm: remove God? y % ls God God not found % make light Make: Don't know how to make light. Stop. % date me You are not superuser: date not set Thu Aug 25 15:52:30 PDT 1988 % man rear No manual entry for rear. % If I had a ) for every dollar Reagan spent, what would I have? Too many )'s. % * How would you describe George Bush *: Ambiguous. % %Vice-President %Vice-President: No such job. % ls Meese-Ethics Meese-Ethics not found % "How would you rate Reagan's senility? Unmatched ". % [Where is Jimmy Hoffa? Missing ]. % ^How did the^sex change operation go? Modifier failed. % cp /dev/null sex;chmod 000 sex % more sex sex: Permission denied % mv sex show % strip show strip: show: Permission denied % who is my match? No match. % set i="Democratic_Platform";mkdir $i;chmod 000 $i;ls $i Democratic_Platform unreadable % awk "Polly, the ship is sinking" awk: syntax error near line 1 awk: bailing out near line % %blow %blow: No such job. % 'thou shalt not commit adultery' thou shalt not commit adultery: Command not found. And from the bourne shell (sh): $ drink < bottle;opener bottle: cannot open opener: not found $ test my argument test: too many arguments $ "Amelia Earhart" Amelia Earhart: not found $ PATH=pretending! /usr/ucb/which sense no sense in pretending! $ man -kisses dog dog: nothing appropriate $ mkdir "Yellow Pages";fiYellow Pages $ mkdir matter;cat > matter matter: cannot create $ lost lost: not found $ found found: not found $ i=Hoffa ;>$i ;$i ;rm $i ;rm $i Hoffa: cannot execute rm: Hoffa nonexistent The following are ones that I can't get to work on my BSD 4.3, so I suppose that they are stuff from ATT SysV or some other such: % strip bra bra: Cannot open % sccs what bottle can't open bottle (26) $ cat "door: paws too slippery" can't open door: paws too slippery $ cat food_in_tin_cans cat: can't open food_in_tin_cans ........................................... ...#""""""#................................ ..." ~ ~ "................................ ..( 0 0 ).. /------------------------\.. ...| <> |... | |.. ...| /""\ |...< I am dumb! |.. ...| ____ |... | |.. ...|| ||... \------------------------/.. ....\»»»»/................................. ......||................................... [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 5 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::::::: TCL Guide û Prae û prae@talk21.com ::::::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ note from the editor, ever write somehting in pico again and iÆll kill you with my bare hands, i spendt 4 hours editing this too make it look alright!@$ youÆll see what i mean near the end :((( ] This document is made to help explain how to make TCL scripts for the eggdrop. It covers BASIC concepts, and programming. I suggest that you have a copy of tcl-commands.doc handy, for this document will refer to it many a time. I hope this helps in learning TCL and good luck! Outline: I - Triggers for code (Events/Binds) II - Procedures explained. III - Variables, If statements IV - String manipulation commands (string & l commands) V - Loops VI - User-get/User-set VII - Return command VIII - Good Programming Habits IX - Commands, in sample code & explained. ## I - Triggers for code (Events/Binds) ## Eggdrop operates on an event based system. If I type 'hello' to the channel, the eggdrop matches that text against a list of events (referred to as binds) for channel commands. The eggdrop contains many events: pubm (public text matching), mode (channel mode changes), nick nick changes), join (joins to the channel), part (parts of the channel), and many others; they may be found in tcl-commands.doc. Syntax for bind: bind Example: bind join - * join:join The type of bind is triggered when some one joins a channel, the '-' stands for any flag (you could have put an 'o' to signify to only execute the procedure when he has Op Access) and the match matches the address/nick/channel (This accepts wild cards, explain further in section IV). The procedure 'join:join' is the part of code which it executes if the bind is matched up correctly. Another Example: bind dcc O sayhi dcc:sayhi If someone in DCC chat party line, with channel op access (and console is to that channel), or global op access types '.sayhi' it will execute the procedure 'dcc:sayhi'. In Eggdrop 1.1.x the default binds are prefixed with the type of bind then a ':' then the name; in this document I will also follow that form. A list of flags may be obtained via .help whois in DCC chat ## II - Procedures Explained ## A procedure is a section of code which may be called by anything in a program. For Eggdrop's use, this where all the code goes for on events. When an action takes place and a bind is triggered it calls a procedure to take action. For example if you wanted to write your own auto-op script, when ever a person with op access joins the channel it would call a procedure and then the procedure would send the command to give ops. syntax for procedures: proc { } { body } When a bind is triggered it gives certain information to the procedure that is required to do any thing, information such as nicks, hosts, handles, and any other arguments needed. This was taken from tcl-commands.doc from the info of the bind pubm. procname What this says is when ever a pubm bind is triggered you need variablesto put these 5 pieces of information. You can call the variables any thing you choose, it could be a, b, c, d and e. I suggest using something short, and to the point; such as nick, host, hand, chan, and text. Example of a bind, and a procedure: bind pubm - hello pubm:hello proc pubm:hello {nick host handle chan text} { putserv "PRIVMSG $chan :Hello $nick" } # The Bind # public match (pubm) flags needed to trigger: None (- means none) triggered by: hello procedure to be called: pubm:hello # The Procedure # putserv is a command which sends text to the server. PRIVMSG is a server command for sending private msgs. $chan is the variable that will contain the channel which it occurred on $nick is the variable that will contain the nickname of who said "hello" !!!PLEASE NOTE!!!: When using RAW IRC commands you need to put a ':' in front of text that has more than one word, such as the message of a msg. The same thing can also be accomplished with this bind pubm - hello pubcommand_hello proc pubcommand_hello {n uh h chan t} { puthelp "PRIVMSG $n :Hello $n!" } The bind is basically the same I just changed the name of the procedure. In the procedure I changed the name of the variables, I used 'n' instead of 'nick' and so on. However I did use a different command. Puthelp is a Eggdrop command which queues the text so as not to flood the bot. I HIGHLY SUGGEST USING THIS! :) (*) Use putserv when you need some thing to happen instantaneously. Like a kick, or a ban. (*) Use pushmode when you want modes to stack to be send as groups to the server (e.g '+ooo |mmortal Ernst Ec|ipse'), and instantaneous speed is not necessary. (*) Use puthelp when messaging people, or channels. syntax for puthelp: puthelp " " Example: puthelp "NOTICE $nick :Hi there $nick!" same syntax applies for putserv and putmode as well If you notice is only one space, that's why you need the ""'s (quotes). If you do not put the quotes there you get the error msg: TCL error: called "puthelp" with too many arguments. So you put the quotes to show that it belongs only in one spot. Procedures can also call themselves, without the need for a bind. For instance if there is one particular thing you must have done in ALL of your procedures; and don't feel like writing it. In this example you have to send a msg too the person every time he does a command, here is some sample code: bind pubm - kick pubm:kick proc pubm:kick {nick host hand chan text} { noaccess $nick } proc noaccess {who} { puthelp "PRIVMSG $who :Sorry $who, you do not have access to that command" } noaccess is accessable by any procedure in the bot, so any time you want to say some one doesn't have access, just call noaccess. !!!PLEASE NOTE!!!: I've seen this question about 100 times, and even asked it my self once. Never use 'args' as a variable in procedures it does strange things. It puts brackets ({}'s) around the variables and causes big problems if one does not know how to use it. (back to top) ## III - Variables, If statements ### Variables A variable is where you assign a symbol, or word (such as $nick) a value. This value can be a string (words, or sentences) or a numeral. In TCL there are 2 main types of variables: global, and private. A global variable is when you want to store information in it, and wish other procedures to use. A private variable could be a variable that you use in a procedure, which does not need to be used outside of that procedure. syntax for setting a variable: set Example: set name "Prae" To unset a variable, simply use the command unset. syntax for unsetting a variable: unset Example: unset name When using the variable, put a '$' infront of it so the procedure understands it is a variable. So the variable 'name' would be used in the code as '$name'. Additional Notes: To distinguish between a global, and private variable simply use a 'global' command at the top of the proc. When setting the variable, or using a global statement the '$' is not needed. syntax for global: global Example: proc test {a b c d e} { global name owner botnick } Eggdrop has some pre-set global variables, such as the bot's nick ($botnick). They are (taken from tcl-commands.doc): botnick current nickname the bot is using, ie 'Valis' or 'Valis0', etc botname current nick!user@host that the server sees, ie 'Valis!valis@crappy.com' server current server the bot is using, ie 'irc.math.ufl.edu:6667' version current bot version (ie: "1.1.2+pl1 1010201 pl1"); first item is the text version, second item is a numerical version, and any following items are the names of patches that have been added uptime unixtime value for when the bot was started To use them inside a proc, you must declare them as global at the beginning of your proc (e.g 'global botnick'). You'll see better uses for variables in the section IV If Statement: One of the most important aspects of a programming language is an 'if' statement. It will return a TRUE, or FALSE statement and execute the commands with such association. If statement use a logic type of approach; like: If 1 is equal to 1 times 1 then do this <> or else do this <>. syntax for if: if {v1 v2} {do this if true} else {do this if false (optional)} or if {v1 v2} {do this if true} {do this if false (optional)} notice the omission of else in the second example, both formats will perform the same function. These are some of the operators avaliable: == - (equal) != - (not equal) <= - (Less than/equal to) >= - (Greater than/equal to) < - (Less than) > - (Greater than) && - (equivalent to and) || - (equivalent to or) Example: if {$nick == $botnick} { putmsg $chan "I am $nick!!!" } else { putmsg $chan "I am NOT $nick" } This says if the value of $nick is the same as the value of $botnick then it sends a msg to the chan saying "I am $nick", and if not saying "I am not $nick". !!!PLEASE NOTE!!!: IT IS CASE SENSITIVE !!!PLEASE NOTE!!!: IT IS CASE SENSITIVE !!!PLEASE NOTE!!!: IT IS CASE SENSITIVE !!!PLEASE NOTE!!!: IT IS CASE SENSITIVE Did you get that? Maybe once more !!!PLEASE NOTE!!!: IT IS CASE SENSITIVE Case Sensitive Defined: Where the CaPs MaTtErs. Such as 'HELLO' is not the same as 'hello'. Now this is where TCL starts to differ from other programming languages that I've encountered. Lets say you want to write a check to see if $nick is an op on $chan. Well some languages could use an operator like if $nick isop $chan. Not TCL... There is a procedure called 'isop'. This was taken from tcl-commands.doc syntax for isop: isop returns: "1" if someone by that nickname is on the channel and has chop; "0" otherwise How do you use this in a if statement? This is how Example: if {[isop $nick $chan] == 1} { putmsg $chan "$nick is an op on $chan" } else { putmsg $chan "$nick is NOT an op on $chan" } Now the same can also be written like this: if {[isop $nick $chan] == 0} { putmsg $chan "$nick is NOT an on $chan" } and so on. Or like this: if {[isop $nick $chan] != 1} {body} or if {[isop $nick $chan] != 0} {body} As you can see you have many choices here, I suggest, since an else statement is optional, you use the if statement where the statement is true or false and execute the code, and don't use an else statement. What I mean by this is lets say you want the following: if the bot isn't an op then msg the chan and ask for ops. You can do this 2 ways, here is the harder way: if {[botisop $chan] == 1} { } else { putmsg $chan "Please opme! } As you can see I didn't want anything to happen if he does have ops, so you could change the first line to some thing like: if {[botisop $chan] != 1} {putmsg $chan "Please opme!"} or if {[botisop $chan == 0} {putmsg $chan "Please opme!"} TCL will interpert if {[botison $chan] == 1} {} the same as if {[botisop $chan]} {} If the statement is true it executes the {}. So there is no need for a == 1 As will if {[botisop $chan] == 0} {} if {![botisop $chan]} {} ! is the negate of whats in the [] Either one would suit you fine. There are 100's more commands like this for anything from checking flags, to doing ANY THING with the eggdrop. Again all in tcl- commands.doc (it almost sounds like I'm doing a commercial for tcl- command.doc dosn't it?). ## IV - String Manipulation Commands (string and l commands) ## You want to make a public kick program, so ops can type !kick . One problem, how do you extract those arguments from $text (or equivalent variable)? lindex, and lrange. These are core tcl commands so they won't be found in tcl- commands.doc here is there descriptions: (from the TCL help file). NAME lindex - Retrieve an element from a list SYNOPSIS lindex list index DESCRIPTION This command treats list as a Tcl list and returns the index'th element from it (0 refers to the first element of the list). In extracting the element, lindex observes the same rules concerning braces and quotes and backslashes as the Tcl command interpreter; however, variable substitution and command substitution do not occur. If index is negative or greater than or equal to the number of elements in value, then an empty string is returned. If index has the value end, it refers to the last element in the list. Example: [lindex "0 1 2 3 4 5 6 7 8 9 10" 5] would return 5 [lindex "a b c d e f g h i" 2] would return c (0 is the first parameter in the string!) Now here is the public kick program: bind pub O !kick pub:kick proc pub:kick {nick host hand chan text} { set whom [lindex $text 0] putserv "KICK $chan $whom :$nick told me so!" } # The Bind # public command (pub) flags needed to trigger: Channel Specific/Global Operator command to trigger: !kick procedure to be called: pub:kick # The Procedure # whom is a private variable and will be erased when the proc is finished. The lindex takes the first parameter in $text (which is the person) and sets it to whom the putserv kicks the person. What if you wanted to add a definable kick msg? Make the program a little more fancy. The command is lrange, it takes the parameters from N'th index to N'th index. Here it is from the TCL help file: NAME lrange - Return one or more adjacent elements from a list SYNOPSIS lrange list first last DESCRIPTION List must be a valid Tcl list. This command will return a new list consisting of elements first through last, inclusive. First or last may be end (or any abbreviation of it) to refer to the last element of the list. If first is less than zero, it is treated as if it were zero. If last is greater than or equal to the number of elements in the list, then it is treated as if it were end. If first is greater than last then an empty string is returned. Note: "lrangelist first first" does not always produce the same result as "lindexlist first" (although it often does for simple fields that aren't enclosed in braces); it does, however, produce exactly the same results as "list [lindexlist first]" So you would need to take parameter 1 for text, and to the end... This is how you would do it: bind pub O !kick pub:kick proc pub:kick {nick host hand chan text} { set whom [lindex $text 0] set reason [lrange $text 1 end] putserv "KICK $chan $whom :$reason" } Lets make it even more spoofy, what about if $nick isn't on the channel? Well we need an if statement don't we? Look in tcl- commands.doc for the command. Here is the program: bind pub O !kick pub:kick proc pub:kick {nick host hand chan text} { set whom [lindex $text 0] set reason [lrange $text 1 end] if {[onchan $whom $chan]} { putserv "KICK $chan $whom :$reason" } else { puthelp $chan "$nick: $whom is not on $chan" } } This is from the TCL help file, I'll give examples for a few, but I'm sure you can figure it out NAME string - Manipulate strings SYNOPSIS string option arg ?arg ...? DESCRIPTION Performs one of several string operations, depending on option. The legal options (which may be abbreviated) are: string compare string1 string2 Perform a character-by-character comparison of strings string1 and string2 in the same way as the C strcmp procedure. Return -1, 0, or 1, depending on whether string1 is lexicographically less than, equal to, or greater than string2. string first string1 string2 Search string2 for a sequence of characters that exactly match the characters in string1. If found, return the index of the first character in the first such match within string2. If not found, return -1. string index string charIndex Returns the charIndex'th character of the string argument. A charIndex of 0 corresponds to the first character of the string. If charIndex is less than 0 or greater than or equal to the length of the string then an empty string is returned. string last string1 string2 Search string2 for a sequence of characters that exactly match the characters in string1. If found, return the index of the first character in the last such match within string2. If there is no match, then return -1. string length string Returns a decimal string giving the number of characters in string. string match pattern string See if pattern matches string; return 1 if it does, 0 if it doesn't. Matching is done in a fashion similar to that used by the C-shell. For the two strings to match, their contents must be identical except that the following special sequences may appear in pattern: * Matches any sequence of characters in string, including a null string. ? Matches any single character in string. [chars] Matches any character in the set given by chars. If a sequence of the form x-y appears in chars, then any character between x and y, inclusive, will match. \x Matches the single character x. This provides a way of avoiding the special interpretation of the characters *?[]\ in pattern. string range string first last Returns a range of consecutive characters from string, starting with the character whose index is first and ending with the character whose index is last. An index of 0 refers to the first character of the string. An index of end (or any abbreviation of it) refers to the last character of the string. If first is less than zero then it is treated as if it were zero, and if last is greater than or equal to the length of the string then it is treated as if it were end. If first is greater than last then an empty string is returned. string tolower string Returns a value equal to string except that all upper case letters have been converted to lower case. string toupper string Returns a value equal to string except that all lower case letters have been converted to upper case. string trim string ?chars? Returns a value equal to string except that any leading or trailing characters from the set given by chars are removed. If chars is not specified then white space is removed (spaces, tabs, newlines, and carriage returns). string trimleft string ?chars? Returns a value equal to string except that any leading characters from the set given by chars are removed. If chars is not specified then white space is removed (spaces, tabs, newlines, and carriage returns). This is usefull for creating bans!!! Here is a sample kick ban script I wrote... proc pubm:kickban {nick host hand chan text} { set whom [lindex $text 0] set mask [trimleft [maskhost [getchanhost $whom $chan]] *!] set mask *!*$mask putmsg $chan "* Kick and Ban $nick ($mask) because [lrange $text 1 end]" putserv "MODE -o+b $whom $mask" putserv "KICK $whom :[lrange $text 1 end] } Notice I had to extract the person who is getting KB'd from text. I then had to get his host from the command getchanhost (tcl- commands.doc), and then make it a usable mask host for bans. However maskhost returns it's value in *!user@*.machine.end I need a *!*, so I used 'trimleft' and it did my job. string trimright string ?chars? Returns a value equal to string except that any trailing characters from the set given by chars are removed. If chars is not specified then white space is removed (spaces, tabs, newlines, and carriage returns). string wordend string index Returns the index of the character just after the last one in the word containing character index of string. A word is considered to be any contiguous range of alphanumeric or underscore characters, or any single character other than these. string wordstart string index Returns the index of the first character in the word containing character index of string. A word is considered to be any contiguous range of alphanumeric or underscore characters, or any single character other than these. ## V - Loops ## This section follows the following loops: foreach, for, and while (thanxs for the help from the people on the Doc Project List). Foreach a list of items, and goes through each setting it as a var then executing commands, and goes to the next. This proc will deop any one on the chan who doesn't have +o. syntax for foreach: foreach nick [chanlist $chan] { if {([isop $nick $chan]) && (![matchattr $nick o]) && \ (![matchchanattr $nick o $chan])} { pushmode $chan -o $nick } } chanlist gives a list of people on the chan. # The Procedure # It first checks to make sure he's an op Then checks to see if he's a global op Then checks to see if he's a chan op If all work out, he is deoped, if not nothing happens syntax for while: while {![botisop $chan]} { puthelp "PRIVMSG $chan :Opme!!!" } That will flood the bot off but you get the idea? It will execute body until the operator changes value syntax for for: for {set x 0} {$x > 5} {incr x} { puthelp "PRIVMSG $chan $x" } First of all this script will count from 1 to 6 The first set of {}'s happens only when U execute the for statement the second {}'s is the stopper. When that is true it will stop the body the third {} is every time you complete body, do it, then do body again ## VI - User-get/User-set ## Each user on eggdrop has a special field called "xtra" which lets you store whatever you like about users. The field size is limited so don't get too excited. :) It is a line where you (and your scripts) can store things the way you want to, just like the "comment" line each user has. But to improve it's functionality, there are two procedures which come with the "toolkit.tcl" (comes in eggdrops scripts dir) to access this field in a more organized way. The best thing is to *only* access the xtra field using these two procedures. Make sure no other script is accessing it another way (simple way to check this is to 'grep setxtra *' and 'grep getxtra *' in your scripts directory). The procs to use: user-set handle fieldname 'value...' user-get handle fieldname You can have any fieldname you like, like 'url' to store the users homepage, 'birthday', etc (check out 'set whois-fields' in eggdrops config file, which makes use of exactly these fields!). You name the field, set the value with user-set and don't have to worry anymore. And retore the value with user-get afterwards, as in: if {[user-get Ernst url] == ""} {putlog "Ernst has no url set"} ## VII - Return command ## The return command has two uses. The first is to stop the current proc. The second, and most usefull is the the abiity to return a number, or text. Heres an example: if {[chkaccess $nick]} { pushmode $nick +o $chan } chkaccess would return a 0, or 1 and then it would op them based on the return. This is from tcl-commands.doc: Several bindings pay attention to the value you return from the proc (using "return $value"). Usually they expect a 0 or 1, and failing to return any value is interpreted as a 0. Here's a list of the bindings that use the return value from procs they trigger: MSG Return 1 to make the command get logged like so: (nick!user@host) !handle! command DCC Return 1 to make the command get logged like so: #handle# command FIL Return 1 to make the command get logged like so: #handle# files: command PUB Return 1 to make the command get logged like so: <> !handle! command CTCP Return 1 to ask the bot not to process the CTCP command on its own. Otherwise it would send its own response to the CTCP (possibly an error message if it doesn't know how to deal with it). FILT Return 1 to indicate the text has been processed, and the bot should just ignore it. Otherwise it will treat the text like any other. FLUD Return 1 to ask the bot not to take action on the flood. Otherwise it will do its normal punishment. RAW Return 1 to ask the bot not to process the server text. This can affect the bot's performance (by causing it to miss things that it would normally act on) -- you have been warned. WALL Return 1 to make the command get logged liked so: !nick! msg syntax for return: return Example: return 0 ## VIII - Good Programming habits ## Many people load tons of scripts at once, and they don't want conflicts! There are a few ways to help avoid conflicts. USE RETURN 0 AS LITTLE AS POSSIBLE or else it will stop all bind searching after your proc.. Here are some other ideas (1) Label your procs sensable. Such as in my scripts I some times use proc mbti:antiidle {} {} Not some thing like proc script {} {} (2) Same with your variables. If you use '-'s in your variables when calling them you must ${mbti-antiidle} some thing like that (3) If your script uses timers make it compatable so you don't don't have too many of them (see examples in IX) If you've noticed in all my procecdures I've used an indentation system, I suggest you also use one. Most common methods consist of either a TAB or Double Spacing. where N is the number of spaces Example proc bla {} { <1> globlal testchan <1> if {[botisop $testchan]} { <1> <2> puthelp "PRIVMSG $testchan :I'm oped! <1> } } ## IX - Program Examples, then explained. ## I've taken some of these from programs I've written, or I just made them up =) (Many thanxs to the people on the Doc Project Listserv for suggestions!) ### bind pubm O !rules pubm:ab_rules proc pubm:ab_rules {nick host hand chan text} { set who [lindex $text 0] if {$who == ""} { # Because of line wraping it will not fit on one line, but you get the idea putmsg $chan "There is NO Cursing, Harrasment, Abusing the bot, Flooding, Clones, Advertising. Violation of this policy may result in a kick, and/or ban." return 1 } putmsg $who "There is NO Cursing, Harrasment, Abusing the bot, Flooding, Clones, Advertising. Violation of this policy may result in a kick, and/or ban." } # The Bind # Public Match Op Access on that Channel, or Global Op Access Trigger: !rules Proc Name: pubm:ab_rules # The Procedure # If the first parameter in $text is valid it will be set to who; if it doesn't exists whom will be "". Now it says, if who has no value msg the channel the rules of the channel But if there is a a nick put a msg to $nick #### ### # Script name : antiidle10-mbti.tcl # Script Version: 1.0 # Script Author : The |mmortaL [asn@cdc.net] (PGP Public key Avaible, put # "send key" in the subject.) # Script Desc. : An Anti Idle script for 1.1.x (Probably work with 1.0 # though) # Please edit the following variables: (Channel to which a msg is to be # sent, How often that message should be sent, and what to send; in that # order) set antiidlechan #lamechan set antiidletime 5 set antiidlemsg "antiidle10-mbti.tcl - Made By The |mmortaL" ## Do not change any thing under this point! ## ## Do not change any thing under this point! ## ## Do not change any thing under this point! ## # This makes all the data in $antiidlechan lower case set antiidlechan [string tolower $antiidlechan] # This makes sure that your on the channel which you specified. String # match is case sensitive that is why I made everything lower case # putlog is a command that puts some thing in the main logs of the bot, # and when the bot rehashs, or loads up you see that message. # return 1 stops the script from loading, in the event that it isn't on # that channel. if {![string match *$antiidlechan* [string tolower [channels]]]} { putlog "ERROR ERROR I am not on $antiidlechan!!!!" return 1 } # VERY VERY VERY VERY VERY VERY VERY IMPORTANT!! # If your script is gonna cause major problems if a person .rehashs, like # if you set a timer use some thing to this equivelent: # Make a variable, like antiidleloaded, by default that variable doesn't # exist. Put an if statement of info exists (checks to see if a variable # is there). And if it isn't set to 1, set it to 1, and load the timer, # if the variable is there, and set to 1, then do nothing. if {![info exists antiidleloaded]} { timer $antiidletime proc:antiidle set antiidleloaded 1 } proc proc:antiidle {} { global antiidlechan antiidletime antiidlemsg puthelp "PRIVMSG $antiidlechan :$antiidlemsg" timer $antiidletime proc:antiidle } # This is fairly simple, put a global statement for each of the global variables, because # you need to access them. Send the msg to the channel, and then re- set the timer. # The Bind # This script does not function with a bind. Trigger: "if {!info exists antiidleloaded}" checks to see if script is running Proc Name: proc:antiidle # The Procedure # If info does not exist for $antiidleloaded, timer for proc:antiidle begins, if it does exists, proc:antiidle continues running. When timer fires, put $antiidlemsg to $antiidlechan and start another timer ### ### set flag1 i set chanflag1 i set flag2 v set chanflag2 v bind join i * join:mbti_autoop bind join v * join:mbti_autovoice bind join - * join:mbti_cautoop bind join - * join:mbti_cautovoice proc join:mbti_autoop {nick host hand chan} { pushmode $chan +o $nick } proc join:mbti_autovoice {nick host hand chan} { pushmode $chan +v $nick } proc join:mbti_cautoop {nick host hand chan} { if {[matchchanattr $hand i $chan]} {pushmode $nick +o $chan} } proc join:mbti_cautovoice {nick host hand chan} { if {[matchchanattr $hand v $chan]} {pushmode $nick +v $chan} } This is a fairly easy script, the only new thing is the newflags. Eggdrop lets you add as many new flags as there aren't used. Set newflag[num] z where [num] is a number that doesn't exists... set newchanflag[num] Ditto :P # The Bind # Join on channel AutoOp and AutoVoice Access on that Channel Trigger: users with +i or +v joining the channel Proc Name: join:mbti_autoop join:mbti_autovoice join:mbti_cautoop join:mbti_cautovoice # The Procedure # When join bind is triggered by specified users, pushmode $nick flag $chan or matchchanattr $hand flag $chan is true pushmode $nick flag $chan ### ### bind mode - "*+o $botnick*" mode:automode proc mode:automode {nick host hand chan modechg} { foreach nick [chanlist $chan] { set hnick [nick2hand $nick] if {![isop $nick $chan]} { if {([matchattr $hnick o]) || ([matchchanattr $hnick o $chan])} { pushmode $chan +o $nick } if {([isop $nick $chan]) && ([matchchanattr $hnick d $chan])} { pushmode $chan -o $nick } } } } foreach nick [chanlist $chan] basicly says to do this for every one in the chan. One check to see if he has ops, if he dosn't and he has OP access then op him!! Then If he has ops, and he's supposed to be deoped them deop him! ### # end !@#$ 0000000000000000000000000000000000000000000000000000000000000000000000 000 0000000000 0000000000000000000000000000000000000 000000000000 000 00000000 00000000000000 00000 000 000000 0000 000 000 00000000 0 0000000000000 00000 00 00000 00000 000 000 000 0000000 000 000000000000 0000 00 0000 00000000 000 000 000 0 00 000 000 00 00 0 000 0 00 00 000 000 0 000 00 00 00 0 000 00 00 00 000 000 00 0 000 00 00 00 0000 00 0000 00 000 00 00 000 000 0000 0 000 0 0000 00 0000 00 0000 00 000 00 00 000 000 0000 0 000 0 0000 00 0000 000 0000 00 000 00 00 000 000 0000 0 000 0 0000 00 0 00 00 000 00 00 000 000 0000 0 000 0 0000 000000 00 00 000 00 00000000 000 000 0 000 00 00 00000000 00 00000 00 00 00 00000000 000 0 0 0 0 00 000 000 00000 000 00 000 000 00 000 00 000 000 0000000 000000000000 000 000000000000000 00000000000 00000000000000000000 00000000000000000 00000000000000000000000 0000 000000000000000000000 00000000000 00000000000000000000000 00000000000000000000000 000000000000 00000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 6 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::: Obscene log û #gaydogsex û irc.undernet.org :::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] true, so tell me what is sex with a dog like? umm.. good.. :) don't they get bit roough? if you're lucky :) thay can do, if you're lucky :) do they bite? yes, again. if you're lucky.. * PantheraD likes it rought. err.. rough sound painful not pleasurable all depens on what you like.. some dogs are rough.. some aren't don't know what i would like. never tried it with a dog have you had sex with a man? couple of times was he rough with you? nah, pretty gentle actually well, did you want him to be rough? *** Roxie_Dog has quit IRC (Read error to Roxie_Dog[modem- 214.iron.dialup.pol.co.uk]: Connection reset by peer) not really you woudn't want a rough dog then. *** Roxie_Dog has joined #gaydogsex *** Knot sets mode: +v Roxie_Dog wb roxie :) does this mean that i should stay away from dogs no cool, still want to try just be aware that dogs won't alter the way the fuck because it's to rough for you.. panthera.. how many diff breeds and dogs have you had sex with? i guess i could deal with that well, i used to work at a kennel so a lot :) heh. really? * PantheraD nods for 3 years variety is the spice of life, eh? and?!? so true.. :) and what? heh.. n/m what got you turned unto dogs? but i always had my favorite. :) saw my male lab breeding a female and i wondered what it would be like to be with him *** nik7 has joined #gaydogsex how was it hello nik, whass up>? and did you you? yes.. that i did :) how did you get him to do that with you? jacked him a little until he started to hump, then showed him my butt. ahh. and did you enjoy? the first time, no. why not i was quite young and he was very well hung... ie, small butt, big cock makes sense, how old were you 14 and how old was he 5 no longer a pup did you ever do anything with him again? nope.. oh yes.. he was my lover for 4 years every night after.. err.. no, he was not a pup... sorry.. that was a bit confusing.. how did you get past the size difference he was very used to breeding... ever tried any other animal than dogs? well, heh.. he just rammed it in and stretched me out... it must have hurt no.. just men and dogs.. i want to try a stallion at some point yes, yes it did did he ever get his knot in you wow. a stallion huh? woo. big. yeah, he did it the first time and just about every time there after.. (i prefer to tie) yeah! nice big cock and a nice big load of cum :) i hear knots get huge biggest i've seen was the size of a softball (247 lb st. bernard) [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 7 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ :::::::::::::: grannanizing û Prae û prae@talk21.com ::::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] Here it is! What you've all been waiting for.. It's a revolution in home entertainment! No it's not a hands-free vibrator or even an inflatable doll that gives head without chaffing your penis! It's my latest party trick, its called 'Grannanizing'.. And since I'm such a nice person I am going to show you how I do it. :) Here is what I do.. I /msg someone and I act like an old lady who is a bit nutty.. oh hello dear hi i was wondering if you could help me? depends its disgusting! huh am i speaking to the right person? i don't know are you? why? that jigsaw is driving me nuts! umm ok.. wtf are you talkin about are you still there? possibly i was wondering if you could help me? yes you asked that once woo its sexy dude you smoked some bad crack or somethin oh how dare you?! how dare i what what are you gonna do? i cant believe you're asking me that ok..... are you still there? man your fuckin loony hello betty seek help please betty? yes umm my name is not betty in my day it never cost that much yeah. dildos are much cheaper now its disgusting! your the one who brought it up why? i don't know.. you tell me am i speaking to the right person? do you purposly repeat your self or are you really stupid? oh how dare you! can you put me through to the person in charge? are you still there? goodbye dear. oh hello dear hello, who are u its fanny speaking i was wondering if you could help me? oki. am i speaking to the right person? i dont know i was wondering if you could help me? oki, with wht what its disgusting! tell me in my day it never cost that much are you still there? goodbye dear oh hello dear hi >=] i was wondering if you could help me? with? its disgusting! what is? in my day it never cost that much! are you still there? yeah am i speaking to the right person? what are you talking about? no i dont think so why? prae - what the hell are you smoking? yes, its fanny speaking are you still there? goodbye dear oh hello dear hi i was wondering if you could help me? ok why didnt your ip resolve its disgusting! :( in my day it never cost that much huh am i speaking to the right person? ? are you drunk? that jigsaw is driving me nuts what the fuck are youtalking about? are you still there? yes i was wondering if you could help me? WITH WHAT that jigsaw is driving me nuts hello betty WHAT FUCKING JIGSAW i cant believe you're asking me that oh how dare you!? are you still there? goodbye dear oh hello dear Hi . i was wondering if you could help me? Hm ? its disgusting! What ?! in my day it never cost that much -laugh Do you need a loan ? am i speaking to the right person? Who knows . that jigsaw is driving me nuts I bet . You should cut back on the alcohol . its disgusting! I bet . oh how dare you? Easily . . . are you still there? For now . i was wondering if you could help me? Mayhaps . woo its sexy Is it ? i cant believe you're asking me that Well , I did . oh how dare you1? hello betty are you still there? goodbye dear oh hello dear lol.. hi prae i was wondering if you could help me? with? its disgusting! ? am i speaking to the right person? i dont know. that jigsaw is driving me nuts whom do you think you are addressing ? yes, its fanny speaking huh? am i speaking to the right person? i dont know.. are you on my left? its disgusting! in my day it never cost that much are you still there? goodbye dear oh hello dear hi :( i was wondering if you could help me? with? its disgusting! are you still there? goodbye dear oh hello dear i was wondering if you could help me? are you still there? I'm here i was wondering if you could help me? depends, what do you need? its disgusting! are you still there? yes, I am...what do you need help with? that jigsaw is driving me nuts are you still there dear? in my day it never cost that much woo its sexy are you still there? goodbye dear oh hello dear hi i was wondering if you could help me? with? do I know you? its disgusting! ? in my day it never cost that much ? are you still there? yes i was wondering if you could help me? with? i cant believe you're asking me that am i speaking to the right person? stop begging for help and tell me wtf you want help with oh how dare you!? I don't know why? who do you think you are speaking to? woo its sexy yes, its fanny speaking fanny? yes am i speaking to the right person? your hostmask seems familiar but I don't know anyone by the name of fanny ok luvvy are you still there? goodbye dear oh hello dear i was wondering if you could help me? with? its disgusting! are you still there? yes i was wondering if you could help me? i was waiting for you with what? i cant believe you're asking me that enough games, whats on your mind its disgusting either spit it out, or i have other business am i speaking to the right person? the right person for what you know exactly who i am and i know exactly who you are come to the point can you put me through to the person in charge? i am the person in charge in my day it never cost that much you are obviously insane, let me know when you return to earth oh how dare you!? are you still there? yes, and very busy that jigsaw is driving menuts! yes, i can see you are quite nuts are you still there? OH HOW DARE YOU!? hello betty i was wondering if you could help me? go and take your meds woo its sexy are you still there? no why? yes, its fanny speaking are you still there dear? goodbye dear ok here. =] oh hello dear i was wondering if you could help me? hah yes yes its disgusting! it is?! yes that jigsaw is driving me nuts! haha what jigsaw are you still there? and whats disgusting?! yes. are you stoned per chance? i cant believe you're asking me that :/ am i speaking to the right person? probably not... i think you want a shrink.. oh how dare you!? well i don't know? woo its sexy yes i have jammy dodgers... why? i dont know i dont really like them i just eat cos im bored are you still there? goodbye dear oh helo dear hi do i know u i was wondering if you could help me? with what? its disgusting! with what? in my day it never cost that much really yes am i speaking to the right person? yeah what never cost that much thats not important i was wondering if you could help me? yeah sure its disgusting! are you still there? yes i am what do u fucking want me to do just tell me could you put me through to the person in charge? 10 seconds oh how dare you!? no sorry why? fuck off woo its sexy are you still there? fuckign hell its sexy i know u r telling me omg its so sexy yes its disgusting! i know its so fucking disgusting its just digusting so groose and disgraceful that jigsaw is driving men uts ohh its o giisgusting its unreal could you put me through to the person in charge? yeah, eyghhh why do u wanna speak to the person in charge u realise u will have to take the test thats not important why? if u want to speak with the person in charge thats the protocol hello betty i am affraid why? are you still there? goodbye dear oh hello dear Um Hi. i was wondering if you could help me? Do I know you? i cant believe you're asking me that Ok... am I supposed to know you? thats not important i was wondering if you could help me? With what? its disgusting! Just ask the question. ok luv are you still there? YES. wo its sexy [Accipiter PING] are you still there? YES. Ask the question already. oh how dare you!? what who am i speaking to the right person? Apparently. Ask me what it is you want to ask. can you put me through to the person in charge? yes i'm still here. I am in charge. its disgusting! That's fine., ask. that jigsaw is driving me nuts A jigsaw puzzle is disgusting? you have issues. woo its sexy are you still there? No. I'm lying. its disgusting! I'm sure it is. hello betty hello dolly ? oh how dare you!? are you still there? goodbye dear [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 8 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::: Satanism û Vegtam - vegtam@fjell.online.no ::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] Do you want to be a satanist? Or do you want to know what a satanist is? Well, the answers will be found her . This is a course for beginners. The more skilled one can fuck off and read something else. I will only tell how to be a Satanist as a follower of Anton Szandor LaVey, and not as a devil-worshipping jerk that sacrifices young virgins. I will only do it briefly, tell you the basics, so if you want to know more, go to http://www.churchofsatan.com. I will now try to combine clothing style, music and the rules of being a satanist. Ok, first of all, to be a Satanist, you should dress like one. Have style. The basic color is of course BLACK (and due to that fact, it`s even better if you are black skinned). You can use other colors like red and purple, but it must match, so you have the gloomy look. Your hair should be long, and colored black. You also can be shaved. Spikes and leather jackets gives you a raw and primitive look. But you can try to look a little mystical. Wear a black coat or something. Black latex will never run out of date when you are a satanist. And always use army boots, or something look-a-like. If you are white, make sure your face is as pale as it can be. Never take sun. That ruins your evil look. Some people thinks it`s funny to use corpse painting...but if your walking in mall or something with corpse painting, your stupid...and remeber, it`s no sin to be original... You should also listen to so called dark, moody n Satanic music that get u in a dark and gloomy mood, and I don`t mean a stupid a g1mp like Marilyn Manson (many will maybe disagree, but he`s nothing but a jerk off to me. A false rip off). Listen to classical music. Listen to brutal music from the north, black metal. The most famous ones that is worth a mention is Mayhem, Darkthrone, Immortal, Emperor, Enslaved, Vintersorg, Satyricon, early Ulver, Finntroll....blablabla...well, at least you have something to start with? Well, if you got the clothing style and maybe even started to like the so called "satanic" music, we are now ready for the the lesson on how to behave and act. I will now take up "The Nine Satanic Statements", "The Elven Satanic Rules of the Earth" and "The Nine Satanic Sins". When you have read these, and if you still are interested in being a Satanist, buy the Satanic Bible and visit http://www.churchofsatan.com, as mentioned somewhere above. Okay, here we go: The Nine Satanic Statements from The Satanic Bible by LaVey 1. Satan represents indulgence instead of abstinence! 2. Satan represents vital exitstence instead of spritual pipe dreams! 3. Satan represents undefiled wisdom instead of hypocritical self- deceit! 4. Satan represents kindness to those who deserve it instead of love wasted on ingrates! 5. Satan represents vengeance instead of turning the other cheek! 6. Satan represents responsibility tho the responsible instead of concern for psychic vampires! 7. Satan represents man as just another animal, sometimes better, more often worse than those that walk on all fours, who, because of his "divine spiritual and intellectual development," has become the most vicious animal of all! 8. Satan represents all of the so-called sins, as they all lead to physical, mental, or emotional gratification! 9. Satan has been the best friend the Church has ever had, as He has kept it in business all these years! The Eleven Satanic Rules of the Earth by LaVey 1. Do not give opinions or advice unless you are asked. 2. Do not tell your troubles to others unless you are sure they want to hear them. 3. When in another`s lair, show him respect or else do not go there. 4. If a guest in your lair annoys you, treat him cruelly and without mercy. 5. Do not make sexual advances unless you are given the mating signal. 6. Do not take that which does not belong to you unless it is a burden to the other person and he cries out to be relieved. 7. Acknowledge the power of magic if you have employed it successfully to obtain your desires. If you deny the power of magic after having called upon it with success, you will lose all you have obtained. 8. Do not complain about anything to which you need not subject yourself. 9. Do not harm little children. 10. Do not kill non-human animals unless you you are attacked or for your food. 11. When walking in open territory, bother no one. If someone bothers you, ask him to stop. If he does not stop, destroy him. The Nine Satanic Sins by LaVey 1. Stupidity - The top of the list for Satanic sins. The Cardinal Sin of Satanism. It`s too bad stupidity isn`t painful. Ignorance is one thing, but our society thrives increasingly on stupidity. It depends on people going along with whatever they are told. The media promotes a cultivated stupidity as a posture that is not only acceptable but laudable. Satanists must learn to see through the tricks and cannot afford to be stupid. 2. Pretentiousness - Empty posturing can be most irritating and isn`t applying the cardianl rules of Lesser Magic. On equal footing with stupidity for what keeps the money in circulation these days. Everyone`s made to feel like a big shot, whether they can come up with the goods or not. 3. Solipsism - Can be very dangerous for Satanists. Projecting your reactoins, responses and sensibilities onto someone who is probably far less attuned than you are. It is the mistake of expecting to people give you the same consideration, courtesy and respect that you naturally give them. They won`t. Instead, Satanists must strive to apply the dictum of "Do unto others as they do unto you." It`s work for most of us and requiers constant vigiliance lest you slip into a comfortable illusion of everyone being like you. As has been said, certain utopias would be ideal in nation of philosophers, but unfortunately (or perhaps fortunately, from a Machiavellian standpoint) we are far from that point. 4. Self-deceit - It`s in the "Nine Satanic Statements" but deserves to be repeated here. Another cardianl sin. We must not pay homage to any of the sacred cows presented to us, including the roles we are expected to play ourselves. The only time self-deceit should be entered into is when it`s fun, and with awareness. But then, it`s not self-deceit! 5. Herd Conformity - That`s obvious from a Satanic stance. It`s all right to conform to a person`s wishes, if it ultimately benefits you. But only fools follow along with the herd, letting an impersonal entity dicate to you. The key is to choose a master wisely instead of being a enslaved by the whims of the many. 6. Lack of Perspective - Again, this one can lead to a lot of pain for a Satanist. You must never lose sight of who and what you are, and what a threat you can be, by your very existence. We are making history right now, every day. Always keep the wider historical and social picture in mind. That is an important key to both Lesser and Greater Magic. See the patterns and fit thingd together as you want the pieces to fall into place. Do not be swayed by herd constraints - know that you are working on another level entirely from the rest of the world. 7. Forgetfulness of Past Orthodoxies - Be aware that this is one of the keys to brainwashing people into accepting something new and different, when in reality it`s something that was once widely accepted but is now presented in a new package. We are expected to rave about the genius of the creator and forget the original. This makes for a disposable society. 8. Counterproductive Pride - That first word is important. Pride is great up to the point you begin to throw out the baby with the bathwater. The rule of Satanism is: if it works for you, great. When it stops working for you, when you have painted yourself into a corner and the only way out is to say, I`m sorry, I made a mistake, I wish we could compromise somehow, then do it. 9. Lack of Aesthetics - This is the physical application of the Balance Factor. Aesthetics is in important in Lesser Magic and should be cultivated. It is obvious that no one can collect any money off classical standards of beauty and form most of the time so they are discouraged in a consumer society, but an eye for beauty, for balance, is an essential Satanic tool and must be applied for greatest magical effectivness. It`s not what`s supposed to be pleasing - it`s what is. Aesthetics is a personal thing, reflective of one`s own nature, but there are universally pleasing and harmonious configurations that should not be denied. ---------------------------------------------------------------------- Okay, I was planning to do a littel satanic history here, but I won`t. I`m tired of writing this article, but I hope you read it and found at least some of it interesting, or even better, got provoked by it. Vegtam february 2000 000 00000 000 00 00 00000 000 000 0000000 000 00 00 00000000 000 000 000000000 000 000 00 000 000 000 000 00 000 0000 000 00000000000 000 0 000 000 000 0000 0000 000 00000000 000 000000000000 00 00000000 000 000000000 0000 000 000000000 000 000000000000 000 0000000 00 000 0000000000 0000 000 0000 0000 000 00 00 00 000 000 00 000 000 0000 0000 000 0000 0000 000 000 00 00 000 000 00 000 000 0000 0000 000 000 0000 000 000 00 00 000 000 00 000 000 0000 0000 000 000 0000 000 00000000000 00 000 000 00 000 000 0000 0000 000 000 0000 00 00000000000 00 000 000 00 00 000 0000 0000 000 0000 00000 00 00 000 0000000000 00000000 0000000000 000000000 000 000 00 00 000000000 000 00000000 00000000 000000000 000 000 000 000 00 00000 000 000000 000000 000 0000 000 00 00 000 000 0000 00000000 000000000 000000 000000000 00000000 [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 9 :::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::::::: Negr/OS - dialect - dialect@home.com ::::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ note from the editor, sorry about messing up the appearance of your leet ascii :( ] Negr/OS is the latest underground news since phf baby ! . Elitely and stablely coded in one of todays most widely used and trusted language Qbasic. Yep !.Thats right . Placing youz in total fear mode is our ob- jec-tive here at stupidphat. Latest kernel' build' out now is kernel 3.1.3.3.7 Source is freely distributed so have fun messing with it. To successfully run negr / OS You need QBASIC. If you dont have it could could download QBASIC Here: http://dialect.stupidphat.com/qbasic.exe. ASM format is available only for the leet++ at: http://dialect.stupidphat.com/neg.asm Screenshots of Negr/OS in action can be found here: http://dialect.stupidphat.com/neg1.jpg http://dialect.stupidphat.com/neg2.jpg http://dialect.stupidphat.com/neg3.jpg Don take me wrong. This is all a big joke and I'm not racist (sometimes) and ummmm this project isnt supposed to be all that. I will tell you though. that negr/OS DOES WORK. its not really an os. just a dos shell. but the name fit well :D REM **** negr/OS ****** REM Kernel 3.1.3.3.7 REM **** dialect ****** DIM login$ DIM pw$ DIM prompt$ DIM dir$ DIM rm$ DIM host$ DIM yourmoma$ REM no_need_to_DIM_anything$ CLS COLOR 10 SCREEN 12 PRINT " " PRINT " " PRINT " NNN NNNN //// OOOOOOOOOOO SSSSSSSSSSS" PRINT " NNNN NNNN //// OOOOOOOOOOO SSSSSSSSSSS" PRINT " NNNNN NNNN //// OOOO OOOO SSSS" PRINT " NNNNNN NNNN eeeeeeee gggggggg rrr rrrr //// OOOO OOOO SSSSSSSSSSS" PRINT " NNNNNNNNNNN eee eee ggg ggg rrrrrrrr //// OOOO OOOO SSSSSSSSSSS" PRINT " NNNN NNNNNN eeeeeeee ggg ggg rrrr //// OOOO OOOO SSSS" PRINT " NNNN NNNNN eee ggg ggg rrr //// OOOOOOOOOOO SSSSSSSSSSS" PRINT " NNNN NNN eeeeeeee gggggggg rrr //// OOOOOOOOOOO SSSSSSSSSSS" PRINT " ggg" PRINT " gggggggg" PRINT " " PRINT " The Black Operating System !" PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT "(Stupidphat.com) negr/OS (ttyp1) fastlink01" SCREEN 12 LINE (25, 25)-(52, 67), B LINE (214, 234)-(23, 45), B, B COLOR 3 PRINT SCREEN 12 PRINT 1 INPUT "login: ", login$ INPUT "password: ", pw$ IF pw$ = "pass" THEN PRINT COLOR 8 PRINT "Negr/OS Kernel Build : 3.1.3.3.7. " PRINT COLOR 3 PRINT "Logged in as user: "; PRINT login$ PRINT "Your shell is /negros/shells/freshmozzarela&sausage" PRINT PRINT "# MOTD" PRINT "Welcome to Negr/OS ! Type help for commands @#$"; "" PRINT PRINT GOTO 2 ELSE PRINT COLOR 7 PRINT "Invalid username or password" PRINT COLOR 3 GOTO 1 END IF 2 PRINT "["; COLOR 4 PRINT login$; COLOR 3 PRINT "@"; INPUT "negr/OS ]> ", sysprompt$ IF sysprompt$ = "adduser" THEN INPUT "Enter the new user name :", user$ INPUT "Enter a password :", pass1$ INPUT "Re-Enter the password : ", pass2$ END IF IF pass1$ = pass2$ THEN OPEN "usrs.txt" FOR OUTPUT AS #1 PRINT #1, "Username : " + user$ PRINT #1, "Password : " + pass1$ CLOSE #1 ELSE PRINT "Passwords did not match" GOTO 2 END IF IF sysprompt$ = "dir /w" THEN SHELL "dir /w" GOTO 2 END IF IF sysprompt$ = "dir /p" THEN SHELL "dir /p" GOTO 2 END IF IF sysprompt$ = "rm" THEN PRINT COLOR 9 INPUT "[RM File] ", rm$ SHELL "del " + rm$ COLOR 3 GOTO 2 END IF IF sysprompt$ = "" THEN GOTO 2 END IF IF sysprompt$ = "cls" THEN SHELL "cls" GOTO 2 END IF IF sysprompt$ = "clear" THEN SHELL "cls" GOTO 2 END IF IF sysprompt$ = "ver" THEN PRINT COLOR 10 PRINT "Negr/OS Version 3.1.3.3.7 and dont ever forget it!" PRINT COLOR 3 GOTO 2 END IF IF sysprompt$ = "fdisk" THEN SHELL "c:\windows\system\fdisk.com" GOTO 2 END IF IF sysprompt$ = "ping" THEN PRINT COLOR 9 INPUT "[Ping target] ", host$ SHELL "ping " + host$ COLOR 3 GOTO 2 END IF IF sysprompt$ = "help" THEN PRINT COLOR 12 PRINT "cd help rm ver who dir " PRINT "hello.c cd .. a: pwd rm -rf logout " PRINT "exit time txt c: hi Unix " PRINT "cls clear fdisk ping adduser dir /w/p" PRINT COLOR 3 GOTO 2 END IF IF sysprompt$ = "cd" THEN PRINT COLOR 9 INPUT "[ Dir ] ", dir$ SHELL "cd " + dir$ COLOR 3 GOTO 2 END IF IF sysprompt$ = "pwd" THEN SHELL "cd" GOTO 2 END IF IF sysprompt$ = "dir" THEN SHELL "dir" GOTO 2 END IF IF sysprompt$ = "cd .." THEN SHELL "cd .." GOTO 2 END IF IF sysprompt$ = "a:" THEN SHELL "a:" GOTO 2 END IF IF sysprompt$ = "hello.c" THEN PRINT COLOR 8 PRINT PRINT "HELLO WORLD #@$@#$! " PRINT COLOR 3 GOTO 2 END IF IF sysprompt$ = "rm -rf" THEN PRINT COLOR 8 PRINT PRINT " j00 fucking mor0n !" PRINT COLOR GOTO 2 END IF IF sysprompt$ = "logout" THEN CLS GOTO 1 END IF IF sysprompt$ = "exit" THEN END END IF IF sysprompt$ = "who" THEN PRINT COLOR 4 PRINT login$ PRINT COLOR 3 GOTO 2 END IF IF sysprompt$ = "time" THEN SHELL "time" PRINT GOTO 2 END IF IF sysprompt$ = "c:" THEN SHELL "c:" PRINT GOTO 2 END IF IF sysprompt$ = "ls" THEN PRINT COLOR 15 PRINT "best step !$# : try dir instead : neener neener."; PRINT COLOR 3 PRINT "." GOTO 2 END IF IF sysprompt$ = "txt" THEN PRINT COLOR 8 INPUT "[ TXT ] ", txt$ SHELL "" + txt$ COLOR 3 GOTO 2 END IF IF sysprompt$ = "hi" THEN PRINT "hi" ELSE PRINT COLOR 15 PRINT ":nigga best recognize : ["; COLOR 5 PRINT sysprompt$; COLOR 15 PRINT "] : not a command"; COLOR 3 PRINT "." PRINT GOTO 2 END IF IF sysprompt$ = "cd" + dir$ THEN PRINT COLOR 8 INPUT "[ Dir ] ", dir$ SHELL "cd " + dir$ COLOR 3 GOTO 2 END IF [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 10 ::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::::::::: irc quotes û misc û irc.undernet.org ::::::::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] prae r u female? or wut? Hey everyone, I NEED MAJOR HELP! Please, if you know how to lag someone out of any "Microsoft Internet Gaming Zone" game, I WOULD LIKE TO KNOW! Please, I am desperate! Message me, thank you!!!! the first chick that gave me oral was only 13...she could barely take it n her mouth, i had teethmarks on my penis for a week chris`: are you learning disabled by any chance? you got aol private chat room names? twist: will you show her my pic and tell her that i like her, then ask if she could ever love a guy like me lol@ me gettin sad and icq'in prae hehe eh? nah bob why not? i got caught by my little sister masterbating to some online porn she said, "what are you doing to that" i said "trying to kill it" and "can you help me" lol doesnt no one care this is child abuse i was only joking geez you really think ? mg issues [canonbal:#hacktech PING] unlagging slowly heh *** canonbal` has quit IRC (Lost irc connection from 207.170.201.226: Broken pipe) hello? Does anyone know anything about earthserv webpage provider i got an account but now it says the site has no dns entry it used to just say page contains no data.does anyone know why or when earthserv will be running again? <`DS> anybody know where to find violence stats? I JUST WROTE MY FIRST PERL PROGRAM!!! IM SO FUCKING ELITE FUCK YOU ALL HAHAHAHAHAAHHA splendid james FUCK YOU ALL!!!!!!!!!!!!!!!!!!!!!!! uhm... i wrote my 27th TCL script today lol hello.pl ? :( before you fcrashed me NO you twat oh its far more k-rad * twist182 giggles prae :( twist yeah what perl book is it? what one are you reading? 'perl for canadian fags' i need help here about a cble modem to nuke theres a girl who has take my nick and put it on a child porn chan and im unable to nuke that bitch shes on cable im in winshit bob how come smoking makes me horny? watching people smoke makes me erect, is this a problem? *** |RAT| has joined #k-rad did you signup bob? yes h0h0h0h0h0h basic? MASTER! <|RAT|> hmmmmmm elite! Vicki is such a sweetie you'll see what about bandwith? <|RAT|> Isn't this a hacking channel???? fast yes rat no rat its a sex channel <|RAT|> ooooops *** |RAT| has left #k-rad its also a sex channel hahahaha!!!!!! NOONE IS LEAVING THIS CHANNEL WITHOUT A GROUP HUG *** sdf was kicked by RLoxley (Too many damn caps!) *** asmith has joined #hacktech hi can somone send me a prog that gets i-net p-words and u-names Anyone know where I can get getadmin.exe roses are red and violets are twisted, bend over james cause you're about to get fisted. alot of black metal bands butt fuck eachother on stage eww this girl at my old highschool once was dared to shove a hotdog intoside herself and she got it like all the way and it broke off. she had to go to the hospital and get it removed. i dunno i felt like sharing that. probably becaus i am in a goofy mood now. *** twist182 has quit IRC (Excess Flood) *** twist182 has joined #hackphreak *** twist182 has quit IRC (Excess Flood) twist=0wned hey. i went to mplayer last night. its still gay so you blended in quite well? im having sex with my left hand from now on prae bob, why the switch? !? im ambedextrus i use both :) i use my feet to make my right one jealous so that she'll work way harder when i give her another chance *** A17mPA has joined #hacktech hi every1. Question. Has anyone heard of something called AOL IM Sysop? or something like that How well does getadmin.exe work? We need more women in here.. thats the problem in a nutshell... women that aren't to bright so they will go along with anything we say haha does anybody have a unix i can borrow?????? *** RLoxley has joined #hacktech hey RL [5m [1;31mh [1;32me [1;34ml [1;33ml [1;31mo [1;32m, [1;34mh [1;33ma [1;31mc [1;32mk [1;34me [1;33mr [1;31ms [0m *** RLoxley is now known as grid coOOl i dont feel gay anymore i am cured goodbye for now. *** grid has left #hacktech *** fraglord has joined #hacktech *** RLoxley is now known as grid rloxley and grid arent the same ppl are they? Heh does anyone have a webpage or know of a cool program that hacks ICQ passwords or hotmail passwords I've got more skills on the tip of my cock then you've got in your whole brain!!! i havent been afk for like 5 days *** thep0et has Quit IRC (I'm black and i don't work for a living...are you surprised?) i find masturbation a good way to make bath's more fun they cant talk about security, 2600 dont know shit about security *** ZeRiAl has joined #hackphreak hey you guys, u happen to know of a program to get login and pswd from a porn site? *** M1K4 has joined #hackuk i need some carding instructions * Prae2k/#k-rad is learning how to masturbate whilst doing a handstand * thep0et/#k-rad is learning how to ignore prae's stupid pointless comments which make no sence what so ever *** alltra has joined #hacktech anyone know anyhting that will screw someone over real bad if all I have is their ip number? could you imagine if our penises acted like elephant trunks? and we had to feed our selves like that *** tobsgal has joined #hackuk any lesbian or bi females want to chat *** ubre has joined #HackTech hi, guys pls help. How do i see someone's IP server in a chat? *** SpeedSwim has joined #HackTech hety any of you have a big virus or kno where I cna get one? *** hey has joined #HackTech is they re somebody who could tell me how to hack somebody on irc our can give me a sites???????????????????? without masturbation there is nothing sekz, i serioulsy used to masturbate about 15 to 20 times a day seriously even *** thik has joined #hacktech Can anybody show me how to hack ???? *** weesel has joined #hacktech hello does anyone know of a proggie that will let me into someones HDD useing ICQ? *** Drumguy has joined #hacktech Anybody know operatior or administraitor Yahoo Chat commands? Anybody know operatior or administraitor Yahoo Chat commands? Anybody know operatior or administraitor Yahoo Chat commands? Anybody know operatior or administraitor Yahoo Chat commands? *** Drumguy has joined #hacktech Does anybody know kick certain people out of Yahoo Chat Rooms? *** moeska has joined #hacktech can someone tell me how to ping to a specified port? *** bcsiss has joined #hacktech i need help with? * fraggy is back: from -(tv)- gone -(10mins 56secs)- is there anyway to hack into someone elses computer through mirc? *** Killer has joined #hacktech can someone disconnect a clone of me that has fucked up? *** Zero|kewl has joined #hacktech *** hst has quit IRC (bbl) does anybody use wwwhack? *** Freddo has joined #hacktech does anybody know NT hack??? -X- Ban list updated * h420i is away: -(could irc be any more boring?)- since -(23:18)- pager -(on)- does anybody know NT hack??? *** G|GAWH0RE has joined #hacktech isn't freddo the guy who gets shot in the movie? ??? n/m :P *** koshie has quit IRC (Ping timeout for koshie[get.your.free.shell.at.shellyeah.org]) http://www.tuxedo.org/~esr/faqs/hacker-howto.html sorry wrong paste lol as opposed to the right paste? you nail him fraggy does anybody know NT hack??? eh? this is correct w0rd bob he is just asking a question :P hehe sowwie so ... does anybody know NT hack??? lol i cant help myself haha Freddo, say that again. i crack up everytime i read that <|cH|cKeN|> hehe ok... does anybody know NT hack??? *** lioufman has joined #hacktech HEH *** cTq has left #hacktech * lioufman exei pathei plaka me to <> by NiRVaNaiR [100% Megali eukolia dike mou] *** Mike`` has joined #hacktech can someone help me with something? what is it? i got a pw cracker but i can't get it to work *** Mike`` was kicked by fraggy ( i got this AOL punter proggie but i don't know how it works....... oh, never mind ) *** Mike`` has joined #hacktech funny?? <|cH|cKeN|> not really yes. very <|cH|cKeN|> ur just gay *** L_Mental has joined #hacktech need to know: are there any binders for exe+image? *** kingpin1 has joined #hacktech __ ___ ___ /\ \ /\_ \ /\_ \ \ \ \___ __\//\ \ \//\ \ ___ \ \ _ `\ /'__`\\ \ \ \ \ \ / __`\ \ \ \ \ \/\ __/ \_\ \_ \_\ \_/\ \L\ \ \ \_\ \_\ \____\/\____\/\____\ \____/ \/_/\/_/\/____/\/____/\/____/\/___/ hi can i ask you a few questions? ok pls firstly, are you a man or a woman? man and gay u im a man where do you live? istanbul What is the first thing that pops into your head when i say poop? noth²ng nothing? how do you feel about poop? do you think its good or bad? you mean poop mus²c no i mean poop as in shit the brown stuff that comes from your anus bad why is it bad? you are realy sh²t and why is that? does poopsex.com disgust you? ok, so.. if i say "I want to poop in your mouth." what does that make you feel? angry? happy? pls be n²ce man chat n²ce th²ngok but i want to know how you feel about poop please, tell me.. ok pls you dont want to be n²ce i leave by how can i edit file in unix ? with a text editr but real men use magnetic tipped needles to directly write to the hd platter ahh what text editor ? *** TuCoWS has joined #hacktech Hola Intercambio utilidades, nuckes antinuckes, virus antivirus, troyanos antitroyanos, cortafuegos, antiflood, floods, crackers, antiBO antiNetbus, manuales sobre informatica en gral. como irc telnet o lo que sea, si tienen alguna las intercambiamos por correo electronico no por "dcc send", en especial busco spoofers y patchs para windows 98, quien este interesado escriba asi : /query tucows , y me encontraran, gracias *** TuCoWS has left #hacktech >:\ my mouse is fucked up i think its drunk lol * madwill hands praes mouse another beer >:\ he had enough i wrote 'CUNT' on it about 6 months ago i can still see it im sorry for nuking you earlier :( EVERYONE its ok, i dont think i was at the computer ADSL gets here in 6 months. MCX WANTS TO APOLOGIZE FOR HIS NUKING [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] [ b0g article # 11 ::::::::::::::::::::::::::::::::::::::::::::: b0g ] [ ::::::::: notes from the editor û k-rad-bob û 808@c2i.net :::::::: ] [ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ] AGH! So much work. Editing this issue has been hell, but still it has been a joy. Issue two is out and we have proven that we arenÆt a one time only zine, like *cough* pursuit and *cough* b4b0 and *cough* phrack. Also the feedback we have been receiving has been nothing less but heartwarming. Now all that is left to be said is: Contribute or die! Link our site or die! Mass forward our URL to everyone on your icq, email it to everyone you can, and Spam all the Usenet groups with it! This issue could be better but due to the fact that our domain is finally up and running we are all exited so here goes nothing. Official b0g site: http://www.b0g.org Contact: irc in #k-rad on undernet By email: b0g@b0g.org Contributions can be sent to contribute@b0g.org Thats all :) Shouts and hiÆs goes out to all of #k-rad #hacktech #hackuk #whhs and to all the other undernet dogs!