-
Автор темы
- #1
Для привязки нам нужно:
Сайт + База + Луа
Языки использованные в привязке: Lua, PHP.
Либы: MD5
Первым делом создадим таблицы в базе.
users, banned
users - для юзеров и данных
banned - для забанненых.
Дисклеймер: Я не очень силен в PHP, может быть быдлокод.
В banned, создаем значение Ip, тип text
В users, создаем значения code тип int, token, тип text.
Переходим к PHP скриптам:
В 1 скрипте мы генерируем токен доступа:
В этой привязке все работает так - один раз что-то вы неправильно ввели в запрос - ваш айпи заносится в базу, и все.
Тут у нас идут проверки на бан и тд.
Так-же мы наш аргумент кода, декриптуем отнимаем от символов -1 байт.
Дальше мы выводим данные:
В нормальном случае мы выводим верные данные, в остальных ложные и баним.
Ну и при бане тоже выдаем ложные данные.
При верном - криптуем наш токен и переворачиваем.
И выводим его.
Переходим в луа.
Генерируем токен:
Когда мы уже получили токен с помощью token.php
Можно и начать саму проверку привязки и переслать запрос на checked.php
Получаем ответ и сравниваем его со своим.
Вставляем небольшую защиту от хука.
Переходим к checked.php
Опять проверяем на баны и тд и выводим результат.
Дальше зависит от вашей фантазии можете криптовать и че хотите делать.
И да проверку ставьте свою иначе КРЯК
и используйте локальные функции.
Сайт + База + Луа
Языки использованные в привязке: 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
Можно и начать саму проверку привязки и переслать запрос на 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
Код:
$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;
}
Дальше зависит от вашей фантазии можете криптовать и че хотите делать.
И да проверку ставьте свою иначе КРЯК
и используйте локальные функции.