Ik heb dus echt de ballen verstand van javascript, sowieso snap ik het eerste deel al niet.
Iets gebeautified:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
| function createPassword(t) {
for (var r = "",
e = String(t + " " + (new Date).getHours() + ":" + (new Date).getMinutes()),
n = Math.floor(10 * Math.random()) + 1,
a = String("".substring(0, 9)),
o = "",
g = 0;
g < e.split(" ")[1].length;
g++)
o = btoa(e[r]).replace("==", "") + o;
...
...} |
Ik snap echt geen reet van wat het allemaal doet, maar:
•
e.split(" ")[1].length; is het deel na de spatie, omdat het om 3:23 is ingevuld heb je dus een iteratie van 4 ?
•
r = "", hoe kun je die gebruiken als index op
e[r] ?
spoiler:Klopt mijn redenatie dan, dat o dus 4x base64 van "undefined" is?
Of anders als r als 0 wordt gezien: 4 x base64 van het eerste karakter van t en dan de == er steeds afgesloopt.
Dan het 2de stukje:
JavaScript:
1
2
3
4
5
| for (o.length < e.length && (o += o); a.length < 10;) {
for (var l = 0; l < e.split(" ")[0].length; l++)
r += btoa(e.split(" ")[0][l] + o[l]).replace("=", "");
a += String.fromCharCode(Math.floor(25 * Math.random()) + 97)
} |
Aangezien
a leeg is (?) en er steeds een lowercase letter aan wordt toegevoegd, lijkt me die buitenste loop gewoon een iteratie van 10 .
Dan is er weer een iteratie met de lengte van het "wachtwoord"
die vult een base64 van het x-ste karakter van het wachtwoord + x-ste karatker van
o en haalt daar steeds de = weer vanaf
Dus
r is dan 10x het stuk tekst van de binnenste loop
En dan de return waarde
JavaScript:
1
| return r.concat(Math.random().toString(36).substr(2, n)).slice(0, -n).substring(r.length - 16) |
Daar heb ik nog geen idee van wat dat allemaal doet.
-edit-
Het deel
concat(Math.random().toString(36).substr(2, n)).slice(0, -n) lijkt een stuk string te maken die weer wordt verwijderd ?, dus dan houdt je alleen de laatste 16 karakters over van het ding.
spoiler:Maar dan zou dit overblijven?
function createPassword(t) {
var r = "";
var o = btoa("undefinedundefinedundefinedundefined");
for (var a = 0; a < 10; a++) {
for (var l = 0; l < t.split(" ")[0].length; l++)
r += btoa(t[l] + o[l]).replace("=", "");
}
return = r.substring(r.length - 16);
-edit- Aangepast voor als de code een spatie heeft.
}
Nou en dan weet ik het ook niet meer....
-edit-
WTF BBQ ik heb hem.
spoiler:datum/tijd notatie volgens iso norm of epoch is voor nerds...

jan-boerenfluitjes FTW
Het "reverse engineeren" houdt dus in dat t een datum/tijd notatie is.
Daarna is het gok de goals in welk formaat, en pleur het maar door het gedownloade javascript.
Reverse engineeren van de code was echt totaal zinloos....
Ik voel me echt DE Uber Crimefighter......wat een anti climax. TEH FUCK

AAGGGHH. Ik heb uit pure wanhoop eerst nog de geo opgelost, in de hoop daar iets van info voor deze challenge te kunnen vinden.
[
Voor 30% gewijzigd door
Vaan Banaan op 12-02-2020 22:46
]