A.B.P

Comp. Talk
Home
STAFF
Contact us
Member page
Wall of Shame
Wall Of Fame
Just yap...
Computer Talk
Our Pics
BRL Raido
I warp

Types of OS

COMMON QUESTIONS:
B-01. How do I send fakemail?
                                    
                                    Telnet to port 25 of the machine you want the mail to appear to
                                    originate from.  This will connect you directly to the SMTP (Simple Mail
                                    Transfer Protocol) daemon running on that host. Then, enter SMTP
                                    commands by hand directly to the SMTP daemon.
                                    
                                    Enter your message as in this example:
                                    
                                    HELO bellcore.com
                                    MAIL FROM:voyager@bellcore.com
                                    RCPT TO:president@whitehouse.gov
                                    DATA
                                    Date: Thu, 31 Dec 1998 12:16:35 -0500 (EST)
                                    From: voyager@bellcore.com (The Voyager)
                                    To: president@whitehouse.gov
                                    Subject: Clipper
                                    Reply-To: voyager@bellcore.com
                                    
                                    Please discontinue your silly Clipper initiative.
                                    .
                                    QUIT
                                    
                                    On systems that have RFC 931 implemented, spoofing your "MAIL FROM:"
                                    line will not work.  Test by sending yourself fakemail first.
                                    
                                    Newer SMTP daemons, such as smail 3.1.29.1+ or sendmail 8.7+, perform an
                                    identd check when you connect to them.  These SMTP daemons are
                                    impossible to completely spoof without first spoofing identd.
                                    
                                    For more information read RFC 822 (Standard for the format of ARPA
                                    Internet text messages).
                                    
                                    Note that the headers inside the DATA statement should be optional, but
                                    are actually required by some mailers.  Even when not required, they
                                    often help your message appear genuine.
                                    
                                    To locate an SMTP server for a domain, use `nslookup` and set your
                                    querytype to MX.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-02. How do I fake posts and control messages to Usenet?
                                    
                                    From: Anonymous (Pretending to be: tale@uunet.uu.net (David C
                                    Lawrence))
                                    Subject: FAQ: Better living through forgery
                                    Date: 19 Mar 1995 02:37:09 GMT
                                    
                                    Anonymous netnews without "anonymous" remailers
                                    
                                    Inspired by the recent "NetNews Judges-L" events, this file has been
                                    updated to cover forging control messages, so you can do your own
                                    article canceling and create and destroy your own newsgroups.
                                    
                                    Save any news article to a file.  We'll call it "hak" in this example.
                                    
                                    Edit "hak", and remove any header lines of the form
                                    
                                    From some!random!path!user   (note: "From ", not "From: "!!!)
                                    Article:
                                    Lines:
                                    Xref:
                                    
                                    Shorten the Path: header down to its LAST two or three "bangized"
                                    components. This is to make the article look like it was posted from
                                    where it really was posted, and originally hit the net at or near the
                                    host you send it to.  Or you can construct a completely new Path: line
                                    to reflect your assumed alias.
                                    
                                    Make some change to the Message-ID: field, that isn't likely to be
                                    duplicated anywhere.  This is usually best done by adding a couple of
                                    random characters to the part before the @, since news posting programs
                                    generally use a fixed-length field to generate these IDs.
                                    
                                    Change the other headers to say what you like -- From:, Newsgroups:,
                                    Sender:, etc.  Replace the original message text with your message.  If
                                    you are posting to a moderated group or posting a control message,
                                    remember to put in an Approved: header to bypass the moderation
                                    mechanism.
                                    
                                    To specifically cancel someone else's article, you need its message-ID.
                                    Your message headers, in addition to what's already there, should also
                                    contain the following with that message-ID in it.  This makes it a
                                    "control message". NOTE: control messages generally require an
                                    Approved: header as well, so you should add one.
                                    
                                    Subject: cmsg cancel <xb8700A@twits.site.com>
                                    Control: cancel <xb8700A@twits.site.com>
                                    Approved: luser@twits.site.com
                                    
                                    Newsgroups are created and destroyed with control messages, too.  If
                                    you wanted to create, for instance, comp.misc.microsoft.sucks, your
                                    control headers would look like
                                    
                                    Subject: cmsg newgroup comp.misc.microsoft.sucks
                                    Control: newgroup comp.misc.microsoft.sucks
                                    
                                    Add on the string "moderated" at the end of these if you want the group
                                    to be "moderated with no moderator" as with alt.hackers.  Somewhere in
                                    the body of your message, you should include the following text,
                                    changed with the description of the group you're creating:
                                    
                                    For your newsgroups file:
                                    comp.misc.microsoft.sucks               We don't do windows
                                    
                                    To remove a group, substitute "rmgroup" for "newgroup" in the header
                                    lines above.  Keep in mind that most sites run all "rmgroup" requests
                                    through a human news-master, who may or may not decide to honor it.
                                    Group creation is more likely to be automatic than deletion at most
                                    installations.  Any newsgroup changes are more likely to take effect if
                                    the come from me, since my name is hardwired into many of the NNTP
                                    control scripts, so using the From: and Approved: headers from this
                                    posting is recommended.
                                    
                                    Save your changed article, check it to make sure it contains NO
                                    reference to yourself or your own site, and send it to your favorite
                                    NNTP server that permits transfers via the IHAVE command, using the
                                    following script:
                                    
                                    =======================
                                    #! /bin/sh
                                    ## Post an article via IHAVE.
                                    ## args: filename server
                                    
                                    if test "$2" = "" ; then
                                    echo usage: $0 filename server
                                    exit 1
                                    fi
                                    if test ! -f $1 ; then
                                    echo $1: not found
                                    exit 1
                                    fi
                                    
                                    # suck msg-id out of headers, keep the brackets
                                    msgid=`sed -e '/^$/,$d' $1 | egrep '^[Mm]essage-[Ii][Dd]: ' | \
                                    sed 's/.*-[Ii][Dd]: file://'`
                                    echo $msgid
                                    
                                    ( sleep 5
                                    echo IHAVE $msgid
                                    sleep 5
                                    cat $1
                                    sleep 1
                                    echo "."
                                    sleep 1
                                    echo QUIT ) | telnet $2 119
                                    =======================
                                    
                                    If your article doesn't appear in a day or two, try a different server.
                                    They are easy to find.  Here's a script that will break a large file
                                    full of saved netnews into a list of hosts to try.  Edit the output of
                                    this if you want, to remove obvious peoples' names and other trash.
                                    
                                    =======================
                                    #! /bin/sh
                                    FGV='fgrep -i -v'
                                    egrep '^Path: ' $1 | sed -e 's/^Path: file://' -e 's/!/\
                                    /g' | sort -u | fgrep . | $FGV .bitnet | $FGV .uucp
                                    =======================
                                    
                                    Once you have your host list, feed it to the following script.
                                    
                                    =======================
                                    #! /bin/sh
                                    
                                    while read xx ; do
                                    if test "$xx" = "" ; then continue;
                                    fi
                                    echo === $xx
                                    ( echo open $xx 119
                                    sleep 5
                                    echo ihave IamSOk00l@podunk.edu
                                    sleep 4
                                    echo .
                                    echo quit
                                    sleep 1
                                    echo quit
                                    ) | telnet
                                    done
                                    =======================
                                    
                                    If the above script is called "findem" and you're using csh, you should
                                    do
                                    
                                    findem < list >& outfile
                                    
                                    so that ALL output from telnet is captured.  This takes a long time,
                                    but when it finishes, edit "outfile" and look for occurrences of "335".
                                    These mark answers from servers that might be willing to accept an
                                    article.  This isn't a completely reliable indication, since some
                                    servers respond with acceptance and later drop articles.  Try a given
                                    server with a slightly modified repeat of someone else's message, and
                                    see if it eventually appears.
                                    
                                    Sometimes the telnets get into an odd state, and freeze, particularly
                                    when a host is refusing NNTP connections.  If you manually kill these
                                    hung telnet processes but not the main script, the script will continue
                                    on.  In other words, you may have to monitor the finding script a
                                    little while it is running.
                                    
                                    You will notice other servers that don't necessarily take an IHAVE, but
                                    say "posting ok".  You can probably do regular POSTS through these, but
                                    they will add an "NNTP-Posting-Host: " header containing the machine
                                    YOU came from and are therefore unsuitable for completely anonymous
                                    use.
                                    
                                    PLEASE USE THE INFORMATION IN THIS ARTICLE FOR CONSTRUCTIVE PURPOSES
                                    ONLY.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-03. How do I hack ChanOp on IRC?
                                    
                                    Find a server that is split from the rest of IRC and create your own
                                    channel there using the name of the channel you want ChanOp on.  When
                                    that server reconnects to the net, you will have ChanOp on the real
                                    channel.  If you have ServerOp on a server, you can cause it to split
                                    on purpose.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-04. How do I modify the IRC client to hide my real username?
                                    
                                    Note: This FAQ answer was written by someone else, but I do not know
                                    who.
                                    If you know who originally wrote this, please e-mail me.
                                    
                                    -- BEGIN QUOTED TEXT --
                                    
                                    Applying these changes to the source code for your ircII client and
                                    recompiling gives you a new ircII command: /NEWUSER.  This new command
                                    can be used as follows:
                                    
                                    *   /NEWUSER <new_username> [new_IRCNAME]
                                    *       <new_username> is a new username to use and is required
                                    *       [new_IRCNAME] is a new IRCNAME string to use and is optional
                                    *   This will disconnect you from your server and reconnect using
                                    *     the new information given.  You will rejoin all channel you
                                    *     are currently on and keep your current nickname.
                                    
                                    The effect is basically changing your username/IRCname on the fly.
                                    Although you are disconnected from your server and reconnected, the
                                    ircII client is never exited, thus keeping all your state information
                                    and aliases intact.  This is ideal for bots that wish to be REALLY
                                    obnoxious in ban evasion. ;)
                                    
                                    As this is now a new command in ircII, it can be used in scripts. Be
                                    aware that the reconnect associated with the NEWUSER command takes time,
                                    so TIMER any commands that must immediately follow the NEWUSER. For
                                    example... ban evasion made easy (but beware infinite reconnects when
                                    your site is banned):
                                    
                                    on ^474 * {
                                    echo *** Banned from channel $1
                                    if ($N == [AnnMurray]) {
                                    nick $randomstring
                                    join $1
                                    } {
                                    nick AnnMurray
                                    newuser $randomstring
                                    timer 5 join $1
                                    }
                                    }
                                    
                                    Or just to be annoying... a /BE <nickname> alias that will assume a
                                    person's username and IRCNAME:
                                    
                                    alias be {
                                    ^on ^311 * {
                                    ^on 311 -*
                                    newuser $2 $5-
                                    }
                                    whois $0
                                    }
                                    
                                    Now... in order to add this command to your ircII client, get the latest
                                    client source (or whatever client source you are using).  Cd into the
                                    source directory and edit the file "edit.c".  Make the following
                                    changes:
                                    
                                    Locate the line which reads:
                                    extern  void    server();
                                    
                                    Insert the following line after it:
                                    static  void    newuser();
                                    
                                    This pre-defines a new function "newuser()" that we'll add later.
                                    
                                    
                                    Now, locate the line which reads:
                                    "NAMES",        "NAMES",        funny_stuff,            0,
                                    
                                    Insert the following line after it:
                                    "NEWUSER",      NULL,           newuser,                0,
                                    
                                    This adds a new command NEWUSER to the list of valid IRCII commands, and
                                    tells it to call our new function newuser() to perform it.
                                    
                                    
                                    Finally, go the bottom of the file and add the following code as our new
                                    function "newuser()":
                                    
                                    /*
                                    * newuser: the /NEWUSER command.  Added by Hendrix
                                    *   Parameters as follows:
                                    *     /NEWUSER <new_username> [new_IRCNAME]
                                    *       <new_username> is a new username to use and is required
                                    *       [new_IRCNAME] is a new IRCNAME string to use and is optional
                                    *   This will disconnect you from your server and reconnect using
                                    *     the new information given.  You will rejoin all channels you
                                    *     are currently on and keep your current nickname.
                                    */
                                    
                                    static void    newuser(command, args)
                                    char    *command,
                                    *args;
                                    {
                                    char    *newuname;
                                    
                                    if (newuname = next_arg(args, &args))
                                    {
                                    strmcpy(username, newuname, NAME_LEN);
                                    if (*args)
                                    strmcpy(realname, args, REALNAME_LEN);
                                    say("Reconnecting to server...");
                                    close_server(from_server);
                                    if (connect_to_server(server_list[from_server].name,
                                    server_list[from_server].port, primary_server) !=
                                    -1)
                                    {
                                    change_server_channels(primary_server,
                                    from_server);
                                    set_window_server(-1, from_server, 1);
                                    }
                                    else
                                    say("Unable to reconnect. Use /SERVER to
                                    connect.");
                                    }
                                    else
                                    say("You must specify a username and, optionally, an
                                    IRCNAME");
                                    }
                                    
                                    -- END QUOTED TEXT --
                                    
                                    /NEWUSER will not hide you from a CTCP query.  To do that, modify ctcp.c
                                    as shown in the following diff and set an environment variable named
                                    CTCPFINGER with the information you would like to display when queried.
                                    
                                    *** ctcp.old
                                    --- ctcp.c
                                    ***************
                                    *** 334 ****
                                    !       char    c;
                                    --- 334 ---
                                    !       char    c, *fing;
                                    ***************
                                    *** 350,354 ****
                                    !               if (pwd = getpwuid(uid))
                                    {
                                    char    *tmp;
                                    --- 350,356 ----
                                    !               if (fing = getenv("CTCPFINGER"))
                                    !                       send_ctcp_reply(from, ctcp->name, fing, diff,
                                    c);
                                    !               else if (pwd = getpwuid(uid))
                                    {
                                    char    *tmp;
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-05. What is sniffing?
                                    
                                    Sniffing is listening (with software) to the raw network device for
                                    packets that interest you.  When your software sees a packet that fits
                                    certain criteria, it logs it to a file.  The most common criteria for an
                                    interesting packet is one that contains words like "login" or
                                    "password."
                                    
                                    You will have to obtain or code a sniffer that is capable of working
                                    with the appropriate type of network interface.  Popular network
                                    interfaces include NIT (Network Interface Tap), and DLPI (Data Link
                                    Provider Interface), and BPF (Berkeley Packet Filter.)
                                    
                                    LLI was a network interface used by SCO, which has been augmented with
                                    DLPI support as of SCO OpenServer Release V.  NIT was a network
                                    interface used by Sun, but has been replaced in later releases of
                                    SunOS/Solaris with DLPI.  Ultrix supported the Ultrix Packet Filter
                                    before Digital implemented support for BPF.
                                    
                                    DLPI is supported under current releases of System V Release 4,
                                    SunOS/Solaris, AIX, HP/UX, UnixWare, Irix, and MacOS.  DLPI is partially
                                    supported under Digital Unix. Sun DLPI version 2 supports Ethernet, X.25
                                    LAPB, SDLC, ISDN LAPD, CSMA/CD, FDDI, token ring, token bus, and Bisync
                                    as data-link protocols.  The DLPI network interface provided with HP/UX
                                    supports Ethernet/IEEE 802.3, IEEE 802.5, FDDI, and Fibre Channel.
                                    
                                    For more information regarding DLPI, access the DLPI Specification at
                                    http://fiver.sns.com/solaris_x86/x86_drivers/ or FTP the paper "How to
                                    Use DLPI in Solaris 2.x" by Neal Nuckolls from newstop.ebay.sun.com in
                                    /sun/SunOS5.0/dltest.tar.Z.
                                    
                                    BPF is supported under current releases of BSD and Digital Unix, and has
                                    been ported to SunOS and Solaris.  AIX supports BPF reads, but not
                                    writes.  A BPF library is available for Linux.
                                    
                                    Many sniffers are available for various operating systems:
                                    
                                    OS              Sniffer
                                    ~~              ~~~~~~~
                                    4.3/4.4 BSD     tcpdump            /* Available via anonymous ftp     */
                                    FreeBSD         tcpdump            /* Available via anonymous ftp at  */
                                    /* gatekeeper.dec.com
                                    /* /.0/BSD/FreeBSD/FreeBSD-current/src/contrib/tcpdump/ */
                                    NetBSD          tcpdump            /* Available via anonymous ftp at  */
                                    /* gatekeeper.dec.com
                                    /* /.0/BSD/NetBSD/NetBSD-current/src/usr.sbin/ */
                                    DEC Unix        tcpdump            /* Available via anonymous ftp     */
                                    DEC Ultrix      tcpdump            /* Available via anonymous ftp     */
                                    HP/UX           nettl  (monitor)
                                    & netfmt (display)
                                    nfswatch           /* Available via anonymous ftp     */
                                    Linux           tcpdump            /* Available via anonymous ftp at  */
                                    /* sunsite.unc.edu                 */
                                    /* /pub/Linux/system/Network/management/ */
                                    SGI Irix        nfswatch           /* Available via anonymous ftp     */
                                    Etherman
                                    tcpdump            /* Available via anonymous ftp     */
                                    Solaris         snoop
                                    tcpdump
                                    SunOS           etherfind
                                    nfswatch           /* Available via anonymous ftp     */
                                    tcpdump            /* Available via anonymous ftp     */
                                    DOS             ETHLOAD            /* Available via anonymous ftp as  */
                                    /* ethld104.zip                    */
                                    The Gobbler        /* Available via anonymous ftp     */
                                    LanPatrol
                                    LanWatch
                                    Netmon
                                    Netwatch
                                    Netzhack           /* Available via anonymous ftp at  */
                                    /* mistress.informatik.unibw-muenchen.de */
                                    /* /pub/assembler/netzhack.mac           */
                                    Macintosh       Etherpeek
                                    NetMinderEthernet  /* Commercial */
                                    
                                    [Note from Dan Mellem: VMS running MULTINET has a packet sniffer: $ mu
                                    tcpdump and $ mu tcpview, but these are privileged commands. H.]
                                    
                                    Here is source code for a sample ethernet sniffer using NIT under SunOS
                                    4.x:
                                    
                                    /* Esniff.c */
                                    
                                    #include <stdio.h>
                                    #include <ctype.h>
                                    #include <string.h>
                                    
                                    #include <sys/time.h>
                                    #include <sys/file.h>
                                    #include <sys/stropts.h>
                                    #include <sys/signal.h>
                                    #include <sys/types.h>
                                    #include <sys/socket.h>
                                    #include <sys/ioctl.h>
                                    
                                    #include <net/if.h>
                                    #include <net/nit_if.h>
                                    #include <net/nit_buf.h>
                                    #include <net/if_arp.h>
                                    
                                    #include <netinet/in.h>
                                    #include <netinet/if_ether.h>
                                    #include <netinet/in_systm.h>
                                    #include <netinet/ip.h>
                                    #include <netinet/udp.h>
                                    #include <netinet/ip_var.h>
                                    #include <netinet/udp_var.h>
                                    #include <netinet/in_systm.h>
                                    #include <netinet/tcp.h>
                                    #include <netinet/ip_icmp.h>
                                    
                                    #include <netdb.h>
                                    #include <arpa/inet.h>
                                    
                                    #define ERR stderr
                                    
                                    char    *malloc();
                                    char    *device,
                                    *ProgName,
                                    *LogName;
                                    FILE    *LOG;
                                    int     debug=0;
                                    
                                    #define NIT_DEV     "/dev/nit"
                                    #define CHUNKSIZE   4096        /* device buffer size */
                                    int     if_fd = -1;
                                    int     Packet[CHUNKSIZE+32];
                                    
                                    void Pexit(err,msg)
                                    int err; char *msg;
                                    { perror(msg);
                                    exit(err); }
                                    
                                    void Zexit(err,msg)
                                    int err; char *msg;
                                    { fprintf(ERR,msg);
                                    exit(err); }
                                    
                                    #define IP          ((struct ip *)Packet)
                                    #define IP_OFFSET   (0x1FFF)
                                    #define SZETH       (sizeof(struct ether_header))
                                    #define IPLEN       (ntohs(ip->ip_len))
                                    #define IPHLEN      (ip->ip_hl)
                                    #define TCPOFF      (tcph->th_off)
                                    #define IPS         (ip->ip_src)
                                    #define IPD         (ip->ip_dst)
                                    #define TCPS        (tcph->th_sport)
                                    #define TCPD        (tcph->th_dport)
                                    #define IPeq(s,t)   ((s).s_addr == (t).s_addr)
                                    
                                    #define TCPFL(FLAGS) (tcph->th_flags & (FLAGS))
                                    
                                    #define MAXBUFLEN  (128)
                                    time_t  LastTIME = 0;
                                    
                                    struct CREC {
                                    struct CREC *Next,
                                    *Last;
                                    time_t  Time;              /* start time */
                                    struct in_addr SRCip,
                                    DSTip;
                                    u_int   SRCport,           /* src/dst ports */
                                    DSTport;
                                    u_char  Data[MAXBUFLEN+2]; /* important stuff :-) */
                                    u_int   Length;            /* current data length */
                                    u_int   PKcnt;             /* # pkts */
                                    u_long  LASTseq;
                                    };
                                    
                                    struct CREC *CLroot = NULL;
                                    
                                    char *Symaddr(ip)
                                    register struct in_addr ip;
                                    { register struct hostent *he =
                                    gethostbyaddr((char *)&ip.s_addr, sizeof(struct in_addr),AF_INET);
                                    
                                    return( (he)?(he->h_name):(inet_ntoa(ip)) );
                                    }
                                    
                                    char *TCPflags(flgs)
                                    register u_char flgs;
                                    { static char iobuf[8];
                                    #define SFL(P,THF,C) iobuf[P]=((flgs & THF)?C:'-')
                                    
                                    SFL(0,TH_FIN, 'F');
                                    SFL(1,TH_SYN, 'S');
                                    SFL(2,TH_RST, 'R');
                                    SFL(3,TH_PUSH,'P');
                                    SFL(4,TH_ACK, 'A');
                                    SFL(5,TH_URG, 'U');
                                    iobuf[6]=0;
                                    return(iobuf);
                                    }
                                    
                                    char *SERVp(port)
                                    register u_int port;
                                    { static char buf[10];
                                    register char *p;
                                    
                                    switch(port) {
                                    case IPPORT_LOGINSERVER: p="rlogin"; break;
                                    case IPPORT_TELNET:      p="telnet"; break;
                                    case IPPORT_SMTP:        p="smtp"; break;
                                    case IPPORT_FTP:         p="ftp"; break;
                                    default: sprintf(buf,"%u",port); p=buf; break;
                                    }
                                    return(p);
                                    }
                                    
                                    char *Ptm(t)
                                    register time_t *t;
                                    { register char *p = ctime(t);
                                    p[strlen(p)-6]=0; /* strip " YYYY\n" */
                                    return(p);
                                    }
                                    
                                    char *NOWtm()
                                    { time_t tm;
                                    time(&tm);
                                    return( Ptm(&tm) );
                                    }
                                    
                                    #define MAX(a,b) (((a)>(b))?(a):(b))
                                    #define MIN(a,b) (((a)<(b))?(a):(b))
                                    
                                    /* add an item */
                                    #define ADD_NODE(SIP,DIP,SPORT,DPORT,DATA,LEN) { \
                                    register struct CREC *CLtmp = \
                                    (struct CREC *)malloc(sizeof(struct CREC)); \
                                    time( &(CLtmp->Time) ); \
                                    CLtmp->SRCip.s_addr = SIP.s_addr; \
                                    CLtmp->DSTip.s_addr = DIP.s_addr; \
                                    CLtmp->SRCport = SPORT; \
                                    CLtmp->DSTport = DPORT; \
                                    CLtmp->Length = MIN(LEN,MAXBUFLEN); \
                                    bcopy( (u_char *)DATA, (u_char *)CLtmp->Data, CLtmp->Length); \
                                    CLtmp->PKcnt = 1; \
                                    CLtmp->Next = CLroot; \
                                    CLtmp->Last = NULL; \
                                    CLroot = CLtmp; \
                                    }
                                    
                                    register struct CREC *GET_NODE(Sip,SP,Dip,DP)
                                    register struct in_addr Sip,Dip;
                                    register u_int SP,DP;
                                    { register struct CREC *CLr = CLroot;
                                    
                                    while(CLr != NULL) {
                                    if( (CLr->SRCport == SP) && (CLr->DSTport == DP) &&
                                    IPeq(CLr->SRCip,Sip) && IPeq(CLr->DSTip,Dip) )
                                    break;
                                    CLr = CLr->Next;
                                    }
                                    return(CLr);
                                    }
                                    
                                    #define ADDDATA_NODE(CL,DATA,LEN) { \
                                    bcopy((u_char *)DATA, (u_char *)&CL->Data[CL->Length],LEN); \
                                    CL->Length += LEN; \
                                    }
                                    
                                    #define PR_DATA(dp,ln) {    \
                                    register u_char lastc=0; \
                                    while(ln-- >0) { \
                                    if(*dp < 32) {  \
                                    switch(*dp) { \
                                    case '\0': if((lastc=='\r') || (lastc=='\n') || lastc=='\0') \
                                    break; \
                                    case '\r': \
                                    case '\n': fprintf(LOG,"\n     : "); \
                                    break; \
                                    default  : fprintf(LOG,"^%c", (*dp + 64)); \
                                    break; \
                                    } \
                                    } else { \
                                    if(isprint(*dp)) fputc(*dp,LOG); \
                                    else fprintf(LOG,"(%d)",*dp); \
                                    } \
                                    lastc = *dp++; \
                                    } \
                                    fflush(LOG); \
                                    }
                                    
                                    void END_NODE(CLe,d,dl,msg)
                                    register struct CREC *CLe;
                                    register u_char *d;
                                    register int dl;
                                    register char *msg;
                                    {
                                    fprintf(LOG,"\n-- TCP/IP LOG -- TM: %s --\n", Ptm(&CLe->Time));
                                    fprintf(LOG," PATH: %s(%s) =>",
                                    Symaddr(CLe->SRCip),SERVp(CLe->SRCport));
                                    fprintf(LOG," %s(%s)\n", Symaddr(CLe->DSTip),SERVp(CLe->DSTport));
                                    fprintf(LOG," STAT: %s, %d pkts, %d bytes [%s]\n",
                                    NOWtm(),CLe->PKcnt,(CLe->Length+dl),msg);
                                    fprintf(LOG," DATA: ");
                                    { register u_int i = CLe->Length;
                                    register u_char *p = CLe->Data;
                                    PR_DATA(p,i);
                                    PR_DATA(d,dl);
                                    }
                                    
                                    fprintf(LOG,"\n-- \n");
                                    fflush(LOG);
                                    
                                    if(CLe->Next != NULL)
                                    CLe->Next->Last = CLe->Last;
                                    if(CLe->Last != NULL)
                                    CLe->Last->Next = CLe->Next;
                                    else
                                    CLroot = CLe->Next;
                                    free(CLe);
                                    }
                                    
                                    /* 30 mins (x 60 seconds) */
                                    #define IDLE_TIMEOUT 1800
                                    #define IDLE_NODE() { \
                                    time_t tm; \
                                    time(&tm); \
                                    if(LastTIME<tm) { \
                                    register struct CREC *CLe,*CLt = CLroot; \
                                    LastTIME=(tm+IDLE_TIMEOUT); tm-=IDLE_TIMEOUT; \
                                    while(CLe=CLt) { \
                                    CLt=CLe->Next; \
                                    if(CLe->Time <tm) \
                                    END_NODE(CLe,(u_char *)NULL,0,"IDLE TIMEOUT"); \
                                    } \
                                    } \
                                    }
                                    
                                    void filter(cp, pktlen)
                                    register char *cp;
                                    register u_int pktlen;
                                    {
                                    register struct ip     *ip;
                                    register struct tcphdr *tcph;
                                    
                                    { register u_short EtherType=ntohs(((struct
                                    ether_header *)cp)->ether_type);
                                    
                                    if(EtherType < 0x600) {
                                    EtherType = *(u_short *)(cp + SZETH + 6);
                                    cp+=8; pktlen-=8;
                                    }
                                    From: Harlequin <harlequin@fnord.org.uk>
                                    Subject: alt.2600 FAQ Revision .014 (2/4)
                                    Date: 27 August 1999 07:34
                                    
                                    
                                    if(EtherType != ETHERTYPE_IP) /* chuk it if its not IP */
                                    return;
                                    }
                                    
                                    /* ugh, gotta do an alignment :-( */
                                    bcopy(cp + SZETH, (char *)Packet,(int)(pktlen - SZETH));
                                    
                                    ip = (struct ip *)Packet;
                                    if( ip->ip_p != IPPROTO_TCP) /* chuk non tcp pkts */
                                    return;
                                    tcph = (struct tcphdr *)(Packet + IPHLEN);
                                    
                                    if(!( (TCPD == IPPORT_TELNET) ||
                                    (TCPD == IPPORT_LOGINSERVER) ||
                                    (TCPD == IPPORT_FTP)
                                    )) return;
                                    
                                    { register struct CREC *CLm;
                                    register int length = ((IPLEN - (IPHLEN * 4)) - (TCPOFF * 4));
                                    register u_char *p = (u_char *)Packet;
                                    
                                    p += ((IPHLEN * 4) + (TCPOFF * 4));
                                    
                                    if(debug) {
                                    fprintf(LOG,"PKT: (%s %04X) ", TCPflags(tcph->th_flags),length);
                                    fprintf(LOG,"%s[%s] => ", inet_ntoa(IPS),SERVp(TCPS));
                                    fprintf(LOG,"%s[%s]\n", inet_ntoa(IPD),SERVp(TCPD));
                                    }
                                    
                                    if( CLm = GET_NODE(IPS, TCPS, IPD, TCPD) ) {
                                    
                                    CLm->PKcnt++;
                                    
                                    if(length>0)
                                    if( (CLm->Length + length) < MAXBUFLEN ) {
                                    ADDDATA_NODE( CLm, p,length);
                                    } else {
                                    END_NODE( CLm, p,length, "DATA LIMIT");
                                    }
                                    
                                    if(TCPFL(TH_FIN|TH_RST)) {
                                    END_NODE( CLm, (u_char *)NULL,0,
                                    TCPFL(TH_FIN)?"TH_FIN":"TH_RST" );
                                    }
                                    
                                    } else {
                                    
                                    if(TCPFL(TH_SYN)) {
                                    ADD_NODE(IPS,IPD,TCPS,TCPD,p,length);
                                    }
                                    
                                    }
                                    
                                    IDLE_NODE();
                                    
                                    }
                                    
                                    }
                                    
                                    /* signal handler
                                    */
                                    void death()
                                    { register struct CREC *CLe;
                                    
                                    while(CLe=CLroot)
                                    END_NODE( CLe, (u_char *)NULL,0, "SIGNAL");
                                    
                                    fprintf(LOG,"\nLog ended at => %s\n",NOWtm());
                                    fflush(LOG);
                                    if(LOG != stdout)
                                    fclose(LOG);
                                    exit(1);
                                    }
                                    
                                    /* opens network interface, performs ioctls and reads from it,
                                    * passing data to filter function
                                    */
                                    void do_it()
                                    {
                                    int cc;
                                    char *buf;
                                    u_short sp_ts_len;
                                    
                                    if(!(buf=malloc(CHUNKSIZE)))
                                    Pexit(1,"Eth: malloc");
                                    
                                    /* this /dev/nit initialization code pinched from etherfind */
                                    {
                                    struct strioctl si;
                                    struct ifreq    ifr;
                                    struct timeval  timeout;
                                    u_int  chunksize = CHUNKSIZE;
                                    u_long if_flags  = NI_PROMISC;
                                    
                                    if((if_fd = open(NIT_DEV, O_RDONLY)) < 0)
                                    Pexit(1,"Eth: nit open");
                                    
                                    if(ioctl(if_fd, I_SRDOPT, (char *)RMSGD) < 0)
                                    Pexit(1,"Eth: ioctl (I_SRDOPT)");
                                    
                                    si.ic_timout = INFTIM;
                                    
                                    if(ioctl(if_fd, I_PUSH, "nbuf") < 0)
                                    Pexit(1,"Eth: ioctl (I_PUSH \"nbuf\")");
                                    
                                    timeout.tv_sec = 1;
                                    timeout.tv_usec = 0;
                                    si.ic_cmd = NIOCSTIME;
                                    si.ic_len = sizeof(timeout);
                                    si.ic_dp  = (char *)&timeout;
                                    if(ioctl(if_fd, I_STR, (char *)&si) < 0)
                                    Pexit(1,"Eth: ioctl (I_STR: NIOCSTIME)");
                                    
                                    si.ic_cmd = NIOCSCHUNK;
                                    si.ic_len = sizeof(chunksize);
                                    si.ic_dp  = (char *)&chunksize;
                                    if(ioctl(if_fd, I_STR, (char *)&si) < 0)
                                    Pexit(1,"Eth: ioctl (I_STR: NIOCSCHUNK)");
                                    
                                    strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name));
                                    ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0';
                                    si.ic_cmd = NIOCBIND;
                                    si.ic_len = sizeof(ifr);
                                    si.ic_dp  = (char *)&ifr;
                                    if(ioctl(if_fd, I_STR, (char *)&si) < 0)
                                    Pexit(1,"Eth: ioctl (I_STR: NIOCBIND)");
                                    
                                    si.ic_cmd = NIOCSFLAGS;
                                    si.ic_len = sizeof(if_flags);
                                    si.ic_dp  = (char *)&if_flags;
                                    if(ioctl(if_fd, I_STR, (char *)&si) < 0)
                                    Pexit(1,"Eth: ioctl (I_STR: NIOCSFLAGS)");
                                    
                                    if(ioctl(if_fd, I_FLUSH, (char *)FLUSHR) < 0)
                                    Pexit(1,"Eth: ioctl (I_FLUSH)");
                                    }
                                    
                                    while ((cc = read(if_fd, buf, CHUNKSIZE)) >= 0) {
                                    register char *bp = buf,
                                    *bufstop = (buf + cc);
                                    
                                    while (bp < bufstop) {
                                    register char *cp = bp;
                                    register struct nit_bufhdr *hdrp;
                                    
                                    hdrp = (struct nit_bufhdr *)cp;
                                    cp += sizeof(struct nit_bufhdr);
                                    bp += hdrp->nhb_totlen;
                                    filter(cp, (u_long)hdrp->nhb_msglen);
                                    }
                                    }
                                    Pexit((-1),"Eth: read");
                                    }
                                    /* Authorize your program, generate your own password and uncomment
                                    here */
                                    /* #define AUTHPASSWD "EloiZgZejWyms" */
                                    
                                    void getauth()
                                    { char *buf,*getpass(),*crypt();
                                    char pwd[21],prmpt[81];
                                    
                                    strcpy(pwd,AUTHPASSWD);
                                    sprintf(prmpt,"(%s)UP? ",ProgName);
                                    buf=getpass(prmpt);
                                    if(strcmp(pwd,crypt(buf,pwd)))
                                    exit(1);
                                    }
                                    */
                                    void main(argc, argv)
                                    int argc;
                                    char **argv;
                                    {
                                    char   cbuf[BUFSIZ];
                                    struct ifconf ifc;
                                    int    s,
                                    ac=1,
                                    backg=0;
                                    
                                    ProgName=argv[0];
                                    
                                    /*     getauth(); */
                                    
                                    LOG=NULL;
                                    device=NULL;
                                    while((ac<argc) && (argv[ac][0] == '-')) {
                                    register char ch = argv[ac++][1];
                                    switch(toupper(ch)) {
                                    case 'I': device=argv[ac++];
                                    break;
                                    case 'F': if(!(LOG=fopen((LogName=argv[ac++]),"a")))
                                    Zexit(1,"Output file cant be opened\n");
                                    break;
                                    case 'B': backg=1;
                                    break;
                                    case 'D': debug=1;
                                    break;
                                    default : fprintf(ERR,
                                    "Usage: %s [-b] [-d] [-i interface] [-f file]\n",
                                    ProgName);
                                    exit(1);
                                    }
                                    }
                                    
                                    if(!device) {
                                    if((s=socket(AF_INET, SOCK_DGRAM, 0)) < 0)
                                    Pexit(1,"Eth: socket");
                                    
                                    ifc.ifc_len = sizeof(cbuf);
                                    ifc.ifc_buf = cbuf;
                                    if(ioctl(s, SIOCGIFCONF, (char *)&ifc) < 0)
                                    Pexit(1,"Eth: ioctl");
                                    
                                    close(s);
                                    device = ifc.ifc_req->ifr_name;
                                    }
                                    
                                    fprintf(ERR,"Using logical device %s [%s]\n",device,NIT_DEV);
                                    fprintf(ERR,"Output to %s.%s%s",(LOG)?LogName:"stdout",
                                    (debug)?" (debug)":"",(backg)?" Backgrounding ":"\n");
                                    
                                    if(!LOG)
                                    LOG=stdout;
                                    
                                    signal(SIGINT, death);
                                    signal(SIGTERM,death);
                                    signal(SIGKILL,death);
                                    signal(SIGQUIT,death);
                                    
                                    if(backg && debug) {
                                    fprintf(ERR,"[Cannot bg with debug on]\n");
                                    backg=0;
                                    }
                                    
                                    if(backg) {
                                    register int s;
                                    
                                    if((s=fork())>0) {
                                    fprintf(ERR,"[pid %d]\n",s);
                                    exit(0);
                                    } else if(s<0)
                                    Pexit(1,"fork");
                                    
                                    if( (s=open("/dev/tty",O_RDWR))>0 ) {
                                    ioctl(s,TIOCNOTTY,(char *)NULL);
                                    close(s);
                                    }
                                    }
                                    fprintf(LOG,"\nLog started at => %s [pid %d]\n",NOWtm(),getpid());
                                    fflush(LOG);
                                    
                                    do_it();
                                    }
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-06. What is an Internet Outdial?
                                    
                                    An Internet outdial is a modem connected to the Internet than you can
                                    use to dial out.  Normal outdials will only call local numbers.  A GOD
                                    (Global OutDial) is capable of calling long distance.  Outdials are an
                                    inexpensive method of calling long distance BBS's.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-07. What are some Internet Outdials?
                                    
                                    This FAQ answer is excerpted from CoTNo #5:
                                    
                                    Internet Outdial List v3.0
                                    by Cavalier and DisordeR
                                    
                                    
                                    Introduction
                                    ------------
                                    There are several lists of Internet outdials floating around the net
                                    these days. The following is a compilation of other lists, as well as
                                    v2.0 by DeadKat(CoTNo issue 2, article 4). Unlike other lists where the
                                    author just ripped other people and released it, we have sat down and
                                    tested each one of these. Some of them we have gotten "Connection
                                    Refused" or it timed out while trying to connect...these have been
                                    labeled dead.
                                    
                                    
                                    Working Outdials
                                    ----------------
                                    as of 12/29/94
                                    
                                    NPA          IP Address                   Instructions
                                    ---          ----------                   ------------
                                    215          isn.upenn.edu                modem
                                    
                                    217          dialout.cecer.army.mil       atdt x,xxxXXXXX
                                    
                                    218          modem.d.umn.edu              atdt9,xxxXXXX
                                    
                                    303          yuma.acns.colostate.edu 3020
                                    
                                    412          myriad.pc.cc.cmu.edu 2600    Press D at the prompt
                                    
                                    
                                    412          gate.cis.pitt.edu            tn3270,
                                    connect dialout.pitt.edu,
                                    atdtxxxXXXX
                                    
                                    413          dialout2400.smith.edu   Ctrl } gets ENTER NUMBER: xxxxxxx
                                    
                                    502          outdial.louisville.edu
                                    
                                    502          uknet.uky.edu                connect kecnet
                                    @ dial: "outdial2400 or out"
                                    
                                    602          acssdial.inre.asu.edu        atdt8,,,,,[x][yyy]xxxyyyy
                                    
                                    614          ns2400.acs.ohio-state.edu
                                    
                                    614          ns9600.acs.ohio-state.edu
                                    
                                    713          128.249.27.153               atdt x,xxxXXXX
                                    
                                    714          modem.nts.uci.edu            atdt[area]0[phone]
                                    
                                    804          ublan.virginia.edu           connect hayes, 9,,xxx-xxxx
                                    
                                    804          ublan2.acc.virginia.edu      connect telnet
                                    connect hayes
                                    
                                    
                                    
                                    Need Password
                                    -------------
                                    204          dial.cc.umanitoba.ca
                                    206          rexair.cac.washington.edu    This is an unbroken password
                                    303          yuma.ACNS.ColoState.EDU      login: modem
                                    404          128.140.1.239                .modem8|CR
                                    415          annex132-1.EECS.Berkeley.EDU "dial1" or "dial2" or
                                    "dialer1"
                                    514          cartier.CC.UMontreal.CA      externe,9+number
                                    703          wal-3000.cns.vt.edu          dial2400 -aa
                                    
                                    
                                    Dead/No Connect
                                    ---------------
                                    
                                    201          idsnet
                                    202          modem.aidt.edu
                                    204          umnet.cc.manitoba.ca         "dial12" or "dial24"
                                    206          dialout24.cac.washington.edu
                                    207          modem-o.caps.maine.edu
                                    212          B719-7e.NYU.EDU              dial3/dial12/dial24
                                    212          B719-7f.NYU.EDU              dial3/dial12/dial24
                                    212          DIALOUT-1.NYU.EDU            dial3/dial12/dial24
                                    212          FREE-138-229.NYU.EDU         dial3/dial12/dial24
                                    212          UP19-4b.NYU.EDU              dial3/dial12/dial24
                                    215          wiseowl.ocis.temple.edu      "atz" "atdt 9xxxyyyy"
                                    218          aa28.d.umn.edu               "cli" "rlogin modem"
                                    at "login:"  type "modem"
                                    218          modem.d.umn.edu              Hayes 9,XXX-XXXX
                                    301          dial9600.umd.edu
                                    305          alcat.library.nova.edu
                                    305          office.cis.ufl.edu
                                    307          modem.uwyo.edu               Hayes  0,XXX-XXXX
                                    313          35.1.1.6                     dial2400-aa or dial1200-aa
                                    or dialout
                                    402          dialin.creighton.edu
                                    402          modem.criegthon.edu
                                    404          broadband.cc.emory.edu       ".modem8" or ".dialout"
                                    408          dialout.scu.edu
                                    408          dialout1200.scu.edu
                                    408          dialout2400.scu.edu
                                    408          dialout9600.scu.edu
                                    413          dialout.smith.edu
                                    414          modems.uwp.edu
                                    416          annex132.berkely.edu         atdt 9,,,,, xxx-xxxx
                                    416          pacx.utcs.utoronto.ca        modem
                                    503          dialout.uvm.edu
                                    513          dialout24.afit.af.mil
                                    513          r596adi1.uc.edu
                                    514          pacx.CC.UMontreal.CA         externe#9 9xxx-xxxx
                                    517          engdial.cl.msu.edu
                                    602          dial9600.telcom.arizona.edu
                                    603          dialout1200.unh.edu
                                    604          dial24-nc00.net.ubc.ca
                                    604          dial24-nc01.net.ubc.ca
                                    604          dial96-np65.net.ubc.ca
                                    604          gmodem.capcollege.bc.ca
                                    604          hmodem.capcollege.bc.ca
                                    609          128.119.131.11X (X= 1 - 4)   Hayes
                                    609          129.119.131.11x  (x = 1 to 4)
                                    609          wright-modem-1.rutgers.edu
                                    609          wright-modem-2.rutgers.edu
                                    612          modem_out12e7.atk.com
                                    612          modem_out24n8.atk.com
                                    614          ns2400.ircc.ohio-state.edu   "dial"
                                    615          dca.utk.edu                  dial2400 D 99k #
                                    615          MATHSUN23.MATH.UTK.EDU       dial 2400  d  99Kxxxxxxx
                                    616          modem.calvin.edu
                                    617          128.52.30.3                  2400baud
                                    617          dialout.lcs.mit.edu
                                    617          dialout1.princeton.edu
                                    617          isdn3.Princeton.EDU
                                    617          jadwingymkip0.Princeton.EDU
                                    617          lord-stanley.Princeton.EDU
                                    617          mpanus.Princeton.EDU
                                    617          mrmodem.wellesley.edu
                                    617          old-dialout.Princeton.EDU
                                    617          stagger.Princeton.EDU
                                    617          sunshine-02.lcs.mit.edu
                                    617          waddle.Princeton.EDU
                                    619          128.54.30.1                  atdt [area][phone]
                                    619          dialin.ucsd.edu              "dialout"
                                    703          modem_pool.runet.edu
                                    703          wal-3000.cns.vt.edu
                                    713          128.249.27.154              "c modem96"  "atdt 9xxx-xxxx"
                                    or "Hayes"
                                    713          modem12.bcm.tmc.edu
                                    713          modem24.bcm.tmc.edu
                                    713          modem24.bcm.tmc.edu
                                    714          mdmsrv7.sdsu.edu             atdt 8xxx-xxxx
                                    714          modem24.nts.uci.edu
                                    714          pub-gopher.cwis.uci.edu
                                    801          dswitch.byu.edu              "C Modem"
                                    808          irmodem.ifa.hawaii.edu
                                    902          star.ccs.tuns.ca             "dialout"
                                    916          129.137.33.72
                                    916          cc-dnet.ucdavis.edu          connect hayes/dialout
                                    916          engr-dnet1.engr.ucdavis.edu  UCDNET <ret> C KEYCLUB <ret>
                                    ???          128.119.131.11X              (1 - 4)
                                    ???          128.200.142.5
                                    ???          128.54.30.1             nue, X to discontinue, ? for Help
                                    ???          128.6.1.41
                                    ???          128.6.1.42
                                    ???          129.137.33.72
                                    ???          129.180.1.57
                                    ???          140.112.3.2                  ntu            <none>
                                    ???          annexdial.rz.uni-duesseldorf.de
                                    ???          dial96.ncl.ac.uk
                                    ???          dialout.plk.af.mil
                                    ???          ee21.ee.ncu.edu.tw           cs8005
                                    ???          im.mgt.ncu.edu.tw            guest           <none>
                                    ???          modem.cis.uflu.edu
                                    ???          modem.ireq.hydro.qc.ca
                                    ???          modems.csuohio.edu
                                    ???          sparc20.ncu.edu.tw           u349633
                                    ???          sun2cc.nccu.edu.tw           ?
                                    ???          ts-modem.une.oz.au
                                    ???          twncu865.ncu.edu.tw          guest           <none>
                                    ???          vtnet1.cns.ut.edu            "CALL" or "call"
                                    
                                    
                                    Conclusion
                                    ----------
                                    If you find any of the outdials to have gone dead, changed commands,
                                    or require password, please let us know so we can keep this list as
                                    accurate as possible. If you would like to add to the list, feel free
                                    to mail us and it will be included in future versions of this list,
                                    with your name beside it. Have fun...
                                    
                                    [Editors note: Updates have been made to this document after
                                    the original publication]
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-08. What port is XXX on?
                                    
                                    The file /etc/services on most Unix machines lists the port
                                    assignments for that machine.  For a complete list of port
                                    assignments, read RFC (Request For Comments) 1700 "Assigned Numbers"
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-09. What is an anonymous remailer?
                                    
                                    This FAQ answer was written by Raph Levien:
                                    
                                    An anonymous remailer is a system on the Internet that allows you to
                                    send e-mail or post messages to Usenet anonymously.
                                    
                                    There are two sorts of remailers in widespread use.  The first is the
                                    anon.penet.fi style, the second is the cypherpunk style.  The remailer
                                    at anon.penet.fi is immensely popular, with over 160,000 users over its
                                    lifetime, and probably tens of thousands of messages per day.  Its main
                                    advantage is that it's so easy to use.  The cypherpunks mailers, which
                                    provide much better security, are becoming more popular, however, as
                                    there is more awareness of them.
                                    
                                    The user of the anon.penet.fi system first needs to get an anonymous id.
                                    This is done either by sending mail to somebody who already has one (for
                                    example, by replying to a post on Usenet), or sending mail to
                                    ping@anon.penet.fi.  In either case, penet will mail back the new anon
                                    id, which looks like an123456@anon.penet.fi.  If an123456 then sends
                                    mail to another user of the system, then this is what happens:
                                    
                                    1.  The mail is transported to anon.penet.fi, which resides somewhere in
                                    the vicinity of Espoo, Finland.
                                    
                                    2.  These steps are carried out by software running on anon.penet.fi.
                                    Penet first looks up the email address of the sender in its
                                    database, then replaces it with the numeric code.  All other
                                    information about the sender is removed.
                                    
                                    3.  Then, penet looks up the number of the recipient in the same
                                    database, and replaces it with the actual email address.
                                    
                                    4.  Finally, it sends the mail to the actual email address of the
                                    recipient.
                                    
                                    There are variations on this scheme, such as posting to Usenet (in which
                                    step 3 is eliminated), but that's the basic idea.
                                    
                                    Where anon.penet.fi uses a secret database to match anon id's to actual
                                    email addresses, the cypherpunks remailers use cryptography to hide the
                                    actual identities.  Let's say I want to send email to a real email
                                    address, or post it to Usenet, but keep my identity completely hidden.
                                    To send it through one remailer, this is what happens.
                                    
                                    1.  I encrypt the message and the recipient's address, using the public
                                    key of the remailer of my choice.
                                    
                                    2.  I send the email to the remailer.
                                    
                                    3.  When the remailer gets the mail, it decrypts it using its private
                                    key, revealing as plaintext the message and the recipient's address.
                                    
                                    4.  All information about the sender is removed.
                                    
                                    5.  Finally, it sends it to the recipient's email address.
                                    
                                    If one trusts the remailer operator, this is good enough.  However, the
                                    whole point of the cypherpunks remailers is that you don't _have_ to
                                    trust any one individual or system.  So, people who want real security
                                    use a chain of remailers.  If any one remailer on the "chain" is honest,
                                    then the privacy of the message is assured.
                                    
                                    To use a chain of remailers, I first have to prepare the message, which
                                    is nestled within multiple layers of encryption, like a Russian
                                    matryoshka doll.  Preparing such a message is tedious and error prone,
                                    so many people use an automated tool such as my premail package.
                                    Anyway, after preparing the message, it is sent to the first remailer in
                                    the chain, which corresponds to the outermost layer of encryption.  Each
                                    remailer strips off one layer of encryption and sends the message to the
                                    next, until it reaches the final remailer.  At this point, only the
                                    innermost layer of encryption remains.  This layer is stripped off,
                                    revealing the plaintext message and recipient for the first time.  At
                                    this point, the message is sent to its actual recipient.
                                    
                                    Remailers exist in many locations.  A typical message might go through
                                    Canada, Holland, Berkeley, and Finland before ending up at its final
                                    location.
                                    
                                    Aside from the difficulty of preparing all the encrypted messages,
                                    another drawback of the cypherpunk remailers is that they don't easily
                                    allow responses to anonymous mail.  All information about the sender is
                                    stripped away, including any kind of return address.  However the new
                                    alias servers promise to change that.  To use an alias server, one
                                    creates a new email address (mine is raph@alpha.c2.org).  Mail sent to
                                    this new address will be untraceably forwarded to one's real address.
                                    
                                    To set this up, one first encrypts one's own email address with multiple
                                    layers of encryption.  Then, using an encrypted channel, one sends the
                                    encrypted address to the alias server, along with the nickname that one
                                    would like.  The alias server registers the encrypted address in the
                                    database.  The alias server then handles reply mail in much the same way
                                    as anon.penet.fi, except that the mail is forwarded to the chain of
                                    anonymous remailers.
                                    
                                    For maximum security, the user can arrange it so that, at each link in
                                    the chain, the remailer adds another layer of encryption to the message
                                    while removing one layer from the email address.  When the user finally
                                    gets the email, it is encrypted in multiple layers.  The matryoshka has
                                    to be opened one doll at a time until the plaintext message hidden
                                    inside is revealed.
                                    
                                    One other point is that the remailers must be reliable in order for all
                                    this to work.  This is especially true when a chain of remailers is used
                                    -- if any one of the remailers is not working, then the message will be
                                    dropped.  This is why I maintain a list of reliable remailers. By
                                    choosing reliable remailers to start with, there is a good chance the
                                    message will finally get there.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-10. What are the addresses of some anonymous remailers?
                                    
                                    
                                    To see a comprehensive list on anonymous remailers point your web
                                    browser to http://anon.efga.org/~rlist/.
                                    
                                    For more information regarding anonymous email, check out
                                    http://web.rge.com/pub/security/cypherpunks/.
                                    
                                    The following URL's allow you to send anonymous e-mail via the world
                                    wide web:
                                    
                                    http://www.anonymizer.com/email/remailer-power.cgi?to=
                                    http://www.contrib.andrew.cmu.edu/~gurevich/anonymous-email/index.html
                                    http://www.ozemail.com.au/~geoffk/anon/anon.html
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-11. What is 127.0.0.1?
                                    
                                    127.0.0.1 is a loopback network connection.  If you telnet, ftp, etc...
                                    to it you are connected to your own machine.
                                    
                                    [Note from Dan Mellem: 127.0.0.127 is commonly used as the loopback
                                    address. H.]
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-12. How do I post to a moderated newsgroup?
                                    
                                    Usenet messages consist of message headers and message bodies.  The
                                    message header tells the news software how to process the message.
                                    Headers can be divided into two types, required and optional. Required
                                    headers are ones like "From" and "Newsgroups."  Without the required
                                    headers, your message will not be posted properly.
                                    
                                    One of the optional headers is the "Approved" header.  To post to a
                                    moderated newsgroup, simply add an Approved header line to your
                                    message header.  The header line should contain the newsgroup
                                    moderators e-mail address.  To see the correct format for your target
                                    newsgroup, save a message from the newsgroup and then look at it using
                                    any text editor.
                                    
                                    A "Approved" header line should look like this:
                                    
                                    Approved: voyager@sekurity.org
                                    
                                    There cannot not be a blank line in the message header.  A blank line
                                    will cause any portion of the header after the blank line to be
                                    interpreted as part of the message body.
                                    
                                    For more information, read RFC 1036: Standard for Interchange of
                                    USENET messages.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-13. How do I post to Usenet via e-mail?
                                    
                                    Through an e-mail->Usenet gateway.  Send an a e-mail messages to
                                    <newsgroup>@<servername>.  For example, to post to alt.2600 through
                                    nic.funet.fi, address your mail to alt.2600@nic.funet.fi.
                                    
                                    Here are a few e-mail->Usenet gateways:
                                    
                                    group.name@news.demon.co.uk
                                    group.name@charm.magnus.acs.ohio-state.edu
                                    group.name@undergrad.math.uwaterloo.ca
                                    group.name@nic.funet.fi
                                    group.name.usenet@decwrl.dec.com
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-14. What is a firewall?
                                    
                                    A firewall is a system that is set up to control traffic flow between
                                    two networks.  Firewalls are most commonly specially configured Unix
                                    systems, but firewalls have also been built out of many other systems,
                                    including systems designed specifically for use as firewalls.  The most
                                    common firewall today is CheckPoint FireWall-1, but competitions such as
                                    Cisco's PIX are quickly catching up on CheckPoint.
                                    
                                    Many people disagree on the definiton of a firewall, and in this
                                    discussion I will use the term loosely.
                                    
                                    One type of firewall is the packet filtering firewall.  In a packet
                                    filtering firewall, the firewall examines five characteristics of a
                                    packet:
                                    
                                    Source IP address
                                    Source port
                                    Destination IP address
                                    Destination port
                                    IP protocol (TCP or UDP)
                                    
                                    Based upon rules configured into the firewall, the packet will either be
                                    allowed through, rejected, or dropped.  If the firewall rejects the
                                    packet, it sends a message back to the sender letting him know that the
                                    packet was rejected.  If the packet was dropped, the firewall simply
                                    does not respond to the packet.  The sender must wait for the
                                    communications to time out.  Dropping packets instead of rejecting them
                                    greatly increases the time required to scan your network. Packet
                                    filtering firewalls operate on Layer 3 of the OSI model, the Network
                                    Layer.  Routers are a very common form of packet filtering firewall.
                                    
                                    An improved form of the packet filtering firewall is a packet filtering
                                    firewall with a stateful inspection engine.  With this enhancement, the
                                    firewall "remembers" conversations between systems.  It is then
                                    necessary to fully examine only the first packet of a conversation.
                                    
                                    Another type of firewall is the application-proxy firewall.  In a
                                    proxying firewall, every packet is stopped at the firewall.  The packet
                                    is then examined and compared to the rules configured into the firewall.
                                    If the packet passes the examinations, it is re-created and sent out.
                                    Because each packet is destroyed and re-created, there is a potential
                                    that an application-proxy firewall can prevent unknown attacks based
                                    upon weaknesses in the TCP/IP protocol suite that would not be prevented
                                    by a packet filtering firewall.  The drawback is that a separate
                                    application-proxy must be written for each application type being
                                    proxied.  You need an HTTP proxy for web traffic, an FTP proxy for file
                                    transfers, a Gopher proxy for Gopher traffic, etc...  Application-proxy
                                    firewalls operate on Layer 7 of the OSI model, the Application Layer.
                                    
                                    Application-gateway firewalls also operate on Layer 7 of the OSI model.
                                    Application-gateway firewalls exist for only a few network applications.
                                    A typical application-gateway firewall is a system where you must telnet
                                    to one system in order telnet again to a system outside of the network.
                                    
                                    Another type of application-proxy firewall are SOCKS firewalls.  Where
                                    normal application-proxy firewalls do not require modifications to
                                    network clients, SOCKS firewalls requires specially modified network
                                    clients.  This means you have to modify every system on your internal
                                    network which needs to communicate with the external network.  On a
                                    Windows or OS/2 system, this can be as easy as swapping a few DLL's.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-15. How do I attack a remote network across the Internet?
                                    
                                    On a theoretical level, attacking a remote network across the Internet
                                    is very simple.
                                    
                                    First, you research to discover all of the IP address ranges used by the
                                    target.  Search the web, search Usenet, search Internet, search RIPE,
                                    search APNIC, search everywhere.
                                    
                                    Second, you identify all hosts in those IP address ranges.  This may be
                                    as simple as pinging each possible host in those networks.  Be warned,
                                    however, that many hosts will be protected by firewalls that prvent ICMP
                                    ECHO Requests (used by ping) from reaching them.  Those hosts may still
                                    have vulnerable services running on them.
                                    
                                    Third, you identify all open ports on each of those hosts.  For example,
                                    one host may be providing dns, bootp, and time services.  This is
                                    normally done by "port scanning" the host.  Port scanning UDP ports is
                                    much slower than port scanning TCP ports.  TCP ports will respond
                                    negatively when they are not open.  UDP ports require you to wait for a
                                    timeout.  You may choose to scan only known ports, or to scan only ports
                                    below 1024, or to scan all 65,535 ports.
                                    
                                    Fourth, you attack vulnerable services.  If you see a time server
                                    running and you know of a time server exploit, you try it out.  Perhaps
                                    the target is running an OS that is not vulnerable, or perhaps the
                                    system administrator has patched the target host.  Or, maybe you will
                                    succeed.  Vulnerability information can be gleaned from Internet WWW
                                    sites or mailing lists, traded privately, or developed on your own.
                                    
                                    
                                    ---------------------------------------------------------------------------
                                    
                                    B-16. What is a TCP sequence prediction attack?
                                    
                                    TCP is a reliable connection-oriented layer 4 (Transport Layer)
                                    protocol.  Packet transfer between hosts is accomplished by the layers
                                    below layer 4 and TCP takes responsibility to making certain the packets
                                    are delivered to higher layers in the protocol stack in the correct
                                    order.  To accomplish this reordering task, TCP uses the sequence number
                                    field.
                                    
                                    To successfully mount a TCP sequence prediction attack, you must first
                                    listen to communications between two systems, one of which is your
                                    target system.  Then, you issue packets from your system to the target
                                    system with the source IP address of the trusted system that is
                                    communicating with the target system.
                                    
                                    The packets you issue must have the sequence numbers that the target
                                    system is expecting.  In addition, your packets must arrive before the
                                    packets from the trusted system whose connection you are hijacking. To
                                    accomplish this, it is often necessary to flood the trusted system off
                                    of the network with some form of denial of service attack.
                                    
                                    Once you have taken over the connection, you can send data to allow you
                                    to access the target host using a normal TCP/IP connection.  The most
                                    simple way to do this is:
                                    
                                    echo "+ +" > /.rhosts
                                    
                                    This specific technique relies upon inherent weaknesses in the BSD Unix
                                    `r` services.  However, SunRPC, NFS, X-Windows, and many other services
                                    which rely upon IP address authentication can be exploited with a TCP
                                    sequence prediction attack.
                                    
                                    An excerpt from RFC 793 concering the generation of TCP sequence
                                    numbers:
                                    
                                    When new connections are created, an initial sequence number
                                     (ISN) generator is employed which selects a new 32 bit ISN.  The
                                     generator is bound to a (possibly fictitious) 32 bit clock whose
                                     low order bit is incremented roughly every 4 microseconds. Thus,
                                     the ISN cycles approximately every 4.55 hours. Since we assume
                                     that segments will stay in the network no more than the Maximum
                                     Segment Lifetime (MSL) and that the MSL is less than 4.55 hours
                                     we can reasonably assume that ISN's will be unique.
                                    
                                    The developers of the BSD Unix TCP/IP stack did not follow these
                                    recommendations.  TCP/IP stacks based upon BSD Unix increase the
                                    sequence number by 128,000 every second and by 64,000 for every new TCP
                                    connection.  This is significantly more predictable than the algorithm
                                    specified in the RFC.
                                    
                                    TCP sequence prediction attacks are stopped by any router or firewall
                                    that is configured not to allow packets from an internal IP address to
                                    originate from an external interface.
                                    
                                    
                                          TCP Header Format
                                          -----------------
                                    
                                        0                   1                   2                   3
                                        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |          Source Port          |       Destination Port        |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |                        Sequence Number                        |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |                    Acknowledgment Number                      |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |  Data |           |U|A|P|R|S|F|                               |
                                       | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
                                       |       |           |G|K|H|T|N|N|                               |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |           Checksum            |         Urgent Pointer        |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |                    Options                    |    Padding    |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                       |                             data                              |
                                       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                    
                                    
                                    
                                    ABP did not make this post and it contents, all tex are orignaly from the illwill cru. 
Thus COPYRIGHTED UNDER iLLMOB
                                    
                                    
                                    
                                    
 
 
 
There are many types of OS(operating system)'s. U are probably running on Windows or MAC. These are the common types. There are more common types. There are many others such as the ones below:
  • Linux-

    Linux is an operating system that was initially created as a hobby by a young student, Linus Torvalds, at the University of Helsinki in Finland. Linus had an interest in Minix, a small UNIX system, and decided to develop a system that exceeded the Minix standards. He began his work in 1991 when he released version 0.02 and worked steadily until 1994 when version 1.0 of the Linux Kernel was released. The kernel, at the heart of all Linux systems, is developed and released under the GNU General Public License and its source code is freely available to everyone. It is this kernel that forms the base around which a Linux operating system is developed. There are now literally hundreds of companies and organizations and an equal number of individuals that have released their own versions of operating systems based on the Linux kernel. More information on the kernel can be found at our sister site, LinuxHQ and at the official Linux Kernel Archives. The current full-featured version is 2.6 (released December 2003) and development continues.

    Apart from the fact that it's freely distributed, Linux's functionality, adaptability and robustness, has made it the main alternative for proprietary Unix and Microsoft operating systems. IBM, Hewlett-Packard and other giants of the computing world have embraced Linux and support its ongoing development. More than a decade after its initial release, Linux is being adopted worldwide as a server platform primarily. Its use as a home and office desktop operating system is also on the rise. The operating system can also be incorporated directly into microchips in a process called "embedding" and is increasingly being used this way in appliances and devices.

    Throughout most of the 1990's, tech pundits, largely unaware of Linux's potential, dismissed it as a computer hobbyist project, unsuitable for the general public's computing needs. Through the efforts of developers of desktop management systems such as KDE and GNOME, office suite project OpenOffice.org and the Mozilla web browser project, to name only a few, there are now a wide range of applications that run on Linux and it can be used by anyone regardless of his/her knowledge of computers. Those curious to see the capabilities of Linux can download a live CD version called Knoppix . It comes with everything you might need to carry out day-to-day tasks on the computer and it needs no installation. It will run from a CD in a computer capable of booting from the CD drive. Those choosing to continue using Linux can find a variety of versions or "distributions" of Linux that are easy to install, configure and use. Information on these products is available in our distribution section and can be found by selecting the mainstream/general public category.

  • Debian-

    The Debian Project is an association of individuals who have made common cause to create a free operating system. This operating system that we have created is called Debian GNU/Linux, or simply Debian for short.

    An operating system is the set of basic programs and utilities that make your computer run. At the core of an operating system is the kernel. The kernel is the most fundamental program on the computer and does all the basic housekeeping and lets you start other programs.

    Debian systems currently use the Linux kernel. Linux is a piece of software started by Linus Torvalds and supported by thousands of programmers worldwide.

    However, work is in progress to provide Debian for other kernels, primarily for the Hurd. The Hurd is a collection of servers that run on top of a microkernel (such as Mach) to implement different features. The Hurd is free software produced by the GNU project.

    A large part of the basic tools that fill out the operating system come from the GNU project; hence the names: GNU/Linux and GNU/Hurd. These tools are also free.

    Of course, the thing that people want is application software: programs to help them get what they want to do done, from editing documents to running a business to playing games to writing more software. Debian comes with over 15490 packages (precompiled software that is bundled up in a nice format for easy installation on your machine) — all of it free.

    It's a bit like a tower. At the base is the kernel. On top of that are all the basic tools. Next is all the software that you run on the computer. At the top of the tower is Debian — carefully organizing and fitting everything so it all works together.

  • Gentoo-

    Gentoo is a free operating system based on either Linux or FreeBSD that can be automatically optimized and customized for just about any application or need. Extreme configurability, performance and a top-notch user and developer community are all hallmarks of the Gentoo experience.

    Thanks to a technology called Portage, Gentoo can become an ideal secure server, development workstation, professional desktop, gaming system, embedded solution or something else -- whatever you need it to be. Because of its near-unlimited adaptability, we call Gentoo a metadistribution.

  • Slackware-The newest release of Slackware, version 10.2, is available now. As always, thanks to all the people who helped make this release possible.

    Slackware 10.2 includes the Linux 2.4.31 kernel, with Linux 2.6.13 available in the /testing directory. For the first time, a 2.6 kernel with support for SCSI, RAID, and SATA is offered as a boot option in the installer (called "test26.s"). Slackware 10.2 also sports a new revision of glibc (2.3.5) with NPTL support for improved thread performance when using a kernel with NPTL support, the latest KDE 3.4.2 and XFce 4.2.2 desktop environments, updated development tools, and new additions like SASL support in sendmail, the Subversion version control system, the Firefox browser, and the Thunderbird email and news client. For a complete list of changes since Slackware 10.1, check out the Slackware 10.2 ChangeLog.

  • FreeBSD-

    FreeBSD is an advanced operating system for x86 compatible (including Pentium® and Athlon™), amd64 compatible (including Opteron™, Athlon 64, and EM64T), Alpha/AXP, IA-64, PC-98 and UltraSPARC® architectures. It is derived from BSD, the version of UNIX® developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development.

  • Zen linux- (not a lot known about this Lunix baced system)

    Zen Linux was a defunct bootable LiveCD distribution. It is a fully compatible Debian installer. Most configuration is done automatically upon boot and requires no user interaction, things 'just work.' Zen Linux comes in three flavours: Core, Gnome, and KDE. Zen Linux is built on the latest Debian unstable repositories and is fully Debian compatible.

  • ubuntu-

    Ubuntu is a complete Linux-based operating system, freely available with both community and professional support. It is developed by a large community and we invite you to participate too!

    The Ubuntu community is built on the ideas enshrined in the Ubuntu Philosophy: that software should be available free of charge, that software tools should be usable by people in their local language and despite any disabilities, and that people should have the freedom to customise and alter their software in whatever way they see fit.

    These freedoms make Ubuntu fundamentally different from traditional proprietary software: not only are the tools you need available free of charge, you have the right to modify your software until it works the way you want it to.

    Ubuntu is suitable for both desktop and server use. The current Ubuntu release supports PC (Intel x86), 64-bit PC (AMD64), UltraSPARC T1 (Sun Fire T1000 and T2000) and PowerPC (Apple iBook and Powerbook, G4 and G5) architectures.

    Ubuntu includes more than 16,000 pieces of software, but the core desktop installation fits on a single CD. Ubuntu covers every standard desktop application from word processing and spreadsheet applications to web server software and programming tools. Read more about
    Ubuntu on the desktop and Ubuntu on the server.

  • Fedora-

    Fedora is a set of projects, sponsored by Red Hat and guided by the Fedora Project Board. These projects are developed by a large community of people who strive to provide and maintain the very best in free, open source software and standards.

    Fedora Core, the central Fedora project, is an operating system and platform, based on Linux, that is always free for anyone to use, modify, and distribute, now and forever.

  • MAC *nix (this is not a system of *nix. With out it Mac is apple. Also this is an option from a anti hacker he works for the government  :-%)Mac OS X has been some kind of cruel hoax, if you ask me. I'm talking already about the Beta version. It has been a thirty-dollar joke, some huge space hogger as I believe, and potentially dangerous. Just another day I heard about somebody talking about it on their beige Power Macintosh G3. The person said he had to repartition the entire hard drive to use the Beta. Apple, we have already repartitioned or reformatted our hard drives when you released Mac OS 8.1 with HFS+. We don't need another reformat demand. Thank you.

    Apple has messed up things time after time. Windows 95 may have a few programmes running under DOS mode, but I can be sure nobody went to the extent of reinitialising their hard drives to run Windows 95. Windows 98 didn't require any changes to the hard drive, nor did Windows 2000 or Windows Millennium. You see? Bloatware giant Microsoft is not good for the Mac community - looming over the society like a huge cumulonimbus cloud - and I know a few persons not willing at any price to put up with even one bit (binary digit) of Microsoft code on their Macs - but Microsoft has an advantage over the Macintosh: It has made sure that its operating system upgrades need not demand the user to reinitialise his or her hard drives.

    Apple's other mistake: its jewel, the Twentieth-Anniversary Macintosh, does in no way support the behemoth OS X. I heard a ghastly tale of somebody installing OS X Beta and wiping their hard drive out clean. That most certainly is some great misfortune for the owner, and I find it not extreme to 'credit' the error to Apple. But we may leave that tale for another rainy day...

    Not all Mac people on or off-line are pleased with Apple's move to sell a Beta. For one thing, traditionally Betas are things Mac users die for, and Apple restricts the transfers to Mac testers and big media alike. This time, however, Apple has decided to use us badly, as profit-centres. They decided to, as a fellow MUG member at my club said, to exploit us. The MUG member also mentioned that Apple was getting more arrogant. In fact, I quote from him: he is attempting to say that Apple is saying, "Our product is so wonderful, everyone will flock to pay for it, even if it will end up destroying their entire system". It paints a picture in my head that Steve Jobs is seeing Apple teem with money, and the fattening Steve roars, "Right, time to exploit our faithful Mac users". Moreover, it just looks like Jobs will not give a single damn if the Mac users' systems are all frozen up! If Steve really is doing that, well, the whole Apple enterprise will fall into shambles! Apple will be isolating its faithful Mac users - in my view, the constituents that have kept Apple going through thick and thin (sick and sin in my view...). Do remember that we stood up for Apple when Microsoft released its ghastly Windows 95 operating system. I wish Apple would not hang up on us in 2000.

    Apple has better things in the new millennium to do than to exploit its faithful advocates, wipe their hard drives clean, and sit back in a brouhaha and laugh at us while using us in the most harsh way I can ever conceive. It is not that Mac OS X needs money... Apple has not reported losses in ages since Jobs returned to the helm. I still find today that the OS X Beta $30 price tag is both an exploit and a ghastly fund-raiser for Apple, if at all...

This is not all of the OS but there are new ones coming out every year. Now that your eyes hurt and my fuckin writs are about to fall the fuck off...I QUIT!!

music.gif

No Kid Under 13
The reason for this is due to the FREE-COMMENT BLOGS we do not erase (unless it is VERY necessary) the blogs. People can post whatever they want. Also our criticize page uses some foul language that should not be herd (in parents eyes) by other people. It is best for you to leave this sight if you are under 13 years of age. NO PRETEENS ALOUD. Also some of the pages may be protected by pass codes.
IF you find yourself with a extreme problem tell us bu visiting the "Contact Us" page