LUA скрипт Привязка для вашего скрипта.

Начинающий
Статус
Оффлайн
Регистрация
21 Июн 2020
Сообщения
24
Реакции[?]
6
Поинты[?]
0
Для привязки нам нужно:
Сайт + База + Луа
Языки использованные в привязке: Lua, PHP.

Либы: MD5

Первым делом создадим таблицы в базе.
users, banned
users - для юзеров и данных
banned - для забанненых.

Дисклеймер: Я не очень силен в PHP, может быть быдлокод.

В banned, создаем значение Ip, тип text
В users, создаем значения code тип int, token, тип text.

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


PHP:
 $mysqli = new mysqli("", "", "", "");
  $mysqli->set_charset("utf8");
  function F($str) {
    for ($i = 0; $i < strlen($str); $i++) {
        $str[$i] = chr(ord($str[$i]) + 1);
    }
    return $str;
  }
  function generateRandomString($length) {
    return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
  }
  function bancheck($ips) {
    $mysqli = new mysqli("", "", "", "");
    $mysqli->set_charset("utf8");
    $query = "SELECT * FROM `banned` WHERE ip = '$ips'";
    $sql = mysqli_query($mysqli,$query) or die(mysqli_error());
      if (mysqli_num_rows($sql) > 0) {
        return 1;
      }else{
        return 0;
      }
  }
  function banreal($ips) {
    $mysqli = new mysqli("", "", "", "");
    $mysqli->set_charset("utf8");
    $query = "INSERT INTO `banned` (`ip`) VALUES ('$ips')";
    $sql = mysqli_query($mysqli,$query);
  }
  $ip = $_SERVER['REMOTE_ADDR'];
  $title = generateRandomString(16);
  $aaa = bancheck($ip);
  if ($mysqli->connect_errno){
    echo "base error";
  }
  else {
Тут у нас идут проверки на бан и тд.
Так-же мы наш аргумент кода, декриптуем отнимаем от символов -1 байт.
Дальше мы выводим данные:


PHP:
$s= $_GET["code"];
    $code = _F($s);
    if ( $aaa == 0 ) {
      if (isset($code)) {
        if (strlen($code) < 12) {
          $query = "SELECT * FROM `users` WHERE id = '$code'";
          $sql = mysqli_query($mysqli,$query) or die(mysqli_error());
          if (mysqli_num_rows($sql) > 0) {
                $myrow = mysqli_fetch_array($sql);
                $random = generateRandomString(16);
                $query = "UPDATE users SET token = '$random' WHERE id = '$code'";
                $sql = mysqli_query($mysqli,$query);
                $ky = base64_encode($random);
                echo strrev($ky);
              
          }else{
            banreal($ip);
            $random = generateRandomString(16);
            echo $random;
          }
        }else{
          banreal($ip);
          $random = generateRandomString(16);
          echo $random;
        }
      }
    }else{
      $random = generateRandomString(16);
      echo $random;
    }
  }
В нормальном случае мы выводим верные данные, в остальных ложные и баним.
Ну и при бане тоже выдаем ложные данные.
При верном - криптуем наш токен и переворачиваем.
И выводим его.

Переходим в луа.
Генерируем токен:


code_language.lua:
local function _C(str)
  local res = ''
  for row in string.gmatch(str, '.') do
    res = res .. string.char(
      string.byte(row) - 1
    )
  end
  return res
end

function generate()
  local url = 'сайт ру/token.php?code=' ..  _C(code)
  local dir = getWorkingDirectory() .. '\\carlos777\\token.txt'
  downloadUrlToFile(url, dir)
  local f = io.open(dir, 'rb')
  local data = f:read('*a')
  f:close()
  local token = base64_decode(data:reverse())
  os.remove(getWorkingDirectory() .. '\\carlos777\\token.txt')
  return token
end
Когда мы уже получили токен с помощью token.php
Можно и начать саму проверку привязки и переслать запрос на checked.php


Код:
function check(s, h)
  local url = ('сайт ру/checked.php?code=%s&hash=%s&v=%s', _C(code), hash, t )
  local dir = getWorkingDirectory() .. '\\carlos777\\checked.txt'
  downloadUrlToFile(url, dir)
  local f = io.open(dir, 'rb')
  local data = f:read('*a')
  f:close()
  os.remove(getWorkingDirectory() .. '\\carlos777\\checked.txt')
  return data
end
Получаем ответ и сравниваем его со своим.
Код:
function main()
  repeat wait(0) until isSampAvailable()
  local rand = random(0, 777)
  local hash = md5(rand)
  local signature = md5(hash.reverse(hash))
  local t = generate()
  local b = check(t, hash)
  if signature == b then
    local o = 'aaa'
    -- топ все ок
  else
    -- тут лох
  end
end
Вставляем небольшую защиту от хука.
Код:
if debug.getinfo(2) then
  print('крякер лох')
end
if pcall(string.dump, downloadUrlToFile) then
  print('крякер лох')
end
Переходим к checked.php
Код:
$s = $_GET["code"];
  $code = _F($s);
  $tok = $_GET["v"];
  $rand = generateRandomString(16);
  if ($aaa == 0 ) {
    $query = "SELECT * FROM `users` WHERE id = '$code'";
    $sql = mysqli_query($mysqli,$query) or die(mysqli_error());
    if (mysqli_num_rows($sql) > 0)
    {
      $myrow = mysqli_fetch_array($sql);
      if ( $myrow["token"] == $tok )
      {
        $salt = "carlostopksta";
        $hash = $_GET["h"];
        $signature = md5(strrev($_GET["h"]) . $salt);
        echo $signature;
      }else{
        echo $rand;
      }
    }else{
      echo $rand;
    }
  }else{
    echo $rand;
  }
Опять проверяем на баны и тд и выводим результат.

Дальше зависит от вашей фантазии можете криптовать и че хотите делать.
И да проверку ставьте свою иначе КРЯК
и используйте локальные функции.
 
Забаненный
Статус
Оффлайн
Регистрация
17 Ноя 2020
Сообщения
50
Реакции[?]
9
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Полезно, братка
 
Сверху Снизу