xor.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import glob
  2. import os
  3. hashmap = {
  4. '0': "7", '1': "3", '2': "5", '3': "1", '4': "9", '5': "2", '6': "6", '7': "4", '8': "8", '9': "0",
  5. 'A': "3", 'B': "7", 'C': "1", 'D': "5", 'E': "9", 'F': "2", 'G': "6", 'H': "4", 'I': "8", 'J': "0",
  6. 'K': "3", 'L': "7", 'M': "1", 'N': "5", 'O': "9", 'P': "2", 'Q': "6", 'R': "4", 'S': "8", 'T': "0",
  7. 'U': "3", 'V': "7", 'W': "1", 'X': "5", 'Y': "9", 'Z': "2",
  8. 'a': "6", 'b': "4", 'c': "8", 'd': "0", 'e': "3", 'f': "7", 'g': "1", 'h': "5", 'i': "9", 'j': "2",
  9. 'k': "6", 'l': "4", 'm': "8", 'n': "0", 'o': "3", 'p': "7", 'q': "1", 'r': "5", 's': "9", 't': "2",
  10. 'u': "6", 'v': "4", 'w': "8", 'x': "0", 'y': "3", 'z': "7", '_': "8", '-': "8"
  11. }
  12. def xorByFileName(filename):
  13. first_three = filename[:3]
  14. last_three = filename[-3:]
  15. xor_result = ''
  16. for ch in first_three:
  17. xor_result += hashmap[ch]
  18. for ch in last_three:
  19. xor_result += hashmap[ch]
  20. sixnum = int(xor_result) % 255
  21. return sixnum
  22. def xor_file_all(filename,key):
  23. with open(filename, 'rb') as file:
  24. content = file.read()
  25. xor_result = b''
  26. # 仅对文件的前100个字节进行异或操作
  27. for i, byte in enumerate(content):
  28. xor_byte = bytes([byte ^ key])
  29. xor_result += xor_byte
  30. with open(filename, 'wb') as output_file:
  31. output_file.write(xor_result)
  32. def xor_file(filename,key):
  33. with open(filename, 'rb') as file:
  34. content = file.read()
  35. xor_result = b''
  36. # 仅对文件的前100个字节进行异或操作
  37. for i, byte in enumerate(content[:100]):
  38. xor_byte = bytes([byte ^ key])
  39. xor_result += xor_byte
  40. # 将剩余部分直接拼接到异或后的结果后面
  41. xor_result += content[100:]
  42. with open(filename, 'wb') as output_file:
  43. output_file.write(xor_result)
  44. def is_html_content(file_path):
  45. return True
  46. try:
  47. with open(file_path, 'r', encoding='utf-8') as file:
  48. content = file.read()
  49. if "<html" in content.lower():
  50. return True
  51. else:
  52. return False
  53. except Exception:
  54. print("文件不存在。")
  55. return False
  56. if __name__ == '__main__':
  57. for fff in glob.glob(r"E:\code\zd\desktop\offline-pdf-app\files\*"):
  58. print(os.path.basename(fff))
  59. if not os.path.isfile(fff):
  60. print(fff)
  61. key = xorByFileName(os.path.basename(fff))
  62. indexFile = fff + r"\index.html"
  63. if is_html_content(indexFile):
  64. xor_file_all(indexFile,key)
  65. for x in glob.glob(fff + r"\data\pres\*.png")+ glob.glob(fff + r"\data\pres\*.mp4")+glob.glob(fff + r"\data\pres\*.jpg"):
  66. xor_file(x,key)