Sei sulla pagina 1di 6

Programao

Captulo

10
Show me the code1 Linus Torvalds

1 Mostre-me o cdigo! Exclamao corrente no mundo do Open Source sempre que algum quer mostrar algum programa e no revela o que est dentro...

42
Programao I Programao I

43

Todo o bom hacker deve ter noes de programao. Caso contrrio, no ser considerado nada alm de um script kiddie incapaz de criar seus prprios scanners e exploits. Devemos ter conscincia de que os mtodos aplicados para a segurana no param de evoluir, e torna-se cada vez mais difcil encontrar boas ferramentas pela internet. Nosso propsito no transformar o leitor em um expert em programao, mas demonstrar as tcnicas e linguagens mais utilizadas para que ele possa adaptar seus projetos para qualquer situao. Esta aula abordar temas como algoritmos e introduo s linguagens de programao mais utilizadas.

1.3-Operadores Aritmticos, Lgicos e Relacionais


Durante a execuo do seu programa, muitas variveis podero ter seus valores alterados em funo Aritmticos + = Adio - = Subtrao * = Multiplicao / = Diviso Quociente = Quociente da diviso de inteiros Resto = Resto da diviso de inteiros EXP(a,b) = Exponenciao ab Operadores Relacionais = igual diferente < menor > maior menor ou igual maior ou igual Operadores lgicos e e lgico ou conjuno ou ou lgico ou disjuno no negao

1-Algoritmos
Existem vrias definies para algoritmos. Podemos entend-los como uma receita genrica que pode ser utilizada na criao de qualquer programa em qualquer linguagem. Ele conta com uma srie de operaes primitivas que devem ser interligadas. Estudaremos nesse tpico a estrutura bsica dos algoritmos, bem como seus componentes e organizao.

1.1-Estrutura do Algoritmo
Os algoritmos seguem uma estrutura bsica para que no ocorra confuso caso haja alguma necessidade de alterao:

Algoritmo Nome do algoritmo criado Variveis rea para a declarao de variveis Procedimentos Declarao dos procedimentos utilizados Funes Declarao das funes utilizadas Incio Corpo do Algoritmo Fim Trmino do algoritmo

Comandos de entrada e sada e de controle de fluxo


Entrada e Sada
So os comandos responsveis pela troca de informaes entre a mquina e os meios exteriores, como impressoras e monitores, e possuem a seguinte estrutura: Entrada de dadosLeia(varivel1, varivel2...) Leia Sada de dadosImprima(varivel1, varivel2...) Imprima

1.2-Variveis
So as unidades de armazenamento de informaes para o seu algoritmo. Existem diversos formatos especialmente designados para funes especficas: Inteiro: qualquer nmero inteiro, negativo, nulo ou positivo. Real: qualquer nmero real, negativo, nulo ou positivo. Caractere: qualquer conjunto de caracteres alfanumricos. Lgico: tipo especial de varivel que armazena apenas os valores V e F, onde V representa VERDADE e F FALSO As variveis devem ser declaradas para que os programas possam interpret-las. Para tanto, vamos utilizar a seguinte notao: nome: formato.

Controle de Fluxo
So os passos que devem ser seguidos para a resoluo de problemas impostos pelo programador. Os comandos de controle de fluxo esto organizados da seguinte maneira: seqncia, seleo e repetio.
154

44
Programao I

45
Programao I

Seqncia So executados exatamente na ordem descrita pelo programador.


Incio Comando 1 ... Comando n Fim

1.6-Consideraes sobre algoritmos


Os algoritmos podem ser estruturados de diversas formas. Isso vai depender principalmente da experincia de cada um. O exemplo anterior da troca de pneu poderia ser escrito de diversas formas, mas sem perder o seu foco inicial. Outro fator importante que influencia na sua criao, o padro imposto por empresas, cada qual com seus mtodos para auxiliar na documentao. Seria interessante para o hacker descobrir estes mtodos, pois eles podem trazer informaes valiosas. Terminamos aqui a nossa seo sobre algoritmos. Obviamente esse tema se estende muito alm dessas linhas, mas ns decidimos por abordar o assunto de uma forma mais superficial, para no fugir do real propsito do livro, que o universo hacker.

Seleo So utilizados na tomada de decises quando houver condies.


Se Se(Expresso Lgica) Ento faa Instruo1

2-Fluxogramas
Basicamente, o fluxograma a representao grfica de um algoritmo, utilizada para a compreenso do controle de fluxo. Possui diversos elementos que representam desde base de dados at aes a serem executadas. considerada uma ferramenta indispensvel para a visualizao de processos como veremos a seguir.

Repetio Utilizados para repetir um conjunto de aes.


Enquanto (Expresso Lgica) faa Instruo Par a valor inicial at valor final faa Instruo ara Repita Instruo At (Expresso Lgica)

2.1-Componentes do fluxograma
Existem vrios itens que compem o fluxograma, cada qual representando uma funo dentro do algoritmo. Ns iremos abordar apenas a simbologia bsica aqui:

1.5-Idealizao de um algoritmo
Um algoritmo surge a partir de um problema. Devemos analis-lo e criar uma situao em que a soluo seja possvel de uma forma lgica. Vamos partir de uma situao comum, como a troca de um pneu furado. Trocando o pneu: se o pneu estiver furado, ento faa: Abrir o porta-malas Pegar o estepe Pegar as ferramentas Afrouxar os parafusos com a chave Suspender o carro Retirar os parafusos com a chave Colocar o estepe Fixar os parafusos Abaixar o carro Apertar os parafusos Guardar as ferramentas e o estepe Fim

2.1-Aplicao
A utilizao do fluxograma permite que ns possamos enxergar quais os caminhos que sero seguidos pelo programa dependendo das condies impostas pelo desenvolvedor. Essa visualizao permite a correo de erros e pode at demonstrar meios de otimizar o programa. No exemplo seguinte, veremos como fica o fluxograma do seguinte problema: Entre com um nmero e mostre a palavra OK se este nmero for maior do que 10.

46
Programao I Programao I

47

3-Linguagens de Programao
A existncia de diversas linguagens de programao no nenhuma novidade para os hackers. O problema est em adotar uma delas para seus propsitos. Apesar das semelhanas no desenvolvimento, algumas possuem recursos diferenciados como uma melhor adaptao para determinado tipo de ambiente ou rotinas simplificadas e com mais opes para o programador. A plataforma mais utilizada para a produo de programa de utilizao hacker o Unix, pois a eficincia e a possibilidade de encontrar mais recursos a tornam perfeita para execuo dos mais variados tipos de programas. Certas linguagens como PHP e Perl eram exclusivas do Unix, mas com o tempo, o Windows tambm ganhou espao e utilitrios que possibilitam seu desenvolvimento nesse ambiente. Agora, ns iremos estudar algumas das mais populares linguagens de programao, divididas entre compiladas e interpretadas. A principal diferena entre as duas que, na primeira, a utilizao de um compilador necessria para que o computador seja capaz de executar as tarefas desejadas, e a segunda pode ser escrita em um arquivo de texto comum (script), pois sua interpretao no requer qualquer tipo de traduo para que a mquina a entenda, para que voc possa dar seus primeiros passos no mundo dos cdigos-fonte. Note que a primeira linha representa o interpretador do Shell. O caminho descrito deve coincidir sempre com o endereo do compilador no sistema, para que o programa possa ser executado.

3.1.2-Perl
Perl uma das linguagens interpretadas mais utilizadas por desenvolvedores. Ela foi criada para rodar em plataformas Unix, mas sua versatilidade para produzir aplicaes para a Web logo foi reconhecida, tornando-a mais popular ainda. Seus scripts esto presentes em grande parte das ferramentas de pesquisa, contadores, livros de visitas e formulrios. Ela foi originalmente concebida para plataformas Unix, mas j encontra espao de desenvolvimento no Windows tambm. A seguir, veremos um exemplo de codificao da linguagem Perl: #!/usr/bin/perl5 # Exemplo de cdigo em perl print Content-type: text/html\n\n; print Universidade; exit; A primeira linha do cdigo representa a localizao do interpretador perl dentro do servidor. Ela deve coincidir com o local no seu servidor.

3.1-Interpretadas
Linguagens interpretadas so aquelas que no precisam de compilao, sendo interpretadas pelo ambiente do jeito que foram escritas.

3.1.-PHP 3.1.1-Shell Scripting


O Shell um programa que permite a interao do usurio com os sistemas operacionais, tais como o Windows e o Linux. J o shell script a linguagem utilizada para a criao desses programas, na qual voc pode escrever suas instrues em um arquivo-texto para execut-los. Ele pode ser definido como uma srie de comandos escritos em um arquivo-texto, muito parecido com arquivos batch do MS-DOS. Ele pode ser utilizado para escrever seus prprios comandos em um sistema operacional e automatizar tarefas, como administrao de sistemas. Podemos dizer que Shell Scripting quase uma exclusividade para programadores que utilizam o Unix como plataforma. Vamos ver um exemplo de script: #!/bin/sh #Teste de Shell scripting clear echo Universidade O PHP caracterizado por ser open source e de uso geral. Open Source significa cdigo aberto, isto , ela est aberta para que o usurio possa fazer as modificaes que bem entender. Outra caracterstica interessante que, diferente de outras linguagens, ele escrito junto com o prprio HTML no desenvolvimento da pgina. Os scripts so processados no servidor retornando apenas a codificao do HTML como resultado para o usurio. Dessa forma, o cdigo fica seguro sem risco de ser copiado. Por ser uma linguagem serverside, o PHP capaz de realizar qualquer coisa, alm disso, ele pode rodar em todos os tipos de servidores e plataformas. Exemplo de sintaxe PHP: <html> <head> <title>Exemplo</title> </head> <body>

48
Programao I Programao I

49

<?php echo O PHP uma linguagem verstil!; ?> </body> </html> Este exemplo imprime na tela do usurio apenas a mensagem O PHP uma linguagem verstil!. Note que ns utilizamos toda a estrutura em HTML, a nica novidade foi a incluso da tag que representa a linguagem, no caso: <?php para iniciar e ?> para finalizar. Para rodar o PHP, voc necessita do prprio, mais um servidor e um navegador para Internet.

Na primeira coluna, voc encontra as posies de memria, na central as instrues e, na ltima, o conjunto de registradores utilizados para executar os comandos no programa.

3.2.2-Pascal
A linguagem Pascal foi desenvolvida na dcada de 70, e foi baseada em algumas linguagens como o PLI e ALGOL. Em 1983, a Borland lanou o Turbo Pascal, aproveitando o aquecimento do mercado de informtica.Um programa escrito nessa linguagem deve ser iniciado com a palavra program, seguida por um cabealho, um ponto e vrgula (;), um bloco (begin & end), e terminando com um ponto final (.), como demonstramos na seguinte estrutura: program Universidade; var Nome: String; begin write(Nota:); readln(nota); writeln(Nota: ,nota); readln; end end. Podemos notar a simplicidade do cdigo e a total semelhana com o que vimos anteriormente sobre algoritmos. Muitos programas de invaso e nuke so escritos em Pascal, como o WinNuke que veremos em outro captulo.

3.2-Compiladas
As linguagens compiladas tm seus cdigos-fonte lidos por um programa chamado compilador, que por sua vez, cria um arquivo binrio executvel.

3.2.1-Assembler
Assembler a linguagem de mais baixo nvel que composta praticamente de instrues (assembly) que representam instrues escritas em linguagem de mquina, tornando-a muito rpida em funo de sua proximidade com o hardware. Uma das principais vantagens a flexibilidade e controle que ela tem sobre o computador. As instrues dessa linguagem podem ser incorporadas em qualquer programa a ser compilado, isso porque, ao compilar um cdigo qualquer, este ser transformado em assembly. Para fazer o teste, basta apenas entrar na linha de comando e utilizar o debug com o nome de um programa .exe qualquer e ento pressionar u (unassebly) para ver o cdigo em assembly, como mostra a figura a seguir:

3.2.3 C
Considerada como uma linguagem de nvel mdio, o C, e suas variaes, ainda amplamente utilizadaopor desenvolvedores. Foi criado nos laboratrios Bell, em 1970, por Brian Kernighan e Dennis M. Ritchie a partir de uma linguagem at ento conhecida como B. Daremos nfase variao conhecida como C++, a mais popular entre os programadores. A seguir, veremos um exemplo de tal codificao: #include <iostream.h> struct contador { int num; void incrementa(void){num=num+1;}; void comeca(void){num=0;}; };

50
Programao I Programao I

51

void main() { contador contador; contador.comeca(); cout << contador.num << endl; contador.incrementa(); cout << contador.num << endl; } A linguagem conhecida como Java foi criada com base na codificao C. Dessa forma, o bom conhecedor da linguagem C est qualificado para trabalhar com uma das linguagens mais utilizadas na Internet.

4- Concluses
Acabamos de fornecer uma viso geral, bem como dicas sobre as linguagens mais utilizadas para o desenvolvimento de ferramentas para hackers. Nos prximos captulos voltaremos a falar sobre programao, dando exemplos especficos de como ela pode ser utilizada para a criao de exploits e tambm na engenharia social.

52
Programao I

Potrebbero piacerti anche