C++ Нужно прочесть строку из файла по определенным координатам

  • Автор темы Автор темы BFG9k
  • Дата начала Дата начала
1700841412264.png

ну вот, такие же байты есть, ищешь по последовательности и парсишь уже
 
  • Фейспалм
Реакции: sove
Знал бы я ещё, как искать по последовательности байтов
02 02 00 00 00 00 ff ff ff ff
ищешь эти байты находишь начало первой последовательности символов ff ff ff ff перед найденным ранее
от неё ищешь 2 отличия от 0 они и будут твоими логин пароль.
По твоим 2 файлам выше работает.
Функу поиска паттернов можешь найти на гите в любом интернал чите для csgo.
Если не силён в этом могу предложить услугу написания. А так всё что нужно тебе сообщил.
 
Знал бы я ещё, как искать по последовательности байтов


C++:
Expand Collapse Copy
#include <iostream>
#include <vector>
#include <fstream>


int find_pattern( const std::vector<char>& data, std::string pattern )
{
    static auto pattern_to_bytes = [ ]( const char* pattern )
        {
            std::vector<int8_t> bytes{};

            auto start = const_cast< char* >( pattern );
            auto end = const_cast< char* >( pattern ) + strlen( pattern );

            for ( auto current = start; current < end; ++current )
            {
                if ( *current == '?' )
                {
                    ++current;
                    if ( *current == '?' )
                        ++current;
                    bytes.push_back( -1 );
                }
                else
                    bytes.push_back( strtoul( current, &current, 16 ) );
            }
            return bytes;
        };

    auto pattern_bytes = pattern_to_bytes( pattern.data( ) );

    auto data_size = data.size( );
    auto data_ = data.data( );

    auto pattern_size = pattern_bytes.size( );

    for ( int i{ 0 }; i < data_size - pattern_size; ++i )
    {
        bool found = true;

        for ( int j{ 0 }; j < pattern_size; ++j )
        {

            if ( data_[ i + j ] != pattern_bytes[ j ] )
            {
                found = false;
                break;
            }
        }

        if ( found )
            return i;
    }

    return -1;
}

int main( )
{
    std::string file_path = ""; // путь к файлу тут

    std::ifstream stream( file_path, std::ios::binary );

    if ( !stream.is_open( ) )
        return 0;

    stream.seekg( 0, std::ios::end );

    auto file_size = stream.tellg( );

    stream.seekg( 0, std::ios::beg );

    std::vector<char> file_data( file_size );

    stream.read( file_data.data( ), file_size );

    stream.close( );

    int pos_in_file = find_pattern( file_data, "FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02" );

    std::string login( &file_data[ pos_in_file - 48 ] );
    std::string pass( &file_data[ pos_in_file - 16 ] );


    std::cout << "Login : " << login << " Pass : " << pass << std::endl;


    return 0;
}


Костыли, но у меня с 2мя файлами работает

1700845777575.png

1700845789223.png


Других вариантов где длинный пароль не было, если там ограничение в 16 символов - кайф, если нет, закинь другие файлы, гляну
 
Последнее редактирование:
C++:
Expand Collapse Copy
#include <iostream>
#include <vector>
#include <fstream>


int find_pattern( const std::vector<char>& data, std::string pattern )
{
    static auto pattern_to_bytes = [ ]( const char* pattern )
        {
            std::vector<int8_t> bytes{};

            auto start = const_cast< char* >( pattern );
            auto end = const_cast< char* >( pattern ) + strlen( pattern );

            for ( auto current = start; current < end; ++current )
            {
                if ( *current == '?' )
                {
                    ++current;
                    if ( *current == '?' )
                        ++current;
                    bytes.push_back( -1 );
                }
                else
                    bytes.push_back( strtoul( current, &current, 16 ) );
            }
            return bytes;
        };

    auto pattern_bytes = pattern_to_bytes( pattern.data( ) );

    auto data_size = data.size( );
    auto data_ = data.data( );

    auto pattern_size = pattern_bytes.size( );

    for ( int i{ 0 }; i < data_size - pattern_size; ++i )
    {
        bool found = true;

        for ( int j{ 0 }; j < pattern_size; ++j )
        {

            if ( data_[ i + j ] != pattern_bytes[ j ] )
            {
                found = false;
                break;
            }
        }

        if ( found )
            return i;
    }

    return -1;
}

int main( )
{
    std::string file_path = ""; // путь к файлу тут

    std::ifstream stream( file_path, std::ios::binary );

    if ( !stream.is_open( ) )
        return 0;

    stream.seekg( 0, std::ios::end );

    auto file_size = stream.tellg( );

    stream.seekg( 0, std::ios::beg );

    std::vector<char> file_data( file_size );

    stream.read( file_data.data( ), file_size );

    stream.close( );

    int password_pos = find_pattern( file_data, "FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02" );

    std::string login( &file_data[ password_pos - 48 ] );
    std::string pass( &file_data[ password_pos - 16 ] );


    std::cout << "Login : " << login << " Pass : " << pass << std::endl;


    return 0;
}


Костыли, но у меня с 2мя файлами работает

Посмотреть вложение 264469
Посмотреть вложение 264470

Других вариантов где длинный пароль не было, если там ограничение в 16 символов - кайф, если нет, закинь другие файлы, гляну
Большое спасибо! У меня тоже заработало
 
C++:
Expand Collapse Copy
#include <iostream>
#include <vector>
#include <fstream>


int find_pattern( const std::vector<char>& data, std::string pattern )
{
    static auto pattern_to_bytes = [ ]( const char* pattern )
        {
            std::vector<int8_t> bytes{};

            auto start = const_cast< char* >( pattern );
            auto end = const_cast< char* >( pattern ) + strlen( pattern );

            for ( auto current = start; current < end; ++current )
            {
                if ( *current == '?' )
                {
                    ++current;
                    if ( *current == '?' )
                        ++current;
                    bytes.push_back( -1 );
                }
                else
                    bytes.push_back( strtoul( current, &current, 16 ) );
            }
            return bytes;
        };

    auto pattern_bytes = pattern_to_bytes( pattern.data( ) );

    auto data_size = data.size( );
    auto data_ = data.data( );

    auto pattern_size = pattern_bytes.size( );

    for ( int i{ 0 }; i < data_size - pattern_size; ++i )
    {
        bool found = true;

        for ( int j{ 0 }; j < pattern_size; ++j )
        {

            if ( data_[ i + j ] != pattern_bytes[ j ] )
            {
                found = false;
                break;
            }
        }

        if ( found )
            return i;
    }

    return -1;
}

int main( )
{
    std::string file_path = ""; // путь к файлу тут

    std::ifstream stream( file_path, std::ios::binary );

    if ( !stream.is_open( ) )
        return 0;

    stream.seekg( 0, std::ios::end );

    auto file_size = stream.tellg( );

    stream.seekg( 0, std::ios::beg );

    std::vector<char> file_data( file_size );

    stream.read( file_data.data( ), file_size );

    stream.close( );

    int password_pos = find_pattern( file_data, "FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02" );

    std::string login( &file_data[ password_pos - 48 ] );
    std::string pass( &file_data[ password_pos - 16 ] );


    std::cout << "Login : " << login << " Pass : " << pass << std::endl;


    return 0;
}


Костыли, но у меня с 2мя файлами работает

Посмотреть вложение 264469
Посмотреть вложение 264470

Других вариантов где длинный пароль не было, если там ограничение в 16 символов - кайф, если нет, закинь другие файлы, гляну
Динамики 0..
Если будет что то отличное от шаблона пинда всему.
 
Динамики 0..
Если будет что то отличное от шаблона пинда всему.


Если он захочет , перепишет и будет искать отличные от ноля символы до паттерна, я всего лишь накидал пример за 2 минуты без предложения своих услуг в написании таска на который уходит 120 секунд времени :fearscream:
 
Динамики 0..
Если будет что то отличное от шаблона пинда всему.
критикуешь - предлагай
динамики не было если б @invers1on мапнул в память файл и рвашкой ссылался на пароль и логин.
тут нет никакого конкретного поинтера на нулевой индекс пароля или логина(а если и есть, мы не ванги что бы узнать где он находится в бинарнике 3кб)

и тут кстати я дополнительно спрошу с @sove .ты как всегда поставил фейспалм на два месседжа не высрав свое мнение.что ж, будь добр оподливиться ниже моего сообщения как ты сделал это в прошлый раз относительно инкапсуляции ;D
 
Последнее редактирование:
критикуешь - предлагай
динамики не было если б @invers1on мапнул в память файл и рвашкой ссылался на пароль и логин.
тут нет никакого конкретного поинтера на нулевой индекс пароля или логина(а если и есть, мы не ванги что бы узнать где он находится в бинарнике 3кб)

и тут кстати я дополнительно спрошу с @sove .ты как всегда поставил фейспалм на два месседжа не высрав свое мнение.что ж, будь добр оподливиться ниже моего сообщения как ты сделал это в прошлый раз относительно инкапсуляции ;D

У него дизайн не получился (
 
  • Клоун
Реакции: sove
Назад
Сверху Снизу