Sei sulla pagina 1di 6

| Universidade H4CK3R |

Apndices

Apndice
Programao I

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...

Apndice A

Apndice A

| Universidade H4CK3R |

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-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

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.

Apndices

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.4 - 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

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

Apndice A

Apndice A

| Universidade H4CK3R |

Seqncia So executados exatamente na ordem descrita pelo programador.


Incio
Comando 1
...
Comando n
Fim

Seleo So utilizados na tomada de decises quando houver condies.


Se
Se(Expresso Lgica)
Ento faa Instruo1

Apndices

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.

2-Fluxogramas

Repetio Utilizados para repetir um conjunto de aes.


Enquanto (Expresso Lgica) faa Instruo
Par
araa valor inicial at valor final faa Instruo

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.

Repita
Instruo
At (Expresso Lgica)

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

Apndice A

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:

2.1-Aplicao
Incio
Entre com um
nmero

A>10

no

sim

Imprimir OK
na tela

Fim

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.
Apndice A

| Universidade H4CK3R |

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.

3.1-Interpretadas

Apndices

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.

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

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

Apndice A

3.1.-PHP
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>

Apndice A

| Universidade H4CK3R |

<?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.

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:
Apndice A

Apndices

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.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;};
};

Apndice A

| Universidade H4CK3R |

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.

Apndice A

Potrebbero piacerti anche