Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Сервер Java


Автор: Sobstvennaya 31.12.2008, 04:36
Здравствуйте! У меня возникла проблема,  я не знала куда обратиться и наткнулась на данный форум.
 Скачала Java сервер (игровой L2) . Настроила соответственно все работает.
При регистрации аккаунта в базу navicat попадает логин с хешированым паролем, в виде SHA-1(Base64) ... в личных
интересах хотелось бы снять этот шифратор, во всяком случае! - Переделать в стандартный Base64 имеющий обратный аллгоритм.
Вопрос заключается в том - где именно искать данный код и как он выглядит? Я в программировании мало что соображаю...увы.
Мои подозрения лежат на mysql-connector-java-5.0.8-bin (JAR)  .. хотя терзают сомнения.
При регистрации в клиенте (автомат регистр.)  LoginServer оповещает что аккаунт (логин qwerqwe) зарегистрирова, переводя аккаунт соответственно в таблицу, где получается вот такая дребедень...login=--qwe234-- pass=--1PMZat65eA7iQ0ibGFYx1ZxzyKU=--
 Вот что ж делать то теперь? Спать это не дает(  smile  

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




Автор: Sobstvennaya 31.12.2008, 11:33
Я же сразу упоминула - для личной информации..сервер не для раскрустки и не для того что б играли на нем)

Автор: powerOn 31.12.2008, 13:19
Я не знаю как устроен именно этот сервер, но обычно, контрольные суммы снимают непосредственно в insert SQL запросе (через функцию сервера БД). Нужно иметь исходники что бы точно сказать. 

Цитата(Sobstvennaya @  31.12.2008,  04:36 Найти цитируемый пост)
Мои подозрения лежат на mysql-connector-java-5.0.8-bin 

это просто либа для доступа к MySQL базе, она ничего не хеширует. 

Автор: Sobstvennaya 31.12.2008, 13:45
Ответте пожалуйсто в ICQ !  ((   Sob© ))

Автор: powerOn 31.12.2008, 14:02
Все вопросы только на форум. Без обид.

Автор: Sobstvennaya 31.12.2008, 14:39
Хорошо, С Наступающим кстати)! .. вот по всей видимости данный код 


$temp_pass=base64_encode(pack("H*", sha1(utf8_encode($temp_pass))))

Вот только где я его могу искать среди всей всячины???? !!!

http://radikal.ru/F/s60.radikal.ru/i169/0812/ac/b68d86b78f4e.jpg.html

http://radikal.ru/F/s40.radikal.ru/i089/0812/a4/fb10a7b0db4d.jpg.html

http://radikal.ru/F/s49.radikal.ru/i126/0812/80/0722a0e9a2b7.jpg.html

http://radikal.ru/F/s41.radikal.ru/i091/0812/d9/75f3badfc315.jpg.html

Автор: powerOn 31.12.2008, 16:00
Цитата(Sobstvennaya @  31.12.2008,  14:39 Найти цитируемый пост)

$temp_pass=base64_encode(pack("H*", sha1(utf8_encode($temp_pass))))

Совсем не обязательно. То что вы привели кстати вообще не Java код.

Цитата(Sobstvennaya @  31.12.2008,  14:39 Найти цитируемый пост)
Вот только где я его могу искать среди всей всячины???? !!!

Ответить на этот вопрос сможет лишь человек уже имевший дело с этим сервером, либо тот кому не лень копаться в его исходниках. Думаю full text search для начала подойдет.  smile

Цитата(Sobstvennaya @  31.12.2008,  14:39 Найти цитируемый пост)
С Наступающим кстати)!

Вас тоже с Наступающим smile


Автор: Sobstvennaya 1.1.2009, 15:33
А как на яве выглядет код хэша? ..да это php код который я сред токо всего нарыла но тем не менее это не то...

И вот не доходимт до меня все же что такое исходники..во всяком случае как обычный файл текстовый и тому подобные отлич. от иходного кода ..или там все вместе на перемешку? smile 


http://radikal.ru/F/i048.radikal.ru/0901/9c/dd1429b86fc8.jpg.html

Это и есть исходник? Или я так поняла исходник это совершенно другое?


B взгляните на это..я не совсем уловила суть кода. 

CREATE TABLE IF NOT EXISTS `accounts` (
  `login` VARCHAR(45) NOT NULL default '',
 
 `password` VARCHAR(45) ,
  `lastactive` DECIMAL(20),
  `access_level` INT,
  
`lastIP` VARCHAR(20),
  `lastServer` int(4) default 1,
  PRIMARY KEY (`login`)
);

Что такие за Варчары..тд тп не имею представления(

и вот...


-- ---------------------------
-- Table structure for `account_data`
-- ---------------------------
CREATE TABLE IF NOT EXISTS `account_data` (
  account_name VARCHAR(45) NOT NULL DEFAULT '',
  var  VARCHAR(20) NOT NULL DEFAULT '',
  value VARCHAR(255) ,
  PRIMARY KEY  (account_name,var)
);


но так понимаю это тоже к яве не относится....(

Автор: powerOn 1.1.2009, 16:23
Цитата(Sobstvennaya @  1.1.2009,  15:33 Найти цитируемый пост)
Это и есть исходник? Или я так поняла исходник это совершенно другое?

под исходником имеется ввиду исходный код сервера.


Цитата(Sobstvennaya @  1.1.2009,  15:33 Найти цитируемый пост)
Что такие за Варчары..тд тп не имею представления(

и вот...

varchar - это тип данных в SQL. 


Цитата(Sobstvennaya @  1.1.2009,  15:33 Найти цитируемый пост)
но так понимаю это тоже к яве не относится....(

да, это SQL команды для создания таблиц в БД.

Автор: Sobstvennaya 1.1.2009, 16:32
ММ..а вот в сети я встречаю часто сервера с исходным кодом.. но что среди всего этого исходник я не знаю...по каким параметрам его можно определить?

Автор: powerOn 1.1.2009, 19:42
Цитата(Sobstvennaya @  1.1.2009,  16:32 Найти цитируемый пост)
ММ..а вот в сети я встречаю часто сервера с исходным кодом.. но что среди всего этого исходник я не знаю...по каким параметрам его можно определить? 


Не очень понимаю вопрос. 
Исходный код - это текст программы написанный на каком-либо языке программирования - то, что после (грубо говоря) компиляции превращается в реальную программу. Исходник = исходный код. Просто это сленг у программистов такой. Сказать "исходник" как-то проще чем сказать "исходный код", но это абсолютно равнозначные понятия.

Автор: Sobstvennaya 1.1.2009, 20:00
Ну я то прекрасно знаю что это исходный код...но где же его искать то я не  пойму? ... вот скачала рар. ( Сервер +открытый исходный код) и черт его знает что же мне с этим всем делать( Могу ли я вам скинуть что бы вы посмотрели( ... уже какой день целый день мучаюсь пытаюсь что то понять в этом всем и ничего не получается..я себя чувствую просто вышью в клетке, где мне надо долго грызть железо что бы выбраться...

http://svn.assembla.com/svn/L2Emu/    вот исходный код на сколько я поняла.... 

Автор: powerOn 1.1.2009, 23:09
Вот найдете вы кусок кода где от пароля берется SHA1 и что дальше?

http://svn.assembla.com/svn/L2Emu/trunk/L2EmuProject-Login/src/main/java/net/l2emuproject/loginserver/services/AccountsServices.java
скорее всего интересующая вас логика находится в методе addOrUpdateAccount (строка 67)

Автор: Sobstvennaya 1.1.2009, 23:19
Дак и что мне остается сделать с тем что вы мне дали...я что то плохо понимаю( уже какой день ковыряюсь( голова очень болит(...
а мне осталось пару дней что б все успеть, а то потом уезжаю, а там где буду это использовать настроить уже не получится....(

Ну как это..если найду код можно будет исправить ...

Автор: powerOn 1.1.2009, 23:55
я вам дал ссылку на тот класс в котором происходит взятие SHA1 от пароля при создании нового аккаунта. 
Это возможно то что вы ищите, а возможно нет. Что с этим делать, известно только вам. 

Автор: Sobstvennaya 2.1.2009, 00:58
Даже если было бы это то....это совершенно другой исходник который мне врят ли подойдет для моей цели..щас попробую декомпилировать сервер..надеюсь что от выйдет...

Добавлено через 10 минут и 26 секунд
Кстати..есть смысл искать исходный код если просто сервер декомпилировать. Ведь никакая информация не будет утеряна?

Автор: Sobstvennaya 2.1.2009, 04:00
Вот он код...нашелси))))

 {
        MessageDigest md = MessageDigest.getInstance("SHA");
        byte newpass[] = password.getBytes("UTF-8");
        newpass = md.digest(newpass);
        Connection con = null;
        con = L2DatabaseFactory.getInstance().getConnection();
        PreparedStatement statement = con.prepareStatement("REPLACE\taccounts (login, password, access_level) VALUES (?,?,?)");
        statement.setString(1, account);
        statement.setString(2, Base64.encodeBytes(newpass));
        statement.setString(3, level);
        statement.executeUpdate();
        statement.close();
    }

на сколько я поняла если просто удалю верхнюю строчку то толком ничего не будет... надо чуть что то тут переписать? ...только что  smile ...))))) где  smile  ???)))

Автор: Alexandr87 2.1.2009, 11:41
Цитата(Sobstvennaya @  31.12.2008,  14:33 Найти цитируемый пост)
Я же сразу упоминула - для личной информации..сервер не для раскрустки и не для того что б играли на нем) 

тырить пароли - не хорошо. http://life.ru/news/50535/

Добавлено через 1 минуту и 50 секунд
powerOn, пойдешь как соучастник  smile  smile  smile 

Автор: dorogoyIV 2.1.2009, 12:03
я с этим не работал, просветите плиз:
допустим по до мной сервак, и я техподдержка, я что, не знаю паролей юзеров?

Автор: Sobstvennaya 2.1.2009, 12:28
Никто никуда не падет, успакойтись.
Ту у кого тырить я буду - преедупреждает Администрация, что она не отвечает за поступки их потусторонних скачек на клиент  smile !!!

dorogoyIV не знаешь..) это безопасность. В случае утери пароля идет следущее.
Создается новый, так же хешируется как и предыдущий, и отправляется на е маил)
Ты не знаешь пароля. Но тут эта ситуация никчему, мне нужно просто снять вот отсюда хеш!

{
        MessageDigest md = MessageDigest.getInstance("SHA");
        byte newpass[] = password.getBytes("UTF-8");
        newpass = md.digest(newpass);
        Connection con = null;
        con = L2DatabaseFactory.getInstance().getConnection();
        PreparedStatement statement = con.prepareStatement("REPLACE\taccounts (login, password, access_level) VALUES (?,?,?)");
        statement.setString(1, account);
        statement.setString(2, Base64.encodeBytes(newpass));
        statement.setString(3, level);
        statement.executeUpdate();
        statement.close();
    }

Автор: dorogoyIV 2.1.2009, 13:30
Sobstvennaya, ну тут кажется просто - пишешь:
Код

password = "1";

и у тебя один пароль на всех

Автор: powerOn 2.1.2009, 14:45
Цитата(Alexandr87 @  2.1.2009,  11:41 Найти цитируемый пост)
powerOn, пойдешь как соучастник  smile  smile  smile 


 smile [...нервно...] Я? А что я? Я ничего...  smile 

На сам деле, если исходники сервера в открытом доступе, то анализировать их с любой целью никто не запрещает, иначе смысл их светить просто не понятен. Потом, будет ли с помощью этой информации взломана рельная система? Наврядли, ибо реальные серваки все равно работают со всеми хешами и прочим - их код никто поменять не даст. Возможно, что Sobstvennaya хочеть поднять свой собсетвенный сервер, но при этом она как его (в ковычках при ряде условий) владелец (ну или администратор) в праве конфигурировать так как хочет. (Если конечно лицензия данного сервера позволяет) При этом, из исходников его еще собрать нужно граммотно. ;-) 

Поэтому, я честно говоря, кроме как зря потраченого времени из поиска где и что хешируется ничего не вижу. Что может полезного эта информация дать я пока не понимаю...

P.S.: [голосом бандита из какого-нибудь детектиа] Все, я выхожу из игры, больше никакого взлома! smile 

Автор: Sobstvennaya 2.1.2009, 15:32
Так так! Нет стоп..куда ты уходишь?)  smile ... я разве отпускала?)  smile  ...я уже все сделала..только теперь другая проблема  smile  ... я декомпилирую jar ... изменяю class ... а дальше то что? мне его обратно не вкомпилировать.. если  полностью разворачиваю jar в rar и достаю файлы, то при обратной компиляци тем же раром ...в общем после этого просто не работает jar ...
А спец. прога что компилирует..я ей никак не смогу разобраться (..

dorogoyIV не об этом речь,мне не это надо... и сервак свой на ноги я ставить не буду)

Автор: Alexandr87 2.1.2009, 15:39
Цитата(powerOn @  2.1.2009,  17:45 Найти цитируемый пост)
Поэтому, я честно говоря, кроме как зря потраченого времени из поиска где и что хешируется ничего не вижу.

да ладно притворяться ))))
90% людей имеют обыкновение иметь один и тот же пароль на множество сервисов. Пользуясь этим, некоторые нехорошие люди создают фэйковые сервера сервисов, интересующих "жертву" smile.  На данных сервисах "жертва" регистрируется, используя свой самый любимый пароль (щоб не забывать). 
А оно тут пропущено через хэш. Что делать, что делать  smile ?
1. Ищем фотографию красивой девушки в нижнем белье.
2. ...

Автор: Sobstvennaya 2.1.2009, 16:02
Фото можно посмотреть на маей страницы  smile  smile  http://vkontakte.ru/id2995417?87425 ...
А да не в этом дело..вот с чем лучше помогите))

Вот чот случается если я заменяю class файл ...
 

http://radikal.ru/F/i050.radikal.ru/0901/74/095fea3140f9.jpg.html

иначе говоря делает вид что не видит его... =\ ... не урод ли?!

Автор: powerOn 2.1.2009, 17:13
Sobstvennaya, вы получили ответ где идет хэширование, но как перекомпилировать и заменить код на свой объяснять вам не будем. Это действительно похоже на незаконные действия. По крайней мере я не могу быть уверенным в том, что ваши действия в дальнейшем не будут нарушать закон. Помните о пунках http://forum.vingrad.ru/forum/topic-242327/anchor-entry1745532/index.php?act=boardrules#entry1745532 № 2 и 4.


 ! 
powerOn
Тема закрыта.



 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)