Участник
Знал бы я ещё, как искать по последовательности байтовищешь по последовательности и парсишь уже
02 02 00 00 00 00 ff ff ff ffЗнал бы я ещё, как искать по последовательности байтов
Знал бы я ещё, как искать по последовательности байтов
#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, ¤t, 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;
}
Большое спасибо! У меня тоже заработало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, ¤t, 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..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, ¤t, 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..
Если будет что то отличное от шаблона пинда всему.
У него дизайн не получился (критикуешь - предлагай
динамики не было если б qqqqqq111111 мапнул в память файл и рвашкой ссылался на пароль и логин.
тут нет никакого конкретного поинтера на нулевой индекс пароля или логина(а если и есть, мы не ванги что бы узнать где он находится в бинарнике 3кб)
и тут кстати я дополнительно спрошу с sove .ты как всегда поставил фейспалм на два месседжа не высрав свое мнение.что ж, будь добр оподливиться ниже моего сообщения как ты сделал это в прошлый раз относительно инкапсуляции ;D
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz