CR:MP Mobile Как получить AUTH KEY, Аут кей

Tringer

Новичок
Автор темы
17
5
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R2
  3. 0.3.7-R3
  4. CR-MP 0.3.7
  5. Любая
Кто знает как получить ключ авторизации в мобильном CRMP. Мб. кто знает как переадресовать. Чтобы вместо s30.grnd.gg:5125 заходило на 192.168.100.3:7777?

не удаляйте тему прошу
 

EKPAHHNY_HAGN6ATOP

Тот самый
328
108
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кто знает как получить ключ авторизации в мобильном CRMP. Мб. кто знает как переадресовать. Чтобы вместо s30.grnd.gg:5125 заходило на 192.168.100.3:7777?

не удаляйте тему прошу
Там не только authkey
 

EKPAHHNY_HAGN6ATOP

Тот самый
328
108
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

IlyaFontonov

Активный
243
65
Когда был админом, заходил с обычной ПК сборки (С обычного сампа). grand_clientside.asi текстуры расшифровывает
В сборке никакого обхода нет, тебе доступ дали игры с пк
 
Последнее редактирование:

Tringer

Новичок
Автор темы
17
5
В сборке никакого обхода нет, тебе доступ дали игры с пк
Я нашел ключ авторизации, также

Сделал получения clientjoin и вот что получил (запускал через официальный лаунчер)
log:
[connection] incoming connection: 192.168.100.3:54768 id: 0
iVersion: 4057, byteMod: 1, byteNameLen: 13, NickName: Denis_Cozzens, uiClientChallengeResponse: 6857, byteAuthBSLen: 43, auth_bs: 149C15C7E69314B147D55069C245763C07DD8AB4429, iClientVerLen: 5, ClientVersion: 0.3.7
Byte 0: 167
Byte 1: 133
Byte 2: 147
Byte 3: 0
Byte 4: 0
Byte 5: 0
Byte 6: 101
Byte 7: 121
Byte 8: 74
Byte 9: 104
Byte 10: 98
Byte 11: 71
Byte 12: 99
Byte 13: 105
Byte 14: 79
Byte 15: 105
Byte 16: 74
Byte 17: 73
Byte 18: 85
Byte 19: 122
Byte 20: 73
Byte 21: 49
Byte 22: 78
Byte 23: 105
Byte 24: 73
Byte 25: 115
Byte 26: 73
Byte 27: 110
Byte 28: 82
Byte 29: 53
Byte 30: 99
Byte 31: 67
Byte 32: 73
Byte 33: 54
Byte 34: 73
Byte 35: 107
Byte 36: 112
Byte 37: 88
Byte 38: 86
Byte 39: 67
Byte 40: 74
Byte 41: 57
Byte 42: 46
Byte 43: 101
Byte 44: 121
Byte 45: 74
Byte 46: 112
Byte 47: 90
Byte 48: 67
Byte 49: 73
Byte 50: 54
Byte 51: 77
Byte 52: 106
Byte 53: 85
Byte 54: 119
Byte 55: 78
Byte 56: 68
Byte 57: 73
Byte 58: 120
Byte 59: 77
Byte 60: 84
Byte 61: 69
Byte 62: 115
Byte 63: 73
Byte 64: 109
Byte 65: 108
Byte 66: 104
Byte 67: 100
Byte 68: 67
Byte 69: 73
Byte 70: 54
Byte 71: 77
Byte 72: 84
Byte 73: 99
Byte 74: 48
Byte 75: 79
Byte 76: 68
Byte 77: 103
Byte 78: 119
Byte 79: 77
Byte 80: 106
Byte 81: 73
Byte 82: 53
Byte 83: 78
Byte 84: 67
Byte 85: 119
Byte 86: 105
Byte 87: 90
Byte 88: 88
Byte 89: 104
Byte 90: 119
Byte 91: 73
Byte 92: 106
Byte 93: 111
Byte 94: 120
Byte 95: 78
Byte 96: 122
Byte 97: 81
Byte 98: 52
Byte 99: 79
Byte 100: 68
Byte 101: 103
Byte 102: 52
Byte 103: 78
Byte 104: 106
Byte 105: 107
Byte 106: 48
Byte 107: 102
Byte 108: 81
Byte 109: 46
Byte 110: 76
Byte 111: 71
Byte 112: 90
Byte 113: 108
Byte 114: 77
Byte 115: 117
Byte 116: 106
Byte 117: 118
Byte 118: 104
Byte 119: 79
Byte 120: 73
Byte 121: 122
Byte 122: 120
Byte 123: 88
Byte 124: 114
Byte 125: 65
Byte 126: 78
Byte 127: 98
Byte 128: 89
Byte 129: 83
Byte 130: 113
Byte 131: 68
Byte 132: 52
Byte 133: 45
Byte 134: 106
Byte 135: 118
Byte 136: 98
Byte 137: 106
Byte 138: 116
Byte 139: 52
Byte 140: 66
Byte 141: 45
Byte 142: 85
Byte 143: 106
Byte 144: 108
Byte 145: 70
Byte 146: 52
Byte 147: 115
Byte 148: 82
Byte 149: 85
Byte 150: 73
Byte 151: 107
Byte 152: 77
Byte 153: 16
Byte 154: 0
Byte 155: 0
Byte 156: 0
Byte 157: 57
Byte 158: 56
Byte 159: 101
Byte 160: 99
Byte 161: 97
Byte 162: 54
Byte 163: 48
Byte 164: 101
Byte 165: 52
Byte 166: 99
Byte 167: 100
Byte 168: 48
Byte 169: 101
Byte 170: 50
Byte 171: 57
Byte 172: 49
Byte 173: 104
Byte 174: 16
Byte 175: 0
Byte 176: 0
Byte 177: 144
Byte 178: 8
Byte 179: 154
Byte 180: 25
Byte 181: 23
Byte 182: 24
Byte 183: 24
Byte 184: 22
Byte 185: 179
Byte 186: 185
Byte 187: 48
Byte 188: 183
Byte 189: 50
Byte 190: 22
Byte 191: 154
Byte 192: 25
Byte 193: 23
Byte 194: 24
Byte 195: 24

Вот код который я использовал:
code:
IRPC:25(playerid, BitStream:bs)
{
    new iVersion,
    byteMod,
    byteNameLen,
    NickName[24],
    uiClientChallengeResponse,
    byteAuthBSLen,
    auth_bs[4*16],
    iClientVerLen,
    ClientVersion[30],
    unread_bits,
    unread_bytes,
    int8_values[256];

    BS_ReadValue(bs,
        PR_INT32, iVersion,
        PR_UINT8, byteMod,
        PR_UINT8, byteNameLen,
        PR_STRING, NickName, byteNameLen,
        PR_UINT32, uiClientChallengeResponse,
        PR_UINT8, byteAuthBSLen,
        PR_STRING, auth_bs, byteAuthBSLen,
        PR_UINT8, iClientVerLen,
        PR_STRING, ClientVersion, iClientVerLen
    );

    printf("iVersion: %d, byteMod: %d, byteNameLen: %d, NickName: %s, uiClientChallengeResponse: %d, byteAuthBSLen: %d, auth_bs: %s, iClientVerLen: %d, ClientVersion: %s",
           iVersion, byteMod, byteNameLen, NickName, uiClientChallengeResponse, byteAuthBSLen, auth_bs, iClientVerLen, ClientVersion);

    BS_GetNumberOfUnreadBits(bs, unread_bits);
    unread_bytes = unread_bits / 8;

    for (new i = 0; i < unread_bytes; i++) {
        BS_ReadValue(bs, PR_UINT8, int8_values[i]);
    }

    for (new i = 0; i < unread_bytes; i++) {
        printf("Byte %d: %d", i, int8_values[i]);
    }
}
Расшифровал это как Base64 и получил следующее: {"key":"value"}
Вот что я использовал: eyJrZXkiOiJ2YWx1ZSJ9 (В 16-чной системе)
 
Последнее редактирование:

Substanz

Новичок
6
7
это jwt, причем вообще не полный, после него передаётся андроид айди и другие помои вроде версии

govno:
local bytes = {0x90, 0x08, 0x9A, 0x19, 0x17, 0x18, 0x18, 0x16, 0xB3, 0xB9, 0x30, 0xB7, 0x32, 0x16, 0x9A, 0x19, 0x17, 0x18, 0x18}

function sampev.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, unknown)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt32(bs, 0xFD9)
    raknetBitStreamWriteInt8(bs, 1)
    raknetBitStreamWriteInt8(bs, nickname:len())
    raknetBitStreamWriteString(bs, nickname)
    raknetBitStreamWriteInt32(bs, challengeResponse)
    raknetBitStreamWriteInt8(bs, 43)
    raknetBitStreamWriteString(bs, '149C15C7E69314B147D55069C245763C07DD8AB4429')
    raknetBitStreamWriteInt8(bs, 5)
    raknetBitStreamWriteString(bs, '0.3.7')

    -- new
    raknetBitStreamWriteInt16(bs, 34215) -- grand const
    raknetBitStreamWriteInt32(bs, 147) -- jwt len
    raknetBitStreamWriteString(bs, 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MjUwNDIxMTEsImlhdCI6MTc0ODgwMjI5NCwiZXhwIjoxNzQ4ODg4Njk0fQ.LGZlMujvhOIzxXrANbYSqD4-jvbjt4B-UjlF4sRUIkM')
    raknetBitStreamWriteInt32(bs, 16) -- android id len
    raknetBitStreamWriteString(bs, '98eca60e4cd0e291') -- android id
    raknetBitStreamWriteInt32(bs, 4200) -- version?

    -- xyita???
    for i = 1, 19 do
        raknetBitStreamWriteInt8(bs, bytes[i])
    end


    raknetSendRpcEx(25, bs, 1, 8, 0, false)
    raknetDeleteBitStream(bs)
    return false
end
 
Последнее редактирование:

Tringer

Новичок
Автор темы
17
5
это jwt, причем вообще не полный, после него передаётся андроид айди и другие помои вроде версии

govno:
local bytes = {0x90, 0x08, 0x9A, 0x19, 0x17, 0x18, 0x18, 0x16, 0xB3, 0xB9, 0x30, 0xB7, 0x32, 0x16, 0x9A, 0x19, 0x17, 0x18, 0x18}

function sampev.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, unknown)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt32(bs, 0xFD9)
    raknetBitStreamWriteInt8(bs, 1)
    raknetBitStreamWriteInt8(bs, nickname:len())
    raknetBitStreamWriteString(bs, nickname)
    raknetBitStreamWriteInt32(bs, challengeResponse)
    raknetBitStreamWriteInt8(bs, 43)
    raknetBitStreamWriteString(bs, '149C15C7E69314B147D55069C245763C07DD8AB4429')
    raknetBitStreamWriteInt8(bs, 5)
    raknetBitStreamWriteString(bs, '0.3.7')

    -- new
    raknetBitStreamWriteInt16(bs, 34215) -- grand const
    raknetBitStreamWriteInt32(bs, 147) -- jwt len
    raknetBitStreamWriteString(bs, 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MjUwNDIxMTEsImlhdCI6MTc0ODgwMjI5NCwiZXhwIjoxNzQ4ODg4Njk0fQ.LGZlMujvhOIzxXrANbYSqD4-jvbjt4B-UjlF4sRUIkM')
    raknetBitStreamWriteInt32(bs, 16) -- android id len
    raknetBitStreamWriteString(bs, '98eca60e4cd0e291') -- android id
    raknetBitStreamWriteInt32(bs, 4200) -- version?

    -- xyita???
    for i = 1, 19 do
        raknetBitStreamWriteInt8(bs, bytes[i])
    end


    raknetSendRpcEx(25, bs, 1, 8, 0, false)
    raknetDeleteBitStream(bs)
    return false
end
Не работает. Сам накидал скрипт и с ним заходит. Но есть проблема. Сервер или клиент должны отправить RPC запрос. И если не отправляют то кикает.

lua:
local sampev = require('lib.samp.events')

local authkey = "149C15C7E69314B147D55069C245763C07DD8AB4429"

local extraBytes = {
    167,133,147,0,0,0,101,121,74,104,98,71,99,105,79,105,74,73,85,122,
    73,49,78,105,73,115,73,110,82,53,99,67,73,54,73,107,112,88,86,67,
    74,57,46,101,121,74,112,90,67,73,54,77,106,85,119,78,68,73,120,77,
    84,69,115,73,109,108,104,100,67,73,54,77,84,99,48,79,68,103,119,77,
    106,73,53,78,67,119,105,90,88,104,119,73,106,111,120,78,122,81,52,79,
    68,103,52,78,106,107,48,102,81,46,76,71,90,108,77,117,106,118,104,79,
    73,122,120,88,114,65,78,98,89,83,113,68,52,45,106,118,98,106,116,52,
    66,45,85,106,108,70,52,115,82,85,73,107,77,16,0,0,0,57,56,101,99,
    97,54,48,101,52,99,100,48,101,50,57,49,104,16,0,0,144,8,154,25,23,
    24,24,22,179,185,48,183,50,22,154,25,23,24,24
}

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('{FF00FF}Обход Grand Mobile загружен. Возрадуйтесь!', -1)
    while true do
        wait(0)
    end
end

function sampev.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, challengeResponse2)
    ClientJoin(nickname, challengeResponse, authkey)
    return false
end

function ClientJoin(nickname, challengeResponse, authkey)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt32(bs, 4057)                -- version
    raknetBitStreamWriteInt8(bs, 1)                    -- byteMod
    raknetBitStreamWriteInt8(bs, #nickname)            -- byteNameLen
    raknetBitStreamWriteString(bs, nickname)           -- nickname
    raknetBitStreamWriteInt32(bs, challengeResponse)   -- uiClientChallengeResponse
    raknetBitStreamWriteInt8(bs, #authkey)             -- byteAuthBSLen
    raknetBitStreamWriteString(bs, authkey)            -- auth_bs
    raknetBitStreamWriteInt8(bs, #'0.3.7')             -- iClientVerLen
    raknetBitStreamWriteString(bs, '0.3.7')            -- clientVer

    -- Записываем дополнительные байты
    for i = 1, #extraBytes do
        raknetBitStreamWriteInt8(bs, extraBytes[i])
    end

    raknetSendRpc(25, bs)
    printStringNow('~b~Bypassed', 3000)
end
 

Substanz

Новичок
6
7
Не работает. Сам накидал скрипт и с ним заходит. Но есть проблема. Сервер или клиент должны отправить RPC запрос. И если не отправляют то кикает.

lua:
local sampev = require('lib.samp.events')

local authkey = "149C15C7E69314B147D55069C245763C07DD8AB4429"

local extraBytes = {
    167,133,147,0,0,0,101,121,74,104,98,71,99,105,79,105,74,73,85,122,
    73,49,78,105,73,115,73,110,82,53,99,67,73,54,73,107,112,88,86,67,
    74,57,46,101,121,74,112,90,67,73,54,77,106,85,119,78,68,73,120,77,
    84,69,115,73,109,108,104,100,67,73,54,77,84,99,48,79,68,103,119,77,
    106,73,53,78,67,119,105,90,88,104,119,73,106,111,120,78,122,81,52,79,
    68,103,52,78,106,107,48,102,81,46,76,71,90,108,77,117,106,118,104,79,
    73,122,120,88,114,65,78,98,89,83,113,68,52,45,106,118,98,106,116,52,
    66,45,85,106,108,70,52,115,82,85,73,107,77,16,0,0,0,57,56,101,99,
    97,54,48,101,52,99,100,48,101,50,57,49,104,16,0,0,144,8,154,25,23,
    24,24,22,179,185,48,183,50,22,154,25,23,24,24
}

function main()
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage('{FF00FF}Обход Grand Mobile загружен. Возрадуйтесь!', -1)
    while true do
        wait(0)
    end
end

function sampev.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, challengeResponse2)
    ClientJoin(nickname, challengeResponse, authkey)
    return false
end

function ClientJoin(nickname, challengeResponse, authkey)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt32(bs, 4057)                -- version
    raknetBitStreamWriteInt8(bs, 1)                    -- byteMod
    raknetBitStreamWriteInt8(bs, #nickname)            -- byteNameLen
    raknetBitStreamWriteString(bs, nickname)           -- nickname
    raknetBitStreamWriteInt32(bs, challengeResponse)   -- uiClientChallengeResponse
    raknetBitStreamWriteInt8(bs, #authkey)             -- byteAuthBSLen
    raknetBitStreamWriteString(bs, authkey)            -- auth_bs
    raknetBitStreamWriteInt8(bs, #'0.3.7')             -- iClientVerLen
    raknetBitStreamWriteString(bs, '0.3.7')            -- clientVer

    -- Записываем дополнительные байты
    for i = 1, #extraBytes do
        raknetBitStreamWriteInt8(bs, extraBytes[i])
    end

    raknetSendRpc(25, bs)
    printStringNow('~b~Bypassed', 3000)
end
я же говорю, там кастом пакет клиент шлёт, если тебя кидает и в чат пишется об этом, то клиентджоин ты обошел
 

Tringer

Новичок
Автор темы
17
5
через вайршарк посмотри, там какой-то кастом пакет гранд отправляет
Может быть ты знаешь как на локальном сервере это симулировать? Ибо клиент может шлет кастомные данные?
 

Вложения

  • photo_2025-06-02_20-16-45.jpg
    photo_2025-06-02_20-16-45.jpg
    60.5 KB · Просмотры: 80
  • photo_2025-06-02_20-15-40.jpg
    photo_2025-06-02_20-15-40.jpg
    23.3 KB · Просмотры: 83

Tringer

Новичок
Автор темы
17
5
В общем, я попытался синтезировать Extra_Data. Не получилось. В libgrand.so нашел этот метод:
Код:
void __fastcall buildExtraData(
        int a1,
        int a2,
        int a3,
        char a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int a13,
        int a14,
        int a15,
        int a16,
        int a17,
        int a18,
        int a19,
        int a20,
        int a21,
        int a22,
        int a23,
        int a24,
        int a25,
        int a26,
        int a27,
        int a28,
        int a29,
        int a30,
        int a31,
        int a32,
        int a33,
        int a34,
        int a35,
        int a36,
        int a37,
        int a38,
        int a39,
        int a40,
        int a41,
        int a42,
        int a43,
        unsigned int a44)
{
  unsigned int v48; // r4
  int v49; // r5
  _DWORD *v50; // r7
  unsigned int v51; // r3

  *(_BYTE *)(v49 + a1) = a4;
  *(_BYTE *)(a2 + 23) = v49;
  STACK[0x3BC] = v48;
  *(_WORD *)((char *)&dword_20 + *(unsigned __int8 *)(v48 + 28)) = (_WORD)v50 + 7;
  STACK[0x1F4] = a44;
  v51 = STACK[0x2A4];
  if ( v49 - 7 < 0 )
    __asm { POP             {R1,R2,PC} }
  __asm { STC             p14, c12, [R3,#-0x27C] }
  *v50 = 38;
  v50[1] = v51;
  v50[2] = v49 + 10;
  STACK[0x3F8] = v51;
  JUMPOUT(0x2F2D78);
}
Я его переименовал дабы легче его искать. Кто нибудь может подсказать как синтезировать эти данные?