Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- import urllib.request
- import os
- import hashlib
- import zipfile
- import socket
- # Sa se scrie o functie cu numele problema1 ce returneaza o lista ordonata crescator
- # ce contine toate cuvintele din sirul de caractere s dat ca parametru. Un cuvant este
- # format din: litere mici si mari, cifre si caracterul underscore '_'.
- def problema1(s):
- #x = sorted(re.split("[\s@.]", s))
- x = re.findall("\w+", s)
- return x
- # Sa se scrie o functie cu numele problema2 care primeste ca parametri un sir de caractere
- # s si un sir de caractere url ce reprezinta un link http. Sa se returneze True daca s se
- # gaseste in continutul de la link-ul http dat, sau False altfel.
- def problema2(s, url):
- response = str(urllib.request.urlopen(url).read())
- if s in response:
- return True
- return False
- # Sa se scrie o functie cu numele problema3 care primeste ca parametru un sir de caractere
- # path ce reprezinta path-ul unui director. Sa se returneze o lista ordonata crescator cu
- # hash-urile md5 ale tuturor fisierelor din director ( nerecursiv ).
- def problema3(path):
- def md5(fname):
- hash_md5 = hashlib.md5()
- with open(fname, "rb") as f:
- for chunk in iter(lambda: f.read(4096), b""):
- hash_md5.update(chunk)
- return hash_md5.hexdigest()
- hashes = []
- for filename in os.listdir(path):
- try:
- hashes.append(md5(os.path.join(path, filename)))
- except Exception as e:
- pass
- return sorted(hashes)
- # Sa se scrie o functie cu numele problema4 ce primeste ca parametru un sir de caractere
- # path ce reprezinta path-ul unei arhive zip. Sa se returneze o lista ordonata crescator
- # cu numele fisierelor care au size dupa compresie mai mare de 1 KB ( 1000 de bytes ).
- def problema4(path):
- x = []
- zip = zipfile.ZipFile(path, 'r')
- for fileName in zip.namelist():
- compressSize = zip.getinfo(fileName).compress_size
- if (compressSize > 1000):
- x += [fileName.split('/')[-1]]
- return sorted(x)
- # Sa se scrie o functie cu numele problema5 care primeste ca argumente un sir de caractere host, un numar port si un sir de caractere text.
- # Sa se returneze raspunsul final de la server, ca si string, urmand urmatorul protocol definit:
- # - clientul trimite continutul argumentului text la server
- # - clientul va primi de la server un alt sir de caractere (de lungime 32)
- # - clientul trimite serverului hash-ul sha256 al sirului primit anterior
- # - clientul primeste raspunsul final de la server (de lungime 32) pe care il returneaza
- def problema5(ip, port, text):
- def get_text_sha(text):
- hash = hashlib.sha256()
- hash.update(text.encode())
- return hash.hexdigest()
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sock.connect((ip, port))
- sock.send(text.encode())
- message = sock.recv(32).decode()
- sock.send(get_text_sha(message).encode())
- message = sock.recv(32).decode()
- sock.close()
- return message
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement