Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.38 KB | None | 0 0
  1. <?php
  2. // *************************************************************************
  3. // This file is part of SourceBans++.
  4. //
  5. // Copyright (C) 2014-2016 Sarabveer Singh <me@sarabveer.me>
  6. //
  7. // SourceBans++ is free software: you can redistribute it and/or modify
  8. // it under the terms of the GNU General Public License as published by
  9. // the Free Software Foundation, per version 3 of the License.
  10. //
  11. // SourceBans++ is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. // GNU General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public License
  17. // along with SourceBans++. If not, see <http://www.gnu.org/licenses/>.
  18. //
  19. // This file is based off work covered by the following copyright(s):
  20. //
  21. // SourceBans 1.4.11
  22. // Copyright (C) 2007-2015 SourceBans Team - Part of GameConnect
  23. // Licensed under GNU GPL version 3, or later.
  24. // Page: <http://www.sourcebans.net/> - <https://github.com/GameConnect/sourcebansv1>
  25. //
  26. // *************************************************************************
  27. /**
  28. * SourceBans "Error Connecting()" Debug
  29. * Checks for the ports being forwarded correctly
  30. */
  31.  
  32. /**
  33. * Конфиг
  34. * Смените IP и порт, если хотите протестировать соединение.
  35. */
  36. $serverip = "82.202.249.72";
  37. $serverport = 27015;
  38. $serverrcon = ""; // Указывайте RCON-пароль, если хотите проверить так же возможность управления сервером из веб-панели SourceBans
  39.  
  40.  
  41. /******* Ничего не изменяйте после этой линии *******/
  42. header("Content-Type: text/plain; charset=utf8");
  43.  
  44. if(empty($serverip) || empty($serverport))
  45. die('[-] Не указана информация о сервере. Откройте текстовым редактором этот файл, пропишите в нём IP и порт, сохраните и загрузите обратно на сервер.');
  46.  
  47. echo '[+] SourceBans "DebugConnection()" запущен для сервера ' . $serverip . ':' . $serverport . "\n\n";
  48.  
  49. // Попытаемся установить соединение
  50. echo '[+] Открываю UDP-сокет...'.PHP_EOL;
  51. $sock = @fsockopen("udp://" . $serverip, $serverport, $errno, $errstr, 2);
  52.  
  53. $isBanned = false;
  54.  
  55. if(!$sock)
  56. echo '[-] Ошибка соединения. #' . $errno . ': ' . $errstr . PHP_EOL;
  57. else {
  58. echo '[+] UDP-соединение успешно установлено!'.PHP_EOL;
  59.  
  60. stream_set_timeout($sock, 1);
  61.  
  62. // Попытаемся получить информацию у сервера
  63. echo '[+] Записываю запрос в сокет..'.PHP_EOL;
  64. if(fwrite($sock, "\xFF\xFF\xFF\xFF\x54Source Engine Query\0") === false)
  65. echo '[-] Ошибка записи.'.PHP_EOL;
  66. else {
  67. echo '[+] Запрос успешно записан в сокет. (Это не означает, что с соединением всё в порядке.) Читаю ответ...'.PHP_EOL;
  68. $packet = fread($sock, 1480);
  69.  
  70. if(empty($packet))
  71. echo '[-] Ошибка при получении информации о сервере. Не удаётся прочитать UDP-соединение. Порт заблокирован.'.PHP_EOL;
  72. else {
  73. if(substr($packet, 5, (strpos(substr($packet, 5), "\0")-1)) == "Banned by server") {
  74. printf('[-] Ответ получен, но веб-сервер заблокирован. Удалите блокировку с сервера (removeip %s), и повторите попытку.%s', $_SERVER['SERVER_ADDR'], PHP_EOL);
  75. $isBanned = true;
  76. } else {
  77. $packet = substr($packet, 6);
  78. $hostname = substr($packet, 0, strpos($packet, "\0"));
  79. echo '[+] Ответ получен! Сервер: ' . $hostname . PHP_EOL;
  80. }
  81. }
  82. }
  83. fclose($sock);
  84. }
  85.  
  86. echo PHP_EOL;
  87.  
  88. // Проверим на доступность и записываемость TCP-соединения
  89. echo '[+] Попытка установить TCP-соединение...'.PHP_EOL;
  90. $sock = @fsockopen($serverip, $serverport, $errno, $errstr, 2);
  91. if(!$sock)
  92. echo '[-] Ошибка соединения. #' . $errno . ': ' . $errstr . PHP_EOL;
  93. else
  94. {
  95. echo '[+] TCP-соединение успешно установлено!'.PHP_EOL;
  96. if(empty($serverrcon))
  97. echo '[o] Прерываю работу. RCON-пароль не установлен.';
  98. else if($isBanned)
  99. echo '[o] Прерываю работу. Сервер находится в блокировке.';
  100. else {
  101. stream_set_timeout($sock, 2);
  102. $data = pack("VV", 0, 03) . $serverrcon . chr(0) . '' . chr(0);
  103. $data = pack("V", strlen($data)) . $data;
  104.  
  105. echo '[+] Пытаюсь записать в TCP-сокет и произвести авторизацию...'.PHP_EOL;
  106.  
  107. if(fwrite($sock, $data, strlen($data)) === false)
  108. echo '[-] Ошибка записи.'.PHP_EOL;
  109. else {
  110. echo '[+] Запрос авторизации успешно записан. Читаю ответ...'.PHP_EOL;
  111. $size = fread($sock, 4);
  112. if(!$size)
  113. echo '[-] Ошибка чтения.'.PHP_EOL;
  114. else {
  115. echo '[+] Ответ получен!'.PHP_EOL;
  116. $size = unpack('V1Size', $size);
  117. $packet = fread($sock, $size["Size"]);
  118. $size = fread($sock, 4);
  119. $size = unpack('V1Size', $size);
  120. $packet = fread($sock, $size["Size"]);
  121. $ret = unpack("V1ID/V1Reponse/a*S1/a*S2", $packet);
  122. if(empty($ret) || (isset($ret['ID']) && $ret['ID'] == -1))
  123. echo '[-] RCON-пароль задан неверный ;) Не пытайтесь и дальше производить попытки, иначе ваш веб-сервер "улетит" в бан.';
  124. else
  125. echo '[+] Пароль задан правильно!';
  126. }
  127. }
  128. }
  129. fclose($sock);
  130. }
  131. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement