which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5943 c028cbd2-c16b-5b4b-a496-9718f37d4682
84 lines
1.9 KiB
Plaintext
Executable File
84 lines
1.9 KiB
Plaintext
Executable File
* programma principale
|
|
* includere dumb.fll all'inizio del programma
|
|
* per effettuare automaticamente le operazioni
|
|
* di HL_LOGIN sulla chiave
|
|
|
|
SET LIBR TO DUMB.FLL
|
|
|
|
|
|
? HL_GETAUT(41)
|
|
? HL_GETAUT(42)
|
|
? HL_GETAUT(45)
|
|
? HL_GETAUT(5)
|
|
? HL_GETAUT(11)
|
|
? HL_GETAUT(18)
|
|
? HL_GETAUT(21)
|
|
|
|
************ Funzione HL_GETAUT
|
|
************ prende in input il numero del modulo
|
|
************ di cui si vuole sapere l'abilitazione
|
|
************ restituisce:
|
|
************ 0 se non abilitato
|
|
************ 1 se abilitato
|
|
FUNCTION HL_GETAUT
|
|
PARAMETER MODULO
|
|
|
|
DIMENSION RISULTATO(18)
|
|
DIMENSION TMP_RES(18)
|
|
OLD_DECIMALS = INT(VAL(SYS(2001,'DECIMALS')))
|
|
SET DECIMALS TO 6
|
|
STORE 0 TO ABILITAZIONE
|
|
STORE "P39S41" TO STRINGA_SEGRETA
|
|
** Cripta la chiave di ricerca casualmente
|
|
CASUALE = STR(INT(RAND(-1) * 1000000),6,0)
|
|
CASUALE = CASUALE + TRANSFORM(MODULO,"@L 999")
|
|
CHIAVE = STRINGA_SEGRETA + LEFT(CASUALE,3)
|
|
|
|
FOR I = 1 TO 16
|
|
IF I > 9 THEN
|
|
RISULTATO (I) = 32 && PAD a 16 bytes
|
|
ELSE
|
|
RISULTATO(I) = ASC(SUBSTR(CHIAVE,I,1)) + ASC(SUBSTR(CASUALE,I,1))
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
** Controlla che la chiave codificata non sia uguale
|
|
=ACOPY(RISULTATO,TMP_RES)
|
|
=HL_CODE(@RISULTATO)
|
|
STORE .T. TO UGUALI
|
|
FOR I = 1 TO 16
|
|
IF RISULTATO(I) <> TMP_RES(I) THEN
|
|
UGUALI = .F.
|
|
ENDIF
|
|
ENDFOR
|
|
IF UGUALI THEN
|
|
SET DECIMALS TO OLD_DECIMALS
|
|
RETURN 0
|
|
ENDIF
|
|
|
|
** Passa alla FLL la stringa da analizzare
|
|
=HL_GETSTR(@RISULTATO)
|
|
|
|
** Ora analizza la stringa ritornata, prima la ricodifica
|
|
=ACOPY(RISULTATO,TMP_RES)
|
|
=HL_CODE(@RISULTATO)
|
|
STORE .T. TO UGUALI
|
|
FOR I = 1 TO 16
|
|
IF RISULTATO(I) <> TMP_RES(I) THEN
|
|
UGUALI = .F.
|
|
ENDIF
|
|
ENDFOR
|
|
IF UGUALI THEN
|
|
SET DECIMALS TO OLD_DECIMALS
|
|
RETURN 0
|
|
ENDIF
|
|
|
|
** Infine estrae... l'autorizzazione
|
|
TERZO_CARATTERE = CHR(RISULTATO(3) - ASC(SUBSTR(STRINGA_SEGRETA,3,1)))
|
|
ULTIMO_CARATTERE = CHR(RISULTATO(9) - ASC(TERZO_CARATTERE))
|
|
|
|
ABILITAZIONE = INT(VAL(ULTIMO_CARATTERE))
|
|
|
|
SET DECIMALS TO OLD_DECIMALS
|
|
RETURN ABILITAZIONE
|