Skip to content

Commit

Permalink
[fix/ISSUE-87] Update N decrypting code to support 3bb1f723
Browse files Browse the repository at this point in the history
  • Loading branch information
azihassan committed Dec 10, 2024
1 parent 02f7f13 commit 33e67bc
Show file tree
Hide file tree
Showing 2 changed files with 7,946 additions and 3 deletions.
35 changes: 32 additions & 3 deletions source/parsers.d
Original file line number Diff line number Diff line change
Expand Up @@ -603,14 +603,19 @@ struct ThrottlingAlgorithm

string findChallengeName()
{
return javascript.matchOrFail!(`(.{3})=function\(a\)\{var b=a.split`, false);
return javascript.matchOrFail!(`(.{3})=function\(\w\)\{var \w=\w\.split`, false);
}

string findChallengeImplementation()
{
string challengeName = findChallengeName().escaper().to!string;
logger.displayVerbose("challenge name : ", challengeName);
return javascript.matchOrFail(challengeName ~ `=function\(a\)\{((.|\s)+?)return b\.join\(""\)\};`).strip();
return javascript.matchOrFail(challengeName ~ `=(function\(\w\)\{(.|\s)+?)\.join\(""\)\};`).strip();
}

string findEarlyExitObjectName(string implementation)
{
return implementation.matchOrFail(`if\(typeof (\w{3})==="undefined"\)return`);
}

string solve(string n)
Expand All @@ -629,7 +634,18 @@ struct ThrottlingAlgorithm

try
{
string implementation = format!`var descramble = function(a) { %s return b.join("")};`(findChallengeImplementation());
string rawImplementation = findChallengeImplementation();
string implementation = format!`var descramble = %s.join("")};`(rawImplementation);
try
{
string missingObject = findEarlyExitObjectName(rawImplementation);
implementation = format!`var %s=1337;%s`(missingObject, implementation);
logger.display("Found missing object: ", missingObject, ", redefining it to 1337");
}
catch(Exception e)
{
logger.displayVerbose("No missing object detected, skipping definition");
}
duk_peval_string(context, implementation.toStringz());
duk_get_global_string(context, "descramble");
duk_push_string(context, n.toStringz());
Expand Down Expand Up @@ -690,3 +706,16 @@ unittest

assert(expected == actual, expected ~ " != " ~ actual);
}

unittest
{
writeln("Should parse challenge in base.js 3bb1f723".formatTitle());
scope(success) writeln("OK\n".formatSuccess());
auto algorithm = ThrottlingAlgorithm("tests/3bb1f723.js".readText(), new StdoutLogger());
assert(algorithm.findChallengeName() == "bE7", algorithm.findChallengeName() ~ " != bE7");

string expected = "AV62lAMNaE7dFw";
string actual = algorithm.solve("dQHBl4-fgbfRe1kiGG");

assert(expected == actual, expected ~ " != " ~ actual);
}
Loading

0 comments on commit 33e67bc

Please sign in to comment.