!*** MODULE $UAF070DEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! ++ ! User authorization file format ! Note: With the exception of the username and account name, ! all strings are blank padded counted strings. Username and ! account name are uncounted, blank padded. ! -- PARAMETER UAF070$C_USER_ID = '00000001'X ! main user ID record PARAMETER UAF070$C_VERSION1 = '00000001'X ! this version PARAMETER UAF070$C_KEYED_PART = '00000034'X ! ISAM keys come this far PARAMETER UAF070$C_MAX_PWD_LENGTH = '00000020'X ! maximum plaintext password length PARAMETER UAF070$K_MAX_PWD_LENGTH = '00000020'X ! maximum plaintext password length PARAMETER UAF070$C_AD_II = '00000000'X ! AUTODIN-II 32 bit crc code PARAMETER UAF070$C_PURDY = '00000001'X ! Purdy polynomial over salted input PARAMETER UAF070$C_PURDY_V = '00000002'X ! Purdy polynomial + variable length username PARAMETER UAF070$C_PURDY_S = '00000003'X ! PURDY_V folded into password length PARAMETER UAF070$K_CURRENT_ALGORITHM = '00000003'X ! current DEC algorithm number PARAMETER UAF070$C_CURRENT_ALGORITHM = '00000003'X ! current DEC algorithm number PARAMETER UAF070$C_PREFERED_ALGORITHM = '0000007F'X PARAMETER UAF070$K_PREFERED_ALGORITHM = '0000007F'X PARAMETER UAF070$C_PREFERRED_ALGORITHM = '0000007F'X ! preferred hash algorithm - use current PARAMETER UAF070$K_PREFERRED_ALGORITHM = '0000007F'X ! preferred hash algorithm - use current PARAMETER UAF070$C_CUST_ALGORITHM = '00000080'X ! customer algorithm division PARAMETER UAF070$K_CUST_ALGORITHM = '00000080'X ! customer algorithm division PARAMETER UAF070$K_FIXED = '00000284'X ! length of fixed portion PARAMETER UAF070$C_FIXED = '00000284'X ! length of fixed portion PARAMETER UAF070$K_LENGTH = '00000584'X PARAMETER UAF070$C_LENGTH = '00000584'X PARAMETER UAF070$S_UAF070DEF = '00000584'X ! Old size name, synonym for UAF070$S_UAF070 STRUCTURE /UAF070/ BYTE UAF070$B_RTYPE ! UAF070 record type BYTE UAF070$B_VERSION ! UAF070 format version INTEGER*2 UAF070$W_USRDATOFF ! offset of counted string of user data UNION MAP CHARACTER*32 UAF070$T_USERNAME ! username END MAP MAP CHARACTER*31 %FILL CHARACTER*1 UAF070$T_USERNAME_TAG ! tag to differentiate records END MAP END UNION UNION MAP INTEGER*4 UAF070$L_UIC ! user ID code END MAP MAP INTEGER*2 UAF070$W_MEM ! member subfield INTEGER*2 UAF070$W_GRP ! group subfield END MAP END UNION INTEGER*4 UAF070$L_SUB_ID ! user sub-identifier INTEGER*4 UAF070$Q_PARENT_ID(2) ! identifier of owner of this account CHARACTER*32 UAF070$T_ACCOUNT ! account name CHARACTER*32 UAF070$T_OWNER ! owner's name CHARACTER*32 UAF070$T_DEFDEV ! default device CHARACTER*64 UAF070$T_DEFDIR ! default directory CHARACTER*64 UAF070$T_LGICMD ! login command file CHARACTER*32 UAF070$T_DEFCLI ! default command interpreter CHARACTER*32 UAF070$T_CLITABLES ! user CLI tables UNION MAP INTEGER*4 UAF070$Q_PWD(2) ! hashed password END MAP MAP INTEGER*4 UAF070$L_PWD ! 32 bit subfield END MAP END UNION INTEGER*4 UAF070$Q_PWD2(2) ! second password INTEGER*2 UAF070$W_LOGFAILS ! count of login failures INTEGER*2 UAF070$W_SALT ! random password salt BYTE UAF070$B_ENCRYPT ! primary password hash algorithm ! known hash algorithm indices BYTE UAF070$B_ENCRYPT2 ! secondary password hash algorithm BYTE UAF070$B_PWD_LENGTH ! minimum password length BYTE %FILL(1:1) INTEGER*4 UAF070$Q_EXPIRATION(2) ! expiration date for account INTEGER*4 UAF070$Q_PWD_LIFETIME(2) ! password lifetime INTEGER*4 UAF070$Q_PWD_DATE(2) ! date of password change INTEGER*4 UAF070$Q_PWD2_DATE(2) ! date of 2nd password change INTEGER*4 UAF070$Q_LASTLOGIN_I(2) ! date of last interactive login INTEGER*4 UAF070$Q_LASTLOGIN_N(2) ! date of last non-interactive login INTEGER*4 UAF070$Q_PRIV(2) ! process privilege vector INTEGER*4 UAF070$Q_DEF_PRIV(2) ! default process privileges BYTE %FILL(1:20) BYTE %FILL(1:20) UNION MAP INTEGER*4 UAF070$L_FLAGS ! user flags longword END MAP MAP PARAMETER UAF070$S_DISCTLY = 1 PARAMETER UAF070$V_DISCTLY = 0 ! no user control-y PARAMETER UAF070$S_DEFCLI = 1 PARAMETER UAF070$V_DEFCLI = 1 ! only allow user default CLI PARAMETER UAF070$S_LOCKPWD = 1 PARAMETER UAF070$V_LOCKPWD = 2 ! disable SET PASSWORD command PARAMETER UAF070$S_RESTRICTED = 1 PARAMETER UAF070$V_RESTRICTED = 3 ! restricted account (pre-V5.2 CAPTIVE) PARAMETER UAF070$S_DISACNT = 1 PARAMETER UAF070$V_DISACNT = 4 ! no interactive login PARAMETER UAF070$S_DISWELCOM = 1 PARAMETER UAF070$V_DISWELCOM = 5 ! skip welcome message PARAMETER UAF070$S_DISMAIL = 1 PARAMETER UAF070$V_DISMAIL = 6 ! skip new mail message PARAMETER UAF070$S_NOMAIL = 1 PARAMETER UAF070$V_NOMAIL = 7 ! disable mail delivery PARAMETER UAF070$S_GENPWD = 1 PARAMETER UAF070$V_GENPWD = 8 ! passwords must be generated PARAMETER UAF070$S_PWD_EXPIRED = 1 PARAMETER UAF070$V_PWD_EXPIRED = 9 ! password has expired PARAMETER UAF070$S_PWD2_EXPIRED = 1 PARAMETER UAF070$V_PWD2_EXPIRED = 10 ! 2nd password has expired PARAMETER UAF070$S_AUDIT = 1 PARAMETER UAF070$V_AUDIT = 11 ! audit all actions PARAMETER UAF070$S_DISREPORT = 1 PARAMETER UAF070$V_DISREPORT = 12 ! skip last login messages PARAMETER UAF070$S_DISRECONNECT = 1 PARAMETER UAF070$V_DISRECONNECT = 13 ! inhibit reconnections PARAMETER UAF070$S_AUTOLOGIN = 1 PARAMETER UAF070$V_AUTOLOGIN = 14 ! auto-login only PARAMETER UAF070$S_DISFORCE_PWD_CHANGE = 1 PARAMETER UAF070$V_DISFORCE_PWD_CHANGE = 15 ! disable forced password change PARAMETER UAF070$S_CAPTIVE = 1 PARAMETER UAF070$V_CAPTIVE = 16 ! captive account (no overrides) PARAMETER UAF070$S_DISIMAGE = 1 PARAMETER UAF070$V_DISIMAGE = 17 ! disable arbitrary image activation PARAMETER UAF070$S_DISPWDDIC = 1 PARAMETER UAF070$V_DISPWDDIC = 18 ! disable password dictionary search PARAMETER UAF070$S_DISPWDHIS = 1 PARAMETER UAF070$V_DISPWDHIS = 19 ! disable password history search PARAMETER UAF070$S_DEFCLSVAL = 1 PARAMETER UAF070$V_DEFCLSVAL = 20 ! default classification is valid BYTE %FILL (3) END MAP END UNION BYTE UAF070$B_NETWORK_ACCESS_P(1:3) ! hourly network access, primary BYTE UAF070$B_NETWORK_ACCESS_S(1:3) ! hourly network access, secondary BYTE UAF070$B_BATCH_ACCESS_P(1:3) ! hourly batch access, primary BYTE UAF070$B_BATCH_ACCESS_S(1:3) ! hourly batch access, secondary BYTE UAF070$B_LOCAL_ACCESS_P(1:3) ! hourly local access, primary BYTE UAF070$B_LOCAL_ACCESS_S(1:3) ! hourly local access, secondary BYTE UAF070$B_DIALUP_ACCESS_P(1:3) ! hourly dialup access, primary BYTE UAF070$B_DIALUP_ACCESS_S(1:3) ! hourly dialup access, secondary BYTE UAF070$B_REMOTE_ACCESS_P(1:3) ! hourly remote access, primary BYTE UAF070$B_REMOTE_ACCESS_S(1:3) ! hourly remote access, secondary BYTE %FILL(1:12) ! space for 2 more access types UNION MAP BYTE UAF070$B_PRIMEDAYS ! bits representing primary days END MAP MAP PARAMETER UAF070$S_MONDAY = 1 PARAMETER UAF070$V_MONDAY = 0 ! bit clear means this is a primary day PARAMETER UAF070$S_TUESDAY = 1 PARAMETER UAF070$V_TUESDAY = 1 ! bit set means this is an off day PARAMETER UAF070$S_WEDNESDAY = 1 PARAMETER UAF070$V_WEDNESDAY = 2 PARAMETER UAF070$S_THURSDAY = 1 PARAMETER UAF070$V_THURSDAY = 3 PARAMETER UAF070$S_FRIDAY = 1 PARAMETER UAF070$V_FRIDAY = 4 PARAMETER UAF070$S_SATURDAY = 1 PARAMETER UAF070$V_SATURDAY = 5 PARAMETER UAF070$S_SUNDAY = 1 PARAMETER UAF070$V_SUNDAY = 6 BYTE %FILL (1) END MAP END UNION BYTE %FILL(1:1) BYTE UAF070$B_PRI ! base process priority BYTE UAF070$B_QUEPRI ! maximum job queuing priority INTEGER*2 UAF070$W_MAXJOBS ! maximum jobs for UIC allowed ! 0 means no limit INTEGER*2 UAF070$W_MAXACCTJOBS ! maximum jobs for account allowed ! 0 means no limit INTEGER*2 UAF070$W_MAXDETACH ! maximum detached processes for UIC ! 0 means no limit INTEGER*2 UAF070$W_PRCCNT ! subprocess creation limit INTEGER*2 UAF070$W_BIOLM ! buffered I/O limit INTEGER*2 UAF070$W_DIOLM ! direct I/O limit INTEGER*2 UAF070$W_TQCNT ! timer queue entry limit INTEGER*2 UAF070$W_ASTLM ! AST queue limit INTEGER*2 UAF070$W_ENQLM ! enqueue limit INTEGER*2 UAF070$W_FILLM ! open file limit INTEGER*2 UAF070$W_SHRFILLM ! shared file limit INTEGER*4 UAF070$L_WSQUOTA ! working set size quota INTEGER*4 UAF070$L_DFWSCNT ! default working set size INTEGER*4 UAF070$L_WSEXTENT ! working set size limit INTEGER*4 UAF070$L_PGFLQUOTA ! page file quota INTEGER*4 UAF070$L_CPUTIM ! CPU time quota INTEGER*4 UAF070$L_BYTLM ! buffered I/O byte count limit INTEGER*4 UAF070$L_PBYTLM ! paged buffer I/O byte count limit INTEGER*4 UAF070$L_JTQUOTA ! job-wide logical name table creation quota INTEGER*2 UAF070$W_PROXY_LIM ! number of proxies user can grant INTEGER*2 UAF070$W_PROXIES ! number of proxies granted INTEGER*2 UAF070$W_ACCOUNT_LIM ! number of sub-accounts allowed INTEGER*2 UAF070$W_ACCOUNTS ! number of sub-accounts in use BYTE %FILL(1:20) BYTE %FILL(1:44) ! spare space BYTE %FILL(1:768) ! user-extensible area END STRUCTURE ! UAF070 !DEC$ END OPTIONS