Hi guys,
I have R+S UPL unit, OS is DOS 6.22 and options numbering is similar like on cmu200. No SWOPT.DAT file in system, but I make some progress with python scripts here. I have some option codes from same unit/different serial number, and one code for option in my unit. Then I make with this script
from Crypto.Cipher import ARC2
import struct
serial = 103086
serial2 = 2
option = 45
record = struct.pack("<II", serial, serial2 + (option <<20))
encyphered = ARC2.new("Revision\0").encrypt(record)
print encyphered.encode("hex")
entry and I put this in SWOP.DAT file, and run next script
from Crypto.Cipher import ARC2
import struct
KEY = "Revision\0" # decryption key for the data
STRUCT_TWO_UNSIGNED_INTS = "<II"
for line in open("SWOPT.DAT"):
if len(line) == 17:
cipher = ARC2.new(KEY) # a new ARC2 cipher with the right key (ARC2 is a symmetric block cipher, we need a new cipher for each ciphertext)
ciphertext = line.strip().decode("hex") # Decode our ciphertext from hex, removing whitespace from the start and end
plaintext = cipher.decrypt(ciphertext) # Decrypt the cyphertext using the key
a, b = struct.unpack(STRUCT_TWO_UNSIGNED_INTS, plaintext) # unpack two unsigned ints from the plaintext
print "SN: %d - %08x" % (a, b)
Output from this script is my serial number(serial is correct), but code is not ok for my unit. Maybe somebody know how make script working from valid licence codes? I am stuck here...
![Banging Head |O](https://www.eevblog.com/forum/Smileys/default/bangheadonwall.gif)
Unit serial:849260/015
option B21: 19559
option B22: 42997
option B10: 14917
option B4 : 15747
Cheers,
Damir