Punched

Description

punched-1

http://go.ctf.site:10070/TOOLS/punch.zip

Solution

We are given bunch of Punched Cards (COBOL).

└─$ ls ./punch
0.jpg  3.jpg  6.jpg  9.jpg  c.jpg  f.jpg  i.jpg  l.jpg	o.jpg  r.jpg  u.jpg  x.jpg
1.jpg  4.jpg  7.jpg  a.jpg  d.jpg  g.jpg  j.jpg  m.jpg	p.jpg  s.jpg  v.jpg  y.jpg
2.jpg  5.jpg  8.jpg  b.jpg  e.jpg  h.jpg  k.jpg  n.jpg	q.jpg  t.jpg  w.jpg  z.jpg                                   

I found a tool on github to convert images to code at: https://github.com/digitaltrails/punchedcardreader

┌──()-[~/…/ekopartyctf/2023/punched/punchedcardreader]
└─$ for file in $(/bin/ls ../punch -t); do py ./punchedCardReader.py "../punch/$file" >> punch.log; done;
               MOVE FUNCTION REVERSE("CN") TO WS-FLAG(21:2)                      
       01 WS-USERINPUT     PIC X(12).                                            
               MOVE FUNCTION REVERSE("UP") TO WS-FLAG(19:2)                      
       PROGRAM-ID. CHALLENGE.                                                    
               MOVE FUNCTION REVERSE("DR") TO WS-FLAG(15:2)                      
       01 WS-FLAG P9C X(32).                                                     
       01 WS-SECRETKEY     PIC X(12) VALUE 'G1V3M3ACC3ZZ'.                       
           DISPLAY "CHECKING YOUR SECRET"                                        
       WORKING-STORAGE SECTION.                                                  
       IDENTIFICATION DIVISION.                                                  
           DISPLAY "WELCOME TO EKO, WHAT IS YOUR SECRET: "                       
       MAIN.                                                                     
               MOVE FUNCTION REVERSE("_D") TO WS-FLAG(11:2)                      
               MOVE FUNCTION "HE" TO WS-FLAG(9:2)                                
               MOVE FUNCTION REVERSE("_H") TO WS-FLAG(23:2)                      
               MOVE FUNCTION "MY" TO WS-FLAG(25:2)                               
               MOVE FUNCTION "_F" TO WS-FLAG(27:2)                               
       PROCEDURE DIVISION.                                                       
               MOVE FUNCTION REVERSE("C4") TO WS-FLAG(29:2)                      
               MOVE FUNCTION REVERSE(")3") TO WS-FLAG(31:2)                      
               DISPLAY "OKAY! OKAY! YOU ARE RIGHT"                               
       DATA DIVISION.                                                            
           IF WS-SECRETKEY = WS-USERINPUT THEN                                   
               MOVE FUNCTION "S_" TO WS-FLAG(17:2)                               
               MOVE FUNCTION REVERSE("4C") TO WS-FLAG(13:2)                      
           ACCEPT WS-USERINPUT.                                                  
               MOVE FUNCTION "XX" TO WS-FLAG(25:2)                               
           STOP RUN.                                                             
           END-IF.                                                               
               DISPLAY "NOPE!, YOUR SECRET IS WRONG!"                            
           ELSE                                                                  
               DISPLAY WS-FLAG                                                   
               MOVE FUNCTION REVERSE("KE") TO WS-FLAG(1:2)                       
               MOVE FUNCTION REVERSE("(O") TO WS-FLAG(3:2)                       
               MOVE FUNCTION "PU" TO WS-FLAG(5:2)                                
               MOVE FUNCTION REVERSE("CN") TO WS-FLAG(7:2)                       

After slowing going through and sorting the letters by their indexes: EK0(PUNCHED_C4RDS_PUNCH_MY_F4C3)

Last updated