Guest User

Untitled

a guest
Sep 22nd, 2019
1,406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.88 KB | None | 0 0
  1. diff --git a/unlocker.py b/unlocker.py
  2. index decbc51..0f9d3f6 100755
  3. --- a/unlocker.py
  4. +++ b/unlocker.py
  5. @@ -44,6 +44,7 @@ Offset  Length  Struct Type Description
  6.  from __future__ import print_function
  7.  import codecs
  8.  import os
  9. +import re
  10.  import struct
  11.  import sys
  12.  
  13. @@ -55,7 +56,10 @@ if sys.version_info < (2, 7):
  14.  if sys.platform == 'win32' \
  15.          or sys.platform == 'cli':
  16.      # noinspection PyUnresolvedReferences
  17. -    from _winreg import *
  18. +    if sys.version_info > (3, 0):
  19. +        from winreg import *
  20. +    else:
  21. +        from _winreg import *
  22.  
  23.  
  24.  def bytetohex(data):
  25. @@ -301,9 +305,10 @@ def patchbase(name):
  26.      f = open(name, 'r+b')
  27.  
  28.      # Entry to search for in GOS table
  29. -    # Should work for 12 & 14 of Workstation...
  30. -    darwin = b'\x10\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00' \
  31. -             '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
  32. +    # Should work for Workstation 12-15...
  33. +    darwin = re.compile(
  34. +             b'\x10\x00\x00\x00[\x10|\x20]\x00\x00\x00[\x01|\x02]\x00\x00\x00\x00\x00\x00\x00'
  35. +             b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
  36.  
  37.      # Read file into string variable
  38.      base = f.read()
  39. @@ -311,11 +316,8 @@ def patchbase(name):
  40.      # Loop through each entry and set top bit
  41.      # 0xBE --> 0xBF (WKS 12)
  42.      # 0x3E --> 0x3F (WKS 14)
  43. -    offset = 0
  44. -    while offset < len(base):
  45. -        offset = base.find(darwin, offset)
  46. -        if offset == -1:
  47. -            break
  48. +    for m in darwin.finditer(base):
  49. +        offset = m.start()
  50.          f.seek(offset + 32)
  51.          flag = ord(f.read(1))
  52.          flag = set_bit(flag, 0)
  53. @@ -323,7 +325,6 @@ def patchbase(name):
  54.          f.seek(offset + 32)
  55.          f.write(flag)
  56.          print('GOS Patched flag @: ' + hex(offset))
  57. -        offset += 40
  58.  
  59.      # Tidy up
  60.      f.flush()
Add Comment
Please, Sign In to add comment