[Поиск] Программа логина на Стим-сервер

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#1 Сообщение 02.01.2010, 20:42

Была у меня как-то на винте такая прога, но я ее удалил случайно.

Суть программы в следующем - она коннектилась к серверу аутенфикации Стима и проводила там аутенфикацию пользователя.

Сама она написана ни Питоне (python) и входила в состав чего-то большего (уже не помню чего, но там точно была скачка CDR'а и прочие функции).

PS: Сам найти не могу, тк у меня закончился траффик на мобилке, с которой щас и сижу :(
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

MDi93
Сержант
Сержант
Сообщения: 44
Зарегистрирован: 14.04.2009
Контактная информация:

#2 Сообщение 02.01.2010, 20:55

это наподобии чекера стим акков?
Изображение Изображение

proplayer666
Маппер
Маппер
Сообщения: 1748
Зарегистрирован: 18.02.2008
Откуда: <удалено>

#3 Сообщение 02.01.2010, 21:06

MDi93
Обычная аутентификация в акк. Можно использовать как и чекер :)
Завязываю с играми
Мну в Xbox LIVE
Изображение
Изображение
Изображение

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 44 раза
Контактная информация:

#4 Сообщение 02.01.2010, 21:37

andreil, а CFToolbox не пробовал реверсить ?

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#5 Сообщение 02.01.2010, 23:38

АПИМонитор ловит только первые 100 байт, а мне надо словить весь ответ (около 1-3кб), так что надо хитрить.

Сам пробовал написать прогу (идя обратно от сервера) - проваливается (вроде как все правильно работает, но говорит, что пасс неправильный).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
x_000
Полковник
Полковник
Сообщения: 4889
Зарегистрирован: 25.02.2008
Откуда: Deutsches Reich
Благодарил (а): 6 раз
Поблагодарили: 18 раз

#6 Сообщение 03.01.2010, 03:20

andreil
то есть тебе надо реверсировать формат пакета, правильно понимаю? так тогда реверсируй стим.длл %) хотя, конечно, муторно будет

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#7 Сообщение 03.01.2010, 10:03

andreil
в тулбоксе лежит программка CFToolboxBatchAuthenticator, которая получая логин и пароль пробует подключиться, и если получается, то добавляет акк в тулбоксе

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#8 Сообщение 03.01.2010, 12:31

Попробую все....

Добавлено спустя 28 минут 29 секунд:
CFToolBox выдал и на мои старые и только что созданный акки "Authentication error" :(
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Giza
Полковник
Полковник
Сообщения: 1525
Зарегистрирован: 06.02.2008
Благодарил (а): 9 раз
Поблагодарили: 310 раз
Контактная информация:

#9 Сообщение 05.01.2010, 00:12

andreil
может MiSteamSuite? Ток он вроде был на С#

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#10 Сообщение 05.01.2010, 10:09

Giza
При чем тут MiSteam? Он с сетевой частью Steam никоим образом не связан.

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#11 Сообщение 05.01.2010, 18:54

Уже ничего не надо - SteamCooker поделился частью исходного кода CFToolBox'а :)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
Vit_amiN
Супермодератор
Супермодератор
Сообщения: 2509
Зарегистрирован: 01.02.2007
Откуда: Over Old Hills
Благодарил (а): 15 раз
Поблагодарили: 91 раз

#12 Сообщение 05.01.2010, 18:57

Молодца, вытянул-таки))
Изображение

Мои русификаторы и другие полезные файлы здесь
ЗАПОМНИТЕ, ПОИСК — БЛИЖАЙШИЙ ПУТЬ К ИСТИНЕ!

Аватара пользователя
Morpheus
Маппер
Маппер
Сообщения: 183
Зарегистрирован: 23.10.2008
Откуда: λ-Core
Благодарил (а): 1 раз
Поблагодарили: 2 раза
Контактная информация:

#13 Сообщение 06.01.2010, 09:33

Хм, не поделишься?
Когда-то здесь были самодельные карточки достижений, но они канули в лету месте с другими файлами с хостинга. Надеюсь что еще черезпару леьт вернусь сюда и восстановлю их. :)
ИзображениеИзображениеИзображениеИзображение
Изображение

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#14 Сообщение 06.01.2010, 12:53

Дан только кусок кода :)
Но и его хватает. Единственное но - моя прога все равно не пашет :( Что-то там не так, буду пробывать написать на С++.

Код: Выделить всё

    SOCKET socket=connectSocket(authServer);
    if (socket==0) {closesocket(socket); return -10;}
    
    sendSocket(socket,"00 00 00 00 04");
    if (progress) progress->SetPos(1);
    DWORD data[2];
    
    DWORD localIp=reverseBytes(getCurrentIp());
    DWORD loginhash=reverseBytes(jenkinsHash((unsigned char*)login,strlen(login),0));
    
    data[0]=localIp;
    data[1]=loginhash;
    
    sendSafe(socket,(char*)data,8,0);
    localIp=reverseBytes(localIp);
    
    
    int ack=readSocket(socket,1);
    if (progress) progress->SetPos(2);
    if (ack) {closesocket(socket); return -10;}
    
    DWORD externalIp=readSocket(socket,4);
    
    int loginLen=strlen(login);
    
    DWORD packetLen=reverseBytes(5+2*loginLen);
    
    WORD loginLenR=(WORD)reverseBytes(loginLen,2);
    
    sendSafe(socket,(char*)&packetLen,4,0);
    sendSocket(socket,"02");
    sendSafe(socket,(char*)&loginLenR,2,0);
    sendSafe(socket,login,loginLen,0);
    sendSafe(socket,(char*)&loginLenR,2,0);
    sendSafe(socket,login,loginLen,0);
    if (progress) progress->SetPos(3);
    char salt[8];
    recvSafe(socket,salt,8,0);
    if (progress) progress->SetPos(4);
    char aesKey1[16];
    getAesKey1(password, (char*)&salt,aesKey1);
    
    char aesKey2[16];
    getAesKey2(localIp, externalIp, aesKey2);
    
    ULONGLONG timestamp=getNanosecondsSinceTime0();
    
    char plain[16];
    memcpy(plain,(char*)&timestamp,8);
    XOR(plain,aesKey2,8);
    memcpy(plain+8,(char*)&localIp,4);
    memset(plain+12,0x04,4);
    
    char iv[40];
    CSHA1 sha1;
    sha1.Reset();
    sha1.Update((UINT_8 *)&timestamp,8);
    sha1.Final();
    sha1.GetHash((UINT_8 *)iv);
    
    char cypher[16];
    
    CRijndael aes;
    aes.MakeKey(aesKey1, iv, 16, 16);
    aes.ResetChain();
    aes.Encrypt(plain,cypher,16,CRijndael::CBC);    
    
    sendSocket(socket,"00 00 00 24");
    sendSafe(socket,iv,16,0);
    sendSocket(socket,"00 0C 00 10"); // decr / encr sizez
    sendSafe(socket,cypher,16,0);
    if (progress) progress->SetPos(5);
    char ok=1;
    if (recvSafe(socket,&ok,1,0)!=1)
    {
        closesocket(socket);
        return -5; // server closed connection
    }
    
    
    ULONGLONG serverTimestamp=0;
    ULONGLONG clockSkewTolerance=0;
    
    if (recvSafe(socket,(char*)&serverTimestamp,8,0)!=8)
    {
        closesocket(socket);
        return -5; // server closed connection
    }
    if (recvSafe(socket,(char*)&clockSkewTolerance,8,0)!=8)
    {
        closesocket(socket);
        return -5; // server closed connection
    }
 
    if (progress) progress->SetPos(6);
    
    if (ok) {
        closesocket(socket);  
        
        if (ok!=3 && serverTimestamp && clockSkewTolerance)
        { // not officialy a timestamp problem
            // check timestamps
            ULONGLONG delta=0;
 
            if (serverTimestamp>timestamp)
                delta=serverTimestamp-timestamp;
            else
                delta=timestamp-serverTimestamp;
        
            if (delta >= clockSkewTolerance)
            {
                ok=3;
            }
 
            // 1.0.10
            if (serverTimestamp) adjustTime(serverTimestamp);
        }
        return -ok;
    }
 
    // 1.0.10   
    if (serverTimestamp) adjustTime(serverTimestamp);
    /*
    case 4: 
    //Response: The account is disabled. 
    case 3: 
    //Response: Your clock differs too much from the servers time of UTC. 
    case 2: 
    //Response: The account does not exist, or the password that you entered was not correct. 
    case 1: 
    //Response: The account does not exist. 
    case 0: 
    //Response: Login OK 
    */
 
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
Snakeus
Полковник
Полковник
Сообщения: 1213
Зарегистрирован: 03.05.2006
Контактная информация:

#15 Сообщение 06.01.2010, 20:15

Посмотри, тут есть логин steam2/steam3.
Код на C++, все хэдеры в папке Open Steamworks.
http://deadcode.info/svn/filedetails.ph ... 2Fmain.cpp

Проверял, работает.

Ответить