Let's Dance

May 18, 2025

Challenge Description:

Bob wants to invite Alice to dance, but he doesn't know how to dance
salsa! Don't let him embarrass himself, help him find the right
moves!

Challenge Script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/local/bin/python3
from Crypto.Util.number import bytes_to_long
from Crypto.Util.Padding import pad
from Crypto.Cipher import Salsa20
import secrets
import random
import os

FLAG = os.environ['FLAG'].encode()
k = secrets.token_bytes(32)
n = secrets.token_bytes(8)

def get_salsa_move():
    with open("moves.txt", "r") as f:
        moves_list = eval(f.read())
    move = random.choice(moves_list)
    return move

def random_shuffle(x):
    l = list(x)
    random.seed(bytes_to_long(n))
    random.shuffle(l)
    x = bytes(l)
    return x

def encrypt(x):
    p = pad(x, 16)
    s = random_shuffle(p)
    cipher = Salsa20.new(k, n)
    return cipher.nonce + cipher.encrypt(s)

if __name__ == "__main__":
    move = bytes(get_salsa_move(), encoding='utf-8')

    print("ct1 = ", encrypt(move))
    print("ct2 = ", encrypt(FLAG))

moves.txt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[
    "Sombrero con Mambo",
    "Enchufla con Mambo",
    "Sombrero Complicado",
    "Setenta Complicado",
    "Enchufla Complicado",
    "Sombrero con Plancha",
    "Sombrero de Manny",
    "Sombrero Manolito",
    "Sombrero por Abajo",
    "Abanico Complicado",
    "Enchufla y Quedate",
    "Enchufla y Exhibela",
    "Enchufla y Paseala",
    "Enchufla y Vacilala",
    "Enchufla y Sombrero",
    "Setenta Complicado con Gancho",
    "Enchufla Doble con Mambo",
    "Sombrero con Mambo Complicado",
    "Enchufla con Mambo Complicado",
    "Sombrero de Manny con Mambo",
    "Sombrero Manolito con Mambo",
    "Sombrero por Abajo con Mambo",
    "Abanico Complicado con Mambo",
    "Enchufla y Quedate con Mambo",
    "Enchufla y Exhibela con Mambo",
    "Enchufla y Paseala con Mambo",
    "Enchufla y Vacilala con Mambo",
    "Enchufla y Sombrero con Mambo",
    "La Babosa con Mambo",
    "El Chisme con Sabor",
    "Patineta con Mambo",
    "Coca Cola con Salsa",
    "Dame Directo con Mambo",
    "Con Dos y Dos con Salsa",
    "Dame con Sabor y Salsa",
    "Ochenta y Uno con Mambo",
    "Ochenta y Dos con Salsa",
    "Tumba Francesa con Mambo",
    "Ochenta y Tres con Salsa",
    "Uno Complicado con Mambo",
    "Enchufla Doble con Salsa",
    "Medio Sombereo con Mambo",
    "Enchufla Simple con Salsa",
    "Sacala con Mambo y Sabor",
    "Enchufla Policia con Mambo",
    "Vacilala con Paseo y Salsa",
    "Montaña con Mambo",
    "Kentucky con Salsa",
    "Siete Loco con Mambo",
    "Setenta Nuevo con Salsa",
    "Sombrero Doble con Mambo",
    "Enchufla y Adios con Salsa",
    "Enchufla y Arriba con Mambo",
    "Tumba con Mambo y Salsa",
    "Enchufla de Mambo y Salsa",
    "Siete con Gancho y Mambo",
    "Enchufla con Sabor y Salsa",
    "Setenta y Complicado con Salsa",
    "Montaña de Salsa con Mambo",
    "Doble Enchufla con Salsa",
    "Enchufla y Bailar con Mambo",
    "Salsa con Pasión y Mambo",
    "Enchufla y Mambo con Sabor"
    ]

السلام عليكم ورحمة الله وبركاته

Categories: