This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
blog:captcha_amb_cobol [2020/11/19 21:40] – falken | blog:captcha_amb_cobol [2020/11/20 11:37] (current) – falken | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== CAPTCHA amb COBOL ====== | ====== CAPTCHA amb COBOL ====== | ||
- | Degut a la [[https://www.youtube.com/watch? | + | Degut a la [[https://media.giphy.com/media/ |
{{: | {{: | ||
- | En aquest post s' | + | En aquest post s' |
+ | |||
+ | Es recomana el compilador | ||
+ | |||
+ | Per a començar, ens cal el següent: | ||
+ | |||
+ | * Una shell de Unix (Bash, Korn...). | ||
+ | * El compilador de Cobol gnucobol (pot ser qualsevol altre que admeti CALL). | ||
+ | * L' | ||
+ | * El programa // | ||
+ | * Un editor de text (vi, < | ||
+ | * Poca feina. | ||
+ | |||
+ | 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 | ||
+ | | ||
+ | |||
+ | |||
+ | I dins la FILE SECTION afegirem la definició del descriptor: | ||
+ | |||
+ | |||
+ | FD captchafile. | ||
+ | 01 FILEGLOBAL. | ||
+ | 02 FILELINE | ||
+ | 88 EOFcaptchafile | ||
+ | |||
+ | |||
+ | |||
+ | En la WORKING-STORAGE SECTION afegirem les variables que utilitzem per al Captcha: | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 01 ARGV PIC X(100) VALUE SPACES. | ||
+ | 88 RECV VALUE SPACES. | ||
+ | |||
+ | Ja en la PROCEDURE DIVISION, en la SECTION en la que treballem, afegim: | ||
+ | |||
+ | | ||
+ | |||
+ | ☝ Aquesta sentència pren un nombre al·leatori de la variable d' | ||
+ | |||
+ | IF random-number = SPACE OR random-number = LOW-VALUE THEN | ||
+ | DISPLAY " | ||
+ | CALL " | ||
+ | STOP RUN | ||
+ | | ||
+ | |||
+ | ☝ Aquest bloc controla que s'hagi rebut un nombre des de la variable d' | ||
+ | |||
+ | |||
+ | CALL " | ||
+ | FUNCTION CONCATENATE(BANNERCMD " " random-number " > / | ||
+ | | ||
+ | |||
+ | MOVE FUNCTION CONCATENATE("/ | ||
+ | |||
+ | OPEN INPUT captchafile | ||
+ | READ captchafile | ||
+ | AT END SET EOFcaptchafile TO TRUE | ||
+ | | ||
+ | | ||
+ | | ||
+ | ADD 1 TO CAPTCHA-Y | ||
+ | READ captchafile | ||
+ | AT END SET EOFcaptchafile TO TRUE | ||
+ | | ||
+ | | ||
+ | CLOSE captchafile | ||
+ | CALL " | ||
+ | |||
+ | I el bloc anterior el que fa és mitjançant un CALL executar el programa figlet i enviar la sortida a un fitxer de text temporal. Seguidament es llegeix (READ) el fitxer i s' | ||
+ | Finalment s' | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | ☝ Aquí demanem a l' | ||
+ | |||
+ | IF CAPTCHA IS NOT EQUAL TO random-number THEN | ||
+ | DISPLAY "NOT CORRECT. DISCONNECTING." | ||
+ | CALL " | ||
+ | STOP RUN | ||
+ | | ||
+ | DISPLAY " | ||
+ | CALL " | ||
+ | | ||
+ | |||
+ | ☝ I en el bloc de dalt controlem si l' | ||
+ | |||
+ | Aquest procediment és molt millorable. Per exemple, hauriem de poder realitzar programàticament, | ||
+ | |||
+ | - Obtenir el número al·leatori sense recórrer a la variable d' | ||
+ | - Representar-lo amb ascii-art sense fer servir el programa // | ||
+ | |||
+ | Qui s' | ||
+ | |||
+ | Notes: | ||
+ | |||
+ | Fem servir una variable d' | ||