This is an old revision of the document!
Degut a la gran expansió que actualment pren el llenguatge COBOL i la interfície de terminal de text he pensat que és molt necessària l'aplicació de la tecnologia CAPTCHA als logins de les aplicacions Cobol.
En aquest post s'ensenyarà com aplicar un Captcha a un programa Cobol. Es mostra un text en ascii-art i l'usuari l'ha de transcriure amb el teclat. Si l'encerta, el programa continua però si el falla, el programa s'atura.
Es recomana el compilador gnucobol però pot funcionar amb qualsevol altre que admeti crides a sistema CALL “SYSTEM” USING…
Per a començar, ens cal el següent:
Per anar al gra, el que cal afegir al nostre programa, per a que implementi el Captcha, és el següent:
Dins la CONFIGURATION SECTION, afegirem aquest descriptor de fitxers:
FILE-CONTROL. SELECT captchafile ASSIGN TO captchafilename ORGANIZATION IS LINE SEQUENTIAL.
I dins la FILE SECTION afegirem la definició del descriptor:
FD captchafile. 01 FILEGLOBAL. 02 FILELINE PIC X(80). 88 EOFcaptchafile VALUE HIGH-VALUES.
En la WORKING-STORAGE SECTION afegirem les variables que utilitzem per al Captcha:
77 CAPTCHA-Y PIC 9(2) VALUE 1. 77 captchafilename PIC X(25) VALUE SPACES. 01 BANNERCMD PIC x(22) value "/usr/bin/figlet-figlet". 01 random-number PIC X(10). 01 CAPTCHA PIC X(10). 01 ARGV PIC X(100) VALUE SPACES. 88 RECV VALUE SPACES.
Ja en la PROCEDURE DIVISION, en la SECTION en la que treballem, afegim:
ACCEPT random-number FROM ENVIRONMENT "RANDOM2".
Aquesta sentència pren un nombre al·leatori de la variable d'entorn (de la shell Unix) $RANDOM2.
IF random-number = SPACE OR random-number = LOW-VALUE THEN DISPLAY "PROGRAM NOT CORRECTLY INITIATED. ABORTING EXECUTION." LINE 21 COLUMN 2 CALL "C$SLEEP" USING BY CONTENT 3 END-CALL STOP RUN END-IF
Aquest bloc