Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Взлом как образ мысли Взлом как образ мысли
Интервью с человеком, который, как оказалось, является не только талантливым пентестером в одной из крупных ИБ-компании, но и хакером-ветераном, который уверенными шагами вышел на свет и прикоснулся к истории российской хак-сцены....
Полный гид по накрутке онлайн-голосований Полный гид по накрутке онлайн-голосований
Конкурсы с голосованием привлекают большое количество посетителей, а трафик, как известно, — это деньги. Особый интерес вызывают конкурсы, где за победу предлагаются лакомые призы....

Хакер № 10/03 (58)

Новые проклятия для С-кодеров под Linux

Иван Скляров

Xakep, номер #058, стр. 058-086-2


Также надо отметить понятия физического и логического курсоров. Под физическим курсором понимается курсор, который всегда присутствует в системе, причем в единственном экземпляре. Логические курсоры создаются ncurses. Их может быть несколько, по одному на каждое окно. Перемещением физического курсора управляет функция mvcur. Для того чтобы сделать физический курсор невидимым, используется функция curs_set.

Наша первая программа

По старинной хакерской традиции мы напишем программу, которая посылает этот мир куда подальше (см. листинг). Результаты программы показаны на рис.2.

Листинг fuck.c

#include <curses.h>

#include <string.h>

#define WHEIGHT 5

#define WWIDTH 40

int main () {

WINDOW *my_win;

char *str="FUCK YOU, WORLD!";

initscr();

start_color();

if (has_colors()) {

init_pair(1, COLOR_CYAN, COLOR_RED);

}

my_win=newwin(WHEIGHT, WWIDTH, (LINES-WHEIGHT)/2, (COLS-WWIDTH)/2);

box(my_win, '*', '*');

wbkgd(my_win, COLOR_PAIR(1)|A_BOLD|A_BLINK);

mvwaddstr(my_win, WHEIGHT/2, (WWIDTH-strlen(str))/2, str);

wrefresh(my_win);

endwin();

return 0;

}

Для того чтобы откомпилировать прогу с ncurses, в командной строке надо указать флаг -lncurses. Т.е. для нашей программы будет так: gcc fuck.c -o fuck -lncurses. Рассмотрим по порядку, как работает "fuck.c".

#include <curses.h> - любая программа с ncurses должна включать этот заголовочный файл. Замечу, что должен подключаться именно <curses.h>, а не <ncurses.h>. Впрочем, можно использовать и последний, т.к. он обычно тоже присутствует в системе и является символической ссылкой на файл curses.h. Кроме того, <curses.h> автоматически подключает хедер <stdio.h>, поэтому дополнительно включать <stdio.h> в программу не нужно. В нашу прогу мы еще подключаем хедер <string.h>, т.к. далее будем использовать функции библиотеки обработки строк, а точнее, единственную функцию strlen, определяющую длину строки.

С помощью двух макросов #define мы устанавливаем две именованные константы: высоту и ширину окна, в котором будет наше послание. Т.к. библиотека ncurses работает с символьными терминалами, то она не оперирует таким понятием, как "точка" экрана, и поэтому все длины, высоты и координаты задаются в символах. Понятно, что раз ncurses обходит стороной графический экран, то любые линии можно строить только из символов псевдографики, правда с возможностью смены цвета (в распоряжении имеется всего 8 цветов). Обычный размер экрана в консоли - 80 колонок на 25 линий, но на X-терминалах размеры могут быть любыми.

Назад на стр. 058-086-1  Содержание  Вперед на стр. 058-086-3





Предыдущие номера


    Rambler's Top100