Buscar

Apostila - Módulo 2 - Bootcamp Analista de Ataque Cibernético

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Python e Bash Script 
 
 
Bootcamp Analista de Ataque Cibernético 
 
 
 
Eduardo dos Santos Caetano 
 
 
 
 
 
2021 
 
 
Programação Python e Bash Script – Página 2 de 31 
 
 
Programação Python e Bash Script 
Bootcamp Analista de Ataque Cibernético 
Eduardo dos Santos Caetano 
© Copyright do Instituto de Gestão e Tecnologia da Informação. 
Todos os direitos reservados. 
 
 
 
 
 
 
Programação Python e Bash Script – Página 3 de 31 
Sumário 
Capítulo 1. Códigos Maliciosos – Malware ......................................................... 5 
1.1. Formas de Ação ............................................................................... 5 
1.2. Tipos de códigos maliciosos ............................................................ 6 
1.3. Prevenção ........................................................................................ 7 
Capítulo 2. Engenharia Reversa .......................................................................... 8 
2.1. Fundamentos da Engenharia Reversa ............................................................ 8 
2.2. Fundamentos de Estrutura de Arquivos ........................................................... 8 
2.3. Uso ofensivo e defensivo da engenharia reversa .......................................... 10 
Capítulo 3. Framework de desenvolvimento .................................................... 11 
3.1. Framewok no Python ..................................................................................... 11 
Capítulo 4. Lógica de Programação em Python .............................................. 12 
4.1. Algoritmo ........................................................................................................ 12 
4.2. Primeiro código .............................................................................................. 13 
4.3. Variáveis ........................................................................................................ 14 
4.4. Operadores de comparação e numéricos ...................................................... 15 
4.5. Listas.............................................................................................................. 16 
Capítulo 5. Programação em Python ................................................................ 18 
5.1. Tomada de decisão ....................................................................................... 18 
5.2. Estrutura de Repetição .................................................................................. 19 
Capítulo 6. Exercícios em Python ..................................................................... 22 
 
 
Programação Python e Bash Script – Página 4 de 31 
6.1. Lista de Exercícios ......................................................................................... 22 
Capítulo 7. Shell 24 
7.1. O começo ....................................................................................................... 24 
Capítulo 8. Script Bash ...................................................................................... 28 
8.1. Primeiro Script ............................................................................................... 28 
8.2. Variáveis ........................................................................................................ 28 
8.3. Estrutura de decisão ...................................................................................... 29 
Referências........................... .................................................................................. 31 
 
 
 
 
Programação Python e Bash Script – Página 5 de 31 
Capítulo 1. Códigos Maliciosos – Malware 
Códigos Maliciosos, ou Malware, são programas ou scrips desenvolvidos 
para a execução de alguma atividade maliciosa digital. Os alvos podem ser 
computadores, celulares ou até mesmo dispositivos IOT – Internet das Coisas 
(Internet of Things). 
Dentre os motivos, estão a obtenção de vantagens financeiras, direta ou 
indiretamente, coleta de informações valiosas ou somente por baderna. 
 
1.1. Formas de Ação 
Existem diversas ações possíveis aos códigos maliciosos para infectar ou 
comprometer um dispositivo. Vamos analisar algumas delas: 
▪ Pela exploração de vulnerabilidades nos programas. Uma boa forma de 
conhecer vulnerabilidades é por meio do site mitre.org, que mantém e divulga 
uma lista de CVEs – Vulnerabilidades e exposições comuns (Common 
Vulnerabilities and Exposures). 
▪ Execução de mídias removíveis infectadas, como um pendrive, é um tipo 
comum de ação, mas que vem diminuindo com o tempo. 
▪ O acesso a páginas de Internet infectadas usando um navegador vulnerável 
ou desatualizado. 
▪ A execução de arquivos previamente infectados, normalmente enviados por e-
mail. 
▪ A ação direta de um atacante em que tenta burlar medidas de segurança. 
 
 
 
 
 
Programação Python e Bash Script – Página 6 de 31 
1.2. Tipos de códigos maliciosos 
Vírus é um tipo de código malicioso que tem a capacidade de se autopropagar 
infectando novos arquivos. Um vírus sempre estará “escondido” dentro de outros 
arquivos; por isso, diz-se que um arquivo “está infectado” por algum vírus. A infecção 
depende da execução de algum arquivo já comprometido. Todos os tipos de arquivos 
podem ser comprometidos, arquivos de texto, de música ou qualquer outro. 
Worm, ou minhoca, é muito parecido com vírus, a grande diferença é que não 
se esconde dentro de um arquivo, ou seja, não precisa de um hospedeiro. Ele tenta 
se camuflar como um arquivo legítimo, usando nomes e características de arquivos 
comuns. Além disso, precisa de um comando ou gatilho (uma data, por exemplo) para 
executar a parte do código que cumpre as ações maliciosas. 
Botnet tem a infecção parecida com um worm, mas a principal diferença é no 
objetivo. Botnets querem criar redes zumbis infectando milhares de computadores 
para a execução de ações em conjunto. O atacante mantém controle secreto das 
máquinas infectadas e coordena atividades ilegais, como DDOS, ataque distribuído 
de negação de serviço (Distributed Denial of Service) ou envio de spam. 
Spyware não executa ações maliciosas, mas espiona o equipamento 
infectado. O objetivo, aqui, é coletar informações importantes, como dados bancários, 
credenciais de acesso ou informações sigilosas. 
Backdoor é um código malicioso que é inserido após um ataque bem-
sucedido a um equipamento para garantir que o atacante consiga voltar ao 
equipamento atacado sem precisar burlar novamente as medidas de segurança. 
Trojan, ou cavalo de Tróia, é um programa que executa ações normais e 
legítimas, mas, de forma oculta, desempenha funções maliciosas diversas. 
 
 
 
 
 
Programação Python e Bash Script – Página 7 de 31 
1.3. Prevenção 
Falhas de segurança são descobertas com muita frequência, por isso, a 
melhor forma de defesa é a prevenção. 
Manter o sistema operacional e todos os programas atualizados, sempre 
utilizar programas de antivírus e não abrir arquivos ou links de origem desconhecida 
são os conselhos clássicos e muito funcionais. 
Figura 1 – Quadro resumo dos principais tipos de código malicioso. 
 
Fonte: https://cartilha.cert.br/malware/. 
 
 
Programação Python e Bash Script – Página 8 de 31 
Capítulo 2. Engenharia Reversa 
Engenharia reversa é a atividade de entender o funcionamento de algo 
analisando a estrutura e o funcionamento do objeto de estudo. 
 
2.1. Fundamentos da Engenharia Reversa 
A definição acima não se restringe à tecnologia. Uma criança, quando 
desmonta e tenta remontar um brinquedo, está praticando engenharia reversa, ela 
quer entender como funciona um carrinho de fricção, um trenzinho motorizado ou a 
boneca falante. 
A engenharia reversa permitiu que senhas fossem quebradas durante a 
Segunda Guerra Mundial e ajudassem a definir os rumos do conflito. Empresas 
escondem seus protótipos da concorrência para retardar a cópia de seuslançamentos. 
Dentro da tecnologia da informação, existe o uso legítimo, por exemplo, para 
reimplementação de um software ou criação de compatibilidade de protocolos de 
comunicação. O programa Wine é uma clara demonstração do uso de engenharia 
reversa para permitir que programas feitos para Windows sejam utilizados no 
GNU/Linux. 
De forma ofensiva, a engenharia reversa na tecnologia da informação permite 
a um atacante entender como funciona um programa e permite tentar burlar seus 
mecanismos de segurança. De forma defensiva, é utilizada para analisar códigos 
maliciosos e, assim, entender como atua o atacante e melhorar as proteções. 
 
2.2. Fundamentos de Estrutura de Arquivos 
Apesar de escrevermos códigos em linguagem humana, os arquivos são 
interpretados ou compilados para linguagem de máquina, os famosos números 
binários. 
 
 
Programação Python e Bash Script – Página 9 de 31 
As linguagens de programação podem ser classificadas em relação a quão 
distantes estão da linguagem de máquina. Temos, nessa classificação, as linguagens 
de baixo nível, que são aquelas mais próximas da máquina, como Assembly, e as de 
alto nível que estão no lado oposto, como Java, Python ou C#. 
Ao analisar um arquivo eletrônico através de programa de edição, não 
veremos as instruções tais quais foram escritas, mas sim no formato hexadecimal um 
nível mais baixo, próximo ao formato binário. 
Figura 2 
 
Todo arquivo é composto por um cabeçalho e várias seções. O cabeçalho 
tem definições do arquivo e seções de seu conteúdo de fato. 
Quando analisamos um arquivo executável, é possível ver seu 
comportamento, observar se faz chamadas a outros arquivos, se acessa algum site 
na Internet e se possui dependências de bibliotecas externas, ou seja, se precisa de 
códigos que estão armazenados em arquivos do tipo .DLL ou .OCX, por exemplo. 
 
 
 
Programação Python e Bash Script – Página 10 de 31 
2.3. Uso ofensivo e defensivo da engenharia reversa 
Existem vários programas que permitem não só analisar o conteúdo de um 
arquivo, mas também editá-lo, sendo assim, viável a criação de versões modificadas 
que executarão algum código malicioso. Um vírus de computador faz isso. 
Uma forma de garantir a originalidade de um arquivo é utilizando o algoritmo 
de hash. Quando esse algoritimo é executado sobre um arquivo, gera uma cadeia de 
caracteres de tamanho fixo e conteúdo único que serve para identificá-lo. Se o arquivo 
sofre qualquer edição, mesmo que a adição de um espaço ou mudança de letra de 
maiúsculo para minúsculo, o código hash será totalmente diferente e, portanto, o 
arquivo não será mais o mesmo. 
Abaixo, uma imagem coletada do site de downloads do Linux Debian, no qual 
constam os resultados da aplicação de uma função hash em MD5 de alguns arquivos 
de instalação (https://cdimage.debian.org/debian-cd/current/i386/iso-cd/MD5SUMS). 
Com essa informação em mãos, o usuário pode verificar se os arquivos que tem em 
sua posse são idênticos aos originais disponibilizados pelo fabricante. 
Figura 3 – Resultados da aplicação de uma função hash em MD5. 
 
Fonte: https://cdimage.debian.org/debian-cd/current/i386/iso-cd/MD5SUMS 
Ao analisar um código malicioso, muitas vezes, é necessário executá-lo para 
entender o funcionamento. Nesses casos, é utilizada uma sandbox, um ambiente 
controlado onde não haverá riscos de que algo malicioso afete o sistema principal do 
analista. 
 
 
 
Programação Python e Bash Script – Página 11 de 31 
Capítulo 3. Framework de desenvolvimento 
Framework, de forma conceitual, é um conjunto de conceitos ou 
conhecimentos para resolver um problema. Essa é uma explicação muito genérica. 
Dentro de desenvolvimento de software, framework é um pouco mais que 
isso, e já vamos entender. 
 
3.1. Framewok no Python 
Para programar em Python, você só precisa baixar o compilador no site oficial 
e instalar em sua máquina (https://www.python.org/). Com isso, você poderá usar um 
editor de textos de sua preferência e depois compilar. 
Quando usado um framework, são agregadas funcionalidades que facilitam o 
desenvolvimento, ou seja, são adicionadas camadas de facilidades e resolvem 
problemas comuns. 
O Django Framewor é voltado para 
desenvolvedores Web em Python. Flask é 
também um framework que se propõe a ser 
mínimo, em oposição ao Django, que se 
autodenomina FullStack. Anaconda Python é 
um framework mais voltado para a ciência de 
dados. 
A escolha de qual framework usar depende das características do projeto e 
dos gostos pessoais do desenvolvedor. 
 
 
 
https://www.python.org/
 
 
Programação Python e Bash Script – Página 12 de 31 
Capítulo 4. Lógica de Programação em Python 
Python é uma linguagem de programação de uso geral que vem se tornando 
cada dia mais popular pela facilidade de aprendizagem. 
Para a área de Cybersegurança, ela é muito indicada, pois pode executar 
muitas funções de segurança, como análise de malware, varreduras e testes de 
penetração. Além disso, a facilidade de uso permite que o analista de segurança não 
precise gastar muito tempo codificando, aproveitando suas horas para outras 
atividades. 
 
4.1. Algoritmo 
Linguagem de programação é uma forma de escrevermos comandos para o 
computador executar e, para isso, temos de seguir uma estrutura bem definida de 
comandos, também chamados de instruções. Um conjunto de instruções chamamos 
de algoritmo. 
O computador não subentende nada, portanto, é importante especificar tudo 
o que deve ser feito e na ordem que deve ser feito. 
Para ficar mais claro, imagine que está escrevendo uma receita de bolo para 
alguém que nunca cozinhou. Se não falar que deve quebrar os ovos e descartar as 
cascas, o bolo terá uma certa crocância extra. Nenhum detalhe pode ser esquecido 
sob risco de ocorrer um resultado inesperado ou uma falha crítica. 
Um algoritmo deve ter algumas características: 
1. Completo: Todas as ações necessárias à execução devem ser descritas; 
2. Sem redundância: Só pode haver uma forma de interpretar um comando; 
3. Determinístico: Se todas as ações forem executadas, o resultado 
aguardado deve sempre ocorrer; 
 
 
Programação Python e Bash Script – Página 13 de 31 
4. Finito: Deve ser claro o momento em que o algoritmo será finalizado. 
 
4.2. Primeiro código 
No curso, utilizaremos o Colab Google (https://colab.research.google.com/), 
um compilador online com vários recursos e que não precisa de instalação. Utilizando 
essa ferramenta, temos acesso aos nossos códigos onde estivermos. 
Para começar é simples, você precisará usar uma conta google. 
1. Clique no link do parágrafo anterior; 
2. Clique em “novo notebook”. 
Pronto! Você deverá estar vendo uma tela como esta: 
 
Nessa caixinha, faremos nosso primeiro código. Digite dentro da célula igual 
à imagem abaixo e clique na seta para ver seu código sendo executado. 
 
https://colab.research.google.com/
 
 
Programação Python e Bash Script – Página 14 de 31 
Observe que, para a linguagem Python, faz diferença se um comando for 
escrito em letras maiúsculas ou minúsculas, e aparecerá uma mensagem de erro se 
o comando não estiver escrito de forma correta. Nesse primeiro exemplo, a palavra 
print é o comando, então, estamos mandando imprimir, na tela (e não em uma 
impressora), o texto que estiver dentro dos parênteses. 
Como o Python sabe que é um texto? Pela existência das aspas. 
Agora, façamos alguns experimentos. Troque o comando pelas opções a 
seguir e execute para ver como funciona. 
print (5+5) print (5*5) print (5/5) print (5-5) 
 
Você acabou de conhecer como o Python calcula as quatro operações 
aritméticas básicas. 
 
4.3. Variáveis 
Quando estamos programando, precisamos armazenar dados para serem 
usados depois. Esse local que guardamos os dados é chamado de variável. 
Para entender melhor, digite o seguinte exemplo no Google Colab e execute 
a célula: 
 
Nesse exemplo,foram criadas as variáveis num1, num2 e nome, e, de agora 
em diante, podemos usar os valores que estão lá dentro a qualquer momento. O 
resultado da execução deve ter trazido as respostas 5, 12, Alvares em três linhas 
separadas. 
 
 
Programação Python e Bash Script – Página 15 de 31 
Cada variável pode conter um tipo de dado, se, no exemplo acima, houver a 
tentativa de somar num1 + nome, haverá um erro. 
Há alguns tipos de dados primitivos que são número inteiro, número real, 
número complexo, boleano e texto. Observe a tabelinha: 
Tipo Descrição Exemplo 
Int número inteiro a=1 
Float número real b=1.0 
Complex número complexo c= 4+3j 
Bool boleano d = True 
Str texto e="texto" 
Para saber o tipo de dado em uma variável, existe o comando type. 
Experimente, no Colab, criar variáveis e, em seguida, verificar o tipo de dados, como 
no exemplo abaixo: 
 
 
4.4. Operadores de comparação e numéricos 
Frequentemente, será necessário verificar se um valor dentro de uma variável 
atende a algum critério de comparação, e, para isso, usamos operadores de 
comparação. A resposta sempre será boleana (verdadeira ou falsa). 
Os principais operadores de comparação e seu significado são: 
Operador Descrição 
> Maior que 
< Menor que 
== Igual 
>= Maor ou igual 
<= Menor ou igual 
!= Diferente 
 
 
 
Programação Python e Bash Script – Página 16 de 31 
Use as variáveis num1 e num2 criadas anteriormente e esses operadores. O 
código num1<num2 deve retornar True e num1==num2 deve retornar False. 
 
Por vezes, será necessário testar se mais de uma condição é satisfeita. Em 
um exemplo simples, quero saber se o conteúdo da variável nome é diferente de 
Marcos ou num1 é diferente de num2. Para isso, usamos os operadores lógicos and, 
or, not (respectivamente e, ou, não). Teste conforme o exemplo abaixo: 
 
 
4.5. Listas 
No Python, existe um elemento chamado de lista (o mesmo que “Vetor” em 
outras linguagens de programação), que é sequência de valores armazenados juntos. 
Esse elemento é importante para trabalhar com muitos dados sequenciais, como uma 
lista de nomes, lista de CEPs e afins. 
Criar listas é como criar uma variável comum e trabalhar com elas é simples. 
Uma lista estará sempre entre colchetes e separada por vírgulas. Observe a criação 
abaixo: 
lst = ["Carlos","Abel","Joao"] 
 
Para acessar algum valor da lista, basta usar o nome dela e, dentro do 
colchete, o número relativo à posição do elemento (o Python começa a contagem pelo 
zero). 
Nesse exemplo, lst[1] vai trazer Abel como resposta, e lst[0] trará Carlos: 
 
 
Programação Python e Bash Script – Página 17 de 31 
 
 
 Para contar a quantidade de elementos em uma lista, usamos o comando len. 
Listas têm propriedades que permitem manipular seu conteúdo, e, para usar uma 
propriedade, usamos o nome da lista, um porto e o nome da propriedade. Para 
adicionar, ordenar ou mostrar de forma inversa, usamos respectivamente .extend .sort 
e .reverse. 
Execute os comandos abaixo observando as diferenças para entender melhor: 
 
 
 
 
 
Programação Python e Bash Script – Página 18 de 31 
Capítulo 5. Programação em Python 
5.1. Tomada de decisão 
A tomada de decisão é uma estrutura que existe em praticamente todos os 
códigos, é o momento em que o algoritmo avalia alguma condição lógica e escolhe 
qual bloco de comandos seguir. 
A estrutura é uma simples decisão baseada em alguma condição passível de 
verificação. Observe os exemplos a seguir: “Se estiver chovendo, então levarei o 
guarda-chuvas”, “Se fizer Sol, então iremos ao clube senão iremos ao cinema”. Os 
trechos sublinhados são as condições que usamos no dia a dia, e suas respostas são 
do tipo boleana (Verdadeira ou Falsa). 
Em Python, o comando segue a mesma estrutura. Vejamos os exemplos 
acima dentro de uma estrutura Python: 
if (condição): 
 Ação 
 
if (estiver chovendo): 
 Levar guarda-chuvas 
if (condição): 
 Ação 
else: 
 Outra ação 
if (fizer Sol): 
 Ir ao Clube 
else: 
 Ir ao Cinema 
 
Observe que as ações estão um pouco recuadas em relação ao If e ao Else, 
isso é chamado de identação (um espaço um um Tab) e sem essa organização o 
Python não consegue reconhecer que a ação está dentro do bloco if ou else. 
Vamos praticar, no Colab, com o exemplo abaixo. No primeiro exemplo, se o 
nome digitado coincidir com o critério, será mostrada uma mensagem, caso contrário, 
nada acontece. No segundo exemplo, caso o nome não coincida, é mostrada uma 
mensagem avisando que não é a Ana. Teste a execução com letras maiúsculas e 
minúsculas e veja o que acontece. 
 
 
Programação Python e Bash Script – Página 19 de 31 
 
O comando input recebe o valor digitado como string, se a intenção é 
trabalhar com números, devemos converter antes de utilizar o valor recebido, como 
no exemplo a seguir: 
 
Então, seguindo o exemplo, int(valor) converte o valor, se possível, para 
inteiro. Seguindo a mesma lógica, temos as funções float(valor), str(valor). 
 
5.2. Estrutura de Repetição 
O Python permite que um mesmo bloco de ações seja repetido várias vezes. 
Para isso, usamos o comando While, que poderia ser traduzido como “enquanto”. Isso 
significa que, enquanto uma condição não for satisfeita, o laço de repetição continuará 
ocorrendo. 
A estrutura é simples, conforme abaixo: 
 
 
Programação Python e Bash Script – Página 20 de 31 
 
No próximo exemplo, daremos três chances para digitar o nome “Ana”, uma 
adaptação de um exemplo anterior: 
 
Nesse exemplo, preste muita atenção na identação! 
Outra estrutura de repetição é quando sabemos quantas vezes queremos que 
o laço seja feito. Nesse caso, usamos o comando for, como no exemplo a seguir: 
 
 
Programação Python e Bash Script – Página 21 de 31 
 
Nesse exemplo, é pedido um número três vezes e, ao final, é mostrada a 
soma dos números digitados. Novamente, preste atenção na identação! 
 
 
Programação Python e Bash Script – Página 22 de 31 
Capítulo 6. Exercícios em Python 
Esse é um capítulo para a sua prática. A seguir, teremos uma lista de 
exercícios em Python. A resolução será feita nas aulas gravadas deste capítulo. No 
começo, pode não ser fácil, persista e não desista! Se precisar de ajuda, use o fórum. 
 
6.1. Lista de Exercícios 
1. Faça um programa que peça dois números e imprima a soma. 
2. Faça um programa que converta metros para centímetros. 
3. Faça um programa que peça dois números e imprima o maior deles. 
4. Faça um programa que peça um valor e mostre, na tela, se o valor é positivo 
ou negativo. 
5. Faça um programa que leia três números e mostre o maior deles. 
6. Faça um programa que leia três números e mostre o maior e o menor deles. 
7. Faça um programa que peça uma nota, entre zero e dez. Mostre uma 
mensagem, caso o valor seja inválido e continue pedindo até que o usuário 
informe um valor válido. 
8. Faça um programa que leia 5 números e informe a soma e a média dos 
números. 
9. Faça um programa que receba dois números inteiros e gere os números 
inteiros que estão no intervalo compreendido por eles. 
10. Nomes: Armazene os nomes de alguns de seus amigos em uma lista chamada 
names. Exiba o nome de cada pessoa, acessando cada elemento da lista, um 
de cada vez. 
 
 
Programação Python e Bash Script – Página 23 de 31 
11. Saudações: Comece com a lista usada no exercício anterior, mas, em vez de 
simplesmente exibir o nome de cada pessoa, apresente uma mensagem a 
elas. O texto de cada mensagem deve ser o mesmo, porém cada mensagem 
deve estar personalizada com o nome da pessoa. 
12. Sua própria lista: Pense em seu meio de transporte preferido, como moto ou 
carro, e crie uma lista que armazene vários exemplos. Utilize sua lista para 
exibir uma série de frases sobre esses itens, como: “Gostaria de ter um 
chevete?” 
 
 
Programação Python e Bash Script – Página 24 de 31 
Capítulo 7. Shell 
Shell é um programa interpretador de comandos no Linux,na verdade, 
existem vários Shells, sendo os mais comuns o sh (chamado Bourne shell), o bash 
(Bourne again shell), o csh (C Shell), o Tcsh (Tenex C shell), o ksh (Korn shell) e o 
zsh (Zero shell). 
Neste curso, trabalharemos com o Bash. 
Existem diversos Linux disponíveis no mercado. Utilizarei, para este curso, o 
Kali Linuz, uma distribuição baseada no Debian. Recomendo que use ou o Debian ou 
alguma distribuição baseada no Debian. 
 
7.1. O começo 
Quando falamos em Scripts Bash, estamos falando em automatizar 
comandos que podem ser utilizados no terminal do Linux. Neste capítulo, focaremos 
em conhecer um pouco o sistema de arquivos padrão UNIX e comandos universais. 
No próximo capítulo, criaremos scripts baseado no que conheceremos aqui. 
 
Esse é o famoso terminal Linux, e essa primeira tela já nos dá algumas 
informações. O nome antes do @ é o nome de usuário logado, após o @ é o nome 
da máquina. Nessa imagem, é o usuário kali na máquina kali. O til ~ significa que 
estamos na pasta pessoal do usuário logado. O $ informa que é um usuário comum, 
a outra opção seria o # que informaria que está logado como root, o super usuário. 
 
 
Programação Python e Bash Script – Página 25 de 31 
 
Um dos primeiros comandos quando estamos em uma máquina 
desconhecida é o pwd, ele mostra o caminho completo do diretório que você está. 
Quando tiver dúvidas sobre o uso de algum programa no shell, pode usar o 
comando man ‘<nome do programa>’ ou ‘help <nome do programa>’. 
Os principais diretórios em uma distribuição linux são: 
/ Diretório Raiz 
/bin Utilitários principais do Unix 
/etc Programas e arquivos administrativos 
/lib Bibliotecas de funções, programas e dados 
/tmp Arquivos temporários 
/home/ Onde ficam os diretórios dos usuários 
/usr/bin Utilitários 
/usr/sbin Utilitários usados somente pelo root 
/usr/include Arquivos de cabeçalho (por exemplo, da linguagem C) 
/usr/lib Bibliotecas de funções 
/usr/spool Áreas de spool (impressora, por exemplo) 
/dev Arquivos especiais de dispositivo 
 
Para verificar o conteúdo do diretório atual, o comando ls é suficiente; para 
ver o conteúdo, basta indicar o caminho: 
 
 
Programação Python e Bash Script – Página 26 de 31 
 
Para navegar entre os diretórios, o comando é o cd, conforme demonstrado 
abaixo. O comando pwd, como já dito, mostra onde você está: 
 
Para criar um diretório, o comando é o mkdir e, para remover, é o rmdir: 
 
A tabela a seguir traz uma lista de comando de manipulação de arquivos e 
diretórios: 
 
 
Programação Python e Bash Script – Página 27 de 31 
pwd Informa o nome do diretório corrente 
cd Navegando entre diretórios 
ls Listar arquivos 
cp Cópia de arquivos e diretórios 
mv Move arquivos e diretórios 
Ln Estabelece ligações entre arquivos 
mkdir Cria um diretório 
rmdir Remove um diretório vazio 
Rm Apaga arquivos e diretórios 
File Indicando tipo de arquivo 
grep Procura arquivos por conteúdo 
find Localiza arquivo por suas características 
basename Devolve o nome de um arquivo recebendo o caminho completo 
rename Renomeando arquivos com Expressões Regulares 
dirname Devolve o nome do diretório, recebendo o caminho completo 
 
No Linux, não é necessário extensão em arquivos. Dessa forma, o comando 
file é útil para identificar o tipo de arquivos: 
 
E, para finalizar o capítulo, o comando para verificar qual a shell que está usando é 
echo $SHELL: 
 
 
 
Programação Python e Bash Script – Página 28 de 31 
Capítulo 8. Script Bash 
Script é um arquivo de texto com os mesmos comandos que você executa no 
terminal e tem por objetivo executar comandos em lote. 
 
8.1. Primeiro Script 
Um script é um arquivo com diversos comandos de terminal e não é 
necessária uma extensão específica. Regras comuns de criação de nomes de arquivo 
se aplicam. 
O local que você vai criar seu script é importante. Por padrão, só é possível 
executar o arquivo dentro do diretório do arquivo ou passando o endereço completo. 
Se quiser que o aquivo seja executado de qualquer local, pode adicionar sua 
pasta pessoal de scripts na variável de ambiente $PATH. 
Por fim, é importante tornar o arquivo executável usando o comando chmod. 
comando Objetivo 
:~$cd Voltar ao diretório padrão do seu usuário. 
:~$mkdir scripts Criar diretório scripts para 
:~$cd scripts Entrar no diretório recém criado 
:~$> primeiro Cria um arquivo vazio chamado primeiro 
:~$nano primeiro Abre o arquivo primeiro para edição 
dentro do editor escreva: Esses serão os comandos executados nesse primeiro 
script. Limpa a tela e lista o conteúdo do diretório raiz clear 
ls / -a 
Ctrl+S depois Ctrl+X Salva e fecha o arquivo 
chmod +x primeiro Adiciona o arquivo propriedade de execução 
./primeiro Executa o primeiro script 
 
8.2. Variáveis 
Para a criação de variáveis, basta colocar o nome da variável seguida do sinal 
de igualdade (sem espaços). Para chamar a variável, utilizar $<nome da variavel>. 
Um exemplo: 
 
 
Programação Python e Bash Script – Página 29 de 31 
:~$Nome=”Aula de Script” 
:~$Nome= ‘Aula de Script’ 
:~$Nome=Aula\ de\ Script 
:~$Numero=10 
:~$Echo @Nome 
:~$Echo @Numero 
 
Para capturar uma informação que o usuário digita, use o comando “:~$read 
nome”. A função read serve para capturar na função definida. Um exemplo seria: 
 
:~$echo "Introduza Nome da Pessoa " ; read nome 
:~$echo $nome 
 
8.3. Estrutura de decisão 
A estrutura do If é muito parecida com Python, com a diferença que precisa 
fechar o bloco com o comando fi (if ao contrário), seguindo o modelo: 
if [ condição ]; then 
 ações caso condição verdadeira" 
else 
 ações caso condição falsa 
fi 
 
Alguns exemplos: 
-e Arquivo, diretório, link, ou arquivo especial existe 
if [ -e "/bin/bash" ]; then 
 echo "O arquivo ou diretório existe" 
else 
 echo "O arquivo ou diretório não existe" 
fi 
 
-f Arquivo existe 
if [ -f "/bin/bash" ]; then 
 echo "O arquivo existe" 
else 
 echo "O arquivo não existe" 
fi 
 
! -e Arquivo, diretório, link, ou arquivo especial NÃO existe 
if [ ! -e "/bin/bash" ]; then 
 
 
Programação Python e Bash Script – Página 30 de 31 
 echo "O arquivo ou diretório não existe" 
else 
 echo "O arquivo ou diretório existe" 
fi 
 
! -f Arquivo não existe 
if [ ! -f "/bin/bash" ]; then 
 echo "O arquivo não existe" 
else 
 echo "O arquivo existe" 
fi 
 
!= Diferente 
if [ "0" != "1" ]; then 
 echo "A desigualdade é verdadeira" 
else 
 echo "A desigualdade não é verdadeira" 
fi 
 
-d Diretório existe 
if [ -d "/boot" ] 
then 
 echo "O diretório existe" 
else 
 echo "O diretório NÃO existe" 
fi 
 
 
 
 
Programação Python e Bash Script – Página 31 de 31 
Referências 
BENEDUSI, P.; CIMITILE, A.; Carlini, U. Reverse Engineering Processes, Design 
Document Production, and Structure Charts. In: Journal Systems and Software. v. 19. 
p. 225- 245. 1992. 
BURTCH, K. O. Scripts de Shell Linux com Bash. Um guia de referência 
abrangente para usuários e administradores Linux. Rio de Janeiro: Ciência 
Moderna. 
CERT. Cartilha de Segurança para Internet. Disponível em: https://cartilha.cert.br/. 
Acesso em: 29 out. 2021. 
MERCÊS, F. Fundamentos de Engenharia Reversa. [S. l.]: Mente Binária, 2020. 
Disponível em: https://mentebinaria.gitbook.io/engenharia-reversa/. Acesso em: 29 
out. 2021. 
SIEVER, E. et al. LINUX – O guia essencial. 5. ed. [S. l.]: Bookman, 2006. 
 
 
https://cartilha.cert.br/
https://mentebinaria.gitbook.io/engenharia-reversa/

Continue navegando