Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. import re
  2. import urllib.request
  3. import os
  4. import hashlib
  5. import zipfile
  6. import socket
  7.  
  8. # Sa se scrie o functie cu numele problema1 ce returneaza o lista ordonata crescator
  9. # ce contine toate cuvintele din sirul de caractere s dat ca parametru. Un cuvant este
  10. # format din: litere mici si mari, cifre si caracterul underscore '_'.
  11. def problema1(s):
  12. #x = sorted(re.split("[\s@.]", s))
  13. x = re.findall("\w+", s)
  14.  
  15. return x
  16.  
  17.  
  18. # Sa se scrie o functie cu numele problema2 care primeste ca parametri un sir de caractere
  19. # s si un sir de caractere url ce reprezinta un link http. Sa se returneze True daca s se
  20. # gaseste in continutul de la link-ul http dat, sau False altfel.
  21. def problema2(s, url):
  22. response = str(urllib.request.urlopen(url).read())
  23.  
  24. if s in response:
  25. return True
  26.  
  27. return False
  28.  
  29.  
  30. # Sa se scrie o functie cu numele problema3 care primeste ca parametru un sir de caractere
  31. # path ce reprezinta path-ul unui director. Sa se returneze o lista ordonata crescator cu
  32. # hash-urile md5 ale tuturor fisierelor din director ( nerecursiv ).
  33. def problema3(path):
  34. def md5(fname):
  35. hash_md5 = hashlib.md5()
  36. with open(fname, "rb") as f:
  37. for chunk in iter(lambda: f.read(4096), b""):
  38. hash_md5.update(chunk)
  39. return hash_md5.hexdigest()
  40.  
  41. hashes = []
  42. for filename in os.listdir(path):
  43. try:
  44. hashes.append(md5(os.path.join(path, filename)))
  45. except Exception as e:
  46. pass
  47.  
  48. return sorted(hashes)
  49.  
  50. # Sa se scrie o functie cu numele problema4 ce primeste ca parametru un sir de caractere
  51. # path ce reprezinta path-ul unei arhive zip. Sa se returneze o lista ordonata crescator
  52. # cu numele fisierelor care au size dupa compresie mai mare de 1 KB ( 1000 de bytes ).
  53. def problema4(path):
  54. x = []
  55. zip = zipfile.ZipFile(path, 'r')
  56.  
  57. for fileName in zip.namelist():
  58. compressSize = zip.getinfo(fileName).compress_size
  59.  
  60. if (compressSize > 1000):
  61. x += [fileName.split('/')[-1]]
  62.  
  63. return sorted(x)
  64.  
  65. # 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.
  66. # Sa se returneze raspunsul final de la server, ca si string, urmand urmatorul protocol definit:
  67. # - clientul trimite continutul argumentului text la server
  68. # - clientul va primi de la server un alt sir de caractere (de lungime 32)
  69. # - clientul trimite serverului hash-ul sha256 al sirului primit anterior
  70. # - clientul primeste raspunsul final de la server (de lungime 32) pe care il returneaza
  71. def problema5(ip, port, text):
  72. def get_text_sha(text):
  73. hash = hashlib.sha256()
  74. hash.update(text.encode())
  75. return hash.hexdigest()
  76.  
  77. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  78. sock.connect((ip, port))
  79.  
  80. sock.send(text.encode())
  81. message = sock.recv(32).decode()
  82. sock.send(get_text_sha(message).encode())
  83. message = sock.recv(32).decode()
  84.  
  85. sock.close()
  86. return message
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement