Advertisement
Guest User

crc32

a guest
May 11th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #!/usr/bin/python
  2. # Version 0.2 2009.01.25
  3. # Copyright (c) 2009, Taoufik El Aoumari
  4. # Released under the GPL license http://www.gnu.org/licenses/gpl-3.0.txt
  5.  
  6. import sys, re, zlib, os
  7.  
  8. c_null = "\x1b[00;00m"
  9. c_red = "\x1b[31;01m"
  10. c_green = "\x1b[32;01m"
  11. p_reset = "\x08"*8
  12.  
  13. def crc32_checksum(filename):
  14. crc = 0
  15. file = open(filename, "rb")
  16. buff_size = 65536
  17. size = os.path.getsize(filename)
  18. done = 0
  19. try:
  20. while True:
  21. data = file.read(buff_size)
  22. done += buff_size
  23. sys.stdout.write("%7d"%(done*100/size) + "%" + p_reset)
  24. if not data:
  25. break
  26. crc = zlib.crc32(data, crc)
  27. except KeyboardInterrupt:
  28. sys.stdout.write(p_reset)
  29. file.close()
  30. sys.exit(1)
  31.  
  32. sys.stdout.write(p_reset)
  33. file.close()
  34. if crc < 0:
  35. crc &= 2**32-1
  36. return "%.8X" %(crc)
  37.  
  38. for file in sys.argv[1:]:
  39. try:
  40. crc = crc32_checksum(file)
  41. dest_sum = re.split("([a-fA-F0-9]{8})", file)[-2]
  42. if crc == dest_sum.upper():
  43. c_in = c_green
  44. else:
  45. c_in = c_red
  46. sfile = file.split(dest_sum)
  47. print("%s%s%s %s%s%s%s%s" % (c_in, crc, c_null, sfile[0], c_in, dest_sum, c_null, sfile[1]))
  48. except(IndexError, ValueError):
  49. print(crc, " ", file)
  50. except (IOError, e):
  51. print(e)
  52. continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement