Obfuscator#
Rationale#
SCADE Suite models sometimes need to be shared with partners. Example use cases include: developing operator libraries for a higher-level model, or trying to reproduce a specific behavior using two connected models developed by different teams at different companies.
The model being shared sometimes contains sensitive intellectual property. Obfuscation can be an acceptable compromise to protect this IP while still sharing the model.
Description#
This tool obfuscates a SCADE Suite model and its libraries.
All names are obfuscated.
Files are renamed and the old ones are deleted.
The script produces traceability matrices for both objects and file names.
Note
The model and its libraries are modified in place: copy your files to another directory before proceeding.
Make sure your model does not refer to a library that is not part of your project, such as
$(SCADE)/libraries/libdigital.etp, or use the option-lto exclude it from the obfuscation process. For example:-l libdigital.
Usage#
usage: ansys_scade_ps_obfuscator [-h] -p <project> [-t <trace>] [-i] [-l [library ...]] [-s <seed>]
Ansys SCADE Power Scripts: Obfuscator for Scade models
options:
-h, --help Show this help message and exit
-p <project>, --project <project>
SCADE Suite project
-t <trace>, --trace <trace>
Output trace file
-i, --internals Rename internal variables
-l [library ...], --ignored_libraries [library ...]
Ignored libraries
-s <seed>, --seed <seed>
Random seed for obfuscation
For example:
ansys_scade_ps_obfuscator -p MyProject.etp -t Mapping.txt -l libdigital libmath
This command obfuscates MyProject.etp and its libraries except those named libdigital or libmath.
The traceability information between old and new names stored into the file Mapping.txt, as follows:
Behavior:: BGK375::
Behavior::Impl:: BGK375::UBJ269::
Behavior::Impl::Iter/ BGK375::UBJ269::YOM827/
Behavior::Impl::Iter/'T/ BGK375::UBJ269::YOM827/'FOP322/
Behavior::Impl::Iter/Iter BGK375::UBJ269::YOM827/YOM827
...
Limitations#
Project properties are unchanged: root, expanded, instrumented operators, etc.
KCG
pragma nameare unchanged.Imported code is unchanged.
Project files accessed with an absolute path are modified.
Symbol files (SSL) are not taken into account.
Projects with files with same names in different directories are not supported.
Homonymy is preserved: model elements with the same name, for example an operator and its diagram, have the same obfuscated name.