[Info-vax] Reading SYSUAF with DCL problem

fredthebare at gmail.com fredthebare at gmail.com
Wed May 9 01:24:33 EDT 2018


I am trying to extract some simple information from a SYSUAF.DAT, mainly username, owner, UIC, last logged-in etc.  I have borrowed and repurposed some existing code from the internet.

I am opening and reading the file sequentially and can extract username, UIC, last logged-on OK, but owner is providing "trouble".

It is an old 7.3 system and I have extracted UAFDEF to get the offsets.

$ open /read /share uaf 'f$parse("SYSUAF","SYS$SYSTEM:.DAT",,,"SYNTAX_ONLY")
$loop:
$ read/end=done uaf rec
$ username=f$extr(4,12,rec)             ! UAF$T_USERNAME,    UAF$S_USERNAME
$ owner=f$extr(84,32,rec)               ! UAF$T_OWNER, UAF$S_OWNER

UAFDEF is:
        .MACRO  $UAFDEF,$GBL
        $DEFINI UAF,$GBL
$EQU    UAF$C_USER_ID   1
$EQU    UAF$C_VERSION1  1
$EQU    UAF$C_KEYED_PART        52
$EQU    UAF$C_MAX_PWD_LENGTH    32
$EQU    UAF$K_MAX_PWD_LENGTH    32
$EQU    UAF$C_AD_II     0
$EQU    UAF$C_PURDY     1
$EQU    UAF$C_PURDY_V   2
$EQU    UAF$C_PURDY_S   3
$EQU    UAF$K_CURRENT_ALGORITHM 3
$EQU    UAF$C_CURRENT_ALGORITHM 3
$EQU    UAF$C_PREFERED_ALGORITHM        127
$EQU    UAF$K_PREFERED_ALGORITHM        127
$EQU    UAF$C_PREFERRED_ALGORITHM       127
$EQU    UAF$K_PREFERRED_ALGORITHM       127
$EQU    UAF$C_CUST_ALGORITHM    128
$EQU    UAF$K_CUST_ALGORITHM    128
$EQU    UAF$K_FIXED     644
$EQU    UAF$C_FIXED     644
$EQU    UAF$K_LENGTH    1412
$EQU    UAF$C_LENGTH    1412
$EQU    UAF$S_UAFDEF    1412
$EQU    UAF$B_RTYPE     0
$EQU    UAF$B_VERSION   1
$EQU    UAF$W_USRDATOFF 2
$EQU    UAF$S_USERNAME  32
$EQU    UAF$T_USERNAME  4
$EQU    UAF$T_USERNAME_TAG      35
$EQU    UAF$L_UIC       36
$EQU    UAF$W_MEM       36
$EQU    UAF$W_GRP       38
$EQU    UAF$L_SUB_ID    40
$EQU    UAF$S_PARENT_ID 8
$EQU    UAF$Q_PARENT_ID 44
$EQU    UAF$S_ACCOUNT   32
$EQU    UAF$T_ACCOUNT   52
$EQU    UAF$S_OWNER     32
$EQU    UAF$T_OWNER     84
$EQU    UAF$S_DEFDEV    32
$EQU    UAF$T_DEFDEV    116
$EQU    UAF$S_DEFDIR    64
$EQU    UAF$T_DEFDIR    148
$EQU    UAF$S_LGICMD    64
$EQU    UAF$T_LGICMD    212
$EQU    UAF$S_DEFCLI    32
$EQU    UAF$T_DEFCLI    276
$EQU    UAF$S_CLITABLES 32
$EQU    UAF$T_CLITABLES 308
$EQU    UAF$S_PWD       8
$EQU    UAF$Q_PWD       340
$EQU    UAF$L_PWD       340
$EQU    UAF$S_PWD2      8
$EQU    UAF$Q_PWD2      348
$EQU    UAF$W_LOGFAILS  356
$EQU    UAF$W_SALT      358
$EQU    UAF$B_ENCRYPT   360
$EQU    UAF$B_ENCRYPT2  361
$EQU    UAF$B_PWD_LENGTH        362
$EQU    UAF$S_EXPIRATION        8
$EQU    UAF$Q_EXPIRATION        364
$EQU    UAF$S_PWD_LIFETIME      8
$EQU    UAF$Q_PWD_LIFETIME      372
$EQU    UAF$S_PWD_DATE  8
$EQU    UAF$Q_PWD_DATE  380
$EQU    UAF$S_PWD2_DATE 8
$EQU    UAF$Q_PWD2_DATE 388
$EQU    UAF$S_LASTLOGIN_I       8
$EQU    UAF$Q_LASTLOGIN_I       396
$EQU    UAF$S_LASTLOGIN_N       8
$EQU    UAF$Q_LASTLOGIN_N       404
$EQU    UAF$S_PRIV      8
$EQU    UAF$Q_PRIV      412
$EQU    UAF$S_DEF_PRIV  8
$EQU    UAF$Q_DEF_PRIV  420
$EQU    UAF$S_MIN_CLASS 20
$EQU    UAF$R_MIN_CLASS 428
$EQU    UAF$S_MAX_CLASS 20
$EQU    UAF$R_MAX_CLASS 448
$EQU    UAF$L_FLAGS     468
$EQU    UAF$V_DISCTLY   0
$EQU    UAF$V_DEFCLI    1
$EQU    UAF$V_LOCKPWD   2
$EQU    UAF$V_RESTRICTED        3
$EQU    UAF$V_DISACNT   4
$EQU    UAF$V_DISWELCOM 5
$EQU    UAF$V_DISMAIL   6
$EQU    UAF$V_NOMAIL    7
$EQU    UAF$V_GENPWD    8
$EQU    UAF$V_PWD_EXPIRED       9
$EQU    UAF$V_PWD2_EXPIRED      10
$EQU    UAF$V_AUDIT     11
$EQU    UAF$V_DISREPORT 12
$EQU    UAF$V_DISRECONNECT      13
$EQU    UAF$V_AUTOLOGIN 14
$EQU    UAF$V_DISFORCE_PWD_CHANGE       15
$EQU    UAF$V_CAPTIVE   16
$EQU    UAF$V_DISIMAGE  17
$EQU    UAF$V_DISPWDDIC 18
$EQU    UAF$V_DISPWDHIS 19
$EQU    UAF$V_DEFCLSVAL 20
$EQU    UAF$V_EXTAUTH   21
$EQU    UAF$V_MIGRATEPWD        22
$EQU    UAF$S_NETWORK_ACCESS_P  3
$EQU    UAF$B_NETWORK_ACCESS_P  472
$EQU    UAF$S_NETWORK_ACCESS_S  3
$EQU    UAF$B_NETWORK_ACCESS_S  475
$EQU    UAF$S_BATCH_ACCESS_P    3
$EQU    UAF$B_BATCH_ACCESS_P    478
$EQU    UAF$S_BATCH_ACCESS_S    3
$EQU    UAF$B_BATCH_ACCESS_S    481
$EQU    UAF$S_LOCAL_ACCESS_P    3
$EQU    UAF$B_LOCAL_ACCESS_P    484
$EQU    UAF$S_LOCAL_ACCESS_S    3
$EQU    UAF$B_LOCAL_ACCESS_S    487
$EQU    UAF$S_DIALUP_ACCESS_P   3
$EQU    UAF$B_DIALUP_ACCESS_P   490
$EQU    UAF$S_DIALUP_ACCESS_S   3
$EQU    UAF$B_DIALUP_ACCESS_S   493
$EQU    UAF$S_REMOTE_ACCESS_P   3
$EQU    UAF$B_REMOTE_ACCESS_P   496
$EQU    UAF$S_REMOTE_ACCESS_S   3
$EQU    UAF$B_REMOTE_ACCESS_S   499
$EQU    UAF$B_PRIMEDAYS 514
$EQU    UAF$V_MONDAY    0
$EQU    UAF$V_TUESDAY   1
$EQU    UAF$V_WEDNESDAY 2
$EQU    UAF$V_THURSDAY  3
$EQU    UAF$V_FRIDAY    4
$EQU    UAF$V_SATURDAY  5
$EQU    UAF$V_SUNDAY    6
$EQU    UAF$B_PRI       516
$EQU    UAF$B_QUEPRI    517
$EQU    UAF$W_MAXJOBS   518
$EQU    UAF$W_MAXACCTJOBS       520
$EQU    UAF$W_MAXDETACH 522
$EQU    UAF$W_PRCCNT    524
$EQU    UAF$W_BIOLM     526
$EQU    UAF$W_DIOLM     528
$EQU    UAF$W_TQCNT     530
$EQU    UAF$W_ASTLM     532
$EQU    UAF$W_ENQLM     534
$EQU    UAF$W_FILLM     536
$EQU    UAF$W_SHRFILLM  538
$EQU    UAF$L_WSQUOTA   540
$EQU    UAF$L_DFWSCNT   544
$EQU    UAF$L_WSEXTENT  548
$EQU    UAF$L_PGFLQUOTA 552
$EQU    UAF$L_CPUTIM    556
$EQU    UAF$L_BYTLM     560
$EQU    UAF$L_PBYTLM    564
$EQU    UAF$L_JTQUOTA   568
$EQU    UAF$W_PROXY_LIM 572
$EQU    UAF$W_PROXIES   574
$EQU    UAF$W_ACCOUNT_LIM       576
$EQU    UAF$W_ACCOUNTS  578
$EQU    UAF$S_DEF_CLASS 20
$EQU    UAF$R_DEF_CLASS 580
        $DEFEND UAF,$GBL,DEF
        .ENDM                                                                   

The problem is...the owner field has binary information in it and sometimes seems to start 1 character later...would appreciate some suggestions...

I know I could use F$PARSE to get rid of junk, but why is the actual owner start position not as in UAFDEF?



More information about the Info-vax mailing list