Как использовать функцию Disconnect Bug в игре MU online

Автор XBLADE, 2009 Май 16, 22:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlinedisconnect bugзависания в игре

XBLADE

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

Проделать придется следующее: зайти в Mu , выбрать чара на котором макс. лвл ( или же лвл пригодный для ресета ) , появляемся в городе , далее идем на сайт и дисконнектим себя ( из игры Вы не вылетите ) , делаем ресет , затем снова в игру , Вы по прежнему стоите в городе , делаем "Выбор чара" , потом обратно и вуаля , снова 400 лвл , так можно продолжать , пока не надоест , главное не спалиться.  :D


P.S Пробывал на 3 разных серверах , везде сработало.

Удачи... B)

Stela

Интересно и что можно зделать в своих целях? опишыте чо оно хоть делает ?

Vaflan

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

devarg

Цитата: vaflan от 2009 Май 17, 09:03  Вот из-за этого я не люблю и не собираюсь у себя ставить эту функцию на сайте, таким же способом можно дюпать, наваривать зен и так далее...
Советую всем админам убрать эту фигню, иначе у вас будет очень много наделанных, не нужных дел )))
раскажи как зен наваривать,очень надо...

Vaflan

#4
Цитата: devarg от 2009 Май 17, 12:48  раскажи как зен наваривать,очень надо...

Спойлер
Этот баг работает на всех серверах 100%, если есть на сайте Дисконнект и возможность перемищать деньги, то достаточно:
зайти в игру, сделать себе Дисконнект. Потом, заходим на сайте под логином, и перемещаем деньги с чара в банк, или дополнительный банк. После делаем любому чару траде в игре (или Свитч Чара), и на сайте опять у чара появляутся деньги.
[свернуть]

LeGrand

Елементарные знания PHP, подкючить модуль для проверки "Онлайновости" игрока...

Vaflan

Ты о чём? это не избежать!
Этот модуль Дисконект:
Пишет в ДБ что аккаунт Оффлайн,
Кикает с ДжоинСервера,
Но не Кикает с ГамеСервера,
Что позволяет спокойно перемещаться по локации,
И сайт видит что Аккаунт Оффлайн, Если ты хочешь сказать что Елементарные знания PHP тебе помогут... Помоги и нам тогда...

LeGrand

Убрать в "Дисконнектере" функцию
mssql_query("UPDATE MEMB_STAT set connectstat=0 where account='MYACC'");
Получится так, что юзать эту тулзу нельзя когда ты в игре...
Всеголишь надо подумать :О

Vaflan

#8
Может ты  и прав, но всё равно это ДЦ меня не впечатляет, кикал бы он ещё с ГамеСервера, тогда бы без вариантов взял бы...

Everybody

Цитата: LeGrand от 2009 Май 18, 14:28  Убрать в "Дисконнектере" функцию
mssql_query("UPDATE MEMB_STAT set connectstat=0 where account='MYACC'");
Получится так, что юзать эту тулзу нельзя когда ты в игре...
Всеголишь надо подумать :О
А смысл тогда скрипта? Он сделан для того чтоб сбрасывать насильно застрявших персов в игре))

Killbrum

Смысл тупой и тупая куча багов... дело в том что человек когда что то делает плохо относится к работе... я вообще не понимаю зачем дисконект? Не лучше написать что то типа файрволла? Который реально делал бы дисконект и работал нормально? А суть скрипта только в том что он в СКЛ ставит 0... из-за тупых скриптов выходят крёзные баги...

LeGrand

НЕЕЕЕЕЕЕТ!!!!
ПАРНИ ПРОСНИТЕСЬ!
Скрипт посылает пакет в джоинсервер...
Дополнительно, для не возникновения недоразумений от редактирует базу...
Базу редактировать а именно connect_stat, хоть когда, и игрока не выкинет ^^^
Даа, я бы тоже не отказался от кика с ГС
Спойлер
Everybody, че нубишь? :D
[свернуть]

Everybody

...смутило что не проверка WHERE а назначение UPDATE в строке
Цитироватьmssql_query("UPDATE MEMB_STAT set connectstat=0 where account='MYACC'");
Получится так, что юзать эту тулзу нельзя когда ты в игре...

Killbrum

Насколько мне не изменяет память никто с Джоин сервера не кикает... Он попросту закрыт. И кикнуть можно ТОЛЬКО зайдя в сам Джоин и нажав там дисконект... пакет на дц? хм... а это ничего что протоколы меняются? Ну тогда выходит к каждому ГСу надо свой пакет...

З.Ы. просто из-за неких обстоятельств бывают сбои в работе с БД. Каких не знаю, надо думать а мне лень =). так вот... и когда чар выходит то может не записатся в поле онлайн 0. Или что то там такое... после... когда чар заходит прежде всего идет связь с БД. И если там стоит 1 то клиент даже не пытается коннектится и орёт что ацц уже онлайн. По скрипту видно что он просто меняет 1 в 0. И всё! Чтобы клиент попытался зайти. Пытается - заходит.

НЕТУ 100% ДИСКОНЕКТА! Я БЫ ТОГДА ЧЕРЕЗ САЙТ ВСЕМ ДЦ РАЗДАВАЛ!

Vaflan

#14
Немного не верно, там не просто ПХП скрипт который меняет в дб 1 и 0.
Сам посмотри:
<?php
if($_SESSION['user_login'] != 'ok'){ header('Location: index.html'); exit(); }else{
if (isset(
$_POST['dc_start'])){
$user $_SESSION['user_login_name'];

$conn  mssql_connect($muweb['db_host'],$muweb['db_user'],$muweb['db_password'])
or die (
"<h1>Can't connect to database</h1>");
$selected=mssql_select_db($muweb['db_name'], $conn);
mssql_close($conn);


function 
ascii2hex($ascii) {
$hex '';
for (
$i 0$i strlen($ascii); $i++) {
$byte strtoupper(dechex(ord($ascii{$i})));
$byte str_repeat('0'strlen($byte)).$byte;
$hex.=$byte." ";
}
$hex=str_replace(" """$hex);
return 
$hex;
}

function 
hex2ascii($hex){
$ascii='';
$hex=str_replace(" """$hex);
for(
$i=0$i<strlen($hex); $i=$i+2) {
$ascii.=chr(hexdec(substr($hex$i2)));
}
return(
$ascii);
}

function 
dc_user($host$port$user)
{

$mystring "C11405"; // Header packet. I used a packet sniffer to get this packet.It could be different for every gameserver.
$mystring .= ascii2hex($user); // Insert into the packet the username after you convert it to hex first.
$zeros strlen($mystring);
for (
$i;$i<=39-$zeros;$i++){
$mystring .="0"; // The packets must be 40 bits long so we fill the rest of the packet with zeros.
}
$packet hex2ascii($mystring); // Convert the whole string to ascii
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);

if (!
$x = @socket_connect($socket$host$port)) // attempt to connect
{
echo 
"<table width="320" height="44" border="0" cellpadding="0" cellspacing="0" background="".$muweb['images']."/alert_w.png" align="center"<tr>
<td width="
16" rowspan="2"> </td>
<td width="
304" height="24"> </td>
</tr>
<tr>
<td height="
26" valign="top" class="normal_text_white" align="left">Cant connect to server. Its offline</td> </tr> </table>
"
;
}
else
{
socket_write($socket$packetstrlen($packet)); // Send the dc packet
socket_close($socket); // Close connection
print "
<table width="
320" height="44" border="0" cellpadding="0" cellspacing="0" background="".$muweb['images']."/alert_s.png" align="center"<tr>
<td width="
16" rowspan="2"> </td>
<td width="
304" height="24"> </td>
</tr>
<tr>
<td height="
26" valign="top" class="normal_text_white" align="left">Approximately in 10 seconds you can login</td> </tr> </table>
"
;

}

/////////////////////////////////////////////////////////
// This will also delete the entry from the database   //
/////////////////////////////////////////////////////////
$conn  mssql_connect($muweb['db_host'],$muweb['db_user'],$muweb['db_password'])
or die (
"Can't connect to database");
$selected=mssql_select_db($muweb['db_name'], $conn);
$sql mssql_query("UPDATE MEMB_STAT SET ConnectStat ='0' WHERE  memb___id='$user'");
mssql_close($conn);
/////////////////////////////////////////////////////////
}

dc_user($muweb['db_host'], "55970"$user); // Run the function: Connect to port 55970 (Joinserver port) and dc the user. Where $user=username

}
else{
echo 
"
<table class="
rankings-table" width="500" border="0" cellspacing="0" cellpadding="0" align="center">
<thead><tr> <td class="
left">Discconect Account</td></tr></thead>
<tbody><tr> <td class="
even" align="center"><form name="form1" method="post"><br>
<table width="
400" border="0" align="center" cellpadding="0" cellspacing="0">
<tr align="
center">
<td width="
100%">
<INPUT type=hidden value=1 name=dc_start><input class="
button" type="submit" name="Submit" value="Disconnect"></td> </tr>
</table> </form><br></td> </tr></tbody></table>
"
;
}
}
?>
Зачем он тогда соединяется с JoinServer? И для чего вообще этот DC был придуман поясню:
Когда Юзер перемещается в Valley of Loren всё норм, но когда он меняет чара и оставляет другого в Valley of Loren, и потом заходит опять им же, Аккаунт виснет.
Что получается GameServer его выкинул, но не до конца. И в этот момент должен был JoinServer с себя кикнуть его и написать в SQL что он вышел, но он это не делает, так как GameServer кикнул не до конца!
Поэтому и сделали PHP Script что бы если кто, так зависнит, кикал сам себя до конца С JoinServer и DB.

Если я не прав, подправти меня...
Уже бело обсуждения на счёт этого: /index.php?topic=2958.0
Ну если кто сможет написать PHP Script кик с GameServer я буду блогодарен, версию уточнить могу, ну и с PHP немного помогу...

Killbrum

Ну да...

Так я же написал =)
"хм... а это ничего что протоколы меняются? Ну тогда выходит к каждому ГСу надо свой пакет..."
$mystring = "C11405"; // Header packet. I used a packet sniffer to get this packet.It could be[b] different for every gameserver.[/b]
Ну тут даже написали что это НЕ КО ВСЕМ ГСам ! =) Скажем если оно работает на 0.97 то оно уже не будет на 1.02Н и т.д. Меняется ГС, меняется и пакет... Ну версия ГСа =) 08, 16, 18, 32, и ещё какието =)08 это вроде С1, 16 это С2 - начало С3, С18 это Еп2- С4. 32 это вроде самый последний который щас делает ВЗ =).

Я же говорю скрипты это такое =) Помню себя на лосене. Застрял в лорене. Кикнул... а мне пишет что ацц дальше висит... вот тут и явно выражается этот скрипт... То есть оно только записало в БД, а уже ДЦ с ГСа не кинуло =)

Vaflan

Ну а пакет можешь для нас узнать? или хоть для меня если не трудно...
Или расскажите кто знает, как узнать свой пакет. Очень было бы не плохо...

LeGrand

Выж, госпадин Killbrum, сначала пишите, потом думаете...

Цитировать/////////////////////////////////////////////////////////
// This will also delete the entry from the database   //
/////////////////////////////////////////////////////////
Вот что я имел ввиду...

Killbrum

Цитата: vaflan от 2009 Май 19, 11:51  Ну а пакет можешь для нас узнать? или хоть для меня если не трудно...
Или расскажите кто знает, как узнать свой пакет. Очень было бы не плохо...
Ну там написано "Используйте снифер чтобы узнать пакет". Просто я сейчас не успеваю... разве что через месяц, тогда смогу =). Просто тут надо посидеть... а у меня времени нету... курсак, сесии... короче всё подряд =) и с оценками у меня супер )))) так что пардон...
Цитата: LeGrand от 2009 Май 19, 13:57  Выж, госпадин Killbrum, сначала пишите, потом думаете...


Вот что я имел ввиду...
Ееее... пардон мисье =) но...

"Скрипт посылает пакет в джоинсервер..." вот на это я и отвечал ))))

Я и говорил что оно только переписывает ДБ и всё .

"просто из-за неких обстоятельств бывают сбои в работе с БД. Каких не знаю, надо думать а мне лень =). так вот... и когда чар выходит то может не записатся в поле онлайн 0. Или что то там такое... после... когда чар заходит прежде всего идет связь с БД. И если там стоит 1 то клиент даже не пытается коннектится и орёт что ацц уже онлайн. По скрипту видно что он просто меняет 1 в 0. И всё! Чтобы клиент попытался зайти. Пытается - заходит."

Еее...
Я просто что то не понимаю суть вашего поста?

Похожие темы (5)