Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Город Мастеров _ Шарды рунета _ Защита от взлома акков

Автор: _kaa_ Jun 12 2004, 10:25

Так уж сложилось, что лицензионных версий игры в России почти не водится. В связи с этим на всех русских шардах отключена проверка СД-КЕЯ средствами 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 Jun 14 2004, 21:00

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

Автор: _kaa_ Jun 15 2004, 11:41

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


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

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

Автор: Blaze Jun 15 2004, 16:07

Нет, я имел ввиду индивидуальный пароль на шард, когда, где ИП, вводишь свой пароль. smile.gif

Автор: _kaa_ Jun 15 2004, 16:41

Цитата
Нет, я имел ввиду индивидуальный пароль на шард, когда, где ИП, вводишь свой пароль.


А такого никогда не было и вероятно не будет. Есть всего два пароля - для игроков и для ДМ-ов (есть еще сервер-админ, но это до сих пор не документированно)

Автор: Blaze Jun 15 2004, 18:09

Просто мне рассказывали, что такое было на Темпларе. Или может я что-то путаю? Тугодум, разъясни ситуацию. smile.gif

Автор: 2GoDoom Jun 15 2004, 22:34

а я то тут при чем?
я говорил что можно написать такую фишку (на Си или Дельфи), чтобы даже посмотреть на перса на акке нельзя было smile.gif

Автор: Blaze Jun 16 2004, 21:23

Ну вот, я об этом и говорил.

Автор: 2GoDoom Jun 18 2004, 02:15

Ну прога заключается в том, чтобы она коннектилась к мастер-серверу (то есть к игровому) проверяла пароль (в проге нужно логиниться) и если все чики-чики, то прога сворачивается и мастер-серверу разрешается общаться с ИП откуда пришел пароль (то есть добавляет правило в фаирволл или еще что-то)... если не прошла проверка - то игрок вынужден заново ввести код или забит ьна это дело smile.gif

Автор: Аваддон Jun 18 2004, 17:03

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

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

Автор: _kaa_ Jun 19 2004, 10:07

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


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

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


Плохо читал первый пост smile.gif Они сделали, просто у нас никто не играет с лицензионными ключами. Если требовать от сервера проверку ключей - на шарде никого не будет.

Автор: 2GoDoom Jun 20 2004, 02:16

Чтобы требовать на сервере проверку ключей - достаточно поставить оригинальный сервер wink3.gif
ЗЫ
Не измененный nwserver.exe

Автор: Lazy Ranma Jun 25 2004, 08:53

Цитата
Просто мне рассказывали, что такое было на Темпларе. Или может я что-то путаю? Тугодум, разъясни ситуацию.

Темплар написал прогу, которая перехватывала траффик, расшифровывала его, делала с ним все необходисые безобразия, шифровала обратно и посылала серверу.

Автор: Ignacius Jul 24 2004, 18:33

А теперь требует за нее уйму денег.

Автор: Lexey aka Hawk Aug 10 2004, 11:13

Цитата(Ignacius @ Jul 24 2004, 18:33)
А теперь требует за нее уйму денег.

1. Про деньги первый раз слышу. Насколько я знаю Сергея, он с самого начала планировал сделать эту прогу freeware после того как отладит ее полностью.
2. Прога работает под Виндами онли.
3. Прога и ее исходники (по его словам) лежат на машине, к которой физически на данный момент нет доступа (почему нет доступа я комментировать не вправе, хотя в курсе этой истории, просто примите данную инфу as is).

Автор: Аваддон Aug 10 2004, 15:08

(почесывает ручки) :this: какая досада... Вот бы доступ появился - счастья то было...

Автор: Valleo Aug 10 2004, 16:02

Эх... Жаль конечно, такая прога пропадает... =)
Но жаль что тока под винду =(

Автор: Lexey aka Hawk Aug 10 2004, 16:42

Могли бы немного помочь исходники, но по факту этот софт придется ваять под каждый тип операционки по новой. Как вариант можно прыгнуть на лицензию после того как 1С выпустит ее в России. Я не думаю, что она будет безумных денег стоить.

Автор: _kaa_ Aug 11 2004, 09:01

Цитата(Lexey aka Hawk @ Aug 10 2004, 16:42)
Могли бы немного помочь исходники, но по факту этот софт придется ваять под каждый тип операционки по новой. Как вариант можно прыгнуть на лицензию после того как 1С выпустит ее в России. Я не думаю, что она будет безумных денег стоить.

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

Автор: Valleo Aug 14 2004, 12:31

"Черный список"... хых =)
Можно и по никам делать списки, благо некоторые есть кто ненавидят менять ники и слишком в них вживаются...

Автор: NiMH Aug 15 2004, 05:48

Балгарат к ним не относится... rofl.gif

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

Автор: _kaa_ Aug 15 2004, 17:29

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

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

Если вы с ДМ-ами порядок навести не сможете - о каком порядке на шарде может идти речь?
К тому же для ДМ-ов обязателен пароль, которые несложно поменять.

Автор: NiMH Aug 16 2004, 09:18

Никогда не вредно иметь дополнительную систему защиты, не так ли?

Автор: Wolf Sep 8 2004, 16:51

Все это конечно хорошо, пароли, защита, итд итп,
но кто то сможет мне обьяснить для чего нужен админ пароль и как им пользоватся ?

Автор: iAgressor Sep 12 2004, 17:16

QUOTE (Wolf @ Sep 8 2004, 16:51)
Все это конечно хорошо, пароли, защита, итд итп,
но кто то сможет мне обьяснить для чего нужен админ пароль и как им пользоватся ?

никто=),,вернее тут врядли кто-то))

Автор: Аваддон Sep 12 2004, 19:32

Админ пароль ИМХО нужен для удаленного администрирования сервака или измения настроек сервера.

Автор: Wolf Sep 13 2004, 09:37

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

Это ты так предпологаеш, а мне нужно конкретно что почем и как его юзать, с помощью чего входит на серв и вводить этот пароль ?

Автор: _kaa_ Sep 17 2004, 14:48

он просто не используется.

Автор: Hety the Lightbringer Sep 17 2004, 15:31

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 Oct 12 2004, 00:47

былобы неплохо еще это и по русски прокоментировать так как в англ полный ну или почти полный 0.

Автор: Аваддон Oct 12 2004, 05:53

Вообщем все ботва.. А последняя строчка гласит:
Админский пароль в данный момент не используется.
Вобщем они его сделали только сами хз зачемwink.gif

Автор: mamuc Oct 12 2004, 16:10

не хрен знает зачем а заложили при разработке, а потом отказались в ходе работы..вот и тянеться ннеиспользованый резерв biggrin.gif

Автор: Аваддон Oct 12 2004, 17:32

Нет, наверное он юзается для чего-то. Просто они спецом пишут что мол не используется... Что то скрывают diablo.gif lol.gif

Автор: pitbull Oct 22 2004, 10:13

у меня такая стоит дмская защита

при заходе проверяет вошедшего на соответствие прописанному в базе айпи, аккаунту, и имени персонажа - если несовпадение бутит. Паралельно записывает всех кто ввел правильный дмпароль но не имеет на это прав - очень удобно.

Автор: Lazy Ranma Oct 24 2004, 00:42

У меня круче. =) ДМ может заходить с любого ip/аккаунта, но с заданым СиДикей. Причем для CD-key считается хэш сумма, так что никакие злобные админы и кулхацкеры не проникнут. =)

Автор: Twin Oct 24 2004, 02:49

Lazy Ranma
Зачем тебе этот хэш сидикея? Ведь короткая версия от длинного кея и так, вроде бы, представляет собой некое подобие хэша, то есть сделана без возможности "дешифровки" в длинную версию, чтобы PW и другие серверы их не воровали у лицензионных игроков. Хотя может её и можно "развернуть", не важно. Или ты имел в виду то, что злобный админ подглядит короткую версию и будет ею пользоваться? Хотя это тоже не реально. Я не понял тебя... sad.gif

Автор: Lazy Ranma Oct 24 2004, 12:12

Мне это было нужно, когда мы хостились на uagames. Там на сервере было 4 рута, а ДМы жаловались на то, что какие-то админы в количестве много штук заходили на сервер. Мне это надоело. А поскольку любой рут может как посмотреть ДМ пароль, так и добавить свой сидикей в базу данных, то я решил сделать так.
Хешировалась именно public часть CD-key'я. Весь смысл в том, что админ сервера не сможет сам посчитать этот хэш и добавить его в БД. А следовательно и зайти на сервер с правами ДМа.

Автор: pitbull Oct 24 2004, 14:09

каждый создает под свои условияsmile.gif


Автор: Balgarat Jul 1 2005, 23:30

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


Не скажи, я вообще всегда пытаюсь играть под своим ником менять его меня заставляют обстоятельства biggrin.gif
Добавлено в 23:33
\\ Привет Ранма, давно тебя не видел pilot.gif

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)