.: Como se Tornar um Hacker :.
Autor: Eric Steven Raymond

Copyright © 2001 Eric S. Raymond
Tradução: Diogo Felix (Wolf)
Revisão 1.46
25 de Setembro de 2013
esr
Adicionado micropatrocinio e o link para o link gittip. Por que você não poderia me pedir um conselho sobre como começar.
Revisão 1.45
12 May 2013
esr
Open Solaris já não é recomendado e a Unity estragou tudo.
Revisão 1.44
20 May 2012
esr
Atualizada a crítica ao Java.
Revisão 1.43
07 Feb 2011
esr
Python ultrapassou Perl em popularidade em 2010.
Revisão 1.42
22 Oct 2010
esr
Adicionado: "Nota histórica".
Revisão 1.40
3 Nov 2008
esr
Correções de links.
Revisão 1.39
14 Aug 2008
esr
Correções de links.
Revisão 1.38
8 Jan 2008
esr
Menospreze o Java como uma linguagem para se aprender primeiro.
Revisão 1.37
4 Oct 2007
esr
Recomendo Ubuntu como uma distribuição Unix para novatos.
Histórico de Revisão
Por que esse documento?
Como editor do Jargon File e autor de alguns outros documentos bem conhecidos de natureza similar, frequentemente recebo pedidos por email de entusiastas iniciantes em redes perguntando (na realidade) "Como posso aprender a ser um hacker habilidoso?". Ainda em 1996 eu notei que parecia não haver quaisquer outros FAQs ou documentos na web que abordassem esta questão vital, então eu iniciei este aqui. Muitos hackers agora consideram este o definitivo, e eu suponho que seja. Mas ainda, Eu não pretendo ser a autoridade exclusiva neste tópico; se você não gostar do que leu aqui, escreva o seu próprio.

Se você está lendo um trecho deste documento offline, a versão atual encontra-se em http://www.catb.org/esr/faqs/hacker-howto.html.

Nota: há uma lista de Questões Perguntadas Frequentemente no fim deste documento. Por favor leia - duas vezes - antes de me enviar quaisquer questões sobre este documento por e-mail.

Numerosas traduções deste documento estão disponíveis: Árabe, Bielorrúsia, Chinês(Simplificado), Checo, Dinamarquês, Holandês, Estoniano, Alemão, Grego, Italiano, Hebraico, Norueguês, Persa, Português(Brasil), Romeno, Espanhol, Turco e Sueco. Note-se que uma vez que este documento é modificado ocasionalmente, eles podem estar desatualizados em diferentes graus.

O diagrama de cinco pontos em nove quadrados que decora este documento é chamado de glider. É um simples padrão com algumas propriedades surpreendentes em uma simulação matemática chamada Life que tem fascinado hackers por muitos anos. Eu acho que ele faz um bom emblema visual para o que os hackers são - abstrato, com aparência um pouco misteriosa a princípio, mas uma porta de entrada para um mundo inteiro com uma lógica própria e complexa. Leia mais a respeito do emblema glider aqui.
Se você acha esse documento útil, por favor faça uma doação no Gittip. E considere também dar dicas a outros hackers que produzem código que você utiliza e valoriza. Muitas das pequenas, porém contínuas doações juntam-se rapidamente, e podem libertar as pessoas para que possam lhe presentear melhor do trabalho delas. 
O que é um hacker?
O Jargon File contém diversas definições para o termo 'hacker', a maioria delas tem a ver com aptidão técnica e um prazer em resolver problemas e superar os limites. Se você deseja saber como se tornar um hacker, então, apenas duas são realmente relevantes.

Existe uma comunidade, uma cultura compartilhada, de programadores peritos e gurus de redes cuja história remonta há décadas, desde os primeiros microcomputadores de tempo compartilhado até os primeiros experimentos da ARPAnet. Os membros desta cultura que originaram o termo 'hacker'. Hackers construíram a internet. Hackers fizeram do Sistema Operacional Unix o que ele é hoje. Hackers fizeram a World Wide Web funcionar. Se você é parte desta cultura, se você contribuiu para ela e outras pessoas do meio sabem quem é você e te chamam de hacker, você é um hacker.

A mentalidade hacker não é confinada somente a esta cultura de software hacker. Existem pessoas que aplicam a atitude hacker para outras coisas, como eletrônica ou música - na verdade, você pode encontrá-la nos mais altos níveis de qualquer ciência ou arte. Hackers desenvolvedores de software reconhecem estes espíritos afíns de outros lugares e podem chamá-los de 'hackers' também - e alguns alegam que a natureza hacker é idependente do meio particular que o hacker trabalha. Mas no resto deste documento, nós iremos nos concentrar nas habilidades e atitudes de hackers desenvolvedores de software, e as tradições da cultura compartilhada que originou o termo 'hacker'.

Há um outro grupo de pessoas que se dizem hackers, mas não são. Estas são pessoas (principalmente adolescentes homens) que se divertem invadindo computadores e fraudando sistemas telefônicos. Hackers de verdade chamam estas pessoas de 'crackers' e não querem nada com elas. Hackers de verdade consideram os crackers preguiçosos, irresponsáveis, e não muito espertos, tenha em mente que ter a capacidade de quebrar a segurança não faz de você um hacker mais do que saber fazer ligação direta em um carro te torna um engenheiro automobilistico. Infelizmente, muitos jornalistas e escritores se enganam em usar a palavra 'hacker' para descrever crackers; isso acaba irritando os hackers de verdade.

A diferença básica é esta: hackers constroem coisas, crackers quebram elas.

Se você quer ser um hacker, continue lendo. Se você quer ser um cracker, vá ler no newsgroup alt.2600 e prepare-se para ficar de 5 a 10 anos na prisão depois de descobrir que não é tão esperto como você pensa que é. E isso é tudo o que eu vou dizer sobre os crackers.
A Atitude Hacker
Hackers resolvem problemas e constroem coisas, e eles acreditam em liberdade e auxílio voluntário mútuo. Para ser aceito como um hacker, você tem que se comportar como se você tivesse este tipo de atitude mesmo. E para se comportar como se você tivesse esta atitude, você tem que realmente acreditar na atitude.

Mas se você acha que cultivando as atitudes hackers é apenas um meio para ser aceito na comunidade, você vai perder o foco. Tornando-se o tipo de pessoa que acredita nessas coisas é importante para você - para ajudá-lo a aprender e manter-se motivado. Como em todas as artes criativas, o meio mais efetivo para se tornar um mestre é imitar a mentalidade dos mestres - não apenas intelectualmente mas emocionalmente também.

Ou, como seguir o que este poema moderno Zen diz:

       Para seguir o caminho:
       olhe para o mestre,
       siga o mestre,
       caminhe com o mestre,
       veja através do mestre,
       torne-se o mestre.

Então, se você deseja ser um hacker, repita as seguintes coisas até você acreditar nelas:
1. O mundo está cheio de problemas fascinantes esperando para serem resolvidos.
Ser um hacker é muito divertido, mas é um tipo de diversão que necessita de bastante esforço. O esforço leva a motivação. Atetlas de sucesso retiram sua motivação em uma espécie de prazer físico em levar seus corpos ao extremo, em tentar ultrapassar seus próprios limites físicos. Similarmente, para ser um hacker você tem que ter uma emoção básica de resolver problemas, afiar suas habilidades, e exercitar sua inteligência.

Se você não é o tipo de pessoa que se sente assim naturalmente, você precisará se tornar uma, para que seja possível fazer como um hacker faz. Caso contrário, você verá sua energia para o hacking ser sugada por distrações como sexo, dinheiro e aprovação social.

(Você também terá que desenvolver uma espécie de fé na sua própria capacidade de aprendizado - a crença que mesmo que você não possa saber tudo que você precisa para resolver um problema, se você lidar apenas com um pedaço dele e aprender com ele, você aprenderá o suficiente para resolver o próximo pedaço - e assim por diante, até que você termine.)
Cérebros criativos são um recurso valioso e limitado. Eles não deveriam ser disperdiçados reinventando a roda quando há tantos problemas fascinantes esperando lá fora.

Para se comportar como um hacker, você deve acreditar que o tempo para pensar de outros hackers é precioso - tanto que é quase um dever moral para você compartilhar informação, resolver problemas e depois dar as soluções, para que outros hackers possam resolver novos problemas ao invés de ter que perpetuamente realocar os antigos.

Note, de qualquer maneira, que "Nenhum problema deveria ser resolvido duas vezes." não implica que você deve considerar que todas as resoluções são sagradas, ou que há somente uma solução certa para qualquer problema dado. Muitas vezes, nós aprendemos muito sobre o problema que não conheciamos antes de estudar o primeiro passo para sua solução. Tudo bem, e muitas vezes necessário, para decidir o que podemos fazer melhor. O que não está certo são as técnicas artificiais, legais, ou barreiras institucionais (como código fonte fechado) que impedem que uma boa solução possa ser reutilizada e forcem as pessoas a re-inventar as rodas.

(Você não tem que acreditar que você é obrigado a dar toda a sua produção criativa, ainda que hackers que o fazem são os que obtem mais respeito dos outros hackers. É consistente com os valores hacker vender o suficiente para manter-se alimentado e pagar o aluguel e comprar computadores. E é bom você usar suas habilidades de hacker para sustentar uma família ou até mesmo ficar rico, contanto que você não se esqueça de sua lealdade para com a sua arte e para com seus companheiros hackers enquanto está fazendo isso.)
2. Nenhum problema nunca deveria ser resolvido duas vezes.
3. Tédio e trabalhos penosos ou monótonos são maus.
Hackers (e pessoas criativas em geral) nunca devem ficar entediados ou ter que trabalhar duro em um trabalho estúpido e repetitivo, porque quando isto acontece significa que eles não estão fazendo o que apenas eles podem fazer - resolver novos problemas. Este desperdício prejudica todo mundo. Portanto, tédio e trabalho monótono ou penoso não são apenas desagradáveis mas na realidade maus.

Para se comportar como um hacker, você tem que acreditar nisto o suficiente para querer automatizar as partes dos bits tediosos o mais que possível, não apenas para você mesmo, mas para todos os outros (especialmente outros hackers).

(Há uma exceção aparente para isso. Hackers às vezes vão fazer coisas que podem parecer ser repetitivas ou tediosas para um observador, como em um exercício de meditação, ou no intuito de adquirir uma habilidade ou ter algum tipo de experiência particular onde não se pode ter de outra forma. Mas isto é por escolha - ninguém que pode pensar deveria ser obrigado a fazer algo que os aborrece.)
Hackers são naturalmente antiautoritários. Qualquer pessoa que possa te dar ordens também pode te impedir de resolver qualquer que seja o problema pelo qual você esteja fascinado - e, devido ao modo que a mente autoritária funciona, irão geralmente achar alguma razão terrivelmente estúpida para fazê-lo. Assim, a atitude autoritária tem que ser enfrentada onde quer que você a encontre, para que não sufoque a você e a outros hackers.

(Isto não é o mesmo que combater toda autoridade. Crianças precisam ser guiadas e os criminosos contidos. Um hacker pode concordar em aceitar alguns tipos de autoridade a fim de conseguir algo que ele quer mais do que o tempo que ele gastou seguindo ordens. Mas isso é uma barganha restrita e consciente; o tipo de submissão pessoal que os autoritários querem não está em oferta).

Autoritários prosperam (no trabalho) em cima de censura e sigilo. E eles desconfiam de cooperação voluntária e no compartilhamento de informação - eles somente gostam de "cooperação" daqueles que eles controlam. Então, para se comportar como um hacker, você deve desenvolver uma hostilidade instintiva à censura, sigilo, e o uso da força ou enganação para forçar adultos responsáveis. E você tem que estar disposto a agir com base nessa crença.
4. Liberdade é ótimo.
5. Atitude não é substituto para competência.
Para ser um hacker, você tem que desenvolver algumas dessas atitudes. Mas copiando uma atitude sozinho, não o tornará um hacker, não tanto quanto fará você um atleta campeão ou um astro do rock. Tornar-se um hacker vai exigir inteligência, prática, dedicação e trabalho duro.

Portanto, você tem que aprender a desconfiar da atitude e respeitar a competência de todos os tipos. Hackers não deixarão enigmas desperdiçarem o tempo deles, mas eles adoram a competência - especialmente competência em hackear, mas competência em qualquer coisa é valorizada. A competência em habilidades que poucos conseguem dominar é especialmente boa, e competência em habilidades que envolvem agudeza mental, perícia e concentração exigente é o melhor.

Se você reverenciar competência, gostará de desenvolvê-la em si mesmo - o trabalho duro e dedicação se tornará uma espécie de jogo intenso, em vez de um trabalho penoso. Essa atitude é vital para tornar-se um hacker.








A atitude hacker é vital, mas as habilidades são ainda mais vitais. Atitude não é substituto para competência, e existe um certo conjunto de ferramentas de habilidades básico as quais você tem que ter antes de qualquer hacker sonhar em te chamar como um.

Este conjunto de ferramentas muda vagarosamente com o tempo conforme a tecnologia cria novas habilidades e fazem com que as antigas fiquem obsoletas. Por exemplo, costumava-se incluir programação em linguagem de máquinas, e até recentemente não envolvia HTML. Mas agora ele inclui muito claramente o seguinte:
Habilidades Básicas de Hacking
Isto, naturalmente, é a habilidade básica do hacker. Se você não conhece nenhuma das linguagens de computador, eu recomendo iniciar com Python. É uma linguagem bem projetada, bem documentada, e relativamente amigável para os iniciantes. A despeito de ser uma boa primeira linguagem, ela não é apenas um brinquedo; é muito poderosa e flexível e bem adequada para grandes projetos. Eu escrevi uma avaliação mais detalhada do Python. Bons tutoriais estão disponíveis no web site do Python.

Eu costumava recomendar o Java como uma boa linguagem para se aprender primeiro, mas essa crítica me fez mudar de ideia (procure por" The Pitfalls of Java as a First Programming Language" por dentro dela). Um hacker não pode, como eles devastadoramente colocam "abordar um problema como se fosse um encanador em uma loja de ferragens"; você tem que saber o que os componentes fazem na realidade. Agora eu acho que é provavelmente melhor aprender C e Lisp primeiro, depois Java.

Há, talvez, um ponto aqui mais geral. Se uma linguagem faz tanto por você, Ela pode ser ao mesmo tempo uma boa ferramenta para produção e uma ruim para a aprendizagem. Não são somente linguagens que tem este problema; frameworks para aplicações web como RubyOnRails, CakePHP, Django podem fazer tão fácil atingir um tipo superficial de entendimento que irá deixar você sem recursos quando você tiver que enfrentar um problema difícil, ou até mesmo apenas debugar a solução para um fácil.

Se você quiser entrar em programação séria, você terá que aprender C, a linguagem principal do Unix. C++ é muito parecido com C, se você conhece um, aprender o outro não será difícil. Nenhuma das duas linguagens é boa para se tentar aprender como sua primeira, porém E, na verdade, quanto mais você puder evitar programar em C mais produtivo você será.

C é muito eficiente, e muito poupador dos seus recursos da máquina. Infelizmente, C obtém esta eficiência requerendo que você faça um bocado de gerenciamento de recursos de baixo nível (como memória) à mão. Todo esse código de baixo nível é complexo e propenso a bug, e vai absorver grandes quantidades do seu tempo debugando. Com as máquinas de hoje tão poderosas como elas estão, isto é frequentemente uma má troca - É mais esperto utilizar uma linguagem que utilize menos eficientemente o tempo da máquina, mas seu tempo muito mais eficientemente. Assim, Python o faz.

Outras linguagens de particular importância para os hackers incluem Perl e LISP. Vale a pena aprender Perl por razões práticas; ele é largamente usado para páginas ativas da web e administração de sistemas, de modo que até mesmo se você nunca escreve em linguagem Perl você deveria aprendê-la. Muitas pessoas usam Perl do modo como sugeri que você deve usar Python: para evitar programar em serviços que não requerem a eficiência de máquina do C. Você precisará ser capaz de entender seus códigos.

Vale a pena aprender LISP por um razão diferente - a profunda e iluminadora experiência que você terá quando finalmente aprendê-lo. Essa experiência vai te tornar um programador melhor pelo resto da sua vida, mesmo que você não use LISP muito. Você pode ter alguma experiência inicial razoavelmente fácil com LISP através da escrita e alteração, editando modos para o editor de texto Emacs, ou Script-Fu plugins para o GIMP.)

É melhor, na verdade, aprender todas as cinco: Python, C/C++, Java, Perl e LISP. Além disso, sendo as mais importantes linguagens hacking, elas representam muitas diferenças programando, e cada instrução é valiosa maneira.

Tenha em mente que você não alcançará o nível de habilidades de um hacker ou mesmo de um mero programador simplesmente acumulando linguagens - você precisa aprender como pensar em problemas de programação de uma forma geral, independente de qualquer linguagem. Para ser um hacker de verdade, você precisa chegar ao ponto onde pode aprender uma nova linguagem em alguns dias relacionando o que está no manual com o que vocês já sabe. Isso significa que você deve aprender um grande número de diferentes linguagens.

Eu não posso dar instruções completas de como aprender a programar aqui - é uma aprendizagem complexa. Mas eu posso falar para você os livros e cursos não farão isto - muitos, talvez a maioria dos melhores hackers são autoditadas. Você pode aprender recursos da linguagem - pedaços de conhecimento - de livros, mas a mentalidade que torna este conhecimento em habilidade nata pode ser aprendido somente com a prática e estudo. O que vai fazer isto é: (a) ler código e (b) escrever código.

Peter Norving, um dos grandes hackers da Google e co-autor do mais usado manual no Al, escreveu um excelente artigo chamado "Ensine a você mesmo programação em dez anos." Sua "receita para programar com sucesso" merece uma atenção cuidadosa.

Aprender a programar é como aprender a escrever bem em linguagem natural. A melhor maneira de fazer isto é ler algumas coisas escritas por mestres da forma, escrever algumas coisas você mesmo, ler muito mais, escrever mais um pouco, ler um pouco mais, escrever um pouco mais ... e repetir até seu estilo começar a desenvolver o tipo de força e economia que você vê em seus modelos.

Encontrar bom código para ler costumava ser difícil, Por que hávia poucos programas grandes disponíveis em código fonte para que hackers novatos pudessem ler e mexer com eles. Isto tem mudado drasticamente; software open-source, ferramentas de programação, e Sistemas Operacionais (todos feitos por hackers) estão amplamente disponíveis atualmente. O que me leva cuidadosamente ao nosso próximo tópico...
1. Aprenda a programar.
2. Pegue um Unix de código aberto e aprenda como usar e executar ele.
Eu vou supor que você tem um computador pessoal ou que pode ter acesso a algum. (Pare por um momento e aprecie o quanto isso significa. A cultura hacker se desenvolveu originalmente lá atrás quando os computadores eram tão caros que as pessoas não poderiam ter um.) O passo mais importante que um iniciante deve tomar para adquirir habilidades hacker é conseguir uma cópia de Linux, ou um dos BSD-Unix's, instalá-lo em um computador pessoal, e rodá-lo.

Sim, existem outros sistemas operacionais no mundo além do Unix. Mas eles são distribuídos em binários - você não pode ler seu código, e não pode modificá-los. Tentar aprender a "hackear" de dentro de uma máquina com Microsoft Windows, ou através de qualquer outro sistema de fonte fechada, é como tentar aprender a dançar com o corpo engessado.

Através de um Mac OS X é possível, mas só parte do sistema é de código aberto - você provavelmente vai se chocar em muitas paredes, e você deve tomar cuidado para não desenvolver o mal hábito de depender dos códigos próprios da Apple. Se você concentrar-se no que há de escondido no Unix, poderá aprender algumas coisas úteis.

Unix é o sistema operacional da Internet. Embora você possa aprender a usar a Internet sem conhecer Unix, você não pode ser um hacker sem entender Unix. Por esta razão, a cultura hacker atual está fortemente concentrada no Unix. Isto nem sempre foi verdade e alguns hackers da velha-guarda continuam não muito felizes com isso, mas a simbiose entre Unix e a Internet tem se tornado tão forte que até o músculo da Microsoft parece ser incapaz de detê-la.

Então, de volta ao Unix - Eu gosto do Linux mas há outros modos (e sim, você pode rodar ambos, Linux e Microsoft Windows na mesma máquina). Aprenda. Execute. Mexa. Interaja com a internet. Leia o código. Modifique o código. Você conseguirá melhores ferramentas de programação (incluindo C. LISP, Python e Perl) que qualquer operador de sistemas Microsoft pode sonhar obter; você se divertirá e acumulará mais conhecimento do que imagina até que olhe para trás como um mestre hacker.

Para aprender mais sobre UNIX, olhe o "The Loginataka". Você pode querer também consultar o "The Art of Unix Programming".

Para por as mãos num Linux, veja o site Linux Online; Você pode baixar de lá ou (idéia melhor) encontrar um grupo local de usuários Linux para ajudar você com a instalação.

Durante os primeiros dez anos de vida deste "COMO FAZER", eu o relatei do ponto de vista de novos usuários; todas as distribuições Linux são praticamente equivalentes. Mas em 2006-2007, uma opção melhor surgiu: o Ubuntu. Enquanto outras distribuições tem seus próprios pontos fortes, Ubuntu é de longe o mais acessível para iniciantes. Tenha cuidado, penso, que com a horrível e altamente inútel interface "Unity" que o Ubuntu introduziu como padrão a poucos anos; as variantes Xubuntu ou Kubuntu são melhores.

Você pode encontrar recursos e ajuda para o Unix BSD no site www.bsd.org.

Uma boa maneira de mergulhar seus dedos do pé na água é iniciar o computador com o que os fãs chamam de "live CD", uma distribuição que roda inteiramente de um CD sem ter que modificar seu disco rígido. Isto será devagar, porque CDs são lentos, mas é uma alternativa de ver as possibilidades sem ter que fazer nada drástico.

Eu escrevi uma cartilha sobre os conceitos básicos de Unix e da Internet.

Eu costumava não recomendar a instalação tanto do Linux quanto do BSD sozinho caso se você fosse iniciante. Mas hoje em dia os instaladores tem melhorado tanto que fazer isso sozinho é possível, mesmo para um iniciante. No entanto, eu ainda recomendo fazer contato com um grupo local de usuários do Linux e pedir ajuda. Não machuca e pode facilitar o processo.
3. Aprenda como usar a World Wide Web e escrever HTML.
A maioria das coisas que a cultura hacker construiu para que o trabalho deles ficassem fora das vistas, tem ajudado fábricas, escritórios e universidades sem qualquer impacto óbvio no modo de vida dos não hackers. A Web é uma grande exceção, o enorme e brilhante brinquedo de hackers que até mesmo políticos admitiram que mudou o mundo. Por essa razão (e várias outras boas) você precisa aprender a trabalhar na web.

Isso não quer dizer aprender a usar um navegador (qualquer um pode fazer isso), mas sim aprender como escrever em HTML, a linguagem da web. Se você não sabe como programar, escrever HTML vai te ensinar alguns hábitos mentais que vão te ajudar a aprender. Então construa alguma página. Tente fixar-se ao XHTML, que é uma linguagem mais limpa do que o clássico HTML. (Existem ótimos tutoriais para principiantes na internet; aqui está um.)

Mas apenas ter uma página na internet não será o suficiente para te tornar um hacker. A internet é cheia de sites. A maioria delas sem objetivo, conteúdo zero, inútil, porcaria, não se engane, porcaria mesmo (veja mais na "página infernal do HTML").

Para valer a pena, seu site deve ter conteúdo - que deve ser interessante e/ou útil para outros hackers. E isso nos leva para o próximo tópico.
Como um americano e um falante nativo de Inglês, eu tenho estado relutante ao sugerir isto, pois parece como uma espécie de imperialismo cultural. Mas muitos nativos de outras línguas tem me mostrado que o Inglês é o idioma corrente da cultura hacker e da Internet e que você terá que conhecê-lo para atuar na comunidade hacker.

Por volta de 1991 eu aprendi que muitos hackers que tinham o inglês como segunda língua o usavam em discussões técnicas mesmo quando eles compartilhavam o idioma comum de nascimento; me foi dito à época que o inglês era mais rico tecnicamente que qualquer outra língua e simplesmente um instrumento melhor para o trabalho. Por razões parecidas, traduções de livros técnicos escritos em inglês muitas vezes são insatisfatórios.

Linus Torvalds, um finlandês, comenta seu código em Inglês (aparentemente nunca ocorreu a ele fazer de outro modo). Sua fluência em inglês tem sido um fator importante como habilidade para recrutar uma comunidade mundial de desenvolvedores para Linux. É um exemplo válido a ser seguido.

Ser um falante nativo de inglês não garantirá que você tem habilidades linguísticas suficientes para ser funcional como um hacker. Se sua escrita é de um quase analfabeto, com erros de gramática, crivada de erros ortográficos, muitos hackers (incluindo eu mesmo) tenderão a ignorar você. Embora escrita desleixada não signifique invariavelmente pensamento desleixado, nós geralmente achamos que a correlação é forte - e não temos utilidade para pensadores desleixados. Se você ainda não escreve competentemente, aprenda.
4. Se você não têm inglês funcional, aprenda.
Como a maioria das culturas sem capitalismo, a do reino hacker se baseia em reputação. Você está tentando resolver problemas interessantes, mas o quanto interessante eles são, e se suas solução são realmente boas, é algo que somente seus iguais ou superiores tecnicamente estão geralmente aptos a julgar.

Assim, quando você joga o jogo do hacker, você aprende a marcar pontos principalmente pelo que os outros hackers pensam sobre a sua habilidade (Por isso você não é realmente um hacker até que outros hackers regularmente te chamem de hacker). Este fato é obscurecido pela imagem de que o hackerismo é um trabalho solitário; também pelo taboo da cultura-hacker (decaindo gradualmente desde a década de 1990 mas ainda continua potente) contrariando admitir que o ego ou a aprovação externa estão envolvidos na motivação de alguém para tudo.

Especificamente, o reino hacker é o que os antropólogos chamam de uma cultura presente. Você ganha status e reputação dentro dela não por dominar outras pessoas, nem por ser bonito, nem tendo coisas que as outras pessoas querem, mas sim ao contrário doando as coisas. Especificamente, por doar seu tempo, sua criatividade, o os resultados de sua habilidade.

Existem basicamente cinco tipos de coisas que você pode fazer para ser respeitado por hackers:
Status na Cultura Hacker
A primeira (o mais central e mais tradicional) é escrever programas que outros hackers achem divertidos ou úteis, e dar o código-fonte do programa para que toda a comunidade hacker utilize.

(Nós costumávamos chamar esses trabalhos de "software livre", mas isso confundia muitas pessoas que não tinham certeza exatamente o que "livre" queria dizer. A maioria de nós agora preferem o termo software de "open source"(código aberto).

Na cultura hacker os mais reverenciados semideuses são pessoas que escreveram programas grandes, competentes, que encontraram uma necessidade generalizada, sendo assim os distribuíram para que todos pudessem usar.

Mas há um pouco de um belo ponto histórico bem aqui. Enquanto hackers tenham sempre olhado para os desenvolvedores de código aberto entre eles como ponto forte da comunidade, antes de meados de 1990 a maioria dos hackers na maior parte do tempo trabalharam com código fechado. Isto ainda continuava sendo verdade quando eu escrevi a primeira versão deste HOWTO em 1996; isso levou a generalização do software de código aberto a partir de 1997 para mudar as coisas. Hoje, "A comunidade hacker" e "desenvolvedores de código aberto" são duas descrições para o que é essencialmente a mesma população e cultura - mas vale lembrar que isso não foi sempre assim. (Para saber mais sobre isso, veja a seção chamada " Nota histórica: Hacking, Código Aberto, e Software Livre.
1. Escreva software de código aberto
Eles também servem quem apóia e debuga software de código aberto. Neste mundo imperfeito, nós vamos inevitavelmente gastar a maioria do tempo de nosso desenvolvimento de software na fase de depuração. Isto é o porque qualquer autor de código aberto que você pense lhe dirá que bons beta testers (que saibam como descrever sintomas claramente, localizar bem problemas, puderem tolerar bugs em uma distribuição rápida, e estejam dispostos a aplicar algumas simples rotinas de diagnóstico) valem seu peso em rubis. Até mesmo um desses pode fazer a diferênça entre uma fase de depuração ficar demorada, um pesadelo exaustivo ou um que seja meramente uma chatisse saudável.

Se você é um novato, tente encontrar um programa em desenvolvimento em que você esteja interessado e seja um bom beta-tester. Existe uma progressão natural de ajudar a testar programas para ajudar a depurá-los e depois para ajudar a modificá-los. Você vai aprender muito desta forma, e criará um bom karma com as pessoas que o ajudarão depois.
2. Ajude a testar e debugar software de código aberto
Outra boa coisa é coletar e filtrar informações úteis e interessantes em páginas web ou documentos como listas de Questões Frequentemente Perguntadas (Frequently Asked Questions) ou (FAQ), e tornar estas geralmente disponíveis.

Mantenedores dos maiores FAQs técnicos obtém quase tanto respeito quanto os autores de código aberto.
3. Publique informações úteis.
A cultura hacker (o mesmo vale para o desenvolvimento de engenharia da Internet) é feito por voluntários. Existe um bocado de trabalho não glamuroso mas necessário que precisa ser mantido - Administrar listas de e-mail, moderadores de grupos de discussão (newsgroups), manter grandes sites que armazenam softwares, desenvolvimento (RFCs) (Request for Comments) e outros padrões tecnicos.

Pessoas que fazem este tipo de coisa bem recebem muito respeito, porque todo mundo sabe que esses trabalhos são grandes consumidores de tempo e não tão divertidos quanto brincar com código. Realiza-los demonstra dedicação.
4. Ajude a manter a infraestrutura funcionando
Finalmente, você pode servir e propagar a cultura em si (como, por exemplo, escrevendo um apurado manual sobre como se tornar um hacker :-)). Isto não é uma coisa que você deva fazer até que você tenha se tornado bem conhecido por uma das primeiras quatro coisas.

A cultura hacker não tem lideres, exatamente, mas ele tem heróis culturais e anciões tribais, historiadores e porta-vozes. Quando você estiver nas trincheiras tempo suficiente, você pode de transformar em um deles. Tome cuidado: hackers desconfiam de egos espalhafatosos em seus anciões tribais, tão visivelmente atingir este tipo de fama é perigoso. Ao invéz de esforçar-se para isto, você tem que ter sorte de se posicionar você mesmo de modo que ela caia em seu colo, então seja modesto e gracioso sobre o seu status.
5. Sirva a própria cultura hacker
















A Ligação Hacker/Nerd
Ao contrário do mito popular, você não precisa ser um nerd para ser um hacker. Entretanto, isso ajuda e muitos hackers são de fato nerds. Sendo uma espécie de isolado da sociedade ajuda você a ficar concentrado nas coisas realmente importantes, como pensar e hackear.

Por esta razão, muitos hackers tem adotado o rótulo de 'geek' como um simbolo de orgulho - Isto é uma forma de declarar sua independência das espectativas sociais normais ( assim como um gosto por outras coisas como ficção cientifica e jogos de estratégia que na maioria das vezes combina com ser um hacker). O termo 'nerd' costumava ser usado desta forma na decada de 1990, voltando ao 'nerd' éra um pouco prejorativo e 'geek' bem mais prejorativo; A certa altura após o ano 2000 eles trocaram de lugar, pelo menos na cultura popular dos EUA, e há agora até mesmo uma importante cultura de orgulho-geek entre pessoas que não são especialistas em tecnologia

Se você conseguir gerenciar para se concentar suficientemente no hacking para ser bom nisso e ainda ter uma vida, está ótimo. Isto é muito mais fácil hoje do que era quando eu era um iniciante nos anos 1970; a cultura dominante é muito mais amigável para os techno-nerds agora. Existem até mesmo números crescentes de pessoas que percebem que os hackers são frequentemente namorados de alta qualidade e importantes cônjuges.

Se você está atraído pelo hacking porque você não tem uma vida, está ok também - pelo menos você não terá problemas em se concentrar. Talvez você consiga uma vida depois disso.








Novamente, para ser um hacker, você tem que entrar na mentalidade hacker. Existem algumas coisas que você pode fazer quando não está em um computador que parece ajudar. Eles não são substitutos para o hacking(nada é) mas muitos hackers os fazem, e sentem que eles conectam de algum modo básico com a essência do hacking.
A Ligação Hacker/Nerd
- Aprenda a escrever a sua língua nativa bem. Embora seja comum esteriotipar que programadores não conseguem escrever, um surpreendente número de hackers (incluindo todos os mais talentosos que eu conheço) são escritores muito habilidosos.

- Leia ficção científica. Vá à convenções de ficção científica (uma boa maneira de conhecer hackers e proto-hackers).

- Treine em uma forma de arte-marcial. O tipo de disciplina mental requerida pelas artes marciais parece ser bem similar de modos importantes ao que os hackers fazem. As formas mais populares entre hackers são definitivamente as artes asiáticas de mãos vazias como Tae Kwon Do, várias formas de Karate, Kung Fu, Aikido, ou Ju Jitsu. A esgrima ocidental e as artes asiáticas com espadas também possuem seguidores visíveis. Em lugares onde é legal, tiros de pistolas têm crescido em popularidade desde o fim dos anos 1990. As artes marciais mais hackers são aquelas que enfatizam a disciplina mental, relaxamento da mente, e controle, mais do que força bruta, atleticismo, ou resistência física.

- Estude uma real disciplina de meditação. O favorito perene entre os hackers é Zen (importantemente, é possível se beneficiar do Zen sem adquirir uma religião ou descartar a que você já tem). Outros estilos podem funcionar também, mas seja cuidadoso ao escolher um que não requer que você acredite em coisas loucas.

- Desenvolva um ouvido analítico para música Aprenda a apreciar tipos de músicas peculiares. Aprenda como tocar bem algum instrumento musical, ou como cantar.

- Desenvolva sua apreciação por trocadilhos e jogos de palavras.
Quanto mais dessas coisas você já faz, é mais provável que você já tenha um material hacker natural. Por que essas coisas em particular não são completamente claras, mas elas estão conectadas com uma mistura de habilidades do lado esquerdo e direito do cérebro que parece ser importantes, hackers precisam ser capazes de ambos tanto raciocínar logicamente e caminhar para fora da lógica aparente (abstratamente) de um problema em  observação no momento.

Trabalhe tão intensamente quanto você joga e jogue tão intensamente quanto você trabalha. Para verdadeiros hackers, os limites entre "brincar", "trabalhar", "ciência" e "arte" todas tendem a desaparecer, ou se fundir em uma brincadeira lúdica de alto nível. Também, não se contente com um âmbito estreito de habilidades. Embora a maioria dos hackers se auto descreverem como programadores, eles estão mais prováveis de serem competentes em várias habilidades relacionadas - administração de sistemas, web design, resolução de problemas de hardware de PC são habilidades comuns. Um hacker que é um administrador de sistema por outro lado, é provável de ser habilidoso em programação escrita e web design. Hackers não fazem coisas pela metade. se eles investirem em uma habilidade no geral, eles tendem a ficarem muito bons nisso.

Finalmente, um pouco de coisas para não se fazer.
- Não use um nome bobo, ID de usuário grandioso ou nome de tela.

- Não entre em discussões sem sentido na Usenet (ou em qualquer outro lugar).

- Não se chame de "cyberpunk" e não desperdice seu tempo em alguém que faz isso.

- Não poste ou envie por e-mail com um texto que está cheio de erros de ortografia e com a gramática ruim.
A única reputação que você irá ganhar ao fazer estas coisas é de um idiota. Hackers têm boa memória - que poderia levar anos para esquecerem seus primeiros erros o suficiente para ser aceito.

O problema com nomes de tela e apelidos merece um pouco de amplificação. Ocultar sua identidade atrás de apelidos é um comportamento juvenil e bobo característico de crackers, warez d00dz, e outras formas mais baixas de vida. Hackers não fazem isso; eles são orgulhosos do que fazem e querem isso associado à seus nomes reais. Então se você tiver um apelido, largue-o. Na cultura hacker isso só irá marcá-lo como um perdedor.








Quando eu originalmente escrevi este tutorial em 1996, muitas das condições em torno disto eram muito diferentes de como elas parecem hoje. Algumas palavras sobre essas mudanças podem ajudar a clarificar o que importa para as pessoas que estejam confusas sobre o relacionamento do código aberto, software livre, e linux para a comunidade hacker. Se voce não tem curiosidade sobre isto, voce pode pular direto para o FAQ (perguntas frequentes) e bibliografia partindo daqui.

O espírito hacker e a comunidade como eu a descrevi aqui é muito anterior ao surgimento do línux, depois de 1990; Eu começei a me envolver com ele por volta de 1976, e, suas raizes são facilmente rastreáveis por volta do início do ano de 1960. Mas antes do Linux, muito do hacking era feito em sistemas operacionais proprietários ou um punhado de sistemas experimentais desenvolvidos internamente como ITS do MIT que nunca foram distribuidos fora de seus nichos acadêmicos. Enquanto houveram algumas tentativas anteriores (pré-Linux) para mudar esta situação, o seu impacto foi na melhor das hipóteses muito limitada e confinada para comunidades de verdadeiros entusiastas que eram minorias minúsculas mesmo dentro da comunidade hacker, e muito menos em relação ao mundo mais amplo do software em geral.

O que é agora chamado de "código aberto" remonta de tão longe quanto a comunidade hacker, mas até 1985 era uma prática popular sem nome ao invés de um movimento consciente com teorias e manifestos ligados a ele. Esta história anterior acabou quando, em 1985, o astuto hacker Richard Stallman ("RMS") tentou dar a isso um nome - "software livre". Mas o ato dele de dar um nome foi também um ato de reivindicação; ele agregou sua bagagem ideológica ao rótulo "Software Livre" o que grande parte da comunidade hacker existente nunca aceitou. Como resultado, o rótulo "Software Livre" foi amplamente rejeitado por uma minoria substancial da comunidade hacker (especialmente entre aquelas associadas com o BSD Unix), e usado com sério mas silencioso temor por uma maioria do restante (incluindo eu mesmo).

Apesar destes temores, RMS (Richard Stallman) clama por definir e liderar a comunidade hacker sob a bandeira "Software Livre" amplamente mantido até meados da década de 1990. Isto foi seriamente desafiado somente pela ascensão do Linux. O Linux deu ao desenvolvimento de código aberto um ambiente natural. Muitos projetos emitidos nos termos que hoje chamamos de código aberto migraram de projetos Unix proprietários para Linux. A comunidade em torno do Linux cresceu explosivamente, tornando-se muito maior e mais heterogênea do que a cultura hacker pré-Linux. RMS (Richard Stallman) determinadamente tentou cooptar toda esta atividade para dentro do seu movimento "Software Livre", mas foi frustrado por ambos, a explosão da diversidade da comunidade Linux e do ceticismo público de seu fundador, Linus Torvalds. Torvalds continuou a usar o termo "Software Livre" por falta de alguma alternativa, mas publicamente rejeitou a bagagem ideológica de (RMS) Richard Stallman. Muitos hackers mais jovens seguiram o exemplo.

Em 1996, quando eu primeiramente publiquei este Hacker HOWTO, A comunidade hacker foi rapidamente se reorganizando em torno do Linux e um punhado de outros sistemas operacionais de código aberto (especialmente aqueles que descenderam do BSD Unix). A memória da comunidade sobre o fato de que a maioria de nós tinha gastado decadas desenvolvendo Software de código fechado em Sistemas Operacionais de código fechado não tinham ainda começado a desaparecer, mas este fato já começava a parecer como parte de um passado morto; hackers estavam, cada vez mais, se auto definindo como hackers por sua ligação aos projetos de código aberto como Linux ou Apache.

O termo "cógigo aberto", no entanto, ainda não havia surgido, o que não aconteceu até o início de 1998. Quando surgiu, a maioria da comunidade hacker o adotou dentro dos seis meses seguintes, as exceções foram uma minoria ideologicamente ligada ao termo "software livre". Desde 1998, e especialmente depois de 2003, a identificação de 'hacking' com desenvolvimento de 'codigo aberto (e de software livre)' se tornaram muito próximos. Hoje existe um pequeno ponto na tentativa de distinquir entre essas categorias, e parece improvável que isso vá mudar no futuro.

Vale lembrar, entretando, que isso não foi sempre assim.
Nota histórica: Hacking, Código Aberto, e Software Livre








Paul Graham escreveu um ensaio chamado Grandes Hackers, e outro sobre Graduação, no qual ele fala com muita sabedoria.

Há um documento chamado "Como Ser Um Programador", que é um excelente complemento ao outro. Tem conselhos valiosos não somente sobre codificar e conjunto de habilidades, mas sobre como funcionar dentro de um time de programação.

Eu também escrevi "Uma Breve História do Reino Hacker (A Brief History Of Hackerdom)".

Eu tenho escrito um artigo "The Cathedral and the Bazaar" onde explico muito sobre como as culturas linux e código-aberto funcionam. Onde abordo este tópico mais diretamente em sua continuação "Homesteading the Noosphere".

Rick Moen escreveu um excelente documento sobre como participar de um grupo de usuários Linux.

Rick Moen e eu estivemos colaborando em outro documento sobre "Como fazer perguntas inteligentes (How To Ask Smart Questions)". Isso ajudará você a pedir assistência de uma forma que tornará mais provável que você realmente consiga.

Se você precisa de instrução sobre o básico de computadores pessoais, Unix, e o funcionamento da Internet, veja o HOWTO "O Unix e os Fundamentos da Internet (The Unix and Internet Fundamentals HOWTO)".

Quando você publicar software ou precisar escrever correções(patchs), tente seguir as diretrizes (guidelines) no HOWTO "Prática na Publicação de Sofware (Software Release Practice HOWTO)".

Se você gostou do poema Zen, Você talvez também goste do "Raiz sem Raiz: Os paradoxos do Unix de Meste Foo (Rootless Root: The Unix Koans of Master Foo)".
Outros Recursos








Q: Como eu sei se já sou um hacker?

R: Se faça as três seguintes perguntas:

- Você fala códigos, fluentemente?

- Você se identifica com os objetivos e valores da comunidade hacker?

- Há um membro bem estabelecido na comunidade hacker que já te chamou de hacker?

Se a resposta for sim para as três perguntas, você já é um hacker. Apenas dois não é o suficiente.

O primeiro teste é sobre habilidades. Você provavelmente passará se você tiver as mínimas habilidades técnicas descritas anteriormente neste documento. Você acertou em cheio se você teve uma quantidade substancial de código aceito por um projeto de desenvolvimento de código aberto.

O segundo teste é sobre atitude. Se os cinco princípios da mentalidade hacker pareciam óbvios para você, mais como uma descrição da forma como você já vive do que algo novo, você já está a meio caminho de passar por ele. Essa é o a metade em direção ao caminho; a outra, metade é o grau em que você se identifica com projetos de longo prazo da comunidade hacker

Aqui está uma lista incompleta mas indicativa de alguns destes projetos: Importa para você que o Linux melhore e cresça? Voce é apaixonado pela liberdade de software? Não gosta de monopólios? Você age na crença de que os computadores podem ser instrumentos de capacitação que fazem do mundo um lugar mais rico e mais humano?

Mas pede-se uma nota de cautela aqui. A comunidade hacker tem alguns interesses políticos específicos, principalmente defensivos - dois deles são: defender os direitos de liberdade de expressão e defender-se da disputa de poder da "propriedade intelectual" que poderia tornar o código aberto ilegal. Alguns destes projetos de longo prazo são organizações de direitos civís como a Electronic Frontier Foundation, e a atitude externa inclui certamente o apoio deles. Mas por tras disso, muitos hackers veem tentativas para sistematizar a atitude hacker em um explicito programa político com suspeitas; Nós aprendemos, da forma mais dura, que estas tentativas são divisoras e atrapalham. Se alguém tentar recrutar você para marchar no Capitólio (sede do parlamento) em nome da atitude hacker, eles perderam o foco. A resposta correta provavelmente seria "Cale a boca e mostre o código a eles."

O terceiro teste tem um elemento de recursividade complicado em torno dele. Eu observei na seção chamada "O que é um Hacker?" (What is a Hacker?") que ser um hacker é em parte uma maneira de pertencer a uma sub cultura particular ou rede social com uma história compartilhada, um dentro e um fora. Em um passado distante, hackers foram um grupo muito menos coeso e auto consciente do que são hoje. Mas a importancia do aspecto da rede social tem crescido nos últimos trinta anos quando a internet fez conexões com o núcleo da sub cultura hacker facilitando desenvolver e manter. Um índice comportamental fácil da mudança é que, neste século, nós temos nossas próprias camisetas.

Sociólogos, que estudam redes como essas da cultura hacker sob a rubrica geral de "colégios invisíveis", notaram que uma característica dessas redes é que elas tem mantenedores - membros chave com a autoridade social para aprovar novos membros para dentro de sua rede. Porque o "colégio invisível" que é a cultura hacker é solta (no sentido de permissiva) e informal, a regra dos mantenedores é informal também. Mas uma coisa que todos os hackers entendem profundamente é que nem todo o hacker é um mantenedor. Mantenedores tem que ter um certo grau de maturidade e realizações antes que eles possam obter esse título. O quanto é difícil de quantificar, mas cada hacker sabe fazer isso quando vê.



Q: Você me ensina como hackear?

R: Desde a primeira publicação dessa página, tenho recebido vários pedidos por semana (frequentemente vários num dia) de pessoas assim "me ensine tudo sobre hacking". Infelizmente, não tenho o tempo ou a energia para isso; meus próprios projetos de hacking, e trabalhando como um defensor do código-aberto, consomem 110% do meu tempo.

Mesmo se eu o fizesse, hackear é uma atitude e uma habilidade que você basicamente tem que ensinar a si mesmo. Você perceberá que enquanto hackers de verdade querem te ajudar, eles não respeitam você caso implore para receber tudo o que sabem de mão beijada.

Aprenda algumas coisas primeiro. Mostre que você esta tentando, que você é capaz de aprender por sua própria conta. Então vá aos hakers que você conhece com questões específicas.

Se você fizer um e-mail a um hacker pedindo um conselho, aqui estão duas coisas em primeira mão. Primeiro, descobrimos que as pessoas que são preguiçosas ou descuidadas em sua escrita são geralmente muito preguiçosas e descuidadas em seu pensamento para tornarem-se bons hackers - Portanto tome cuidado para soletrar corretamente, e usar uma boa gramática e pontuação, caso contrário, você provavelmente será ignorado. Segundo, não ouse pedir uma resposta em uma conta ISP (Internet service provider) que seja diferênte da conta que você está enviando; nós achamos que pessoas que fazem isso geralmente são ladrões utilizando contas roubadas, e nós não temos interesse em ajudar ou recompensar roubo.



Q: Como eu posso começar, então?

R: A melhor forma para voce começar provavelmente seria indo a um encontro de um GUL (grupo de usuários do Linux) Você pode encontrar tais grupos no LDP General Linux Information Page; provavelmente há um perto de você, possivelmente associada a uma faculdade ou universidade. Membros do GUL, provavelmente vão te dar um Linux, se voce pedir, e certamente vão te ajudar a instalar e começar.

Seu próximo passo (e seu primeiro passo se voce não conseguir achar um GUL por perto) deve ser achar um projeto de código-aberto que interesse você. Começe lendo o código e revisando erros. Aprenda a contribuir, e trabalhe do seu jeito.

A única maneira é trabalhando para melhorar suas habilidades. Se você me perguntar pessoalmente por conselhos sobre como começar, eu vou dizer a você exatamente estas mesmas coisas, pois eu não tenho um atalho mágico para você Eu irei também mentalmente te dar baixa como um provavel perdedor - Porque se você não tem energia para ler este FAQ e inteligência para compreender a partir dele que a única maneira é trabalhar para melhorar suas habilidades, você é um caso perdido.



Q: Quando é que você tem que começar? É tarde demais para eu aprender?

R: Qualquer idade em que você estiver motivado para começar é uma boa idade. Muitas pessoas tem interesse entre 15 e 20 anos de idade, mas eu conheço exeções nas duas direções.



Q: Quanto tempo levará para eu aprender a hackear?

R: Isso dependerá do quão talentoso você é e o tanto que você trabalhará duro para isso. Muitas pessoas que tentam podem adquirir uma habilidade respeitável dentro de dezoito meses há dois anos, se elas se concentrarem. Não pense que isso termina ai, Ainda que; em hacking (como em muitos outros campos) leva em torno de dez anos para se atingir a maestria. (ter domínio total). E se você for um hacker real, você vai gastar o resto da sua vida aprendendo e aperfeiçoando o seu ofício.



Q: Visual Basic é uma boa linguagem para iniciar?

R: Se você está fazendo essa pergunta, é quase certo que você está pensando em hackear sistemas que rodam no Microsoft Windows. Essa é uma má ideia em si. Quando eu comparei tentar aprender a hackear no Windows com aprender a dançar com o corpo engessado, eu não estava brincando. Não vá ali. Ele é feio, e nunca deixará de ser feio.

Há um problema específico com Visual Basic; Principalmente ele não é portável. Embora existam implementações protótipos de código aberto do Visual Basic, os padrões ECMA aplicaveis não cobrem mais que um pequeno conjunto de suas interfaces de programação. No Windows a maioria do suporte de suas bibliotecas é proprietário para um único fornecedor (Microsoft), se você não for extremamente cuidadoso sobre quais recursos você for utilizar - mais cuidadoso do que qualquer novato seja realmente capaz de ser - você vai acabar preso somente aquelas plataformas que a Microsoft escolheu para suportar. Se você está iniciando no Unix, muitas linguagens melhores com melhores bibliotecas estão disponíveis. Python, por exemplo.

Além disso, como outros Basics, Visual Basic é uma linguagem mal concebida que vai ensinar-lhe maus hábitos de programação. Não, não me peça para descrevê-los em detalhes, que a explicação poderia encher um livro. Aprenda uma linguagem bem projetada em seu lugar.

Um desses maus hábitos é tornar-se dependente em bibliotecas, Widgets, e ferramentas de desenvolvimento de um único fornecedor. Em geral, qualquer linguagem que não seja totalmente suportada pelo menos no Linux ou um dos BSDs, e/ou pelo menos três fornecedores de sistemas operacionais diferentes, é uma pobre linguagem para se aprender hacking nela.



Q: Você pode me ajudar a quebrar um sistema, ou me ensinar como crackear?

R: Não. Qualquer pessoa que depois de ler este FAQ ainda fizer esta pergunta é estúpida demais para ser educável, mesmo que eu tivesse tempo para ensinar. Todos os pedidos por e-mail deste tipo que eu recebo serão ignorados ou respondidos com extrema grosseria.



Q: Como eu consigo a senha da conta de outra pessoa?

R: Isto é cracking. Cai fora, idiota.



Q: Como eu posso [entrar / ler / monitorar] o e-mail de outra pessoa?

R: Isto é cracking. Está perdido, estúpido.



Q: Como eu roubo os privilégios de OP em canais do IRC?

R: Isto é cracking. Fora!, cretino.



Q: Eu fui crackeado. Você poderia me ajudar a me proteger de futuros ataques?

R: Não. Toda vez que me é feita esta pergunta até agora, tem sido de algum pobre coitado rodando Microsoft Windows. Não é possível garantir de forma segura sistemas Windows contra ataques de crackers; o código e a arquitetura simplesmente tem muitas falhas, o que torna dar segurança ao Windows como tentar socorrer tirando água do barco com uma peneira. A única prevenção segura começa com a mudança para o Linux ou outro sistema operacional que seja projetado para, pelo menos ser capaz de prover segurança.



Q: Estou tendo problemas com meu software Windows. Você me ajudaria?

R: Sim. Vá para um prompt do DOS e escreva "format c:". Qualquer problema que você esteja tendo irá acabar em alguns minutos.



Q: Onde posso achar hackers reais para conversar?

R: A melhor maneira é encontrar um grupo de usuários do Unix ou Linux local para você poder ir as reuniões (você pode encontrar links para várias listas de grupos de usuários no site da LDP ou na Ibiblio.

(Eu costumava dizer aqui que você não iria encontrar hackers de verdade no IRC, mas eu estou entendendo que isso está mudando. Aparentemente algumas comunidades hacker reais, ligados a coisas como GIMP e Perl, têm canais de IRC agora.)



Q: Você pode recomendar livros úteis sobre assuntos relacionados ao hacking?

R: Eu mantenho uma HOWTO - Lista de Leitura Linux (Linux Reading List HOWTO) que você pode achar útil. O "The Loginataka" também pode ser interessante. - [http://home.agh.edu.pl/~szymon/humor/loginataka.txt]

Para uma introdução ao Python, veja o tutorial no site do Phyton.





Q: Eu preciso ser bom em matemática para me tornar um hacker?

R: Não. Hacking usa muito pouco de matemática ou aritmética convencional. Em particular, você não vai geralmente precisar de trigonometria, cálculo ou análise (existem exceções a isto em um punhado de áreas de aplicação específicas como gráficos 3-D de computador). Saber alguma lógica formal e álgebra Booleana é bom. Alguns conhecimentos básicos em matemática finita (incluindo teoria de conjuntos finitos, análise combinatória, e teoria dos gráfos) pode ser útil.

Muito mais importante: você precisa ser capaz de pensar logicamente e seguir cadeias de raciocínio lógicos, a mesma maneira que os matemáticos fazem. Enquanto, o conteúdo da maioria dos matemáticos não irão ajuda-lo, você vai precisar de disciplina e inteligência para lidar com matemática. Se você não tiver inteligência, há pouca esperança para você como um hacker, se você não tiver disciplina, é melhor começar a cultiva-la.

Eu acho que uma boa maneira de descobrir se você tem o que é preciso é pegar uma cópia do livro de Raymond Smullyan [What is The Name Of This Book?] . Os divertidos enigmas lógicos de Smullyan estão muito no espírito hacker. Ser capaz de resolvê-los é um bom sinal; se divertir resolvendo-os é melhor ainda.



Q: Que linguagem eu deveria aprender primeiro?

R: XHTML (o mais recente dialeto do HTML) se você ainda não sabe. Há um monte de livros brilhantes, exageradamente ruins de HTML por aí, e de forma angustiante poucos bons. O que eu mais gosto é "HTML: The Definitive Guide".

Mas HTML não é uma linguagem de programação completa. Quando você estiver pronto para começar a programar, eu recomendaria começar com o Python. Você vai ouvir um monte de gente recomendando Perl, mas é mais difícil de aprender e (na minha opinião) menos bem projetado.

C é realmente importante, mas também é bem mais difícil que Python ou Perl. Não tente aprende-lo primeiro.

Usuários Windows, não se contentem com o Visual Basic. Ele vai ensinar para você maus habitos, e não é portavel fora do Windows. Evite.



Q: Qual tipo de hardware eu preciso?

R: Isso costumava ser daqueles computadores pessoais eram bastante fracos de potência e pobres de memória, o suficiente para que eles colocassem limites artificiais no processo de aprendizagem de um hacker. Isso parou de ser verdade em meados da década de 1990, qualquer máquina a partir de um processador Intel 486DX50 ou mais é poderoso o suficiente para o trabalho de desenvolvimento, X, e conectividade com a internet, e os menores discos que você pode comprar hoje em dia são grandes o suficiente.

A coisa mais importante na escolha de uma máquina na qual será utilizada para aprender é se o seu hardware é compatível com Linux ( ou compativel com BSD, se você escolher seguir este caminho). Novamente, isso será verdade para a maioria das máquinas modernas. As áreas mais complexas realmente são modens e placas de rede wireless; algumas máquinas possuem hardware específicos para Windows que não funcionam com o Linux.

Existe um FAQ sobre compatibilidade de hardware, a última versão está aqui.



Q: Eu quero contribuir. Você pode me ajudar a escolher um problema para trabalhar nele?

R: Não, porque eu não conheço seus talentos ou interesses. Você tem que ser auto-motivado ou você não vai aguentar, O qual é o por que de ter outras pessoas escolhendo sua direção na maioria da vezes não funciona.

Tente isso. Veja os anúncios do projeto role pelo site Freshmeat por alguns dias. Quando você ver algo que faça você pensar "Legal! Eu gostaria de trabalhar nisso!", aproveite.



Q: Eu preciso odiar e repudiar a Microsoft?

R: Não, você não precisa. Não que a Microsoft não seja repugnante, mas não havia uma cultura hacker muito antes da Microsoft, assim como ainda haverá uma muito depois que a microsoft for história. Qualquer energia que você gasta odiando a Microsoft será melhor gasto amando o seu ofício. Escrever bom código - isto vai surrar a Microsoft o suficiente sem poluir o seu karma.



Q: Mas o software de código aberto não costuma deixar os programadores incapazes de ganhar a vida?

R: Isto parece improvável - até agora, a industria de software open-source parece estar criando empregos ao invés de tirá-los. Ter um programa escrito é melhor do que não tê-lo; um programador será pago não importa se o programa irá ter ou não código fonte aberto depois de pronto. E, não importa o quanto de software "livre" é escrito, sempre haverá mais demanda para aplicações novas e personalizadas. Eu escrevi mais sobre isso nas páginas de Código Aberto.



Q: Onde eu consigo um Unix grátis?

R: Se você ainda não possui um Unix instalado em sua máquina, em outros lugares desta página inclui endereços de onde obter os Unix gratuitos mais utilizados. Para ser um hacker você precisa de motivação e iniciativa e habilidade para educar você mesmo. Comece agora...
Perguntas Feitas Frequentemente (FAQ)