Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Roman Zaikin
Tradução: Luli Rosenberg & Helton Wernik
Curso de Python
Curso de Python - ITSafe
Roman Zaikin
קורס פייתון בהייטק
רומן זאיקין
Ministramos cursos de cyber ao redor do mundo.
Palestrantes em conferências internacionais.
Pesquisadores de cyber na Check Point entre outras.
Adoramos aprender novas tecnologias.
:)
 Quem somos
Python - Itsafe
Roman Zaikin
Trabalho com dicionários - dictionary
Uma variável de dicionário é uma variável muito conveniente e útil, usando um dicionário podemos definir uma chave e um valor para que possa ser pesquisado por chave e não por localização como na lista.
	dict = {"one": 1, "two": 2, "three": 3} 
print (dict["one"]) 
 
dict["one"] = 7 
dict["four"] = 4 
del dict["one"] 
dict.pop("four", None) 
 
	print (dict.keys()) 
print (dict.values()) 
 
dict = {"name": "roman", "Age": 30} 
dict2 = {"lastname": "zaikin"} 
 
dict.update(dict2) 
print (dict) 
print (sorted(dict)) 
Python - Itsafe
Roman Zaikin
Trabalho com arquivos - open
Quando abrimos um arquivo, devemos selecionar o nível de permissão que desejamos:
w - escrever
r - ler
a - adicionar no final do arquivo
b - binário (envio de arquivos)
r+ - leitura e escrita (não cria um arquivo inexistente)
w+ - escrever e ler (se o arquivo não existir, cria um arquivo)
a+ - adicionar e ler (aqui lemos a partir do final do arquivo e não do início)
Python - Itsafe
Roman Zaikin
Trabalho com arquivos - open
Exemplo de abertura de arquivos para escrita:
fd = open("teste.txt","w")
fd.write("isto eh python")
fd.close()
Exemplo de abertura de arquivos para leitura:
fd = open("teste.txt","r")
print(fd.read())
fd.close()
Python - Itsafe
Roman Zaikin
Trabalho com arquivos - open
Comandos adicionais que podem ser incorridos em arquivos:
seek - tráfego de arquivos, pelo seguinte local:
0 - Início do arquivo.
1 - Localização atual.
2 - Fim do arquivo.
tell - A localização atual no arquivo
truncate - Exclui todas as linhas do arquivo, desde o local atual até o final do arquivo.
read - Lendo da localização atual, você pode especificar alguns caracteres para ler.
write - escrever em um arquivo
readlines - Lê o arquivo linha por linha e retorna uma lista.
writelines - Grava uma lista em um arquivo
Python - Itsafe
Roman Zaikin
Exercício
Baixe o seguinte arquivo para o seu computador:
https://raw.githubusercontent.com/romanzaikin/BurpExtension-WhatsApp-Decryption-CheckPoint/master/README.md
Leia o arquivo, salve todos os URLs em uma variável e imprima todos os valores desta variável.
2. Adicione ao jogo adivinhar o número dos exercícios anteriores a opção de salvar o modo de jogo, ao jogar adicione a opção de continuar do último lugar onde o jogo parou.
Python - Itsafe
Roman Zaikin
Trabalho com arquivos - with
O comando with se encarrega de fechar os recursos que utilizamos, portanto podemos utilizar with para que não tenhamos que nos preocupar em fechar o arquivo nós mesmos.
Abaixo, veremos o uso de with quando tentamos gerenciar recursos adicionais.
with open("teste.txt","r") as fd:
    fd.write("isto eh python")
    print(fd.read())
Python - Itsafe
Roman Zaikin
Gerenciamento de erros  - try-except 
Ao desenvolver, às vezes nos encontramos em situações em que temos que confiar no usuário para inserir conteúdo que seja relevante para o nosso software. Mas o que acontece se o usuário inserir um nome de arquivo que não existe? Ou inserir 0 durante uma operação de divisão?
Essas ações irão causar um erro. Até podemos lidar com qualquer situação e postura de forma pontual, mas às vezes é mais conveniente usar o gerenciamento de erros da própria linguagem python.
try:
    numero = int(input("Insira um número para dividir 10 > "))
    print(10/numero)
except ZeroDivisionError as e:
    print ("erro especifico")
    
except Exception as e:
    print (e)
Python - Itsafe
Roman Zaikin
Gerenciamento de erros  - try-except-finally 
Quando cometemos erros durante o processo, às vezes há ações que queremos realizar, independentemente do sucesso da ação anterior. Nesse caso, finally entra em ação. Por exemplo, se quisermos manter registros em qualquer situação:
try:
    numero = int(input("Insira um número para dividir 10 > "))
    print(10/number)
except Exception as e:
    print (e)
finally:
    print ("Sempre chegaremos aqui")
Python - Itsafe
Roman Zaikin
Gerenciamento de erros  - try-except-finally-else 
Para conhecimento geral, ao gerenciamento de erros também pode ser adicionado else, se ocorrer um erro, executemos uma ação e se não, executemos outra ação.
try:
    nome_arquivo = input("Escolha um arquivo a ser aberto: ")
    fd = open(nome_arquivo, "r")
except Exception as e:
    print (e)
else:
    fd.close()
finally:
    print ("Salve regitros ou faca algo geral")
Python - Itsafe
Roman Zaikin
 Módulos e o comando import
Uma das grandes vantagens da linguagem Python são os módulos escritos para a linguagem, esses módulos são extensões que permitem que a linguagem execute operações adicionais, como comunicar-se com o sistema operacional, realizar várias operações matemáticas, comunicar-se com outro software de computador, como office e muitos mais.
Qualquer pessoa hoje pode escrever um módulo para a linguagem e, para instalar módulos adicionais, usamos a biblioteca de módulos e o comando pip.
Python - Itsafe
Roman Zaikin
Import os
Usando o módulo os, é possível executar operações no sistema operacional, de acordo com o sistema operacional. O comando os abre uma janela de prompt de comando (cmd) e executa os comandos para nós.
Esta é a base para o desenvolvimento de softwares de gerenciamento de rede.
import os
os.system("ipconfig")
os.popen("ipconfig")
os.chdir("c:\\")
os.listdir("c:\\")
os.getcwd()
os.remove("file")
os.path.isfile("test.py")
os.path.getsize("/path/to/file")
Python - Itsafe
Roman Zaikin
Import os
Se quisermos construir um software que permita ao usuário executar comandos no sistema operacional, usaremos o comando os.popen, esse comando é preferível a os.system porque nos permite obter a saída de volta para a variável.
דוגמה:
import os
comando = input("Insira um comando a ser executado > ")
saida = os.popen(comando).read()
print (saida)
Python - Itsafe
Roman Zaikin
Exercício
Peça ao usuário para inserir 5 ações, salve todas as ações que o usuário deseja executar em uma lista. Execute todas as operações da lista, uma após a outra no sistema operacional. Visualize o resultado de cada operação imprimindo-as.
Execute o comando ipconfig usando o comando popen para mostrar apenas o endereço IP do seu computador. Exemplo - para o seguinte endereço IP:
	
Apresente apenas 192.168.56.1 sem outros caracteres
Python - Itsafe
Roman Zaikin
Import threading
Se quisermos realizar várias operações simultaneamente, devemos usar o módulo de threading, a vantagem significativa do threading é manifestada ao realizar operações de Input/Output(entrada e saída). As operações de I/O são operações que exigem que o computador leia e escreva e são consideradas relativamente lentas, portanto, não há razão para não executar todas as operações simultaneamente.
Exemplo:
import os
import time
start_time = time.time()
urls = ["www.google.com","www.facebook.com","www.youtube.com]
for url in urls:
    os.system(f"ping {url}")
print (time.time() - start_time)
Python - Itsafe
Roman Zaikin
Import threading
Para resolver o problema da lentidão, usaremos o thread da seguinte maneira:
import os
import time
import threading
def ping(website):
    os.system(f"ping {website}")
start_time = time.time()
urls = ["www.google.com","www.facebook.com","www.youtube.com"]
for url in urls:
    t = threading.Thread(target=pinger,args=(url,))
    t.start()
t.join()
print (time.time() - start_time)
Python - Itsafe
Roman Zaikin
Import threading
Outro exemplo de execução de operações paralelas poderia ser imprimir todos os números de 1 a 100.000 cinco vezes num loop do tipo for.
Observem o resultado da seguinte execução de código:
def contador(numero):
    for i in range(numero):
        print(i)
for algo in range(5):
    contador(100000)
Python - Itsafe
Roman Zaikin
Import threading
Agora vamos tentar economizar tempo e realizar a mesma operação com 5 threads diferentes, qual o resultado?
import threading
def contador(numero):
    for i in range(numero):
        print(i)
for i in range(5):
    t = threading.Thread(target=counter,args=(100000,))
    t.start()
Python - Itsafe
Roman Zaikin
Import threading
Você percebeu como os threads fazem o software funcionar mais devagar? Isso porque usamos threads apenas para operações de Entrada/Saída e não para operações computacionais.
Para economizar tempo na execução de operações computacionais, precisamos trabalhar com um mecanismo de multiprocessamento (multiprocessing).
Como os processos compartilham o tempo de CPU um após o outro, nosso software receberá prioridade computacional porque estamos implantando mais processos no computador.
Python - Itsafe
Roman Zaikin
Import multiproccessing
Este módulo nos permite criar vários processos e realizar as operações computacionais mais rapidamente.
import multiprocessing
def contador(numero):
    for i in range(numero):
        print(i)
if __name__ == '__main__':
    for i in range(5):
        p = multiprocessing.Process(target=contador, args=(100000,))
        p.start()
Python - Itsafe
Roman Zaikin
Sincronização de threads através do semaphore
Ao trabalhar com vários threads, às vezes a impressão ou as operações ficam fora de sincronia. A fim de sincronizar as operações e evitar saturação de informações ou falhas de recursos, usamos mecanismos de sincronização.
Um dos mecanismos mais simples é o semaphore (semáforo).
import threading
def contador():
    for i in range(10000):
        print (i)
for i in range(100):
    threading.Thread(target=contador).start()
import threading
def contador(s):
    for i in range(10000):
        with s:
            print (i)
semaphore = threading.Semaphore(1)
for i in range(100):
    threading.Thread(target=contador,args=(semaphore,)).start()
Python - Itsafe
Roman Zaikin
Sincronização de threads através do lock
O lock é outro mecanismo de sincronização que usamos ao sincronizar threads. Este é um mecanismo de sincronização mais rápido em termos de linguagem de programação e, além disso, o semaphore usa o próprio Lock para realizar a sincronização.
import threading
def contador():
    for i in range(10000):
        print (i)
for i in range(100):
    threading.Thread(target=contador).start()
import threading
def contador(l):
    for i in range(10000):
        with l:
            print (i)
lock = threading.Lock()
for i in range(100):
    threading.Thread(target=contador,args=(lock,)).start()
Python - Itsafe
Roman Zaikin
image2.png
image3.png
image11.jpg
image12.png
image13.png
image14.png
image15.png
image4.png
image5.png
image6.png
image7.png
image8.png
image9.png
image10.png
image16.png
image1.png

Mais conteúdos dessa disciplina