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

Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
326
Поинты[?]
12K
1700841412264.png
ну вот, такие же байты есть, ищешь по последовательности и парсишь уже
 
09-29-2022 Thu 18:48:59
Эксперт
Статус
Оффлайн
Регистрация
28 Ноя 2019
Сообщения
1,225
Реакции[?]
413
Поинты[?]
110K
Пользователь
Статус
Оффлайн
Регистрация
26 Окт 2017
Сообщения
520
Реакции[?]
95
Поинты[?]
2K
Знал бы я ещё, как искать по последовательности байтов
02 02 00 00 00 00 ff ff ff ff
ищешь эти байты находишь начало первой последовательности символов ff ff ff ff перед найденным ранее
от неё ищешь 2 отличия от 0 они и будут твоими логин пароль.
По твоим 2 файлам выше работает.
Функу поиска паттернов можешь найти на гите в любом интернал чите для csgo.
Если не силён в этом могу предложить услугу написания. А так всё что нужно тебе сообщил.
 
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
326
Поинты[?]
12K
Знал бы я ещё, как искать по последовательности байтов

C++:
#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 символов - кайф, если нет, закинь другие файлы, гляну
 
Последнее редактирование:
09-29-2022 Thu 18:48:59
Эксперт
Статус
Оффлайн
Регистрация
28 Ноя 2019
Сообщения
1,225
Реакции[?]
413
Поинты[?]
110K
C++:
#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 символов - кайф, если нет, закинь другие файлы, гляну
Большое спасибо! У меня тоже заработало
 
Пользователь
Статус
Оффлайн
Регистрация
26 Окт 2017
Сообщения
520
Реакции[?]
95
Поинты[?]
2K
C++:
#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..
Если будет что то отличное от шаблона пинда всему.
 
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
326
Поинты[?]
12K
Динамики 0..
Если будет что то отличное от шаблона пинда всему.

Если он захочет , перепишет и будет искать отличные от ноля символы до паттерна, я всего лишь накидал пример за 2 минуты без предложения своих услуг в написании таска на который уходит 120 секунд времени :fearscream:
 
эксперт в майнкрафт апи
Read Only
Статус
Оффлайн
Регистрация
25 Янв 2023
Сообщения
676
Реакции[?]
284
Поинты[?]
22K
Динамики 0..
Если будет что то отличное от шаблона пинда всему.
критикуешь - предлагай
динамики не было если б qqqqqq111111 мапнул в память файл и рвашкой ссылался на пароль и логин.
тут нет никакого конкретного поинтера на нулевой индекс пароля или логина(а если и есть, мы не ванги что бы узнать где он находится в бинарнике 3кб)

и тут кстати я дополнительно спрошу с sove .ты как всегда поставил фейспалм на два месседжа не высрав свое мнение.что ж, будь добр оподливиться ниже моего сообщения как ты сделал это в прошлый раз относительно инкапсуляции ;D
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
326
Поинты[?]
12K
критикуешь - предлагай
динамики не было если б qqqqqq111111 мапнул в память файл и рвашкой ссылался на пароль и логин.
тут нет никакого конкретного поинтера на нулевой индекс пароля или логина(а если и есть, мы не ванги что бы узнать где он находится в бинарнике 3кб)

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