YULL ENCRYPTION PRO


GUIDE TO YULL


There are two versions of YULL: YULL.EXE, the Console application and YULLG.EXE, the GUI app. They work in a similar way, so it's your choice which one better fits your requirements. Files encrypted with one can be decrypted with the other.

The zip file which contains both of the executables also contains many other files and a folder which will assist you in getting up to speed with Yull.

There are 115 files in the SAMPLESOURCEFILES folder. You can modify these files as you wish, or not use them at all or delete them completely. They are there so you can practice with YULL without impacting your own files.

Yull encrypts and decrypts files. For encrypting, Yull takes your source file and outputs an encrypted file. Yull does not care what the source file is. It can be a jpg, a PDF, a text file, a web page, a Word file, or some other file. It doesn't matter. Yull treats all files the same.

By default, the encrypted file will have the same name as the original file. You can customize this on the Options page by specifying an extension for encrypted files (like "OUT"). Yull takes your encrypted file and outputs a decrypted file. If the encrypted file ends in .OUT, Yull will normally remove that extension. Yull can operate anywhere on your computer. If its location is on the PATH then you need only run it. Otherwise, like any other executable, you need the complete path to Yull (either version).

Because encrypting and decrypting are such critical functions, Yull always requires a complete path to your source file. You will see how the file paths can be also constructed from the options file (discussed shortly).

The four elements Yull uses are the source file, the output directory, the key and the options. It is easy to see and modify the options in the GUI app. They are on the options tab. Also, in most places, F1 will bring up a help screen about where you are.

YULL is very CPU intensive. Your CPU (or Core) will go to 100% while Yull encrypts or decrypts. Also, note that Yull can run a file through millions, even billions of encryptions. This can take some time. This is not a problem for YULLG(version 2.01 or above), which is multi-threaded, so the application will always remain responsive.


There are LEVELS on the option tab of the GUI app which prepackage the options, basically making a series of tradeoffs, from MAX encryption, meaning lots of encrypts and lots of time, to TINY, which is relatively minimal, to PLANK, which is extremely fast. You can override these options as you please. But if you need MAX level, be prepared to let Yull run for a while.

Note that (as far as I can determine), a file encrypted with the PLANK level looks pretty much the same as that with the MAX level.

Here is a comparison of the number of encrypts and times for the file 256, which is 12,288 bytes long (note: results may be different on your computer):


LEVEL      ENCRYPTS       TIME
PLANK         990,829     0.322 seconds
TINY        2,421,090     0.473 seconds
NORMAL     14,815,328     3.333 seconds
MAX        27,024,606     6.626 seconds

Even with the PLANK level, there are almost one million encrypts.

Each time the data enters an encryption function, a counter is incremented. That's how the number of encrypts is counted.

The Distribution

Here are the files included with the distribution: Click here to show files included with the zip distribution.

Setting Up Yull

Yull does not require any setup. There is nothing to install so Yull is ready to go once you have unzipped the files. BUT Yull needs at least a key file in order to work. You could select any file as your key limited only by the size being between 100 and 10000 bytes. Yull encrypts the key before using it (only used at runtime) so even a text file can be used as a key. But with encryption, more randomness is always better, so files created specifically to be a key are the best. You can create such files with Yull.

The easiest way to create your default folder and key is run YULLG, and select Create Default Folder from the Settings Menu and follow the prompts. See "Default Folder and Key" a bit below this.

If you are distributing Yull to many hosts in a company as part of a job you can excute YULL.EXE to do this.

Note also that YULL DOES NOT REQUIRE A CONNECTION TO THE INTERNET. There is a link on the Help Menu to this web page.

Running Yull

Regardless of whether you use YULL.EXE or YULLG.EXE, Yull needs at least to know the source file and its location, the output location and the key. You either supply Yull with the complete path to the source file and the complete path to the output folder (or file), or give YULL enough information to construct it on its own. There are various parameters which will help you do this. If no options are specified, YULL uses the default options which are those for the NORMAL encryption level. But the default options contain no path information.

The same criteria apply to the key. Yull must be able to find the key. Whether it's the default key in the default location or some other place, Yull cannot run encrypt or decrypt without a key.

Default Folder and Key

You can instruct Yull (both yull.exe and yullg.exe) to create your default folder and key. The folder is located in:

%HOMEPATH%\AppData\Local\YullEncryption.

You can see what your %HOMEPATH% is by running CMD.EXE (the DOS box), typing in ECHO %HOMEPATH% at the prompt and pressing <enter key>.

Once Yull creates your default folder you can instruct it to create your default key. This can be a key of any size between 100 and 10,000 bytes (defaults to 1024 bytes). The default key MUST be named <username>.key. Yull will do that for you. If you are logged into Windows as, say, Lucy, your default key is lucy.key. Yull can use the key to encrypt and decrypt files but of course you can use other files for a key (or instruct Yull to create it for you). YOU ALWAYS NEED THE SAME KEY TO ENCRYPT AND DECRYPT. So always guard your key carefully.

NOTE: This only applies to your DEFAULT FOLDER AND KEY. You can use any folders you like and any key you like with the size of the key between 100 and 10,000 bytes. The key can be named anything, even a name like mscorlib32A.DLL so it will seem like a Windows system file. The default folder and key is just for your convenience.

If you don't like using a folder located on your %HOMEPATH%\AppData\Local\YullEncryption, you can add a line to your Options file:

DEFAULTOUTPUTFOLDER=

This will set your default encrypt OUTPUT and your default DECRYPT input folder to the desired location.

You could do this by individually setting your folders, as well.

NOTE: Your default key and your default history file will remain in the default location, %HOMEPATH%\AppData\Local\YullEncryption.

Of course, you and use any file you want as your key in any reachable location (size must be between 100 and 10,000 bytes).

The default options are only there for your convenience. You can ignore them easily. Set your source and output locations as you want.

The Options File

Besides the Key and the Source file and destination folder, Yull uses options. There are default options, meaning, if you don't set any options, Yull sets them. They are required. There are a lot of options. Luckily, Yull can use an Options File. This is just a text file with the options in them, one to a line. There are examples below.

You can easily package your options into an options file when running YullG. With Yull.exe, the Console app, you cannot. Here's an example of an options file:


  ENCRYPTSOURCEDIR="n:\source"
  DECRYPTOUTPUTDIR="n:\final"
  DECRYPTSOURCEDIR="n:\output"
  ENCRYPTOUTPUTDIR=n:\output
  LEVEL=PLANK
  WRITEHISTORY
  YULLDECIDESDUMMYDATA
  OVERWRITEMODE=OVERWRITE
  PDATA=IT'S GREAT TO KNOW YOUR DATA IS SAFE
  DATAGRIDDEFAULT=Include

Once this options file is loaded into Yull, it becomes:

The options file was created by the graphical executable YULLG.Exe but it's just a text file. Lines that contain nothing are ignored. Lines that begin with -- are ignored. If Yull cannot parse the first word on the line it will ignore that line.

But if you have a line like: MAXBUFFSIZE=BIG DADDY

Yull will abend the options loading process (in the GUI app) or quit (in the Console app) as it cannot cast "BIG DADDY" to an integer value:

In general YULL is very picky about the options. They are critical and you don't want YULL making guesses. It needs to be done correctly, so YULL will error out when attempting to load or parse an invalid options file. YULL will tell you why there was a failure.

In general, if Yull cannot understand an option (from the options file or the command line), it will abend the options loading process as the user (you) need to be very sure what you are doing.

You must use the same options file for both encrypting and decrypting. The default direction is encryption so to encrypt files with an options file all you need to do (with the Console app) is: yull in=X:\test\256 @options

to encrypt the file "256". "options" is the name of the options file (the name and location are arbitrary). There must be a complete path to the source file and, except for the USEDEFAULTOPTIONS switch, a complete path to the options file.

Note that if the source directory was included in the options file, you would only need this on the command prompt: yull in=256 @options

The Options

All the options are available on the Options tab of YullG:

Here's the Options and what they represent:

There are two types of options: Switches and Parameters. Switches evaluate to true just by their presence. Parameters are of the form: Parameter=xxx.

Most of the parameters are self-explanatory except for ReadOrder and Dummy Data.

READORDER

This is a numerical parameter that is used to determine the read order. When Yull encrypts (and decrypts) files, it reads the data out of disk, or natural, order. So if a file will be read in 100 reads, Yull determines the order of the reads, in part based on this parameter. It is numeric but there is no sense one value is greater or lesser than another.

LEVEL

There are six possible values: MAX, NORMAL, FAST, NEURO, TINY, and PLANK. When you set them in the GUI, the values for Max and Min Buff Size, Max and Min Rounds, and Read Order will change accordingly. In the above Options file, while the LEVEL is TINY, this options file will overwrite those value with their own, in effect negating the Encryption LEVEL to an extent. Internally, during processing the Encryption Level is evaluated to determine the way the file is processed.

PLANK is defined as: In physics, the Planck length, denoted lP, is a unit of length, equal to 1.616199(97)x10-35 metres. It is a base unit in the system of Planck units, developed by physicist Max Planck. The Planck length can be defined from three fundamental physical constants: the speed of light in a vacuum, the Planck constant, and the gravitational constant. And nothing really much to do with Yull except it seems pretty cool.

If your options are invalid processing will stop.

DUMMY DATA

Yull adds dummy or random data to each read. This is why the encrypted file is larger than the original file. Valid range is 20-100.

Here's the complete options list. Note that the / switches appear in the options file without the /. Their presence evaluates to true for that option.

PDATA

This is Personal Data. It is not a password. You do not have to use PDATA or you do not have to store PDATA in an options file. You can instruct YULL to ask for your PDATA at runtime.

If you do not define your own PDATA, YULL will construct your PDATA from some of your options.

YULL uses your PDATA to encrypt your key at runtime, which happens automatically. That is why just stealing the key and the program is not sufficient. Without your PDATA, the key is useless. Again, you do not have to do anything with PDATA if you don't want to, however it is an important security measure.

You can store your PDATA in the Options file and you can encrypt the options file as well. If you don't store the PDATA but still want to use it, check the ASK FOR PERSONAL DATA and when YULL encrypts or decrypts it will ask you for your PDATA. YULL will NOT validate your PDATA.

See All the Options from the Command Line

If you type YULL on the command line (for the Console Version), you will see this print out to the screen:

All arguments are case-insensitive.


Yull Data Encryption. Version 1.50
Copyright (c) 2010-2016 Ronald Gans. All rights reserved.
Yull takes 19 possible parameters and 17 switches:
Parameters are arguments that take a value like in=file or keysize=590
Switches are preceded by a forward slash / and take no other value.
Their presence evaluates to true for that switch.
All arguments are case-insensitive.
NOTE: ALL PARAMETERS CAN BE PLACED INTO AN OPTIONS FILE SO THE
      COMMAND LINE CAN BE AS SIMPLE AS
      Yull in=file @options
      or Yull in=file /usedefaultoptions.
in=          input file. A simple file spec. Wildcards are accepted.
out=    This is the output file. Note: It is better to let Yull
  decide where the output file goes based on other parameters.
ENCRYPTSOURCEDIR= The source dir for encryption. Can be omitted if
             the source file contains a complete path.
ENCRYPTOUTPUTDIR= The output dir of encryption.
DECRYPTSOURCEDIR= The source dir for decryption.
DECRYPTOUTPUTDIR= The output dir for decryption.
DIRECTION=        either ENCRYPT or DECRYPT. See the Readme file.
   for more details.
/ASKFORKEY    Yull will ask you for the key at runtime.
/encrypt      Encrypt (the default) Can be replaced by DIRECTION
/decrypt      Decrypt Can be replaced by DIRECTION
key=          Complete path to the key.
maxrounds=    A positive integer that indicates the maximum number of rounds.
minrounds=    A positive integer that indicates the minimum number of rounds.
keysize=      A positive integer that indicates the key size
              Only used if no key file is specified.
keydir=       The full path to the key directory if you want Yull to create
the key and put it in that folder. Only used during encryption.

And files are encrypted with it
*****if you overwrite it those encrypted files will be
*****undecryptable.
MAXBUFFSIZE=  Specify the maximum size of the read buffer.
MINBUFFSIZE=  Specify the minimum size of the read buffer.
DUMMYDATAAMOUNT=  Specify the amount of dummy data added to each read.
defaultencryptext= Specify the default encryption extension.
defaultdecryptext= Specify the default decryption extension.
READORDER= A number between 3 and 254. Used to configure the read order.
  see the GUIDE on line for more about this.
PDATA = Your personal data. Max 200 characters. Used to encrypt your key during operation.
ASKPDATA = Yull will ask you to supply your personal data. Not stored.
See the web site for how Personal Data affects Yull.
LEVEL=  This is the Encryption Level. It can take one of 6 values:
   FAST       Yull decides read size and rounds biased toward speed.
   MAX        Yull decides read size ands rounds biased toward max security.
   NORMAL     This is the default. Between FAST and MAX.
   NEURO      This is a faster mode. Everything biased towards speed.
   TINY       This is the second fastest mode.
   PLANK      This is the fastest mode.
KEYSTARTPOS An integer between 0 and length of the key-100.
KEYENDPOS  An integer between 100 and length of the key
     Yull will only use the portion of the key between these two numbers.
/YullDecidesDummyData
/YullDecidesReadOrder
/NoQuestions   Yull will not ask you questions.
/UseDefaultKey   If you have created a default key. If not you can use
                 the command: createdefaultKey
/createDefaultKey See http://YullEncryption.com/Guide and search for
                 Default Key
/useDefaultFolder Use your default user folder for output.
/createDefaultFolder  See http://YullEncryption.com/Guide and search for
                 Default Folder
/encryptOptions  Encrypt your options file. yull in=filename /encryptoptions.
/decryptOptions  Decrypt your options file. yull in=filename /decryptoptions.
/silent      If present, no logged output.
             BUT, exceptions will be displayed.
/totallysilent  Nothing is displayed, not even exceptions.
/shred       Yull deletes the original file.
/help        This text.
  by overwriting it with random values several times, then truncating it
  then deleting it.
-Legal     Yull will display the license agreement.
Yull requires at least the "in" parameter. Encrypt is true by default.
Yull ignores non-parameters on the command line.
Yull also reads as "options" file indicated by the "@" sign + filename.
Sample options file command line: yull @optionsFile.
Sample encrypt command line:
Yull in=test.txt out=test.out
      OR
Yull in=c:\myfiles\mytest.txt out=c:\myfiles\output direction=encrypt key=c:\myfiles\myfiles.key
      OR
Yull in=*.* sourecedir=c:\myfiles\source output=c:\myfiles\output key=c:\myfiles\myfiles.key
Sample decrypt command line:
Yull in=c:\myfiles\myfiles.txt out=c:\myfiles\output key=c:\myfiles\myfiles.key direction=decrypt
Yull in=testfile @optionsfile
If no "out" parameter is specified Yull will use the "in"
parameter and attach ".out" to it for the out file.
If no key parameter is specified during encryption,
Yull generates a key file (in-file-name.key).
If no keysize is specified Yull will create a key of 1024 bytes.
Use this key file for decryption.
NOTE: You must use the same parameters for decryption
that were used for encryption.
Please read the documentation for how to use the command line arguments
and what they signify.


The easiest way to create an Options file is to do so in YullG.EXE. You can tweak the options and once you have what you want save it either as your Default Options or to some other file. If you rather use YULL.EXE (like in a batch file or as a job) you can use the options file to run YULL.EXE.

One Thing to Understand About the Options

The options are processed in the order in which they are encountered, except for the options file which is processed last. If you want to encrypt with a particular key, say, key=x:\mykeyfile but the options file has USEDEFAULTKEY as a line and your command line is (for the Console App only):

yull @myoptions key=x:\mykeyfile

then Yull will use your default key not mykeyfile because the options file is processed last.

With YULLG, when you load your options you can see them and you cannot specify one option in one place and another value in another place.

Encrypted Files Are Always Larger than the Original File

NOTE I use my E: drive.

Note: the file sizes are now different.

256 was 12288 bytes and the encrypted file is 15528 bytes long, the difference due to the dummy data added.

Now, to get back the original file we need only do this:

Now, 256 is one of a series of files I created that are all just ordered numbers.

You can use the included program xvi32.exe (in the zip distribution) to validate the two 256 files are the same. Or you can use the internal DOS program FC or my little helper app, fcomp.exe.

You could also run YULL.EXE with wildcards like this:

yull in=256*. @yulloptions

and Yull will encrypt all the files matching the 256* file spec using the options in the file yullOptions located in the current directory.

Running YullG, the GUI App

This is the start up screen for YullG. Notice there are two tabs, File and Options, and four menus, File, Options, Settings and Help.

If you place your mouse cursor on the unused area of the File tab and press F1 you get this:

And the same on the Options tab. All the fields have Context sensitive help. Additionally, there's extensive help on the web site.

When you are starting out with YullG, I recommend creating the Default Folder and Key. You do it with YULLG like this:

Select Settings=>Create Default Folder

Then select Create A Key like this:

Now you can use your Default folder and key. You can store files in your default folder if you want.

So now if you elect to use the default encryption output folder and the default decryption source folder, you will be referencing these folders.

This way all your encrypted files are in the same place, if that's how you want to work.

The thing about Yull is, to a great extent, it works the way you want it to, it does not force you to work the way it wants you to.

Now a word about the preview grid on the main tab. You can encrypt files from the GUI app in several ways. You can put one file name into the source. You can put wild cards into the source (like 256*.*). You can press "Preview Encrypt" and the Preview Grid will show all the files in the source folder (and you can do the same with decryption):

Here we've select the Default Folder as our destination for encryption and the default folder for decryption. There are 36 files in my source folder. If you have a lot of files in the source folder and only want to work with a few of them, you can sort them by the file name and size. You can also select one or more of the entire group by clicking on the square to the left of the name. With the column header at "Exclude" when you click on a file you see will the information about the group updated.

If you pressed Encrypt now you would encrypt 35 files. BUT if you have a few files you want to work with out of a big list of files, you can click on the word "Exclude" and it will change to "Include":

So now it's 1 file included out of 36 instead of 1 file excluded out of 36.

Again, Yull is designed to work with Options, so package your options in a file and save them:

Getting Around the Single-Threaded Limitation

YULL.EXE (the CLI app) is single-threaded. When it is busy, it is really busy. You can't interact with the console app when it is running.

YULLG.EXE, the GUI app is not single-threaded, starting with Version 2.01. This means:
(1) You can now see a progress bar that updates.
(2) You can cancel out of a long-running process. For instance, if you started to encrypt many files and decided to abort this process, now you can.

When YULLG is encrypting (or decrypting) more than one file and it encounters an error, say, a read-only file or a device that becomes not ready, the entire process will stop.


Speaking of Memory Usage

Yull does not use a lot of memory. At rest YULLG uses about 7 megabytes (7,000 K). When encrypting or decrypting it might use 2000 more at most. It is not a memory hog, but it is a CPU hog.

Options File Handling in YullG.exe

If you want to edit your options file in a Window then select Manage Options from the Options menu (see above). You will get this:

Check the Default Options File and press the Folder icon to go directly to your Default Folder. You can load up your default options file by clicking on the Default Options check box, pressing the File Open Icon and selecting yullOptions, the name of the Default Yull Options File.

You can edit it and save it or save as or save encrypted.

When you save your options encrypted it is important to note the key you enter is NOT SAVED ANYWHERE. SO take care of it.

How to Save Your Options Encrypted

1. Click the Save Encrypted Check Box:

2. Click Save or Save As

We'll do Save As. As soon as you click Save or Save As you will see this warning screen:

If you elect to continue by pressing YES you will get this screen:

and then this screen:

You will have to enter your password twice just to make sure. And that's that.

Check back on the web site for more additions to the this Guide.

I urge you to use the files in the SOURCE directory to get a feel about how Yull works.

Adding Yull to the Explorer Context Menu

The YULL-REG.EXE program is included with the standard YULL distribution. YULL-REG will add ENCRYPT and DECRYPT entries to the Windows Explorer context menu, meaning the right-click set of selections in Windows Explorer. The program must be run in Administrator mode and some enterprises might want to reserve that privilege for actual Admins. While the context choices are available for all users on that computer, the selections will only be operational for those users who have set up the Yull Default Folder and options file called yullOptions. YULL context menu selections only depend upon the default folder and default options file. The options file can point to wherever the user wants and whatever key the user wants to us.

I HOPE YOU MAKE GOOD USE OF YULL.



THANK YOU FOR TRYING YULL



I have worked on Yull since 2005. I hope you find it useful and welcome any feedback, good or bad. Please contact me at help@yullencryption.com

LEGAL NOTICES AND DISCLAIMERS


THE CONTENT OF THIS WEBSITE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY. THE CONTENT OF THIS WEBSITE MAY BE INACCURATE, INCORRECT, INVALID, UNTRUE, FALSE, INCOMPLETE AND/OR MISLEADING. THE ENTIRE RISK AS TO THE QUALITY, CORRECTNESS, ACCURACY, OR COMPLETENESS OF THE CONTENT OF THIS WEBSITE IS WITH YOU. THE AUTHOR(S), OWNER(S), PUBLISHER(S), AND ADMINISTRATOR(S) OF THIS WEBSITE DISCLAIM ANY AND ALL WARRANTIES OF ANY KIND.

FURTHERMORE:

THE AUTHOR(S), OWNER(S), PUBLISHER(S), AND ADMINISTRATOR(S) OF THIS WEBSITE (AND ASSOCIATED WEBSITES/SERVERS), AND APPLICABLE INTELLECTUAL-PROPERTY OWNER(S) DISCLAIM ANY AND ALL LIABILITY AND IN NO EVENT WILL ANY OF THOSE PARTIES BE LIABLE TO YOU OR TO ANY OTHER PARTY FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, ANY DIRECT, INDIRECT, GENERAL, SPECIAL, INCIDENTAL, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ANY LOSSES SUSTAINED BY YOU OR THIRD PARTIES, PROCUREMENT OF SUBSTITUTE SERVICES, OR BUSINESS INTERRUPTION), WHETHER IN CONTRACT, STRICT LIABILITY, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, ARISING OUT OF ANY USE OF THIS WEBSITE (OR ASSOCIATED WEBSITES/SERVERS) OR THE CONTENT THEREOF OR OF ANY THIRD-PARTY WEBSITE LINKED IN ANY WAY FROM THIS WEBSITE (OR FROM ASSOCIATED WEBSITES), EVEN IF SUCH DAMAGES (OR THE POSSIBILITY OF SUCH DAMAGES) ARE/WERE PREDICTABLE OR KNOWN TO ANY AUTHOR, OWNER, PUBLISHER, ADMINISTRATOR, OR ANY OTHER PARTY.

THIS PRODUCT MAY INCORPORATE IMPLEMENTATIONS OF CRYPTOGRAPHIC ALGORITHMS THAT ARE REGULATED (E.G., SUBJECT TO EXPORT/IMPORT CONTROL REGULATIONS) OR ILLEGAL IN SOME COUNTRIES. IT IS SOLELY YOUR RESPONSIBILITY TO VERIFY THAT IT IS LEGAL TO IMPORT AND/OR (RE)EXPORT AND/OR USE THIS PRODUCT (OR PORTIONS THEREOF) IN COUNTRIES WHERE YOU INTEND TO USE IT AND/OR TO WHICH YOU INTEND TO IMPORT IT AND/OR FROM WHICH YOU INTEND TO EXPORT IT, AND IT IS SOLELY YOUR RESPONSIBILITY TO COMPLY WITH ANY APPLICABLE REGULATIONS, RESTRICTIONS, AND LAWS.

TO REITERATE:

"YULL ENCRYPTION PRO" (IN ALL ITS VERSIONS) IS SUBJECT TO CERTAIN EXPORT RESTRICTIONS OF THE UNITED STATES GOVERNMENT. IF YOU ARE (A) IN A COUNTRY TO WHICH EXPORT FROM THE UNITED STATES IS RESTRICTED FOR ANTI-TERRORISM REASONS, OR A NATIONAL OF ANY SUCH COUNTRY, WHEREVER LOCATED, (B) IN A COUNTRY TO WHICH THE UNITED STATES HAS EMBARGOED OR RESTRICTED THE EXPORT OF GOODS OR SERVICES, OR A NATIONAL OF ANY SUCH COUNTRY, WHEREVER LOCATED, OR (C) A PERSON OR ENTITY WHO HAS BEEN PROHIBITED FROM PARTICIPATING IN UNITED STATES EXPORT TRANSACTIONS BY ANY AGENCY OF THE UNITED STATES GOVERNMENT, THEN YOU MAY NOT INSTALL, DOWNLOAD, ACCESS, USE, OR LICENSE "YULL ENCRYPTION PRO." BY ACCEPTING THIS LICENSE, YOU WARRANT AND REPRESENT TO RONALD GANS SOFTWARE AND THIS SITE THAT (1) YOU DO NOT MATCH THE CRITERIA SET FORTH IN (A), (B), OR (C) ABOVE, (2) THAT YOU WILL NOT EXPORT OR RE-EXPORT YULL ENCRYPTION PRO (IN ALL ITS VERSIONS) TO ANY COUNTRY, PERSON, OR ENTITY SUBJECT TO U.S. EXPORT RESTRICTIONS, INCLUDING THOSE PERSONS AND ENTITIES THAT MATCH THE CRITERIA SET FORTH IN (A), (B), OR (C) ABOVE, AND (3) THAT NEITHER THE UNITED STATES BUREAU OF INDUSTRY AND SECURITY, NOR ANY OTHER U.S. FEDERAL AGENCY, HAS SUSPENDED, REVOKED, OR DENIED YOUR EXPORT PRIVILEGES.

YOU SHALL INDEMNIFY, DEFEND AND HOLD ALL (CO)AUTHORS OF THIS PRODUCT, AND APPLICABLE INTELLECTUAL-PROPERTY OWNERS, HARMLESS FROM AND AGAINST ANY AND ALL LIABILITY, DAMAGES, LOSSES, SETTLEMENTS, PENALTIES, FINES, COSTS, EXPENSES (INCLUDING REASONABLE ATTORNEYS' FEES), DEMANDS, CAUSES OF ACTION, CLAIMS, ACTIONS, PROCEEDINGS, AND SUITS, DIRECTLY RELATED TO OR ARISING OUT OF YOUR USE, INABILITY TO USE, COPYING, (RE)DISTRIBUTION, IMPORT AND/OR (RE)EXPORT OF THIS PRODUCT (OR PORTIONS THEREOF) AND/OR YOUR BREACH OF ANY TERM OF THIS LICENSE.

IF YOU ARE NOT SURE WHETHER YOU UNDERSTAND ALL PARTS OF THIS LICENSE OR IF YOU ARE NOT SURE WHETHER YOU CAN COMPLY WITH ALL TERMS AND CONDITIONS OF THIS LICENSE, YOU MUST NOT USE, COPY, MODIFY, CREATE DERIVATIVE WORKS OF, NOR (RE)DISTRIBUTE THIS PRODUCT, NOR ANY PORTION(S) OF IT. YOU SHOULD CONSULT WITH A LAWYER.

IF (IN RELEVANT CONTEXT) ANY PROVISION OF CHAPTER IV OF THIS LICENSE IS UNENFORCEABLE, INVALID, OR PROHIBITED UNDER APPLICABLE LAW IN YOUR JURISDICTION, YOU HAVE NO RIGHTS UNDER THIS LICENSE AND YOU MUST NOT USE, COPY, MODIFY, CREATE DERIVATIVE WORKS OF, NOR (RE)DISTRIBUTE THIS PRODUCT, NOR ANY PORTION(S) THEREOF.