Hi pro's!
Veeeeery interesting topic and so many great ideas! I'm newbie in these "options-encrypt/decrypt things", but for me its cool opportunity to improve skills. I have some experience in R&S, Agilent, Keysight, etc. test equipment, but never wondering about options stuff and how they produce, before saw this topic.
I've tested an old italian C-script from post #140 and it work's great with FSP, FSIQ, ESU, PR100, old-FSH.
Now i have in my lab few FSV and have an idea to activate some option for them. Only for science interest, of course)))
I make some little 'investigation' of R&S-software from FSV and FSVR with diassemblers like IDA-pro. Both SA have same software and it seems that main API is "RSCompassFramework.dll". The encrypt\decrypt options algo is similar RC4, but i'm not sure. Maybe somebody can clearify this moment?
But what i know exactly, is that active option keys contained in three files: InstrumentData.xls, InstumentData.dds and IstrumentData.mac. Last two have some HEX-text, looks like some checksum. If delete any of them, active option will dissapear from SA, until you will copy a backup of deleted file and rerun "AnalyzerFirmware.exe". I don't have these three files with none-default active option, but maybe somebody will share it to look difference between HEX-text of default and none-default SA files?
And finally the most interesting moment:
I maked a full memory-dump for my FSV with AcessData FTK Manager, open it with WinHEX and gather all text. Then wrote little simple script in python 3.8 to filter from result text 30-digit sequences:
import re
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
pattern = re.compile('^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\W')
f = open(file_path)
for line in f:
buff_line=line
if (pattern.findall(buff_line)) == []:
continue
else:
print(pattern.findall(buff_line))
It give me array with 18 sequences, where 2 of them was default-option keys from InstrumentData.xls. Like this:
['3735038260026847987220783*****\n']
['2825359980055994898912437*****\n']
['1324212018274908492608555*****\n']
['1613021472429378831233579*****\n']
['0397841781301905908232242*****\n']
I thought it was a succes, BUT none of other codes, except default, DIDN'T WORK!!!! Why? I don't know. What is these keys? I don't know too. Maybe some wise guys will tell me, where i was wrong?
I will procced with my investigations and will be very glad for some feedback.
P.S. I diggined many special SCPI-commands when dissasemble FSV dll's and want to try make some magic with them. If my resarch are interesting, i will be glad to post some thoughts here from time to time.