Dag 8
Tekst:
MIIBOTCCATAwggEnMIIBHjCCARUwggEMMIIBAzCB+zCB8zCB6zCB4zCB2zCB0zCByzCBwzCBuzCBszCBqzCBozCBnDCBlDCBjDCBhDB9MHYwbzBoMGEwWjBTMEwwRTA+MDcwMTAqMCMwHDAVMA4wBwUAoQMCAROgAwIBA6EDAgEMogMCAQChAwIBE6ADAgEBoQMCARKkAgUAoQMCARShAwIBDqIDAgEYoQMCAQShAwIBEqEDAgEOoQMCAQ6hAwIBB6IDAgECogMCAQigAwIBAaIDAgENogMCARKiAwIBAKMCBQCiAwIBE6IDAgESogMCAQ+hAwIBEaEDAgEOoQMCAQugAwIBAKIDAgEDoQMCAQyhAwIBFKEDAgESoQMCAQ+gAwIBAaEDAgEMoAMCAQOhAwIBEaEDAgEOogMCAQs=
(Litt info om ASN.1 pΓ₯ Wikipedia)
FΓΈrste asn.1 koden vi fikk var tydeligvis feil sΓ₯ det kom en oppdatering:
Spec DEFINITIONS ::= BEGIN
LinkedList ::= Node
Node ::= SEQUENCE {
child CHOICE {
node Node,
end NULL
},
value CHOICE {
digit [0] INTEGER(0..9),
lowercase [1] INTEGER(0..25),
uppercase [2] INTEGER(0..25),
leftCurlyBracket [3] NULL,
rightCurlyBracket [4] NULL
}
}
END
Strengen vi fikk i oppgaveteksten lagret jeg til en fil som jeg kalte: kode.b64
(venv) ruant@kali:~/pst/luke8$ asn1tools convert prog Node $(base64 -d kode.b64 | xxd -p | tr -d '\n')
node Node ::= {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child node : {
child end : NULL,
value lowercase : 19
},
value digit : 3
},
value lowercase : 12
},
value uppercase : 0
},
value lowercase : 19
},
value digit : 1
},
value lowercase : 18
},
value rightCurlyBracket : NULL
},
value lowercase : 20
},
value lowercase : 14
},
value uppercase : 24
},
value lowercase : 4
},
value lowercase : 18
},
value lowercase : 14
},
value lowercase : 14
},
value lowercase : 7
},
value uppercase : 2
},
value uppercase : 8
},
value digit : 1
},
value uppercase : 13
},
value uppercase : 18
},
value uppercase : 0
},
value leftCurlyBracket : NULL
},
value uppercase : 19
},
value uppercase : 18
},
value uppercase : 15
},
value lowercase : 17
},
value lowercase : 14
},
value lowercase : 11
},
value digit : 0
},
value uppercase : 3
},
value lowercase : 12
},
value lowercase : 20
},
value lowercase : 18
},
value lowercase : 15
},
value digit : 1
},
value lowercase : 12
},
value digit : 3
},
value lowercase : 17
},
value lowercase : 14
},
value uppercase : 11
}
Det funket vertfall! King! En liten python kode for Γ₯ lappe sammen dette vaset til noe leslig:
with open("luke8.data") as file:
lines = file.readlines()
myString = ""
for line in lines:
line = line.strip()
if "value" in line:
split = line.split(" : ")
if "lowercase" in split[0]:
myString += chr(97+int(split[1]))
if "uppercase" in split[0]:
myString += chr(65+int(split[1]))
if "digit" in split[0]:
myString += split[1]
if "leftCurlyBracket" in split[0]:
myString += "{"
if "rightCurlyBracket" in split[0]:
myString += "}"
print(myString [::-1])
Det som spyttes ut da er: Lor3m1psumD0lorPST{ASN1IChooseYou}s1tAm3t
Og som vi ser sΓ₯ er det ett flag inni her.
Flag
PST{ASN1IChooseYou}