From 37964d943d3a3fa76bbdfa2e676d8f1f1faa5844 Mon Sep 17 00:00:00 2001 From: Alex Zaw Date: Wed, 25 Feb 2026 23:01:06 +0000 Subject: [PATCH] Update Function GET_MXAPLUS_PASSWORD --- CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql | 77 ++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql b/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql index b5104aa..3e618a2 100644 --- a/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql +++ b/CISTOOLS/Functions/GET_MXAPLUS_PASSWORD.sql @@ -1 +1,76 @@ -@@\@^@ % %@@@@Kmm@M@]@ %@M]@@@ %@@ %@Kmm@ %@@ %@@@ %@@@@ %@@@@~@\@k@ %@~@\@k@ %@~@\@k@ %@~@Mk@k@]@k@ %@~@\@k@ %@~@\@k@ %@~@\@@@ %@ %@m@@M@@]@@}}@^@ %@m@@M@@]@@}}@^@ %@m@@^@ %@m@@^@ %@m@@M@@]@@}}@^@@``ɕ}@``@k@@@@KKk@@@@ %``@م@@@@@@@@@ %@@@@@K@@M@@@@M@@]@k@@@@M@@]@k@@@@M@@]@k@@@@M@@]@k@ %@@@M@@]@@}}@k@@@@M@@]@@}}@]@ %@@ %@@@a@@ %@@@^@ %@@K@@M@}}@k@m@k@}}@k@m]@^@ %``@ą@@@ %@m@~@@^@ %@m@L~@@@ %@m@~@ %@m@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@@@@ %@^@ %@m@~@@M@m@k@m@`@@]@OO@@M@m@k@m@k@@]@ %OO@@M@m@k@m@N@@]@^@ %@m@~@m@N@@^@ %@@^@ %``@م@\@@@M@@lM}\}z}@}]]@ %@m@~@@M@m@k@}\}@k@}@}@]@^@ %``@ę@@@@ %@@@K@@^@ %@@K@m@~@m@^@ %``@ׁ@@@@@ %@@M@m@k@@k@@]@^@ %@@^@ % %@@k@@@@ %@@@Kmm@ %@@@@@^@ % %@@@@ %@@@Kmm@ %@@^@ % % \ No newline at end of file +SET PATH *LIBL ; + +CREATE OR REPLACE FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD ( ) + RETURNS CHAR(10) + LANGUAGE SQL + SPECIFIC CISTOOLS.GET_MXAPLUS_PASSWORD + NOT DETERMINISTIC + MODIFIES SQL DATA + CALLED ON NULL INPUT + SET OPTION ALWBLK = *ALLREAD , + ALWCPYDTA = *OPTIMIZE , + COMMIT = *NONE , + DECRESULT = (31, 31, 00) , + DYNDFTCOL = *NO , + DYNUSRPRF = *USER , + SRTSEQ = *HEX + BEGIN +DECLARE ENCRYPTED_PASSWORD CHAR ( 20 ) DEFAULT '' ; +DECLARE DECRYPTED_PASSWORD CHAR ( 20 ) DEFAULT '' ; +DECLARE INDEX_ARRAY INTEGER ; +DECLARE INDEX_POSITION INTEGER ; +DECLARE VALIDATION_TOKEN CHAR ( 16 ) DEFAULT 'RK2GSBV3FAV9N55S' ; --Infor's val--idation token, out in plain sight.., from their source +-- Register SQL version of traditional RPG program in QTEMP +CREATE OR REPLACE PROCEDURE QTEMP . AXZCSU0R ( IN ASET CHAR ( 10 ) , IN VLDD CHAR ( 16 ) , IN SCRD CHAR ( 1 ) , INOUT PRPW CHAR ( 20 ) , +INOUT SETD CHAR ( 40 ) DEFAULT '' , INOUT RTRN CHAR ( 7 ) DEFAULT '' ) +LANGUAGE RPGLE +EXTERNAL NAME AMCESLIB / AXZCSU0R +PARAMETER STYLE GENERAL ; +CALL QTEMP . AXZCSU0R ( 'MXAPLUS' , VALIDATION_TOKEN , '1' , ENCRYPTED_PASSWORD) ; +-- Decrypt the password +SET INDEX_ARRAY = 1 ; +WHILE INDEX_ARRAY <= 20 DO +SET INDEX_POSITION = +CASE INDEX_ARRAY +WHEN 1 THEN 4 +WHEN 2 THEN 17 +WHEN 3 THEN 2 +WHEN 4 THEN 9 +WHEN 5 THEN 1 +WHEN 6 THEN 20 +WHEN 7 THEN 18 +WHEN 8 THEN 13 +WHEN 9 THEN 11 +WHEN 10 THEN 14 +WHEN 11 THEN 3 +WHEN 12 THEN 10 +WHEN 13 THEN 5 +WHEN 14 THEN 19 +WHEN 15 THEN 8 +WHEN 16 THEN 6 +WHEN 17 THEN 12 +WHEN 18 THEN 16 +WHEN 19 THEN 7 +WHEN 20 THEN 15 +END ; +SET DECRYPTED_PASSWORD = LEFT ( DECRYPTED_PASSWORD , INDEX_POSITION - 1 ) || SUBSTRING ( ENCRYPTED_PASSWORD , INDEX_ARRAY , 1 ) +|| SUBSTRING ( DECRYPTED_PASSWORD , INDEX_POSITION + 1 ) ; +SET INDEX_ARRAY = INDEX_ARRAY + 1 ; +END WHILE ; +-- Replace * with space (same as %xlate('*':' ')) +SET DECRYPTED_PASSWORD = REPLACE ( DECRYPTED_PASSWORD , '*' , ' ' ) ; +-- Drop the temp procedure +DROP PROCEDURE QTEMP . AXZCSU0R ; +SET CISTOOLS . SQL_CLOB = DECRYPTED_PASSWORD ; +-- Password starts from position 11 +RETURN SUBSTRING ( DECRYPTED_PASSWORD , 11 , 10 ) ; +END ; + +GRANT ALTER , EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD +TO AMAPICS WITH GRANT OPTION ; + +GRANT EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GET_MXAPLUS_PASSWORD +TO PUBLIC ; +