HackademINT

Club de cybersécurité de Telecom SudParis


restrictedshamirarea

Auteur : zTeeed

----------------------------------


download data.txt
download solve.py

En premier, on enlève les caractères parasites dans le fichier data.txt: les données sont des entiers, des lettres s’y sont glissées ‘WHYUDOTHIS’
Exercice classique de RSA: Attention toutefois à ce que le nombre de caractère de la chaine hexadécimale soit paire pour que binascii puisse convertir en ascii.
Il est important de ne pas utiliser systématiquement l’attribut .decode() sur des bytes dans le cas ou les caractères ne peuvent être affichés.

#! /usr/bin/env python3
import gmpy
import binascii
import re

def data():
    c = 8512942369278870620266148394031974973044689894318163405235627071338508361981245640515321886323623390252066685867878730572594793028625740872676348157811963213650335841690548896054575248387263509405115175626839517958199163090894621720633982895296161537817707203713030697607480552624228616963872785874824247210477650193084335394032968774670121494455638729707244785758702704362217088788343985316505226237603774904621
    e = 65537
    n = 11461532818525251775869994369956628325437478510485272730419843320517940601808597552925629451795611990372651568770181872282590309894187815091191649914833274805419432525386234876477307472337026966745408507004000948112191973777090407558162018558945596691322909404307420094584606103206490426551745910268138393804043641876816598599064856358266650339178617149833032309379858059729179857419751093138295863034844253827963
    p = 11957987510443514049047696785587234758227153373363589891876816598599064856358266650339178617149833032309379858059729179857419751093138295863034844253827963
    q = 958483424448747472504060861580795018746355733561446016442794600533395417361061386707061258449029078376132360127073305093209304646989718030495000998517698501250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
    return [c,e,n,p,q]

def main():
    #get p,q from factordb website
    [c,e,n,p,q]=data()
    d = gmpy.invert(e, (p-1)*(q-1))
    m = str(hex(pow(c, d, n))[2:])
    try:
        flag=binascii.unhexlify(m)
    except: #binascii.Error: Odd-length string
        flag=binascii.unhexlify(m[1:])
    x=re.search(b'ESE{\w+}',flag)
    print(x.group(0).decode())

main()