Skip to content

Add MoscowWifi liberator#12

Open
kroune wants to merge 1 commit into
binarynoise:mainfrom
kroune:main
Open

Add MoscowWifi liberator#12
kroune wants to merge 1 commit into
binarynoise:mainfrom
kroune:main

Conversation

@kroune
Copy link
Copy Markdown

@kroune kroune commented May 4, 2026

Usually you have to watch a lot of ads to perform auth. This way you don't have to watch any. Code written based on reverse of their frontend.

I wasn't banned after ~1 month of using it, seems safe. I will upload a video with confirmation that it works today-tomorrow.

Not sure if I matched project code style or if it is ok to add kotlinx serialization lib (seems logic to me considering that server returns json).

P.S. finally my github account got unbanned (it was a false ban), wanted to add this for quite some time

@kroune
Copy link
Copy Markdown
Author

kroune commented May 6, 2026

Record_2026-05-06-12-46-23_b783bf344239542886fee7b48fa4b892.mp4

@binarynoise
Copy link
Copy Markdown
Owner

Thank you for your contribution!
We'll take a closer look at this in the next few days.

Copy link
Copy Markdown
Owner

@binarynoise binarynoise left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We just looked at this PR and are generally happy with your contribution, however we'd like to have some changes:

  • The code you sent us in this PR does not match the version of the app used in the video. Please compile the app with the exact code in this PR and use it one time to liberate MT_FREE.
  • We would like to have a HAR file for MT_FREE if possible for analysis and archiving.
  • Please make sure to use our formatting profile contained in the repo when formatting the file. In Android Studio or IntelliJ the profile should be applied automatically when formatting the file.

* -> GET /gapi/auth/check (poll until auth_status == "success")
*/
@Experimental
@SSID("MT_FREE", "_MosMetro_Free", "MosMetro_Free", "MTC_FREE")
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We did not see SSIDs other than MT_FREE in our statistics, please confirm the PortalLiberator also works with the other networks.

check(initResult.authStatus != "fail") { "Auth init failed: ${initResult.authErrorCode}" }

for (attempt in 1..10) {
val result = checkAuthResult(client, response.requestUrl, startResponse.data)
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it necessary to explicitly check the auth result using this function?
The Liberator already has its own waiting loop.
Have you tried running the PortalLiberator without this explicit check?

Comment on lines +44 to +52
for (attempt in 1..10) {
val result = checkAuthResult(client, response.requestUrl, startResponse.data)
when (result) {
true -> break
false -> log("Failed to check auth result in $attempt")
null -> Thread.sleep(1_000)
}
}
error("Auth timed out after 10 attempts")
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No matter the result, the code will always reach the error.

null -> Thread.sleep(1_000)
}
}
error("Auth timed out after 10 attempts")
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need this explicit exception here, since the Liberator already checks after the PortalLiberator has run whether accessing the internet is possible now. Throwing this exception will put this Liberation attempt into the wrong category: Error instead of StillCaptured.

Suggested change
error("Auth timed out after 10 attempts")

@binarynoise binarynoise self-assigned this May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants