Всем доброго времени суток!
Я понимаю, что некропостинг, это не есть хорошо, но плодить темы тоже плохо, а мой вопрос непосредственно по этой теме.
Если кто до сих пор пользуется этими скриптами - скажите, а они по-прежнему работают? Потому что я начал свою реализацию (c#, фронт WPF). Пробую майлрушную аутентификацию. Все было хорошо до третьего этапа - получения аутентификационной куки. Ссылку я получаю, но при get-запросе меня, судя по всему, редиректит куда-то, и куки мне не отдают вообще никакие. Может, кто сталкивался с таким на этапе разработки скриптов?
Буду благодарен за совет.
А если выгорит в итоге - выложу код лаунчера на гитхаб, что бы все могли пользоваться и модифицировать по усмотрению.
Последний раз редактировалось mrlyceist; 09.10.2017 в 00:00.
Ссылку я получаю, но при get-запросе меня, судя по всему, редиректит куда-то, и куки мне не отдают вообще никакие. Может, кто сталкивался с таким на этапе разработки скриптов?
прошу прощения за длительный ответ. давно не был на жуке.
я к сожалению не знаю работает ли этот скрипт сейчас, но первое что приходит в голову - амперсант не приведён к нормальному виду т.е.
необходима замена в локейшн & => &
Добавлено через 23 минуты
проверил - куки приходят. но там дальше затык.
рекомендую попробовать HTTP Analyzer - в последний раз когда я его использовал с ИЦ он нормально перехватывал весь трафик.
у меня просто ни ИЦ ни ВФ нету теперь.
Последний раз редактировалось manx5; 26.11.2017 в 17:30.
Причина: Добавлено сообщение
только для почт майл.ру.
они добавили MRACToken как его применяет game.exe не знаю - у меня нету.
кук стало больше поэтому мпоп теперь ищется по всем кукам.
вообще это часть скрипта которая дальше телнетом (если установлен) заходит на сервер варфейса. но я так и не понял почмеу оно через раз авторизуется.
вот полный скрипт (если у вас есть телнет).
Код:
Function MyASC(OneChar)
If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)
End Function
Function Base64Encode(inData)
'rfc1521
'2001 Antonin Foller, Motobit Software, http://Motobit.cz
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim cOut, sOut, I
'For each group of 3 bytes
For I = 1 To Len(inData) Step 3
Dim nGroup, pOut, sGroup
'Create one long from this 3 bytes.
nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _
&H100 * MyASC(Mid(inData, I + 1, 1)) + MyASC(Mid(inData, I + 2, 1))
'Oct splits the long To 8 groups with 3 bits
nGroup = Oct(nGroup)
'Add leading zeros
nGroup = String(8 - Len(nGroup), "0") & nGroup
'Convert To base64
pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
'Add the part To OutPut string
sOut = sOut + pOut
'Add a new line For Each 76 chars In dest (76*3/4 = 57)
'If (I + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
Next
Select Case Len(inData) Mod 3
Case 1: '8 bit final
sOut = Left(sOut, Len(sOut) - 2) + "=="
Case 2: '16 bit final
sOut = Left(sOut, Len(sOut) - 1) + "="
End Select
Base64Encode = sOut
End Function
If WScript.Arguments.Count = 0 Then
MsgBox "usage wfm.vbs [Ссылки могут видеть только зарегистрированные пользователи. ] pass [wf.server]"
WScript.Quit
End If
Set objArgs = WScript.Arguments
Dim o, o1, WFLogin, WFPassword, WFMRaccess_token, WFMRMpop, WFMRUid, WFMRSessionKey, WFMRPersId, WFMRKey, WshShell, theTelnet, WFMRACToken
WFLogin = objArgs.Item(0)
WFPassword = objArgs.Item(1)
Set objRegExp = CreateObject("VBScript.RegExp")
Set xmlParser = CreateObject("Msxml2.DOMDocument")
Set o = CreateObject("MSXML2.ServerXMLHTTP")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("wfm.log", 8, True)
'логин/пароль -> аксес-токен
o.open "POST", "https://o2.mail.ru/token", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("client_id=gamecenter.mail.ru&grant_type=password&username="&WFLogin&"&password="&WFPassword)
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "client_id=gamecenter.mail.ru&grant_type=password&username="&WFLogin&"&password="&WFPassword
objRegExp.Pattern = "access_token"":""(.+?)"""
WFMRaccess_token = objRegExp.Execute(o.responsetext).Item(0).Submatches.Item(0)
objTextFile.WriteLine(o.responsetext)
'юзеринфо - (!)надобность под вопросом
o.open "POST", "https://o2.mail.ru/userinfo", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("client_id=gamecenter.mail.ru&access_token="&WFMRaccess_token)
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "client_id=gamecenter.mail.ru&access_token="&WFMRaccess_token
objTextFile.WriteLine(o.responsetext)
'аксесс-токен -> ссылка для мпоп
o.open "POST", "https://authdl.mail.ru/ec.php?hint=MrPage2", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("<?xml version=""1.0"" encoding=""UTF-8""?><MrPage2 SessionKey="""&WFMRaccess_token&""" Page=""http://dl.mail.ru/robots.txt""/>")
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "<?xml version=""1.0"" encoding=""UTF-8""?><MrPage2 SessionKey="""&WFMRaccess_token&""" Page=""http://dl.mail.ru/robots.txt""/>"
xmlParser.loadXML(o.responsetext)
WFMRLocation = xmlParser.getElementsByTagName("MrPage2").Item(0).getAttribute("Location")
objTextFile.WriteLine("аксесс-токен -> ссылка для мпоп")
objTextFile.WriteLine(o.responsetext)
'ссылка для мпоп -> мпоп из куки на странице с редиректом
Set o1 = CreateObject("WinHttp.WinHttpRequest.5.1")
o1.open "GET", WFMRLocation, False
o1.setRequestHeader "User-Agent","Downloader/11870"
o1.Option(6) = False
o1.send
objRegExp.Pattern = "Mpop=(.+?);"
objTextFile.WriteLine("ссылка для мпоп -> мпоп из куки на странице с редиректом")
objTextFile.WriteLine(o1.GetAllResponseHeaders())
'objTextFile.WriteLine(o1.getResponseHeader("Set-Cookie"))
objTextFile.WriteLine(o1.responsetext)
WFMRMpop = objRegExp.Execute(o1.GetAllResponseHeaders()).Item(0).Submatches.Item(0)
objTextFile.WriteLine(WFMRMpop)
'мпоп -> юид и сессионкей
o.open "POST", "https://authdl.mail.ru/ec.php?hint=Auth", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("<?xml version=""1.0"" encoding=""UTF-8""?><Auth Cookie="""&WFMRMpop&""" ChannelId=""0""/>")
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "<?xml version=""1.0"" encoding=""UTF-8""?><Auth Cookie="""&WFMRMpop&""" ChannelId=""0""/>"
xmlParser.loadXML(o.responsetext)
WFMRSessionKey = xmlParser.getElementsByTagName("Auth").Item(0).getAttribute("SessionKey")
WFMRUid = xmlParser.getElementsByTagName("Auth").Item(0).getAttribute("Uid")
objTextFile.WriteLine(o.responsetext)
'мпоп -> персайди
o.open "POST", "https://authdl.mail.ru/sz.php?hint=Auth", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("<?xml version=""1.0"" encoding=""UTF-8""?><Auth ProjectId=""1177"" SubProjectId=""0"" ShardId=""0"" Mpop="""&WFMRMpop&"""/>")
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "<?xml version=""1.0"" encoding=""UTF-8""?><Auth ProjectId=""1177"" SubProjectId=""0"" ShardId=""0"" Mpop="""&WFMRMpop&"""/>"
objTextFile.WriteLine(o.responsetext)
'хз зачем это тут
o.open "POST", "https://authdl.mail.ru/ec.php?hint=EnazaGetOrdersList", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("<?xml version=""1.0"" encoding=""UTF-8""?><EnazaGetOrdersList Uid="""&WFMRUid&""" SessionKey="""&WFMRSessionKey&""" UidType=""0""/>")
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "<?xml version=""1.0"" encoding=""UTF-8""?><EnazaGetOrdersList Uid="""&WFMRUid&""" SessionKey="""&WFMRSessionKey&""" UidType=""0""/>"
objTextFile.WriteLine(o.responsetext)
'мпоп -> уид и токен
o.open "POST", "https://authdl.mail.ru/sz.php?hint=AutoLogin", False
o.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
o.setRequestHeader "Content-Length", Len("<?xml version=""1.0"" encoding=""UTF-8""?><AutoLogin ProjectId=""1177"" SubProjectId=""0"" ShardId=""1"" Mpop="""&WFMRMpop&"""/>")
o.setRequestHeader "User-Agent","Downloader/11870"
o.send "<?xml version=""1.0"" encoding=""UTF-8""?><AutoLogin ProjectId=""1177"" SubProjectId=""0"" ShardId=""1"" Mpop="""&WFMRMpop&"""/>"
xmlParser.loadXML(o.responsetext)
WFMRPersid = xmlParser.getElementsByTagName("AutoLogin").Item(0).getAttribute("PersId")
WFMRKey = xmlParser.getElementsByTagName("AutoLogin").Item(0).getAttribute("Key")
WFMRACToken = xmlParser.getElementsByTagName("AutoLogin").Item(0).getAttribute("MRACToken")
objTextFile.WriteLine(o.responsetext)
objTextFile.Close
If WScript.Arguments.Count = 3 Then
Set WshShell = WScript.CreateObject("WScript.Shell")
theTelnet = WshShell.Run("cmd /c telnet.exe", 1, False)
WScript.Sleep 500
WshShell.AppActivate "%comspec%"
WScript.Sleep 100
WshShell.SendKeys "set logfile wfm1.log~"
WScript.Sleep 1000
WshShell.SendKeys "open " & objArgs.Item(2) & " 5222~"
WScript.Sleep 1000
WshShell.SendKeys "<?xml version='1.0'?><stream:stream to='warface' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='en' version='1.0'>~"
WScript.Sleep 1000
WshShell.SendKeys "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='WARFACE'>" & Base64Encode(chr(0) & WFMRKey & chr(0) & WFMRPersid) & "</auth>~"
End If
в процессе работы создаёт два лог файла wfm.log (действия имитации ИЦ) и wfm1.log (всё что происходит сервером warface по джаберу)
это скрипт на vbs
соотвественно можно это всё сохранить в файл например wfm.vbs далее необходимо запустить командную строку там где лежит этот файл. например в проводнике нажать shift+правая кнопка мыши - в меню будет запустить командную строку здесь (или что-то типа того) и далее в этой командной строке уже запускать
Здравствуйте! На данный момент актуально? Не получается запустить. Лог файл создается, а дальше ничего не происходит. (Ведь не важно же bk, list или сам mail?)
а что хочется запустить то? сам варфейс? второй скрипт в сообщении от 15.04.2018 запускает телнет если третьим аргументов в командной строке указан сервер (и если телнет клиент открыт на компе)
если надо запустить сам варфейс, то необходимо запускать game.exe с параметрами котрые на сегодняшний день я не знаю. т.к. давно в варфейс не играл. узнать текущие параметры запуска game.exe можно в диспетчере задач если добавить там отображение столбца "командная строка".
ранее game.exe запускался с такими параметрами (есть на первой странице темы)