FCSC 2020 - Intro - Petite Frappe

Table des matières :

Lors de l’investigation d’un poste GNU/Linux, vous analysez un fichier qui semble être généré par un programme d’enregistrement de frappes de clavier (enregistrement de l’activité de chaque touche utilisée).

Retrouvez ce qui a bien pu être écrit par l’utilisateur de ce poste à l’aide de ce fichier !

Format du flag : Pour valider ce challenge, vous devez insérer le contenu de ce qui a été écrit sur le clavier de ce poste dans la balise suivante FCSC{xxxxxx} puis soumettre votre réponse.

SHA256(petite_frappe_1.txt) = caa50cd45696ad89d210665f922c7d44e2feffbec4576164e896f8224205f67b


Résolution

Ce fichier correspond à une capture de frappes de clavier par un logiciel keylogger. Le format des lignes du fichier est le suivant :

Event: time 1584656706.404214, type 1 (EV_KEY), code 22 (KEY_U), value 1
              ^                          ^           ^                 ^
Timestamp ----|                          |           |                 |
Type d'évènment -------------------------|           |                 |
Code caractère  -------------------------------------|                 |
Value (Press : 1, Released : 0) ---------------------------------------|

Nous pouvons donc écrire un petit script bash pour extraire la lettre présente dans le code caratère (Exemple KEY_U => U) :

#!/usr/bin/env bash

FLAG=$(
cat petite_frappe_1.txt \
  | grep "KEY_" | grep "value 1"\
  | awk '{split($0,a,"KEY_"); split(a[2],b,"), "); print b[1]}' \
  | tr -d "\n"
)
echo "FCSC{${FLAG}}"

Le même principe en python3 :

print('[+] Reading file ../petite_frappe_1.txt')
f = open('./petite_frappe_1.txt','r')
lines = f.readlines()
f.close()
print('[+] Done.')

print('[+] Extracting keys ...')
extracted_keys = ""
for line in lines :
    if 'KEY_' in line and 'value 1' in line :
        print(line.replace("\n",''))
        extracted_keys += line.split('KEY_')[1].split('),')[0]
print('[+] Done.')

print('[+] Flag : FCSC{%s}' % extracted_keys)