Baixe o app para aproveitar ainda mais
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/
Compartilhar