[Writeup] FCSC - Voilà
Publié il y a 0 secondes Durée de lecture : 2 minutesDescription
Alice adore écouter de la musique. Malheureusement, elle a mal configuré son pare-feu et expose involontairement sa collection musicale sur Internet. Alice range sa collection personnelle d’une manière non conventionnelle : plutôt que de trier par genres, albums, ou artistes, elle renomme ses musiques selon son imagination.
Ainsi, elle vous assure que vous ne pourrez pas retrouver le nom de la chanson associé au fichier “flag.opus”. Montrez-lui le contraire.
Cette épreuve est la suite de Voilà (Baby).
Le format du flag est :FCSC{Artiste_Morceau}
. Par exempleFCSC{ABBA_Gimme! Gimme! Gimme! (A Man After Midnight)}
. Le flag n’est pas sensible à la casse.
La collection musicale d’Alice est exposée surnc chall.fcsc.fr 2052
.
Découverte
En nous connectant au socket TCP précisé dans l’énoncé, nous avons une information qui nous sera très importante pour la suite :
$ nc chall.fcsc.fr 2052
OK MPD 0.23.5
La réponse du serveur nous dit plusieurs choses:
OK
: Le serveur est bien disponible.MPD
: Acronyme de Music Play Daemon, ce qui va nous permettre de savoir comment communiquer avec le serveur.0.23.5
: La version du serveur.
Prise en main
Avec ces informations, nous pouvons trouver une documentation sur Read the Docs, elle décrit le protocole de communication avec le serveur : mpd.readthedocs.io
Cette documentation nous donne donc une liste de commande bien utile. Nous allons nous concentrer sur deux commandes parmis cette énorme liste :
listall
: Listant tout les fichiers disponibles, simplement pour vérifier si le fichierflag.opus
existe bel et bien.getfingerprint
: Permettant de récupérer l’empreinte de la musique précisé.
Récupération des informations nécessaire
Après avoir pris connaissance de ces commandes, il suffit de les appliquer.
listall
Après execution de cette commande, nous pouvons confirmer que le fichier flag.opus
existe.
OK MPD 0.23.5
listall
file: chat.opus
file: crypto.opus
file: dinosaur.opus
file: flag.opus
file: junior.opus
file: reboot.opus
OK
getfingerprint
Ensuite, il faut récupérer l’empreinte du fichier, afin de pouvoir l’identifier.
Pour cela, la commande getfingerprint
va nous servir, il suffit d’executer la commande getfingerprint flag.opus
pour récupérer son empreinte.
Voici le résultat:
getfingerprint flag.opus
chromaprint: AQACpUrCTIkiSQtSaPgPcMeP69AR5uiPVY6J-EHzQXuOD3llNOeEPkLeQ0dshmhE7ag2RB-ShcoP1zmK0wjfx9ByHvl-PDmmp2juHIeOR8PxJ2geJUfx5Ih5JEeP6pww_TB3BXWyQ2uGoy_-Cs-RI3ly4mhO_IWrNkQfHGMYHnkUJC-ON8L2UMKH58ihIoy0IpTzQ0uDsOtw2E0TPPPwGwnPDPk2PDp--IvxDfsRF8mTEC8e_LoEP8eNC3pwVF-Otwyq_Zh-qXDzCD9-hNB5fMLL4zH6GSLeLIg-EtaP_Bkq6OPxXPgw5ckW1MeTCzr-DN2LalEOPUeeNPh4NJ1S1Gl8_OgZLkiWD_nxyGif5phyxThiJNaBPxb-CH5i40ieID8eVGZRjUsT9FewOdCPoy_-4-nx5Eda5Uh-oO_ht0F7_JiUCdV55EoPHbmEN4KrKEf0QEeMazkcqniOMDeSdcxRG03TFKdzPPDYkTie45pR5h-aB8ePMz3OQ36Ob8Jz9JPw7vBt9MePHw8vVE-CRo6KpD5y9C9wNHjwHM0Rnrih82iP8C9yyXiHGA1vdD9uZXiOz_LQ7GaIHr_wI0_yILlhPseP8_jxJMeP5ugZHj36DvmJ5MUdPCX6TEZz48GFZ9fxHz-qJyes-EEyKcsR_EWfMYV5UujxCz5OPM_w48fTI5QeHnJ15OzgHe2HojmPKx-KB37QI_ka5ClOfMfzo0fzHj-uIfmRFz8e7-gzofnw4NfxXOgV4cf1IGGSEDn6oif8DD3wwHuQJzr0B39wHhce5HCe4r2M5xl-jmh2beh3HJWPfkeeB8kpeFmeHBd-PHzw5PjRh0dz4sQtBcmPPMXT4GZ2NLfQL_jxC7-O48-DJz0RJmKOZMevoD-FZg-eK8MP_zh-PE9wRvhxpT7CD7qQLx28oAuPw-eBdl9w_PDR43iD_Die4zkk3R3-HEf_Bc0P7TnyC33A3cIeBX3QXBfyFPKSoC_-FOlJCn2e4sY-1Oki-EVSZImOj8OZB--DPjr8oz3yQQdH7XhyfDF6-NDxB_l-RP1R9Rm0oN6RH9fQh4oxpbrwI2-hPkQ47ziFsLoCnemRn3jgL81xWsGPhM-iIA8eNGfRP9iHGIk1nLgvPHoS-MHxCPqc4-hZnCxOJ8HWHnpynOiLX3iQH8mV4-hhRm3gaurR4-Fx6sgXJA8u9NvRdIoPPsihHmTx5dCT_cjjDBfsGhfTxHiQ8MyQb8MjHL6PPcKRdMiP484j9D2a57jxIXkSxEdXDtWZYyp3-BK-MyKOGz3yA-pxfA90NA8idSSO_0SoMkfzQw9y9JlyNK0X5MeP5DyqPMOWZceTI_2hnQibo2kaPHKCB34f5A6RPDhaLseUZyrwQ92GHx_uR2geJQ96HHmC5A8qs8GHD-aeYPqDOoHK4hx6_BWOZ3iC5AhTB31o_PAZDxcP7NuHH0Hy40dTfUdHGhczBMl__PhnoenY4DiOZEd-_PiP6cd29MGPEzfyQ4PxQ8d1pD3GwseOHzH0I1eG4zQuHMifQwdiPjgMBMJ_5PiO7cARHPrx48fhHzpyHDd8HI8iAi-eDsla5Acf42tx5fjxU-hHnDn-I25ySFeSiFMAA5xETBEshZBeMEMRhQZDKwxzAgBhADJCISARoIACgIDRCihgCEXAAMaIQ8AIBBAh5RqECDzAMeSAQdQAwYQUAgQAkMCIMGMEAIQwZBwTFAFAiQICGCUQQ-AgJFgwxBIEjQNMCWEMAkAwAogjCBFlNQJIGASAAQQJw6AQBjApASCGeCsIERYpwhggD1kCFHJMAYGEAIABxRAiCgwCCRCMCGRJQ1wQJwQBCgPDKENGUICYYoIx4IgjhAINHBLESAgEAEp7TwQghDkKiLEMKYAZVKARxjggAAjHhBMKMGcYkyZQwAwFBDruJAEkQKU9YYAgAQ2QCgvEmVAGAUmYYCAdYRgygEFiCRGOAAG4BQQBDpwigEQABAACUVAYMQhYIIgw1jLBgCSIGWVcM4xwwgAQjCE3jHFUKQauNKYwAREwjAsADAHCCKOFIMQCBASSAhjAgAICImOZAkg5TSUyRAABECWQK6GwMRAQJAhAAjAqgDGCEMOAYQAxRAwThhEiDAIQaEOYUgQEBiARoQEBNAnAAEAQIsEgo4DBAFNghDCCIeKQABQBhTwBIiRiIBoEOMGEWAAhZJAjAmEjBGAeAEYQAxIJwgACwDFDiHUGESOB4UARQB0wQAjABWROCKQQMBIACYwCYiFABQJIKQyEFE5x4YDV0hgGwAMVCCIVCIB5ZKiARDkDpBlKGlUqAApSJBwyhhvAGEFIAAA
OK
La commande nous indique donc une empreinte de format chromaprint
.
Chromaprint est un format d’empreinte acoustique utilisé pour identifier des morceaux de musique à partir de leur contenu audio. Il encode les caractéristiques sonores d’un extrait sous forme d’une séquence compacte, optimisée pour la recherche et la comparaison.
Traitement des données
Ensuite, après avoir récupérer ces données, il suffit de trouver un service qui saurait identifier la musique. Et pour cela, je me suis tourné sur l’API de acoustid.org.
Elle permet une identification efficace des sons. Le seul hic, est qu’il faut se créer un compte et se faire une clé API, mais c’est assez rapide.
Pour récupérer les infos du son, il suffit de faire une requête GET à cette URL:
GET https://api.acoustid.org/v2/lookup?client=[APIKEY]&duration=87&fingerprint=AQACpUrCTIkiSQtSaPgPcMeP69AR5uiPVY6J-EHzQXuOD3llNOeEPkLeQ0dshmhE7ag2RB-ShcoP1zmK0wjfx9ByHvl-PDmmp2juHIeOR8PxJ2geJUfx5Ih5JEeP6pww_TB3BXWyQ2uGoy_-Cs-RI3ly4mhO_IWrNkQfHGMYHnkUJC-ON8L2UMKH58ihIoy0IpTzQ0uDsOtw2E0TPPPwGwnPDPk2PDp--IvxDfsRF8mTEC8e_LoEP8eNC3pwVF-Otwyq_Zh-qXDzCD9-hNB5fMLL4zH6GSLeLIg-EtaP_Bkq6OPxXPgw5ckW1MeTCzr-DN2LalEOPUeeNPh4NJ1S1Gl8_OgZLkiWD_nxyGif5phyxThiJNaBPxb-CH5i40ieID8eVGZRjUsT9FewOdCPoy_-4-nx5Eda5Uh-oO_ht0F7_JiUCdV55EoPHbmEN4KrKEf0QEeMazkcqniOMDeSdcxRG03TFKdzPPDYkTie45pR5h-aB8ePMz3OQ36Ob8Jz9JPw7vBt9MePHw8vVE-CRo6KpD5y9C9wNHjwHM0Rnrih82iP8C9yyXiHGA1vdD9uZXiOz_LQ7GaIHr_wI0_yILlhPseP8_jxJMeP5ugZHj36DvmJ5MUdPCX6TEZz48GFZ9fxHz-qJyes-EEyKcsR_EWfMYV5UujxCz5OPM_w48fTI5QeHnJ15OzgHe2HojmPKx-KB37QI_ka5ClOfMfzo0fzHj-uIfmRFz8e7-gzofnw4NfxXOgV4cf1IGGSEDn6oif8DD3wwHuQJzr0B39wHhce5HCe4r2M5xl-jmh2beh3HJWPfkeeB8kpeFmeHBd-PHzw5PjRh0dz4sQtBcmPPMXT4GZ2NLfQL_jxC7-O48-DJz0RJmKOZMevoD-FZg-eK8MP_zh-PE9wRvhxpT7CD7qQLx28oAuPw-eBdl9w_PDR43iD_Die4zkk3R3-HEf_Bc0P7TnyC33A3cIeBX3QXBfyFPKSoC_-FOlJCn2e4sY-1Oki-EVSZImOj8OZB--DPjr8oz3yQQdH7XhyfDF6-NDxB_l-RP1R9Rm0oN6RH9fQh4oxpbrwI2-hPkQ47ziFsLoCnemRn3jgL81xWsGPhM-iIA8eNGfRP9iHGIk1nLgvPHoS-MHxCPqc4-hZnCxOJ8HWHnpynOiLX3iQH8mV4-hhRm3gaurR4-Fx6sgXJA8u9NvRdIoPPsihHmTx5dCT_cjjDBfsGhfTxHiQ8MyQb8MjHL6PPcKRdMiP484j9D2a57jxIXkSxEdXDtWZYyp3-BK-MyKOGz3yA-pxfA90NA8idSSO_0SoMkfzQw9y9JlyNK0X5MeP5DyqPMOWZceTI_2hnQibo2kaPHKCB34f5A6RPDhaLseUZyrwQ92GHx_uR2geJQ96HHmC5A8qs8GHD-aeYPqDOoHK4hx6_BWOZ3iC5AhTB31o_PAZDxcP7NuHH0Hy40dTfUdHGhczBMl__PhnoenY4DiOZEd-_PiP6cd29MGPEzfyQ4PxQ8d1pD3GwseOHzH0I1eG4zQuHMifQwdiPjgMBMJ_5PiO7cARHPrx48fhHzpyHDd8HI8iAi-eDsla5Acf42tx5fjxU-hHnDn-I25ySFeSiFMAA5xETBEshZBeMEMRhQZDKwxzAgBhADJCISARoIACgIDRCihgCEXAAMaIQ8AIBBAh5RqECDzAMeSAQdQAwYQUAgQAkMCIMGMEAIQwZBwTFAFAiQICGCUQQ-AgJFgwxBIEjQNMCWEMAkAwAogjCBFlNQJIGASAAQQJw6AQBjApASCGeCsIERYpwhggD1kCFHJMAYGEAIABxRAiCgwCCRCMCGRJQ1wQJwQBCgPDKENGUICYYoIx4IgjhAINHBLESAgEAEp7TwQghDkKiLEMKYAZVKARxjggAAjHhBMKMGcYkyZQwAwFBDruJAEkQKU9YYAgAQ2QCgvEmVAGAUmYYCAdYRgygEFiCRGOAAG4BQQBDpwigEQABAACUVAYMQhYIIgw1jLBgCSIGWVcM4xwwgAQjCE3jHFUKQauNKYwAREwjAsADAHCCKOFIMQCBASSAhjAgAICImOZAkg5TSUyRAABECWQK6GwMRAQJAhAAjAqgDGCEMOAYQAxRAwThhEiDAIQaEOYUgQEBiARoQEBNAnAAEAQIsEgo4DBAFNghDCCIeKQABQBhTwBIiRiIBoEOMGEWAAhZJAjAmEjBGAeAEYQAxIJwgACwDFDiHUGESOB4UARQB0wQAjABWROCKQQMBIACYwCYiFABQJIKQyEFE5x4YDV0hgGwAMVCCIVCIB5ZKiARDkDpBlKGlUqAApSJBwyhhvAGEFIAAA&meta=recordingids+recordings
Cela retourne ceci :
{
"results": [
{
"id": "da787869-dc08-476f-806e-464bf182aa5f",
"recordings": [
{"id": "20ed4b84-524e-4e42-b909-367bfa4c2751"}
],
"score": 0.99404544
}
],
"status": "ok"
}
Maintenant il suffit, de mettre l’ID de recordings
sur Music Brainz, et cela amène ici : Wiosna - Aya Highuchi
Flag
Le flag correspond donc à FCSC{Aya Higuchi_Wiosna}