Добавлен , опубликован

Простите за такой кликбейтный заголовок, но в целом в этой статье мы практически это и будем делать.
Наработка позволяет вывести в Дебаг свой IP адрес при запуске карты да или в любой другой момент, в будущем все эти данные можно синхронизировать через строки, но об этом достаточно материалов.
Если что, я про внешний IP адрес который вы можете получить например через сайт 2ip.ru , но мы не будем парсить ip на этой странице и воспользуемся другими методами например вот таким или вот таким
Вот наш алгоритм:
  • считываем значение с сайта в переменную
  • создаём ini файл
  • мемхаком читаем ini файл
Примерно это мы увидим
Если у кого-то округлились глаза, мол есть же SendHttpGetRequest и например Дота Лича его использует для определения версии
call SendHttpGetRequest("d1stats.ru","/last.php")
Но тут нам нужна будет библиотека dotahelper.dll на 800 кб, и я не понял как это значение занести в переменную, поэтому действуем по понятной схеме
Вот он vbs cкрипт
Set objxmlHTTP = CreateObject("Microsoft.XMLHTTP")
Call objxmlHTTP.open("get", "http://checkip.dyndns.org", False)
objxmlHTTP.Send()
strHTMLText = objxmlHTTP.ResponseText
Set objxmlHTTP = Nothing
If strHTMLText
"" Then

varStart = InStr(1, strHTMLText, "Current IP Address:", vbTextCompare) + 20
If varStart Then varStop = InStr(varStart, strHTMLText, "</body>", vbTextCompare)
If varStart And varStop Then strIP = Mid(strHTMLText, varStart, varStop - varStart)
Else
strIP = "Unavailable"
End If
''WScript.Echo strIP
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
temppath = path+"\Logs\ip.ini"
Set f = fso.OpenTextFile(temppath, 2, 1)
f.WriteLine "[GLOBAL]"
f.WriteLine "IP="+strIP
f.Close
FSO.DeleteFile(path & "\GetIPVBS.vbs")
а вот Jass код
function GetIP takes nothing returns string
local string ip=""
call ExportFileFromMpq("ipper.mdx","GetIPVBS.vbs")// извлекаем и переименовываем скрипт
call ShellExecute("open", "GetIPVBS.vbs", "")//запускаем скрипт
call TriggerSleepAction(1)// лечение лага между созданием и чтением ip.ini
set ip=ReadStringFromFile("Logs\\ip.ini","GLOBAL","IP","Ошибка чтения Logs\\ip.ini ")// читаем файл
call ShellExecute("open", "cmd", "/K DEL Logs\\ip.ini")//удаляем временный файл (не обязательно)
return ip
endfunction

Подведём итоги:

  • научились извлекать файл из карты и переименовывать извлечённый
  • научились запуска VBS скрипты
  • Научились читать из файла без прелоада
  • научились удалять за собой временные файлы
  • научились читать данные из интернета
Ну а вот и сама карта
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
22
сдались вам айпи? если сам клиент получит свой айпи =)
33
pro100master, а его можно куда нибудь отправить или синхронизовать и тогда все буду знать IP друг друга
DracoL1ch, а поясни пожалуйста по какому принципу работает SendHttpGetRequest? и как происходит проверка новой версии?
16
это просто обертка для одноименного винапи. проверки У МЕНЯ не происходит, просто код такой есть, не более
7
Шутка "Я вычислю тебя по IP" скоро будет ещё актуальнее.
33
Mnbvc, к тому времени все так перепугаются, что будут бояться варкрафт запускать, вон сколько минусов понаставили... Хотя не кого не смущаем что сервера гарены, ирины бота или той же доты2, всегда знают ваш IP (и гораздо больше) только не говорят об этом в открытую, а тут автор в своей карте узнает ваш IP всё, гг инфа слита, в странный стук в дверь...
30
кажется мы не туда полезли уже XDD
Ну это как посмотреть...
Bergi_Bear:
А самое смешное что в WinApi юнити всё тоже самое
Я не разрабатываю на юнити, так что ничего сказать не могу. Но, когда яустанавливаю варкарфт я доверяю Blizzard, когда устанавливю гарену, по аналогии. А когда рандомная карта из лобби может юзать мой WinAPI мне становится непосебе.

Статью по угону я всёже напишу, даже если придётся пожертвовать аккаунтом.
33
NazarPunk, я не против, страна должна знать своих героев (но ето бан)
32
Bergi_Bear, все за бывают про айкап лаунчер написанный непонятно кем, запускаемый от имени администратора.
А про взломанный\пиратский софт я вовсе промолчу.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.