Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Разработка плагина admin_sql.amxx для DLE

Статус пользователя dukfp
сообщение 10.5.2014, 8:19
Сообщение #1
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Здравствуйте, переделываю потихоньку стандартный плагин из amxx admin.sma под движок DLE

В этом плагине используются 4 поля для выдачи прав, auth, password, access, flags.

Я уже заменил поле auth на поле name что бы сервер CS 1.6 слушал ник под которым зарегистрировался пользователь на сайте.

Так как я планирую использовать связку логин + пароль на CS сервере мне этого достаточно.

---------------------------------

Сейчас нужно разобраться с паролем, из поле password пароль для CS сервера выходит сплошным текстом, т.е в зашифрованов виде двойной md5.

Вот функция php которая на стороне сайта расшифровывает пароль и принимает его в нормальном виде в котором указал пользователь.

Код
md5(md5($переменная пароля))


Как эту функцию применить в плагине?

И еще нужно сделать: Так как я буду использовать только логин + пароль то мне авторизация нужно будет только с флагом a, как этот флаг указать в плагине что бы он не вытаскивался из базы данных, а вытаскивался на стороне сервера через плагин. В этом вопросе думаю справлюсь сам, помогите с логикой.

Отредактировал: AndrewZ, - 11.5.2014, 20:36
Причина: перемещено андрешз
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 10.5.2014, 8:21
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

какой-то глупый вопрос
читай
http://www.amxmodx.org/doc/index.html?page...%2Fmd5_file.htm
и эта функция как раз таки шифрует пароль
даже не представляют, что с такими знаниями можно написать....

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

сначала сядь и подумай о том, что именно тебе нужно
и как оно будет работать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 8:24
Сообщение #3
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Цитата(Legenda @ 10.5.2014, 6:21) *
какой-то глупый вопрос
читай
http://www.amxmodx.org/doc/index.html?page...%2Fmd5_file.htm


Думаю что не глупый для человека который ничего не понимает в скриптинге, делает методом тыка и мануалов )

Вот по второму своему вопросу сделал так:

из

Код
#if defined USING_SQL
    register_plugin("Admin Base (SQL)", AMXX_VERSION_STR, "AMXX Dev Team")

Сделал
Код
#if defined USING_SQL
    register_plugin("Admin Base (SQL)", AMXX_VERSION_STR, "AMXX Dev Team")
#endif
amx_default_access=register_cvar("amx_default_flags", "a")


Это правильно?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 9iky6
сообщение 10.5.2014, 8:25
Сообщение #4


Стаж: 14 лет

Сообщений: 143
Благодарностей: 47
Полезность: 260

Legenda, а зачем узнавать md5 файла?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 10.5.2014, 8:29
Сообщение #5


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(9iky6 @ 10.5.2014, 10:25) *
Legenda, а зачем узнавать md5 файла?

не та ссылка
http://www.amxmodx.org/doc/index.html?page...ns/core/md5.htm


Цитата(dukfp @ 10.5.2014, 10:24) *
Думаю что не глупый для человека который ничего не понимает в скриптинге, делает методом тыка и мануалов )

Вот по второму своему вопросу сделал так:

из

Код
#if defined USING_SQL
    register_plugin("Admin Base (SQL)", AMXX_VERSION_STR, "AMXX Dev Team")

Сделал
Код
#if defined USING_SQL
    register_plugin("Admin Base (SQL)", AMXX_VERSION_STR, "AMXX Dev Team")
#endif
amx_default_access=register_cvar("amx_default_flags", "a")


Это правильно?

конечно правильно, если хочешь чтобы все игроки имели по умолчанию флаг A
это флаг иммунитета от "админских команда"
из серии
Код
"abcdefghijklmnopqrstu" - это флаги прав, используются так же в дополнительных плагинах.
их значение:
; a - иммунитет (против игрока не могут быть использованы команды: kick/ban/slay/slap и т.д.)
; b - резервация (игрок сможет пользоваться резервным слотом)
; c - amx_kick - доступ к команде amx_kick
; d - amx_ban and amx_unban commands - доступ к команде amx_ban и amx_unban
; e - amx_slay and amx_slap commands - доступ к команде amx_slay и amx_slap
; f - amx_map command - доступ к команде amx_map
; g - amx_cvar command - доступ к команде amx_cvar (не все переменные могут быть доступны)
; h - amx_cfg command - доступ к команде amx_cfg
; i - amx_chat and other chat commands - доступ к команде amx_csay и другим чат командам
; j - amx_vote and other vote commands - доступ к команде amx_vote и другим командам голосования
; k - access to sv_password cvar - доступ к переменной sv_password (через команду amx_cvar)
; l - access to amx_rcon command and rcon_password cvar - доступ к переменной amx_rcon и rcon_password (через amx_cvar)
; m - произвольный уровень A (если вы используете нестандартные амх плагины)
; n - произвольный уровень B
; o - произвольный уровень C
; p - произвольный уровень D
; q - произвольный уровень E
; r - произвольный уровень F
; s - произвольный уровень G
; t - произвольный уровень H
; u - доступ к графическому меню управления (amxmodmenu)
; z - пользователь (не админ)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nsgenn
сообщение 10.5.2014, 8:30
Сообщение #6


Стаж: 13 лет

Сообщений: 885
Благодарностей: 561
Полезность: 667

dukfp,

md5 - это хеширование , а не зашифровка, поэтому расшифровать его не получится. Т.е. билет в один конец получается.
на сайтах работает так: при регистрации хешируется пароль и записывается в базу. При авторизации тоже хешируется и сравнивается на совпадение.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 10.5.2014, 8:31
Сообщение #7


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

сразу скажу, это задача тебе не по силам...
нужно чуть больше знаний... и не только с pawn amxx, но еще и в информатике

лучше обратись к "скриптерам", которые за пять минут сделают тебе плагин такой
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 8:31
Сообщение #8
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Legenda, все "зарегистрированные пользователи" в базе данных, ну думаю вы это же имели ввиду, спасибо.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 9iky6
сообщение 10.5.2014, 8:32
Сообщение #9


Стаж: 14 лет

Сообщений: 143
Благодарностей: 47
Полезность: 260

Цитата(Legenda @ 10.5.2014, 11:27) *

А вот теперь дополню:
В accessUser(id, name[] = "") заменяем пару строк...

Код:
get_user_info(id, passfield, password, 31)
new sPassMD5[34];
md5(password, sPassMD5);
new result = getAccess(id, username, userauthid, userip, sPassMD5)


Это если особо не ковырять плагин....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 8:33
Сообщение #10
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Цитата(nsgenn @ 10.5.2014, 6:30) *
dukfp,

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



Всё правильно, мне это и нужно, написать функцию которая будет сравнивать пароль в базе данных, расшифровывать ничего не нужно )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 10.5.2014, 8:37
Сообщение #11


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(dukfp @ 10.5.2014, 10:33) *
Всё правильно, мне это и нужно, написать функцию которая будет сравнивать пароль в базе данных, расшифровывать ничего не нужно )


тебе нужно совершенно другое
не особо ковырять плагин тут не получится

самый простой вариант хранить пароли в открытом виде

а вообще менять нужно только две вещи
проверку паролей
Код
if (equal(password, Password))

и запросы к БД

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 8:47
Сообщение #12
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Цитата(9iky6 @ 10.5.2014, 6:32) *
А вот теперь дополню:
В accessUser(id, name[] = "") заменяем пару строк...

Код:
get_user_info(id, passfield, password, 31)
new sPassMD5[34];
md5(password, sPassMD5);
new result = getAccess(id, username, userauthid, userip, sPassMD5)


Это если особо не ковырять плагин....


Функция вроде работает, но не так, сейчас не в зашифрованом виде, не в обычном не подходит, вы ведь зашифровали просто в md5? Мне нужно двойное шифрование md5.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 9iky6
сообщение 10.5.2014, 8:56
Сообщение #13


Стаж: 14 лет

Сообщений: 143
Благодарностей: 47
Полезность: 260

dukfp, а что мешает по аналогии 2 раз завернуть?

Код:
new sPassMD5[34], sPassMd5Dooble[34];
md5(password, sPassMD5);
md5(sPassMD5, sPassMd5Dooble);
new result = getAccess(id, username, userauthid, userip, sPassMd5Dooble)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 9:09
Сообщение #14
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Цитата(9iky6 @ 10.5.2014, 6:56) *
dukfp, а что мешает по аналогии 2 раз завернуть?

Код:
new sPassMD5[34], sPassMd5Dooble[34];
md5(password, sPassMD5);
md5(sPassMD5, sPassMd5Dooble);
new result = getAccess(id, username, userauthid, userip, sPassMd5Dooble)


Ничего не мешает, я пробовал

Код
md5(md5(password));


ошибка при компиляции.

Ваш вариант тоже не работает, пароль не подходит, что-то не так.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 10.5.2014, 9:26
Сообщение #15
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

чтобы проверить где косяк используйте дебаг с client_print выводя все в консоль или чат сервера


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 9:47
Сообщение #16
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

С паролем пока отложил, не могу сделать проверку по паролю, что бы в базу не лезть за этим.

Какой cvar для этого нужно указать? Так не работает:

Код
register_cvar("amx_read_flags", "a")


Отредактировал: dukfp, - 10.5.2014, 9:49
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 10.5.2014, 11:41
Сообщение #17
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Цитата(csnet @ 10.5.2014, 7:26) *
чтобы проверить где косяк используйте дебаг с client_print выводя все в консоль или чат сервера


Подскажите синтаксис на примере этого :)

Код
new sPassMD5[34], sPassMd5Dooble[34];
md5(password, sPassMD5);
md5(sPassMD5, sPassMd5Dooble);
new result = getAccess(id, username, userauthid, userip, sPassMd5Dooble)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 13.5.2014, 14:55
Сообщение #18


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

скорее всего ни чего не выйдет 99.99%

в самом amxmodx буфер под пароль ограничен 31 символом
в admins_push который в памяти

а md5 занимает 32 символа
так что ....

удачи в переписывании самого amxmodx

либо пиши совершенно другой плагин для выдачи админских прав/регистрации на сервере,
с "левым" использованием admins_push
либо преобразуй md5 в такую строку, которая занимает не более 31 символа
что в принципе бред какой-то....
ps при этом сам пароль пользователя может быть до 63 символов
pps поправьте меня если что не так, кто сам ковырял amxmodx
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 13.5.2014, 15:05
Сообщение #19


Стаж: 12 лет

Сообщений: 388
Благодарностей: 19
Полезность: < 0

"Так как я планирую использовать связку логин + пароль на CS сервере мне этого достаточно."

прости но этаже чота глупа ? если не ошибаюсь, если игрок хочет иметь ник специальными символами онего будет проблемы когда будет регистрироваться. не так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dukfp
сообщение 14.5.2014, 0:19
Сообщение #20
Стаж: 19 лет

Сообщений: 78
Благодарностей: 5
Полезность: 51

Не стал заморачиватся, вывел пароль в хешевом виде для пользователя, только он может видеть свой пароль, пока всё работает, это даже лучше, если кто-то взломает хеш то распазнать его сложно, а если взломают чистый пароль то могут зайти на сайт и натворить дел.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: