• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Чтение и проверка из файла.

  • Автор темы megasasha
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

megasasha

Написал программу на Ассемблере, но вот проблема мне нужно
включить в неё модуль на C++ для Linux. Как это сделать проблем
нет, но я не могу правильно написать на С++ вот такой участок:

Код:

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{


// Тут я обращаюсь к любому файлу типа:

if(fopen("primer.exe", "r"))
{

И ищу в нем строку любую, например "TEST".
Если файл содержит строку "TEST", то работает
условие:

printf( "Содержит\n");

printf( "Не содержит\n");
}


return EXIT_SUCCESS;
}


Где то видел пример, БУКВАЛЬНО В 2 СТРОКИ РЕАЛИЗУЮЩИЙ,
ОДНАКО НАЙТИ НЕ МОГУ.


Код:

FILE *fp;
char str[128];

if((fp=fopen(argv[1], "r")) == NULL)
{
printf("Не удаётся открыть файл.\n");
exit(1);
}

while(!feof(fp))
{
if(fgets(str, 126, fp))
printf("%s", str);
}
fclose(fp);


КТО ПОДСКАЖЕТ КАК ПРОВЕРИТЬ УСЛОВИЕ НАХОЖДЕНИЯ
НУЖНОГО ТЕСТА В СТРОКЕ? ЗАРАНИЕ САПАСИБО!!!


ПРОЩЕ ГОВОРЯ: Блокнот открывает exe файл и в нем можно
искать текст, например отрывок из сообщения, что выводит
программа. Мне нужно тоже самое! Проверить *.exe файл
на наличие некоторого слова.
 
P

pushkin

Вот код:
Код:
#include <stdio.h>
#include <string.h>

int main()
{
FILE *pFile = fopen("test.txt", "rt");
if (!pFile)
{
printf("Could not open file\n");
return -1;
}

char buf[1024];

while (fgets(buf, sizeof(buf)-1, pFile))
{
if (strstr(buf, "test text"))
{
printf("FOUND!!!\n");
break;
}
}

fclose(pFile);

return 0;
}

Программа открывает файл test.txt и ищет в нем текст "test text". Если находит, то выводит на экран "FOUND!!!"
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
pushkin

граничные случаи не обрабатываешь
 
P

pushkin

pushkin

граничные случаи не обрабатываешь

Ты имеешь в виду, что нужно сначала прочитать весь файл в буффер, затем удалить оттуда все переходы на новую строку (или заменить их пробелами), а потом искать? Это, конечно, можно - но у нас цель показать человеку, как это примерно делается, а не писать тут супер устойчивый, крутой алгоритм
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
я совсем о другом. расмотрим такой случай: строка которую ищем не полностью попала в буфер.
 
P

pushkin

С этим абсолютно согласен. Тут уже есть два способа: 1) читать файл целиком в память; 2) написать извращенный алгоритм
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
не такой уж и извращенный, тема очень обсосана, хотя бы у того же Кнута
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!