diff --git a/secrules/rules01.py b/secrules/rules01.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwMS5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwMS5weQ== 100644
--- a/secrules/rules01.py
+++ b/secrules/rules01.py
@@ -13,8 +13,9 @@
 
 @level_rule(1)
 def rule0101(fo, ftm):
-    """The following system-level accounts do not have account restrictions defined.
-
+    """Improper system-level account access restrictions
+    
+    The following system-level accounts do not have account restrictions defined.
     Improper configuration of access restrictions could result in the compromise of
     the operating system environment, and compromise the confidentiality of customer data"""
 
@@ -44,7 +45,9 @@
 
 @level_rule(2)
 def rule0102(fo, ftm):
-    """The accounts listed have duplicate UICs.  This is a security problem.
+    """Duplicate UICs for system-level accounts
+
+    The accounts listed have duplicate UICs.  This is a security problem.
     Accounts that share a common UIC allow the user of one account
     to modify or delete the files of another account"""
 
@@ -74,7 +77,9 @@
 
 @level_rule(3)
 def rule0103(fo, ftm):
-    """Most accounts with these types of privileges are not part of the normal
+    """Improperly defined privileged accounts
+
+    Most accounts with these types of privileges are not part of the normal
     operating system distribution and can represent a security risk."""
 
     maxsysgroup = lib.getsyi(syidef.SYI__MAXSYSGROUP)[1]
@@ -97,7 +102,9 @@
 
 @level_rule(3)
 def rule0104(fo, ftm):
-    """A system level UIC is one in which the group number is less than,
+    """Improperly defined accounts with system-level UIC
+
+    A system level UIC is one in which the group number is less than,
     or equal to, the SYSGEN parameter, MAXSYSGROUP.  The group number is
     defined at system generation time and may vary from site to site.
     Account privileges allow users to add, modify or delete system files.
@@ -121,7 +128,9 @@
 
 @level_rule(3)
 def rule0105(fo, ftm):
-    """Improperly granted privilege classes can grant unintended
+    """Improperly granted system-level account privilege classes
+    
+    Improperly granted privilege classes can grant unintended
     privileges and accesses to users.  This could result in the
     compromise of the operating system environment, and compromise
     the confidentiality of customer data."""
@@ -185,7 +194,9 @@
 
 @level_rule(3)
 def rule0106(fo, ftm):
-    """These accounts may no longer be valid or useful, and may
+    """Invalid home directory device
+    
+    These accounts may no longer be valid or useful, and may
     represent a security exposure to the system."""
 
     all_users = user.all_users()
@@ -206,7 +217,9 @@
 
 @level_rule(3)
 def rule0107(fo, ftm):
-    """The device may not be online, mounted or available.
+    """Home directory device not ready
+    
+    The device may not be online, mounted or available.
     Security checks cannot be completed."""
 
     all_users = user.all_users()
@@ -227,7 +240,9 @@
 
 @level_rule(2)
 def rule0108(fo, ftm):
-    """Improper home directory configuration can interfere with
+    """System accounts with non-existing home directories
+    
+    Improper home directory configuration can interfere with
     the proper functioning of accounts.  The accounts listed do not
     have home directories.  This is not consistent with the system
     configuration.  These accounts may be inactive or DISUSERed."""
@@ -248,7 +263,9 @@
 
 @level_rule(3)
 def rule0109(fo, ftm):
-    """Improper account ownership can prevent proper identification
+    """Non-conforming standard accounts
+    
+    Improper account ownership can prevent proper identification
     of assigned privileges, result in auditing difficulties, and can
     jeopardize overall system security."""
 
@@ -342,7 +359,9 @@
 
 @level_rule(3)
 def rule0110(fo, ftm):
-    """Improper configuration of account related SYSGEN parameters
+    """Improperly defined SYSGEN parameters associated with accounts
+    
+    Improper configuration of account related SYSGEN parameters
     could result in the compromise of the operating system environment,
     and compromise the confidentiality of customer data."""
 
diff --git a/secrules/rules02.py b/secrules/rules02.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwMi5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwMi5weQ== 100644
--- a/secrules/rules02.py
+++ b/secrules/rules02.py
@@ -16,7 +16,9 @@
 
 @level_rule(2)
 def rule0201(fo, fmt):
-    """Improper system file access could result in the compromise of
+    """System files accessible by non-privileged users
+    
+    Improper system file access could result in the compromise of
     the operating system environment, and compromise the confidentiality
     of customer data.  The files listed are accessible by non-privileged
     users as indicated.  This allows non-privileged users to read, execute,
@@ -61,7 +63,9 @@
 
 @level_rule(3)
 def rule0202(fo, fmt):
-    """Improper system file access could result in the compromise of the
+    """System files accessible by privileged users
+    
+    Improper system file access could result in the compromise of the
     operating system environment, and compromise the confidentiality of customer
     data.  The listed files are accessible by privileged users as indicated.
     This allows privileged users to read, execute, modify, or delete the files.
diff --git a/secrules/rules03.py b/secrules/rules03.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwMy5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwMy5weQ== 100644
--- a/secrules/rules03.py
+++ b/secrules/rules03.py
@@ -8,7 +8,9 @@
 
 @level_rule(2)
 def rule0302(fo, fmt):
-    """If the change was not approved by the system manager, then it
+    """Improper system file ownership
+    
+    If the change was not approved by the system manager, then it
     signifies an unauthorized change was made to the file, and represents an area
     of vulnerability with regards to protection of critical files."""
 
diff --git a/secrules/rules04.py b/secrules/rules04.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwNC5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwNC5weQ== 100644
--- a/secrules/rules04.py
+++ b/secrules/rules04.py
@@ -17,7 +17,9 @@
 
 @level_rule(2)
 def rule0401(fo, fmt):
-    """The integrity of system files is critical to the security and
+    """Files with improperly defined ACLs
+
+    The integrity of system files is critical to the security and
     integrity of the VMS operating environment.  Improperly defined ACLs can
     grant unintended access to files, which could result in the compromise of
     the operating environment, and/or compromise the confidentiality of customer
@@ -46,7 +48,9 @@
                         fn_printed = False
                         for e in get_security.get_security(fn)[2]:
                             acc = e.split(b',')[-1]
-                            if b'IDENTIFIER=*' in e and (b'DELETE' in acc or b'WRITE' in acc):
+                            if b'IDENTIFIER=*' in e and (
+                                b'DELETE' in acc or b'WRITE' in acc
+                            ):
                                 if not fn_printed:
                                     fn_printed = True
                                     if fmt:
@@ -72,7 +76,9 @@
 
 @level_rule(2)
 def rule0403(fo, fmt):
-    """From a security standpoint, this is extremely dangerous because
+    """Reserved file has improper owner.
+
+    From a security standpoint, this is extremely dangerous because
     it can render the disk unusable or the system inoperable because these
     files can be corrupted or deleted."""
 
@@ -111,7 +117,9 @@
 
 @level_rule(2)
 def rule0404(fo, fmt):
-    """This presents a major security concern, as other users may potentially
+    """Reserved file has improper protection mask.
+
+    This presents a major security concern, as other users may potentially
     corrupt or delete these files which could render the disk unusable or the
     system inoperable."""
 
@@ -150,7 +158,9 @@
 
 @level_rule(2)
 def rule0405(fo, fmt):
-    """From a security standpoint, this is extremely dangerous because it
+    """Reserved file has an ACL.
+
+    From a security standpoint, this is extremely dangerous because it
     can render the disk unusable or the system inoperable because these files can
     be corrupted or deleted by users which have the same identifier granted to
     them."""
@@ -191,6 +201,95 @@
         fileACLrf(device + b'[000000]*.SYS')
 
 
+@level_rule(2)
+def rule0406(fo, fmt):
+    """Files with unbalanced protection.
+
+    Unbalanced file protections could result in the compromise of the operating
+    environment, and/or compromise the confidentiality of customer data.
+    Unbalanced means that:
+    1) other access is greater than group access or user access, -OR-
+    2) that group access is greater than user access, -OR-
+    3) the files UIC protection is greater than its parent directory’s protection"""
+    if not fmt:
+        print(file=fo)
+        print('Rule 0406', file=fo)
+        print('=========', file=fo)
+    it = (
+        itemList.itemList(
+            code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedWord
+        ),
+    )
+
+    def fileProt(root):
+        with FindFile(root) as fi:
+            for fn in fi:  # type: ignore
+                fn: bytes
+                try:
+                    retsec = starlet.get_security(
+                        objnam=fn, clsnam=b'FILE', itmlst=it
+                    )
+                    prot: int = retsec[2][
+                        ossdef.OSS__PROTECTION
+                    ]   # type: ignore
+                    wprot = (prot & 0xF000) >> 12
+                    gprot = (prot & 0x0F00) >> 8
+                    oprot = (prot & 0x00F0) >> 4
+                    sprot = prot & 0x000F
+
+                    # ebit = 0x4
+                    # wbit = 0x2
+                    # dbit = 0x8
+                    # rbit = 0x1
+
+                    for i in range(4):
+                        mask = 1 << i
+                        # if mask == ebit:
+                        #     continue
+                        if wprot & mask == 0 and (
+                            gprot & mask != 0 or oprot & mask != 0
+                        ):
+                            found = True
+                            break
+                        if gprot & mask == 0 and oprot & mask != 0:
+                            found = True
+                            break
+                    else:
+                        found = False
+                    if found:
+                        if fmt:
+                            print('0406"2"', fn.decode(), file=fo)
+                        else:
+                            print(fn.decode(), file=fo)
+                            print(
+                                ' ' * 10,
+                                lib.format_sogw_prot(prot)[1].decode(),
+                                file=fo,
+                            )
+                except VMSError as e:
+                    if e.errno not in (
+                        rmsdef.RMS__FNF,
+                        ssdef.SS__NOSUCHFILE,
+                    ):
+                        raise
+
+    devCtx = 0
+    devItm = (
+        itemList.itemList(code=dvsdef.DVS__DEVCLASS, value=dcdef.DC__DISK),
+    )
+
+    while True:
+        try:
+            sts, device, devCtx = starlet.device_scan(b'*', devItm, devCtx)
+        except:
+            break
+        if not lib.getdvi(dvidef.DVI__MNT, device_name=device)[1]:
+            continue
+        if lib.getdvi(dvidef.DVI__SHDW_MEMBER, device_name=device)[1]:
+            continue
+        fileProt(device + b'[000000...]*.*')
+
+
 if __name__ == '__main__':
     import sys
 
diff --git a/secrules/rules05.py b/secrules/rules05.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwNS5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwNS5weQ== 100644
--- a/secrules/rules05.py
+++ b/secrules/rules05.py
@@ -20,7 +20,9 @@
 
 @level_rule(3)
 def rule0501(fo, fmt):
-    """Not having the DISCTLY flag not set allows these accounts to
+    """DISCTLY flag not set
+    
+    Not having the DISCTLY flag not set allows these accounts to
     prematurely abort the system login sequence.  This may prevent certain
     procedures from being executed during login which may be required for this
     site."""
@@ -39,7 +41,11 @@
 
 @level_rule(3)
 def rule0502(fo, fmt):
-    """Ensure the DISCTLY flag is set on all accounts."""
+    """DEFCLI flag not set
+    
+    This allows these accounts to change the default Command Language Interpreter
+    (CLI ) or CLI tables which may have undesirable consequences.
+    It may also allow these accounts to avert any security monitoring during use."""
 
     if not fmt:
         print('', file=fo)
@@ -56,7 +62,9 @@
 
 @level_rule(2)
 def rule0503(fo, fmt):
-    """A captive account rarely requires elevated privileges, nor should
+    """Captive account is suspect
+    
+    A captive account rarely requires elevated privileges, nor should
     it be assigned a system level UIC.  In addition, it is recommended that a
     user of a captive account not be allowed to change the password for that
     account -- The LOCKPWD flag should be set."""
@@ -79,7 +87,9 @@
 
 @level_rule(2)
 def rule0504(fo, fmt):
-    """A restricted account rarely requires elevated privileges, nor should
+    """Restricted account is suspect
+    
+    A restricted account rarely requires elevated privileges, nor should
     it be assigned a system level UIC.  In addition, its PRCLM quota should be
     set to zero in order to prevent such a user to spawn out of the restricted
     environment."""
@@ -101,7 +111,9 @@
 
 @level_rule(2)
 def rule0506(fo, fmt):
-    """Unused accounts can present opportunities to penetrate the system.
+    """Unused accounts
+    
+    Unused accounts can present opportunities to penetrate the system.
     These accounts have never been utilized on the system.  This implies that
     these accounts are inactive and, therefore, may be unnecessary.  They also
     present a potential security risk in that unauthorized users may attempt to
@@ -126,7 +138,9 @@
 
 @level_rule(2)
 def rule0507(fo, fmt):
-    """Stale accounts can present opportunities to penetrate the system.
+    """Stale accounts
+    
+    Stale accounts can present opportunities to penetrate the system.
     These may be stale accounts which are no longer needed.  They may also be
     utilized as a means to gain unauthorized access to the system."""
 
@@ -150,7 +164,9 @@
 
 @level_rule(3)
 def rule0508(fo, fmt):
-    """Improperly defined and maintained user accounts presents opportunities
+    """Disabled accounts
+    
+    Improperly defined and maintained user accounts presents opportunities
     to penetrate the system, thus giving an unauthorized user access to the system
     resources."""
 
@@ -169,7 +185,9 @@
 
 @level_rule(3)
 def rule0509(fo, fmt):
-    """Improperly defined and maintained user accounts present opportunities
+    """Expired accounts
+    
+    Improperly defined and maintained user accounts present opportunities
     to penetrate the system, thus giving an unauthorized user access to the system
     resources."""
 
@@ -190,7 +208,9 @@
 
 @level_rule(2)
 def rule0510(fo, fmt):
-    """Login related SYGEN parameters define and enforce the login policies
+    """Login SYSGEN parameters
+    
+    Login related SYGEN parameters define and enforce the login policies
     of the site.  Improperly defined Login related SYSGEN parameters can result
     in the compromise of the operating system environment, and compromise the
     confidentiality of customer data."""
diff --git a/secrules/rules06.py b/secrules/rules06.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwNi5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwNi5weQ== 100644
--- a/secrules/rules06.py
+++ b/secrules/rules06.py
@@ -15,7 +15,9 @@
 
 @level_rule(2)
 def rule0601(fo, fmt):
-    """Improper definition of the network can present opportunities to
+    """Network proxies containing wild cards in the node name
+    
+    Improper definition of the network can present opportunities to
     penetrate the system.  This is a serious security vulnerability since it
     allows access from nodes not currently added to the network."""
 
@@ -36,7 +38,9 @@
 
 @level_rule(2)
 def rule0602(fo, fmt):
-    """Improper definition of the network can present opportunities to
+    """Network proxies with unrecognized username
+    
+    Improper definition of the network can present opportunities to
     penetrate the system.  This inconsistency indicates either a potential denial
     of service attack, or a potential for unintended access given to a future
     user."""
@@ -96,7 +100,9 @@
 
 @level_rule(2)
 def rule0603(fo, fmt):
-    """This is a serious vulnerability because it allows privileged operations
+    """Network proxy for privileged users
+    
+    This is a serious vulnerability because it allows privileged operations
     to occur remotely without the user even logging in."""
 
     if not fmt:
@@ -141,7 +147,9 @@
 
 @level_rule(2)
 def rule0604(fo, fmt):
-    """This inconsistency indicates either a potential denial of service
+    """Network object with unrecognized username
+    
+    This inconsistency indicates either a potential denial of service
     attack, or a potential for unintended enabling of the object in the future."""
 
     if not fmt:
@@ -153,7 +161,7 @@
         r = [x[:-1].split(',') for x in p]
 
     for t, u, i in r:
-        if user_exists(u)[0] is None:
+        if u != '<Defaultvalue>' and user_exists(u)[0] is None:
             if fmt:
                 print('0604"2"', t, u, file=fo)
             else:
@@ -162,7 +170,9 @@
 
 @level_rule(2)
 def rule0605(fo, fmt):
-    """This is a serious vulnerability because it allows privileged
+    """Privileged network object
+    
+    This is a serious vulnerability because it allows privileged
     operations to occur remotely without the user even logging in."""
 
     if not fmt:
@@ -184,7 +194,9 @@
 
 @level_rule(3)
 def rule0606(fo, fmt):
-    """Network object executable does not exist. This prevents the network
+    """Network object executable does not exist
+    
+    Network object executable does not exist. This prevents the network
     object from being used."""
 
     if not fmt:
@@ -196,7 +208,7 @@
         r = [x[:-1].split(',') for x in p]
 
     for t, u, i in r:
-        if not file_exists(i.encode()):
+        if i != '<Defaultvalue>' and not file_exists(i.encode()):
             if fmt:
                 print('0606"3"', t, u, i, file=fo)
             else:
@@ -205,7 +217,9 @@
 
 @level_rule(3)
 def rule0607(fo, fmt):
-    """This network object allows remote users to execute remotely any
+    """TASK object exists
+    
+    This network object allows remote users to execute remotely any
     command procedure they specify, subject to normal access restrictions.  It is
     more secure to require all procedures that may be remotely executed to be
     previously defined in the network object VMS - OpenVMS by eliminating this
diff --git a/secrules/rules07.py b/secrules/rules07.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwNy5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwNy5weQ== 100644
--- a/secrules/rules07.py
+++ b/secrules/rules07.py
@@ -24,7 +24,9 @@
 
 @level_rule(2)
 def rule0701(fo, fmt):
-    """The OpenVMS system predefines fixed values for all system identifiers.
+    """Bad system identifier value
+    
+    The OpenVMS system predefines fixed values for all system identifiers.
     If the system identifier values are changed it implies unnecessary tampering
     with system resources."""
 
@@ -52,7 +54,9 @@
 
 @level_rule(2)
 def rule0702(fo, fmt):
-    """If a user is granted one of these identifiers, it may provide the user
+    """Ungranted identifiers
+    
+    If a user is granted one of these identifiers, it may provide the user
     with sufficient privileges to tamper with unauthorized resources on the system
     (e.g., critical files, directories, etc.)."""
 
@@ -105,7 +109,9 @@
 
 @level_rule(2)
 def rule0703(fo, fmt):
-    """This may allow vulnerabilities to exist in these tables making them
+    """Bad owner for system logical name table
+    
+    This may allow vulnerabilities to exist in these tables making them
     susceptible to unwanted changes.  The owner of a table can freely add, modify,
     and delete entries in the table."""
 
@@ -114,7 +120,7 @@
         print('RULE 0703', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
@@ -118,7 +124,7 @@
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     own: int = starlet.get_security(
         objnam='LNM$SYSTEM_TABLE', clsnam='LOGICAL_NAME_TABLE', itmlst=it
@@ -138,7 +144,9 @@
 
 @level_rule(2)
 def rule0704(fo, fmt):
-    """This allows any user to potentially change these system tables by
+    """Increased WORLD privilege for system logical name table
+    
+    This allows any user to potentially change these system tables by
     removing or adding elements to them.  Such actions may allow a user to
     circumvent certain system security measures or override safeguards."""
 
@@ -147,7 +155,7 @@
         print('RULE 0704', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
@@ -151,7 +159,7 @@
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
     prot: int = starlet.get_security(
         objnam='LNM$SYSTEM_TABLE', clsnam='LOGICAL_NAME_TABLE', itmlst=it
     )[2][
@@ -171,7 +179,9 @@
 
 @level_rule(2)
 def rule0705(fo, fmt):
-    """This allows any member of the owners group to potentially change these
+    """Increased group privilege for system logical name table
+    
+    This allows any member of the owners group to potentially change these
     system tables by removing or adding elements to them.  Such actions may allow
     a user to circumvent certain system security measures or override safeguards."""
 
@@ -180,7 +190,7 @@
         print('RULE 0705', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
@@ -184,7 +194,7 @@
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
     prot: int = starlet.get_security(
         objnam='LNM$SYSTEM_TABLE', clsnam='LOGICAL_NAME_TABLE', itmlst=it
     )[2][
@@ -204,7 +214,9 @@
 
 @level_rule(2)
 def rule0706(fo, fmt):
-    """This may allow unauthorized access to users which have the associated
+    """System logical name table has ACL
+    
+    This may allow unauthorized access to users which have the associated
     identifiers granted to them."""
 
     if not fmt:
@@ -212,7 +224,7 @@
         print('RULE 0706', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__ACL_LENGTH, dtype=itemList.il_unsignedLong
         ),
@@ -216,7 +228,7 @@
         itemList.itemList(
             code=ossdef.OSS__ACL_LENGTH, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
     acllen: int = starlet.get_security(
         objnam='LNM$SYSTEM_TABLE', clsnam='LOGICAL_NAME_TABLE', itmlst=it
     )[2][
@@ -237,7 +249,9 @@
 
 @level_rule(1)
 def rule0707(fo, fmt):
-    """This could result in unauthorized access to the operating system files,
+    """System disk has bad owner
+    
+    This could result in unauthorized access to the operating system files,
     and compromise system integrity."""
 
     if not fmt:
@@ -245,7 +259,7 @@
         print('RULE 0707', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
@@ -249,7 +263,7 @@
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     ident: int = starlet.get_security(
         objnam='SYS$SYSDEVICE:', clsnam='DEVICE', itmlst=it
@@ -269,10 +283,12 @@
 
 @level_rule(2)
 def rule0708(fo, fmt):
-    """A system shared disk should typically be owned by the SYSTEM account.
+    """Disk has undefined owner
+    
+    A system shared disk should typically be owned by the SYSTEM account.
     A privately mounted disk should be owned by a valid user in the SYSUAF."""
 
     if not fmt:
         print(file=fo)
         print('RULE 0708', file=fo)
         print('=========', file=fo)
@@ -273,11 +289,10 @@
     A privately mounted disk should be owned by a valid user in the SYSUAF."""
 
     if not fmt:
         print(file=fo)
         print('RULE 0708', file=fo)
         print('=========', file=fo)
-
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
@@ -281,7 +296,7 @@
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     ident: int = starlet.get_security(
         objnam='SYS$SYSDEVICE:', clsnam='DEVICE', itmlst=it
@@ -312,7 +327,9 @@
 
 @level_rule(2)
 def rule0709(fo, fmt):
-    """Incorrect disk protection can yield undesirable access of sensitive
+    """Disk has bad protection
+    
+    Incorrect disk protection can yield undesirable access of sensitive
     data or files to unauthorized users."""
 
     if not fmt:
@@ -320,7 +337,7 @@
         print('RULE 0709', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
@@ -324,7 +341,7 @@
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     prot: int = starlet.get_security(
         objnam='SYS$SYSDEVICE:', clsnam='DEVICE', itmlst=it
@@ -345,7 +362,9 @@
 
 @level_rule(2)
 def rule0710(fo, fmt):
-    """Highwater marking is a feature of OpenVMS which protects users from
+    """Highwater marking disabled
+    
+    Highwater marking is a feature of OpenVMS which protects users from
     reading files beyond what was written to them.  This also is termed disk
     scavenging."""
 
@@ -361,5 +380,5 @@
             continue
         if lib.getdvi(dvidef.DVI__NOHIGHWATER, device_name=device)[1]:
             if fmt:
-                print('0710"2"', device, file=fo)
+                print('0710"2"', device.decode(), file=fo)
             else:
@@ -365,6 +384,6 @@
             else:
-                print(device, 'NOHIGHWATER', file=fo)
+                print(device.decode(), 'NOHIGHWATER', file=fo)
 
 
 @level_rule(2)
 def rule0711(fo, fmt):
@@ -367,8 +386,10 @@
 
 
 @level_rule(2)
 def rule0711(fo, fmt):
-    """This feature writes a pattern over the disk space occupied by a file
+    """Erase-on-delete disabled
+    
+    This feature writes a pattern over the disk space occupied by a file
     when the file is deleted.  This prevents users from scavenging old data from
     the disk which might otherwise be considered reserved only for authorized
     users."""
@@ -392,7 +413,9 @@
 
 @level_rule(2)
 def rule0712(fo, fmt):
-    """This allows the owner full access to the volume, which can present a
+    """System volume has bad owner
+    
+    This allows the owner full access to the volume, which can present a
     security risk."""
 
     if not fmt:
@@ -400,7 +423,7 @@
         print('RULE 0712', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
@@ -404,7 +427,7 @@
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     ident: int = starlet.get_security(
         objnam='SYS$SYSDEVICE:', clsnam=b'DEVICE', itmlst=it
@@ -424,7 +447,9 @@
 
 @level_rule(2)
 def rule0713(fo, fmt):
-    """Owners of a volume should be defined in the SYSUAF.  This could
+    """Volume has undefined owner
+    
+    Owners of a volume should be defined in the SYSUAF.  This could
     present a security problem, if a user has privileges to define the owner into
     the SYSUAF and then login to that account.  This would permit the user full
     privileges on the volume."""
@@ -434,7 +459,7 @@
         print('RULE 0713', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
@@ -438,7 +463,7 @@
         itemList.itemList(
             code=ossdef.OSS__OWNER, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     ident: int = starlet.get_security(
         objnam='SYS$SYSDEVICE:', clsnam='VOLUME', itmlst=it
@@ -469,7 +494,9 @@
 
 @level_rule(2)
 def rule0714(fo, fmt):
-    """Incorrect volume protections can prevent users from accessing to the
+    """Disk volume has bad protection
+    
+    Incorrect volume protections can prevent users from accessing to the
     disks.  By default, all users should be granted RWCD access to the volume."""
 
     if not fmt:
@@ -477,7 +504,7 @@
         print('RULE 0714', file=fo)
         print('=========', file=fo)
 
-    it = [
+    it = (
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
@@ -481,7 +508,7 @@
         itemList.itemList(
             code=ossdef.OSS__PROTECTION, dtype=itemList.il_unsignedLong
         ),
-    ]
+    )
 
     prot: int = starlet.get_security(
         objnam='SYS$SYSDEVICE:', clsnam='VOLUME', itmlst=it
diff --git a/secrules/rules08.py b/secrules/rules08.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwOC5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwOC5weQ== 100644
--- a/secrules/rules08.py
+++ b/secrules/rules08.py
@@ -9,7 +9,9 @@
 
 @level_rule(1)
 def rule0801(fo, fmt):
-    """This condition allows immediate access to the system to anyone
+    """Accounts with no password
+    
+    This condition allows immediate access to the system to anyone
     accessing these accounts.  In addition, if any of these accounts is a
     privileged account then the system is vulnerable to intentional or
     unintentional tampering with critical system resources."""
@@ -34,7 +36,9 @@
 
 @level_rule(2)
 def rule0802(fo, fmt):
-    """Improper password definition and/or use, such as the use of
+    """Accounts with disabled password dictionary
+    
+    Improper password definition and/or use, such as the use of
     predictable and easily guessed passwords, can present opportunities to
     penetrate the system.  The listed accounts have the DISPWDDIC flag set in
     their UAF record.  This prevents the system from screening use of a new
@@ -63,7 +67,9 @@
 
 @level_rule(2)
 def rule0803(fo, fmt):
-    """Improper password definition and/or use, such as failure to change
+    """Accounts with disabled password history
+    
+    Improper password definition and/or use, such as failure to change
     passwords on a regular basis, can present opportunities to penetrate the
     system.  The listed accounts have the DISPWDHIS flag set in their UAF record.
     This prevents the system from verifying previous use of a new password when a
@@ -92,7 +98,9 @@
 
 @level_rule(2)
 def rule0804(fo, fmt):
-    """Improper password definition and/or use, such as inadequate password
+    """Password length infraction
+    
+    Improper password definition and/or use, such as inadequate password
     length and complexity, can present opportunities to penetrate the system.
     The listed accounts have an improperly set PWDMINIMUM value, which allows
     them to use passwords with lengths which are less than the DISA standard of
@@ -119,7 +127,9 @@
 
 @level_rule(2)
 def rule0805(fo, fmt):
-    """Improper password definition and/or use, such as failure to change
+    """Password lifetime infraction
+    
+    Improper password definition and/or use, such as failure to change
     passwords on a regular basis, can present opportunities to penetrate the
     system.  An account with no password lifetime restriction may retain its
     password indefinitely.  This renders the account vulnerable to unauthorized
diff --git a/secrules/rules09.py b/secrules/rules09.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMwOS5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMwOS5weQ== 100644
--- a/secrules/rules09.py
+++ b/secrules/rules09.py
@@ -12,7 +12,9 @@
 
 @level_rule(2)
 def rule0901(fo, fmt):
-    """The integrity of VMS startup files is critical to the security and
+    """Files accessible by non-privileged users
+    
+    The integrity of VMS startup files is critical to the security and
     integrity of the operating environment.  Improper access to startup files
     can allow unauthorized users to modify their own or another user's execution
     environment."""
@@ -54,7 +56,9 @@
 
 @level_rule(3)
 def rule0902(fo, fmt):
-    """During checking of the listed files for non-privileged access, either:
+    """Embedded command procedure not found
+    
+    During checking of the listed files for non-privileged access, either:
     1) An attempt to open the files to check for other called procedures resulted
     in an open failure,  -OR- 2) The listed command procedures reference other
     command procedures which were not found.  If a file was required and deleted,
@@ -78,7 +82,9 @@
 
 @level_rule(2)
 def rule0903(fo, fmt):
-    """This indicates either a system configuration inconsistency or an
+    """Startup file not found
+    
+    This indicates either a system configuration inconsistency or an
     inconsistency in the review criteria."""
 
     if not fmt:
diff --git a/secrules/rules10.py b/secrules/rules10.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMxMC5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMxMC5weQ== 100644
--- a/secrules/rules10.py
+++ b/secrules/rules10.py
@@ -7,7 +7,9 @@
 
 @level_rule(2)
 def rule1001(fo, fmt):
-    """This prevents accounting history from being recorded."""
+    """Accounting is disabled
+    
+    This prevents accounting history from being recorded."""
 
     if not fmt:
         print('RULE 1001', file=fo)
@@ -28,7 +30,9 @@
 
 @level_rule(2)
 def rule1002(fo, fmt):
-    """The related processes and events are not being recorded.  If system
+    """Accounting disabled for required event or process
+    
+    The related processes and events are not being recorded.  If system
     level access is not recorded, there is no way to track if an attack is being
     made to gain unauthorized access to the system."""
 
@@ -51,7 +55,9 @@
 
 @level_rule(1)
 def rule1003(fo, fmt):
-    """All system security alarms are currently disabled."""
+    """Security alarms are disabled
+    
+    All system security alarms are currently disabled."""
 
     if not fmt:
         print('RULE 1003', file=fo)
@@ -72,7 +78,9 @@
 
 @level_rule(2)
 def rule1004(fo, fmt):
-    """Some security alarms are not being reported."""
+    """Security alarm monitoring incomplete
+    
+    Some security alarms are not being reported."""
 
     if not fmt:
         print('RULE 1004', file=fo)
@@ -100,7 +108,9 @@
 
 @level_rule(1)
 def rule1006(fo, fmt):
-    """Security alarms are not being reported.  Security infractions are not
+    """Security audits disabled
+    
+    Security alarms are not being reported.  Security infractions are not
     being recorded."""
 
     if not fmt:
@@ -122,7 +132,9 @@
 
 @level_rule(2)
 def rule1007(fo, fmt):
-    """Some security infractions are not being recorded."""
+    """Security audit monitoring incomplete
+    
+    Some security infractions are not being recorded."""
 
     if not fmt:
         print('RULE 1007', file=fo)
diff --git a/secrules/rules11.py b/secrules/rules11.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMxMS5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMxMS5weQ== 100644
--- a/secrules/rules11.py
+++ b/secrules/rules11.py
@@ -15,7 +15,9 @@
 
 @level_rule(2)
 def rule1101(fo, fmt):
-    """Many, or all, of their mail files may reside on a different system.
+    """Using forwarding mail address
+    
+    Many, or all, of their mail files may reside on a different system.
     This prevents analysis of the mail files associated with these users."""
 
     if not fmt:
@@ -35,7 +37,9 @@
 
 @level_rule(2)
 def rule1102(fo, fmt):
-    """A users mail file should limit access to the SYSTEM and OWNER
+    """User mail file has improper protections
+    
+    A users mail file should limit access to the SYSTEM and OWNER
     (typically RW for SYSTEM and OWNER and no access for GROUP and WORLD).
     The listed files should have their protection changed to (RW,RW,,)."""
 
@@ -73,7 +77,9 @@
 
 @level_rule(2)
 def rule1103(fo, fmt):
-    """A users mail file should only be owned by that user.  The owner of a
+    """User mail file has different owner
+    
+    A users mail file should only be owned by that user.  The owner of a
     file has full access to the file including read, write and delete privileges
     on that file.  These files should be changed to specify the proper owner."""
 
@@ -112,11 +118,15 @@
 
 @level_rule(3)
 def rule1104(fo, fmt):
-    """During review of the system MAIL object, either 1) The attempt to
-    gather information on the systems MAIL object was unsuccessful.  This implies
-    that there is no MAIL object available on the system, thus prohibiting the
-    use of VMS MAIL.  -OR- 2) The information collected on the system MAIL object
-    is incomplete.  This implies that the object is not correctly configured or
+    """Unavailable or incomplete system MAIL object information
+    
+    During review of the system MAIL object, either
+    1) The attempt to gather information on the systems MAIL object was unsuccessful. 
+    This implies that there is no MAIL object available on the system,
+    thus prohibiting the use of VMS MAIL.
+    -OR- 
+    2) The information collected on the system MAIL object is incomplete.
+    This implies that the object is not correctly configured or
     that the last system upgrade (for openVMS) may have been incomplete."""
 
     if not fmt:
@@ -135,7 +145,9 @@
 
 @level_rule(4)
 def rule1105(fo, fmt):
-    """This prohibits mail transmissions across the network."""
+    """System mail object account not found
+    
+    This prohibits mail transmissions across the network."""
 
     if not fmt:
         print(file=fo)
@@ -153,7 +165,9 @@
 
 @level_rule(2)
 def rule1106(fo, fmt):
-    """Not having this flag set allows the account unrestricted access,
+    """System mail object account is not RESTRICTED
+    
+    Not having this flag set allows the account unrestricted access,
     which is both unnecessary and undesirable.  The RESTRICTED flag should
     be set on this account."""
 
@@ -172,7 +186,9 @@
 
 @level_rule(2)
 def rule1107(fo, fmt):
-    """This can permit someone to exploit the privileges of this account,
+    """System mail object account has privileged UIC
+    
+    This can permit someone to exploit the privileges of this account,
     and presents a risk to the systems overall security.  This account should
     have its UIC changed to a non-privileged value, i.e.  one whose group number
     is greater than that specified in the SYSGEN parameter MAXSYSGROUP."""
@@ -205,7 +221,9 @@
 
 @level_rule(4)
 def rule1108(fo, fmt):
-    """This effectively disables this account for any use.  This condition
+    """System mail object account is disabled
+    
+    This effectively disables this account for any use.  This condition
     inhibits mail transmission across the network."""
 
     if not fmt:
@@ -226,7 +244,9 @@
 
 @level_rule(1)
 def rule1109(fo, fmt):
-    """This account should be assigned a password.  Not having a password on
+    """System mail object account has no password
+    
+    This account should be assigned a password.  Not having a password on
     this account may grant access to the system via this account from outside
     processes, which could exploit this vulnerability."""
 
@@ -248,7 +268,9 @@
 
 @level_rule(4)
 def rule1110(fo, fmt):
-    """This prohibits mail transmissions across the network."""
+    """System mail object account has no NETWORK access
+    
+    This prohibits mail transmissions across the network."""
 
     if not fmt:
         print(file=fo)
@@ -272,11 +294,19 @@
 
 @level_rule(2)
 def rule1111(fo, fmt):
-    """The mail object account has 1) BATCH, 2) REMOTE, 3) DIALUP, and/or 4)
-    LOCAL access enabled.  This permits respective logins to the system:  1) from
-    batch jobs submitted by other users which can specify this account as the
-    user; 2) by a user from a remote node; 3) utilizing a modem; 4) by a local
-    user.  This account should have these accesses disabled."""
+    """System mail object account has inappropriate access
+    
+    The mail object account has
+    1) BATCH,
+    2) REMOTE,
+    3) DIALUP,
+    and/or
+    4) LOCAL access enabled.
+    This permits respective logins to the system:
+    1) from batch jobs submitted by other users which can specify this account as the user; 
+    2) by a user from a remote node;
+    3) utilizing a modem;
+    4) by a local user. This account should have these accesses disabled."""
 
     if not fmt:
         print(file=fo)
@@ -320,7 +350,9 @@
 
 @level_rule(4)
 def rule1112(fo, fmt):
-    """This account requires TMPMBX and NETMBX privileges in order to
+    """System mail object account lacks minimum privileges
+    
+    This account requires TMPMBX and NETMBX privileges in order to
     function.  Lack of these privileges can impede mail transmissions."""
 
     if not fmt:
@@ -371,7 +403,9 @@
 
 @level_rule(2)
 def rule1113(fo, fmt):
-    """If the account contains other weaknesses (such as an ability to access
+    """System mail object account has excessive privileges
+    
+    If the account contains other weaknesses (such as an ability to access
     the system and its resources via this account) then these extra privileges may
     allow malicious use of this account to gain unauthorized access to system
     objects. This account requires only TMPMBX and NETMBX privileges to function
@@ -404,7 +438,9 @@
 
 @level_rule(2)
 def rule1114(fo, fmt):
-    """This may allow this file to be corrupted or deleted by an
+    """System mail profile has incorrect owner
+    
+    This may allow this file to be corrupted or deleted by an
     unauthorized user."""
 
     if not fmt:
@@ -442,7 +478,9 @@
 
 @level_rule(2)
 def rule1115(fo, fmt):
-    """This may allow this file to be corrupted or deleted by unauthorized
+    """System mail profile has incorrect file protections
+    
+    This may allow this file to be corrupted or deleted by unauthorized
     users."""
 
     if not fmt:
@@ -477,7 +515,9 @@
 
 @level_rule(2)
 def rule1116(fo, fmt):
-    """This will prevent the mail system from functioning.  It also may
+    """Mail object file not found
+    
+    This will prevent the mail system from functioning.  It also may
     indicate tampering with the operational environment."""
 
     if not fmt:
diff --git a/secrules/rules12.py b/secrules/rules12.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMxMi5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMxMi5weQ== 100644
--- a/secrules/rules12.py
+++ b/secrules/rules12.py
@@ -10,7 +10,10 @@
 
 @level_rule(2)
 def rule1201(fo, fmt):
-    """This allows the owner control over the queue and could lead to loss, or restriction, of service from this queue.
+    """Print/Batch queue owner mismatch
+    
+    This allows the owner control over the queue and could lead to loss, or restriction,
+    of service from this queue.
     By default, the printer and batch queues should be owned by the SYSTEM account."""
 
     if not fmt:
@@ -30,8 +33,11 @@
 
 @level_rule(2)
 def rule1202(fo, fmt):
-    """This can lead to undesired or unauthorized manipulation of the queue such that service may be interrupted or
-    compromised.  Queues should retain their default protection values as specified when initialized."""
+    """Print/Batch queue protection mismatch
+    
+    This can lead to undesired or unauthorized manipulation of the queue such that service 
+    may be interrupted or compromised.
+    Queues should retain their default protection values as specified when initialized."""
 
     if not fmt:
         print('RULE 1202', file=fo)
@@ -49,7 +55,9 @@
 
 @level_rule(3)
 def rule1203(fo, fmt):
-    """This denies print/batch service to users via these queues."""
+    """Print/Batch queue stopped
+    
+    This denies print/batch service to users via these queues."""
     if not fmt:
         print('RULE 1203', file=fo)
         print('=========', file=fo)
diff --git a/secrules/rules13.py b/secrules/rules13.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMxMy5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMxMy5weQ== 100644
--- a/secrules/rules13.py
+++ b/secrules/rules13.py
@@ -25,9 +25,12 @@
 
 @level_rule(3)
 def rule1301(fo, fmt):
-    """This condition precludes performing requested security checks for these users.  Either their home directories need
-    to be added to the system, or the users may need to be removed from the SYSUAF if these are accounts which have expired and/or
-    are no longer in use."""
+    """User home directory not found
+    
+    This condition precludes performing requested security checks for these users.
+    Either their home directories need to be added to the system, or the users
+    may need to be removed from the SYSUAF if these are accounts which have expired
+    and/or are no longer in use."""
 
     if not fmt:
         print('RULE 1301', file=fo)
@@ -48,10 +51,14 @@
 
 @level_rule(2)
 def rule1303(fo, fmt):
-    """This makes these files potentially vulnerable to access, modification, or deletion by unauthorized users.  The methods
-    of access may be available via an ACL on the file, the files UIC protection, and/or user access via the directory path or user
-    privileges.  If GROUP is displayed, then there are non-privileged users in the same group as the file owner, which have the
-    listed accesses to the file."""
+    """Improperly accessible user files and/or command procedures
+    
+    This makes these files potentially vulnerable to access, modification, or
+    deletion by unauthorized users.
+    The methods of access may be available via an ACL on the file, the files 
+    UIC protection, and/or user access via the directory path or user privileges.
+    If GROUP is displayed, then there are non-privileged users in the same group as
+    the file owner, which have the listed accesses to the file."""
 
     if not fmt:
         print('RULE 1303', file=fo)
@@ -88,7 +95,7 @@
                             or (prot & 0x100)
                         ):
                             if fmt:
-                                print('1303"2"', f, file=fo)
+                                print('1303"2"', f.decode(), file=fo)
                             else:
                                 print(f.decode(), file=fo)
                                 print(
@@ -106,8 +113,11 @@
 
 @level_rule(2)
 def rule1304(fo, fmt):
-    """Improper ownership may prevent these users from accessing their directories, and may allow the owner full reign on
-    the files in the directory, and possibly all files in the directory tree."""
+    """Misowned default directory
+    
+    Improper ownership may prevent these users from accessing their directories,
+    and may allow the owner full reign on the files in the directory,
+    and possibly all files in the directory tree."""
 
     if not fmt:
         print('RULE 1304', file=fo)
@@ -142,7 +152,10 @@
 
 @level_rule(3)
 def rule1310(fo, fmt):
-    """This could prevent the user accounts from functioning properly.  It could indicate a denial of service situation."""
+    """No login command procedure for user
+    
+    This could prevent the user accounts from functioning properly.
+    It could indicate a denial of service situation."""
 
     if not fmt:
         print('RULE 1310', file=fo)
diff --git a/secrules/rules14.py b/secrules/rules14.py
index b4e6c1c444844a788e0b823bc01e8c155de44956_c2VjcnVsZXMvcnVsZXMxNC5weQ==..c3f0d2b86c4333de60ed3ddc43ae8f88b4427415_c2VjcnVsZXMvcnVsZXMxNC5weQ== 100644
--- a/secrules/rules14.py
+++ b/secrules/rules14.py
@@ -9,6 +9,8 @@
 
 @level_rule(2)
 def rule1401(fo, fmt):
+    """
+    """
     if not fmt:
         print('RULE 1401', file=fo)
         print('=========', file=fo)