Помощь - Поиск - Пользователи - Календарь
Полная версия: Защита от взлома акков
Город Мастеров > РЕДАКТОРЫ > Шарды рунета
_kaa_
Так уж сложилось, что лицензионных версий игры в России почти не водится. В связи с этим на всех русских шардах отключена проверка СД-КЕЯ средствами bioware. Но из-за этого любой игрок может пропустить проверку логин:пароль и зайти на шард под любым логином.

Способов борьбы с этим опять-же - полно. Кто-то требует ввода в поле Deity специального ключа, генерируемого по имени\логину, кто-то записывает СДКЕЙ в БД. Наверное есть еще варианты. Хотелось бы услышать - кто и как с этим борется.


Добавлено в [mergetime]1087026014[/mergetime]
Вот один из вариантов скрипта. Он привязывает СД-КЕЙ, с которым создали персонажа к логину\имени персонажа. Зайти в игру этим персонажем можно только с этим СД-КЕЙем. На случай смены СД-КЕЯ предусмотренна возможность временного отключения проверки из dm-console командой `dm_setmodulevarint SecurityDisable 1`. Включить защиту обратно: `dm_setmodulevarint SecurityDisable 0`

Вызывается из события onClientEnter:
ExecuteScript("_security",OBJECT_SELF);

_security.nss
Код

void main()
{
   object oPC = GetEnteringObject();
   string sCDKEY = GetPCPublicCDKey(oPC);
   string sName = GetName(oPC);
   string sPCName = GetPCPlayerName(oPC);
   string sID = "(("+sPCName+"))"+sName;

   //ДМ-ы должны знать пароль и их обычно не проверяют
   if (GetIsDM(oPC)) return;

   // Читаем из БД строку по паре логин+имя персонажа
   string sReadID = GetCampaignString("Security",sID);

   //Дополнительная возможность банить игрока - положить ему в инвентарь итем с тегом "mg_bootstone"
   if (!GetLocalInt(GetModule(),"SecurityDisable") &&
       GetIsObjectValid(GetItemPossessedBy(oPC,"mg_bootstone")))
   {
       BootPC(oPC);
       return;
   }
   //Если игрок зашел впервые (только создали) или отключена защита - записываем новый СДКЕЙ
   if (sReadID =="" || GetLocalInt(GetModule(),"SecurityDisable"))
   {
        SetCampaignString("Security",sID,sCDKEY);
        return;
   }

   //Проверяем
   if (sReadID != sCDKEY && !GetLocalInt(GetModule(),"SecurityDisable") )
   {
       BootPC(oPC);
       SendMessageToAllDMs("Security: Error! "+sName+" :["+sPCName+"]: with key ="+sCDKEY+ " != "+sReadID);
       WriteTimestampedLogEntry("Security: Error! "+sName+" :["+sPCName+"]: with key ="+sCDKEY+ " != "+sReadID);
       return;
   }
}

Blaze
Хотелось бы услышать варианты защиты по индивидуальному паролю. Очень интересно.
_kaa_
Цитата
Хотелось бы услышать варианты защиты по индивидуальному паролю. Очень интересно.


Простой вариант (обсуждалось на realms) - взять строку логин+имя персонажа и построить для нее crc32 - число. Сделать форму для регистрации - игрок отсылает логин+пароль (можно и СДКЕЙ задействовать) и получает в ответ число, которое и должен ввести в поле Deity. При входе скрипт считает crc32 и сверяет с тем, что ввели. Сложность - правильно в скрипте подсчтитать это самое crc32, ведь нету функций получить числовое представление символа и все нужно делать через большие switch - case блоки.

Вот простые варианты защиты:
Потребовать ввода в поле deity первых 8 символов СД-КЕЯ, через 1. (simple CD-KEY, именно он виден из игры, а не полный СД-КЕЙ). Сейчас, когда появилась функий SetDeity - можно это делать автоматом, если deity пустое - записать туда CD-KEY, если не пустое - сверить с используемым CD-KEY'ем. (замый простой вариант защиты)
Blaze
Нет, я имел ввиду индивидуальный пароль на шард, когда, где ИП, вводишь свой пароль. smile.gif
_kaa_
Цитата
Нет, я имел ввиду индивидуальный пароль на шард, когда, где ИП, вводишь свой пароль.


А такого никогда не было и вероятно не будет. Есть всего два пароля - для игроков и для ДМ-ов (есть еще сервер-админ, но это до сих пор не документированно)
Blaze
Просто мне рассказывали, что такое было на Темпларе. Или может я что-то путаю? Тугодум, разъясни ситуацию. smile.gif
2GoDoom
а я то тут при чем?
я говорил что можно написать такую фишку (на Си или Дельфи), чтобы даже посмотреть на перса на акке нельзя было smile.gif
Blaze
Ну вот, я об этом и говорил.
2GoDoom
Ну прога заключается в том, чтобы она коннектилась к мастер-серверу (то есть к игровому) проверяла пароль (в проге нужно логиниться) и если все чики-чики, то прога сворачивается и мастер-серверу разрешается общаться с ИП откуда пришел пароль (то есть добавляет правило в фаирволл или еще что-то)... если не прошла проверка - то игрок вынужден заново ввести код или забит ьна это дело smile.gif
Аваддон
Я шарю немножко в скриптах, но ни разу не пользовался(да и незнаю как) базой данных.
Вот думаю можно при заходе в первый раз если 0 опыта давать 1 опыта, записывать в БД Аккаунт, имя чара, СДкей.
Потом если кто попытается войти этим чаром - он клиент энтер в БД ищется аккаунт, есть ли там такой чар, и подтвержается ли СД кей.

P.S. Зачем биотвари такую заподлянку по LAN сделало? Пароли и логины не проверяются...Да и некуда их записывать.. у нас же нет мастер-сервера.
_kaa_
Цитата
Я шарю немножко в скриптах, но ни разу не пользовался(да и незнаю как) базой данных.
Вот думаю можно при заходе в первый раз если 0 опыта давать 1 опыта, записывать в БД Аккаунт, имя чара, СДкей.
Потом если кто попытается войти этим чаром - он клиент энтер в БД ищется аккаунт, есть ли там такой чар, и подтвержается ли СД кей.


В другом топике тут есть пример такого скрипта.

Цитата
P.S. Зачем биотвари такую заподлянку по LAN сделало? Пароли и логины не проверяются...Да и некуда их записывать.. у нас же нет мастер-сервера.


Плохо читал первый пост smile.gif Они сделали, просто у нас никто не играет с лицензионными ключами. Если требовать от сервера проверку ключей - на шарде никого не будет.
2GoDoom
Чтобы требовать на сервере проверку ключей - достаточно поставить оригинальный сервер wink3.gif
ЗЫ
Не измененный nwserver.exe
Lazy Ranma
Цитата
Просто мне рассказывали, что такое было на Темпларе. Или может я что-то путаю? Тугодум, разъясни ситуацию.

Темплар написал прогу, которая перехватывала траффик, расшифровывала его, делала с ним все необходисые безобразия, шифровала обратно и посылала серверу.
Ignacius
А теперь требует за нее уйму денег.
Lexey aka Hawk
Цитата(Ignacius @ Jul 24 2004, 18:33)
А теперь требует за нее уйму денег.

1. Про деньги первый раз слышу. Насколько я знаю Сергея, он с самого начала планировал сделать эту прогу freeware после того как отладит ее полностью.
2. Прога работает под Виндами онли.
3. Прога и ее исходники (по его словам) лежат на машине, к которой физически на данный момент нет доступа (почему нет доступа я комментировать не вправе, хотя в курсе этой истории, просто примите данную инфу as is).
Аваддон
(почесывает ручки) :this: какая досада... Вот бы доступ появился - счастья то было...
Valleo
Эх... Жаль конечно, такая прога пропадает... =)
Но жаль что тока под винду =(
Lexey aka Hawk
Могли бы немного помочь исходники, но по факту этот софт придется ваять под каждый тип операционки по новой. Как вариант можно прыгнуть на лицензию после того как 1С выпустит ее в России. Я не думаю, что она будет безумных денег стоить.
_kaa_
Цитата(Lexey aka Hawk @ Aug 10 2004, 16:42)
Могли бы немного помочь исходники, но по факту этот софт придется ваять под каждый тип операционки по новой. Как вариант можно прыгнуть на лицензию после того как 1С выпустит ее в России. Я не думаю, что она будет безумных денег стоить.

Да, это решит кучу проблем. Игроки десять раз подумают, прежде чем станут нарываться на бан по CD-KEY smile.gif К тому же разработчикам будет легко сделать общий черный список совсем отмороженных.
Valleo
"Черный список"... хых =)
Можно и по никам делать списки, благо некоторые есть кто ненавидят менять ники и слишком в них вживаются...
NiMH
Балгарат к ним не относится... rofl.gif

А вот то, что от ДМов не надо защищать - это еще оспоримо. Пример - какой-то ДМ нарушает правила, и его нужно срочно лишить прав, пока он не натворил глупостей под психом. В этом числе он исключается из числа ДМов и при заходе на шард бутится. Доступа к БД у него нету, и он ничего не сможет сделать. На некоторых шардах это достаточно удобно реализовано. :boom:
_kaa_
Цитата(NiMH @ Aug 15 2004, 05:48)
Балгарат к ним не относится... rofl.gif

А вот то, что от ДМов не надо защищать - это еще оспоримо. Пример - какой-то ДМ нарушает правила, и его нужно срочно лишить прав, пока он не натворил глупостей под психом. В этом числе он исключается из числа ДМов и при заходе на шард бутится. Доступа к БД у него нету, и он ничего не сможет сделать. На некоторых шардах это достаточно удобно реализовано. :boom:

Если вы с ДМ-ами порядок навести не сможете - о каком порядке на шарде может идти речь?
К тому же для ДМ-ов обязателен пароль, которые несложно поменять.
NiMH
Никогда не вредно иметь дополнительную систему защиты, не так ли?
Wolf
Все это конечно хорошо, пароли, защита, итд итп,
но кто то сможет мне обьяснить для чего нужен админ пароль и как им пользоватся ?
iAgressor
QUOTE (Wolf @ Sep 8 2004, 16:51)
Все это конечно хорошо, пароли, защита, итд итп,
но кто то сможет мне обьяснить для чего нужен админ пароль и как им пользоватся ?

никто=),,вернее тут врядли кто-то))
Аваддон
Админ пароль ИМХО нужен для удаленного администрирования сервака или измения настроек сервера.
Wolf
QUOTE (Аваддон @ Sep 12 2004, 19:32)
Админ пароль ИМХО нужен для удаленного администрирования сервака или измения настроек сервера.

Это ты так предпологаеш, а мне нужно конкретно что почем и как его юзать, с помощью чего входит на серв и вводить этот пароль ?
_kaa_
он просто не используется.
Hety the Lightbringer
playerpassword <password>
Change or set the password required by players to join the game.
Providing no password will remove password protection.
dmpassword <password>
Change or set the password required by DMs to DM the game. Providing
no password will disable DM login.
adminpassword <password>
Change or set the password required to remotely administer the game.
Providing no password will disable admin login. Currently unused.

Выдержка из вывода команды help в консоли сервера.
Oksivarus
былобы неплохо еще это и по русски прокоментировать так как в англ полный ну или почти полный 0.
Аваддон
Вообщем все ботва.. А последняя строчка гласит:
Админский пароль в данный момент не используется.
Вобщем они его сделали только сами хз зачемwink.gif
mamuc
не хрен знает зачем а заложили при разработке, а потом отказались в ходе работы..вот и тянеться ннеиспользованый резерв biggrin.gif
Аваддон
Нет, наверное он юзается для чего-то. Просто они спецом пишут что мол не используется... Что то скрывают diablo.gif lol.gif
pitbull
у меня такая стоит дмская защита

при заходе проверяет вошедшего на соответствие прописанному в базе айпи, аккаунту, и имени персонажа - если несовпадение бутит. Паралельно записывает всех кто ввел правильный дмпароль но не имеет на это прав - очень удобно.
Lazy Ranma
У меня круче. =) ДМ может заходить с любого ip/аккаунта, но с заданым СиДикей. Причем для CD-key считается хэш сумма, так что никакие злобные админы и кулхацкеры не проникнут. =)
Twin
Lazy Ranma
Зачем тебе этот хэш сидикея? Ведь короткая версия от длинного кея и так, вроде бы, представляет собой некое подобие хэша, то есть сделана без возможности "дешифровки" в длинную версию, чтобы PW и другие серверы их не воровали у лицензионных игроков. Хотя может её и можно "развернуть", не важно. Или ты имел в виду то, что злобный админ подглядит короткую версию и будет ею пользоваться? Хотя это тоже не реально. Я не понял тебя... sad.gif
Lazy Ranma
Мне это было нужно, когда мы хостились на uagames. Там на сервере было 4 рута, а ДМы жаловались на то, что какие-то админы в количестве много штук заходили на сервер. Мне это надоело. А поскольку любой рут может как посмотреть ДМ пароль, так и добавить свой сидикей в базу данных, то я решил сделать так.
Хешировалась именно public часть CD-key'я. Весь смысл в том, что админ сервера не сможет сам посчитать этот хэш и добавить его в БД. А следовательно и зайти на сервер с правами ДМа.
pitbull
каждый создает под свои условияsmile.gif

Balgarat
QUOTE (NiMH @ Aug 15 2004, 05:48)
Балгарат к ним не относится...  rofl.gif 


Не скажи, я вообще всегда пытаюсь играть под своим ником менять его меня заставляют обстоятельства biggrin.gif
Добавлено в 23:33
\\ Привет Ранма, давно тебя не видел pilot.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.