Статьи Галерея Форум Чат Файлы HowTo Ссылки Поиск
Текущее время: 18 сен 2019, 12:11




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2004, 13:52 
Понятно спасибо,переделаю,но почему функция не хочет работать нормально,когда ее вызываешь из других?
Еще вопрос: не знаешь, как получить IP адрес коннектещейся к тебе машины.
Мне надо организовать обнаружение DDoS атак, и я думаю сканировать свои порты, и если в один и тот же порт в маленький промежуток времени ломятся куча пакетов с десятка два разных IP, то это DDoS. Ведь по идее так :?:


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2004, 13:56 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2003
Сообщения: 861
Откуда: Минск
Max - по порядку. Избавься от ошибки.
Потом открой другую тему насчёт портов.

Функция делает coredump когда вызываешь из других, потому что
скорее всего стэк другой. А данные возможно разрушены в стеке.
Точнее можно сказать после полной проверки.


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2004, 17:13 
Кстати почему-то никто не сказал, что надо сделать чтобы получить core.

$ ulimit -c 1000000

и будет тебе щастье :)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2004, 19:52 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 30.08.2002
Сообщения: 2339
Откуда: Minsk
можно ещё наверх SIGILL программе навернуть :)

для уверенности

_________________
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 20 май 2004, 23:09 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2003
Сообщения: 861
Откуда: Минск
Max - перепиши всё.

strcat так много. Ну возьми sprintf, или stringstream из C++.
Или почитай книги по языку. А функция где coredump вообще
слишком запутанная. Я пока ожидаю книжку из инета - почитал и
понял что ничего не понял.

memset чего стоит: memset(fileret,sizeof(fileret),0);

Кстати пройди программу в gdb. Честно говоря то что ты написал
совершенно непонятно. Возможно стиль виноват или язык C/C++
незнакомый для тебя (Прога C, комментарии C++), но эту программу
ни один человек без бутылки не поймёт.


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 09:00 
Ошибку я нашел в функции ReadFileInfo, там не инициализировалась i.
С stringstream действительно удобней, спасибо.
Цитата:
memset чего стоит: memset(fileret,sizeof(fileret),0);

Но чем вам memset не нравится.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 11:00 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2003
Сообщения: 861
Откуда: Минск
Max,

А что он у тебя делает? Ответ - ничего.
Ты заполняешь fileret странным символом 0 раз. :-)


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 12:02 
Я просто хочу обнулть массив, не освобождая память.
Как сделать правильно?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 14:12 
Используй bzero - так не ошибешься: bzero(&var, sizeof(var)). В memset можно второй и третий параметры перепутать т.к. они одинакового типа. Stevens рекомендует определять bzero (если ее нет на системе) как макрос использующий memset.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 16:31 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2003
Сообщения: 861
Откуда: Минск
bzero не везде существует.

memset(fileret, 0, sizeof(fileret));
man memset.


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 16:43 
Всем большое спасибо! :)
Не могли бы еще подсказать, где в этом куске ошибка.
Здесь рисуется простое однострочное меню, управляющееся стрелками влево, вправо и ентером, при нажатие на который вызывается функция и выводится ее результат.
Код:
//************Main Module**************//
static void finish(int sig);
int Menu;
static char* MenuStr[10] = {"Система","Версия ПО","Тип входа","Политика паролей","Файловая система","TCP/IP","Сервисы","Аудит","DDoS","Выход (ESC)"};
 static int com;
int main(){
    /* инициализируй свои не относящиеся к curses структуры данных здесь */
Menu = 0;
 
    (void) signal(SIGINT, finish);      /* подготовить прерывания для завершения */

    (void) initscr();      /* инициализировать библиотеку curses */
    keypad(stdscr, TRUE);  /* разрешить преобразование кодов клавиатуры */
    (void) nonl();         /* не делать NL->CR/NL при выводе */
    (void) cbreak();       /* читать один символ за раз, не ждать \n */
    (void) noecho();       /* не показывать ввод */
    if (has_colors())
    {
        start_color();

        /*
         * Простое назначение цветов, часто нужное всем.
         */
        init_pair(1, COLOR_GREEN, COLOR_BLACK);
        init_pair(2, COLOR_MAGENTA, COLOR_BLACK);
      }

    while(1){
        move(0,0);
          int x = 0,y = 0,tx=0,ty=0;
   if(com==27) break;
   switch(com){
   case 260:{
   if(Menu>0) Menu--;
   break;
   }
   case 261:{
        if(Menu<9) Menu++;
   break;
   }
   case 13:{
   clear();
   move(0,0);
   switch(Menu){
   case 0:{
   printw("Информация о системе:\n",ComputerInform());
   getch();
   break;
   }
   
   
   
   
   
   
   
   
   }
   break;
   }}
        color_set(1,NULL);
   //*****draw menu*****///
   for(int i = 0;i<10;i++){
   if(Menu ==i){
    getyx(stdscr,x,y);
    }
   printw("%s",MenuStr[i]);
   getyx(stdscr,tx,ty);
   move(tx,ty+1);
   }
   move(x,y);
   color_set(2,NULL);
   printw("%s",MenuStr[Menu]);
        com = getch();
   clear();
    }

    finish(0);
    return 1;               /* мы закончили */
}

static void finish(int sig)
{
    endwin();

}

Но экран становится черным и ничего не выводится, только надпись, которую я печатаю до этого printw("Text");
Почему?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 21 май 2004, 19:21 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.02.2002
Сообщения: 9760
Откуда: Менск
Max, маны, маны курить! printw пишет символу в структуру типа WINDOW а не на экран. Конкретно - курить man referesh ;)

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
[ All resources are available under GNU GPL ] [ Support ] [ Hosted by DataHata | MyCloud.by ] [ Powered by phpBB® Forum Software © phpBB Group ]

LVEE Winter LVEE Rambler's Top100