alex 0c0abd6589 This commit was generated by cvs2svn to compensate for changes in r5942,
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
1998-01-15 16:39:02 +00:00

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