Форум программистов, компьютерный форум CyberForum.ru

Поиск последовательности в пакете данных - C++

Восстановить пароль Регистрация
 
Кириллььь
0 / 0 / 0
Регистрация: 23.06.2012
Сообщений: 14
29.06.2012, 11:05     Поиск последовательности в пакете данных #1
Имеется файл в формате .sig, содержащий пакеты данных, необходимо в этом пакете обнаружить определенную последовательность символов, подскажите пожалуйста через что подступиться, с чего начать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
29.06.2012, 13:39     Поиск последовательности в пакете данных #2
похожая тема
Поиск FOURCC кода в AVI - файле
Кириллььь
0 / 0 / 0
Регистрация: 23.06.2012
Сообщений: 14
29.06.2012, 21:02  [ТС]     Поиск последовательности в пакете данных #3
Тема похожа но видимо малова-то знаний что бы полностью разобраться в Вашей программе. Приминительно к моей программе не могу сообразить как организовать цикл который находил бы последовательность битов и потом выводил следующую после них последовательность символов ( длинна последовательности изменяется в зависимости от пакета данных)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if (OpenDialog1->Execute())
   {
    DWORD dw;
    HANDLE HHH = CreateFile((OpenDialog1->FileName).c_str(), GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
    FILE *f;
    int len = GetFileSize(HHH,0); // длина файла
    unsigned char *InBuf = new unsigned char[len];// входной массив
    ReadFile (HHH,InBuf,len,&dw,0); //чтение данных в массив
    int DlinaPaketa = 0;
    int Begin = 0;
           do
              {
               DlinaPaketa = InBuf[0+Begin]+256*InBuf[1+Begin];
               Begin = DlinaPaketa+2+Begin;
       // цикл обнаружения
       //
              }
              while (!((Begin+1)>len));
Заранее благодарен
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
30.06.2012, 08:01     Поиск последовательности в пакете данных #4
на стандартном c++ можно так ( если файл достаточно мелкий чтобы влезть в строку )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <string>
#include <fstream>
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::ifstream ifs("in.txt", std::ios::binary);
    if(ifs.is_open())
    {
        std::string sought("two\r\n th"); // что ищем
        std::string s((std::istreambuf_iterator<char>(ifs.rdbuf())), std::istreambuf_iterator<char>());
        std::string::iterator it = std::search(s.begin(), s.end(), sought.begin(), sought.end());
        if(it != s.end())
        {
            std::cout << "Found" << std::endl;
        }
        else
        {
            std::cout << "Not found" << std::endl;
        }
        ifs.close();
    }
    else std::cerr << "Unable to open file" << std::endl;
    return 0;
}
Кириллььь
0 / 0 / 0
Регистрация: 23.06.2012
Сообщений: 14
01.07.2012, 22:29  [ТС]     Поиск последовательности в пакете данных #5
Разобрался в Вашем варианте, к сожалению для данной задачи не подходит, т.к. работа ведется с байтами, вроде получилось реализовать перебирая каждый байт массива. Тем не менее большое спасибо за оказанное внимание и помощь
Yandex
Объявления
01.07.2012, 22:29     Поиск последовательности в пакете данных
Ответ Создать тему
Опции темы

Текущее время: 06:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru