Anda di halaman 1dari 7

Universidade Federal de Campina Grande - UFCG

Centro de Engenharia Elétrica e Informática – CEEI


Departamento de Engenharia Elétrica – DEE
Redes de Computadores
Professor: Leocarlos B. S. Lima

Avaliação - Módulo 1

Bruno Rafael Da Silva Santos - 117110959

Campina Grande, 10 de Dezembro De 2018


Questão 1 -
Foi incluído um arquivo txt no mesmo diretório do código
from socket import *
import sys

def main():
meuHost = '192.168.15.99'
minhaPorta = 30000
socketservidor = socket(AF_INET, SOCK_STREAM) # Usando protocolos TCP-IP
socketservidor.bind((meuHost, minhaPorta)) #atribui ao socket o host e o numero do
coket definidos acima
socketservidor.listen(1) #socket do servidor fica a espera de algum chamado
while 1:
socketconexao, endereco = socketservidor.accept()
msg = socketconexao.recv(1024)
print('conexão de IP: ',endereco)
arquivo = ((msg.decode('utf-8')).splitlines())[0]
arquivotxt = (arquivo)[5:(len(arquivo)-9)]
try:
f = open(arquivotxt)
texto=f.read()
socketconexao.send(texto.encode('UTF-8'))
f.close()
socketconexao.close()
except IOError:
Error='404 Not Found'
socketconexao.send(Error.encode('UTF-8'))
socketconexao.close()
return 0

if __name__ == "__main__":
sys.exit(main())
Nota-se que para o arquivo em questão procurado(texto) a resposta do servidor
HTTP é o arquivo aberto. Caso o arquivo solicitado ao servidor tenha um nome
diferente, no caso texto1, aparece a mensagem “404 error not found’. O servidor
também foi posto em teste dentro de uma mesma rede local e o resultado foi
positivo. Vale salientar no entanto que se a requisição for feita a partir do navegador
Chrome, este não reconhecerá a resposta do servidor HTTP. Consta abaixo uma
imagem na qual o servidor registra os IP’s e os sockets das requisições de acesso
Questão 3
# -*- coding: utf-8 -*-

# Importa módulo socket, que forma base das comunicações em rede em Python
import socket as sk
# Importa módulo base64, que forma codifica mensagem texto em binário de 64 bits
import base64 as b64
# Importa módulo sst, que implementa camada de soquete de segurança (criptografia)
import ssl
import getpass #função getpass permite inserir senha de modo seguro no prompt

# Define nome (ou IP) e número de porta do servidor SMTP


serverName = 'smtp.gmail.com'
serverPort = 587

# Lê mensagem a enviar digitada com teclado e atribui à variável message


menssagem = input('Sentença de entrada (letras minúsculas):') + '\r\n.\r\n'
Remetente = input('Digite o e-mail remetente:')
Destinatario = input('Digite o e-mail destinatário:')
Senha = getpass.getpass ('Digite sua senha:')

# Cria soquete TCP do cliente


clientSocket = sk.socket(sk.AF_INET, sk.SOCK_STREAM)

# Solicita estabelecimento de conexão com servidor


clientSocket.connect((serverName, serverPort))
recv = clientSocket.recv(1024) # Aguarda confirmação 220 do servidor
print(recv.decode('utf-8'))

# Envia mensagem HELO para servidor


clientSocket.send('HELO gmail.com\r\n'.encode('utf-8'))
recv = clientSocket.recv(1024) # Aguarda confirmação 250 do servidor
print(recv.decode('utf-8'))

# Inicia sessão TLS com servidor


clientSocket.send('STARTTLS\r\n'.encode('utf-8'))
recv = clientSocket.recv(1024) # Aguarda confirmação 220 do servidor
print(recv.decode('utf-8'))

# Cria soquete seguro e solicita login com servidor via sessão TLS
secureclientSocket = ssl.wrap_socket(clientSocket, ssl_version=ssl.PROTOCOL_SSLv23)
secureclientSocket.send('AUTH LOGIN\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024) # Aguarda confirmação 334 do servidor
print(recv.decode('utf-8'))
# Envia nome de usuário ao servidor via sessão TLS
secureclientSocket.send(b64.b64encode(Remetente.encode('utf-8')) + '\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024) # Aguarda confirmação 334 do servidor
print(recv.decode('utf-8'))

# Envia senha ao servidor via sessão TLS


secureclientSocket.send(b64.b64encode(Senha.encode('utf-8')) + '\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024) # Aguarda confirmação 235 do servidor
print(recv.decode('utf-8'))

secureclientSocket.send('MAIL FROM: <'.encode('utf-8') + Remetente.encode('utf-8') +


'>\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024)
print(recv.decode('utf-8'))

secureclientSocket.send('RCPT TO: <'.encode('utf-8') + Destinatario.encode('utf-8') +


'>\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024)
print(recv.decode('utf-8'))

secureclientSocket.send('DATA\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024)
print(recv.decode('utf-8'))

secureclientSocket.sendall(bytes(menssagem + '\r\n.\r\n','utf-8'))
recv = secureclientSocket.recv(1024)
print(recv.decode('utf-8'))

secureclientSocket.send('QUIT'.encode('utf-8') + '\r\n'.encode('utf-8'))
recv = secureclientSocket.recv(1024)
print(recv.decode('utf-8'))

# Fecha soquete SSL do cliente


secureclientSocket.close()

# Fecha soquete do cliente


clientSocket.close()

Anda mungkin juga menyukai