Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Читать онлайн Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 112 113 114 115 116 117 118 119 120 ... 150
Перейти на страницу:

Таблица 7.1. Правила фаззификации, позволяющие преобразовать входные переменные в выходные

Мы использовали общий метод минимакса, показанный на рис. 7.34, чтобы получить значения членства для выходных переменных. То есть наибольшее из значений членства входных функций отображается в соответствующей выходной функции. Если после применения всех правил, и выходная функция имеет более одного значения, то для выходной функции выбирается наименьшее значение. Для дефаззификации выходного значения, все выходные функции и соответствующие значения членства используются, чтобы вычислить центральное выходное значение. Полученные значения выходных функций функций (показанные на оси X рис. 7.33), умножаются на значения членства, вычисленные по девяти правилам, результаты складываются и сумма делится на число членов. Конечное числовое значение и соответствующее сообщение распечатано на экране ЖК дисплее, чтобы сообщить пользователю состояние сеанса. Таким образом, для каждого сеанса, ЖК дисплей высвечивает три числа, характеризующих три типа активности вторжения: атаки на интерактивные сеансы туннелирования, атаки с помощью скриптов и внедрение видео и аудио потоков.

Рис. 7.34. Процедуры передачи членства оценивают, используя метод Минимакса

7.6.6. Обсуждение проекта

В последнее время среди различных систем обнаружения вторжения наибольший интерес проявляется к системе обнаружения атак на туннелирование HTTP. Основной причиной такого внимания служит широкое распространение трафика HTTP в Internet. Большинство брандмейстеров не выполняет обширных проверок, чтобы проверить все атаки на туннелирование HTTP. Такие проверки весьма трудоемки, поскольку трафик HTTP составляет наибольшую часть приходящего и уходящего трафика для любой большой организации.

Микроконтроллерная система может взять на себя часть функций системы обнаружения вторжения, связанных с атаками на туннелирование HTTP. Система использует свойства сессии, чтобы проверить данные трафика Internet, которые составляют сессию Internet — программные связи между двумя компьютерами для передачи данных. Хорошим примером сессии является набор адреса сети в браузере. Ваш компьютер запрашивает сессию у ведущего компьютера, который содержит страницу сети, которая вам необходима. Как только вы закрываете веб-сайт и переходите к другому сайту, вы закрываете одну сессию и запускаете другую.

7.6.7. Программный код

//********************************************************************

// Файл: micro.с

// Функция программы: Устанавливает шесть IDS оценок членства и создает

// оценку опасности вторжения

// Авторы: Даниэль Пак, Барри Муллинз, Стив Барретт

// Дата создания: 17 июня 2004

// Установки: Program=0x1000, Data=0x3000, Stack=0x4000

//********************************************************************

#include <stdio.h>

#include "hcs12dp256.h"

//********************************************************************

//функции поддержки

//====================================================================

// _HC12Setup: выключить сторожевой таймер COP

//====================================================================

void _HC12Setup(void) {

 COPCTL = 0x00; // выключить сторожевой таймер COP

}

//********************************************************************

//delay: подпрограмма задержки

//********************************************************************

void delay(void) { //подпрограмма задержки

 volatile unsigned n, m;

 m = 10;

 do {

  n = 0;

  do {

   n--;

  } while(n);

  m--;

 } while(m);

}

//********************************************************************

// status_wait: время ожидания подпрограмма установки связи с ЖКД

//********************************************************************

void status_wait(void) { //время ожидания подпрограмма установки связи с ЖК дисплеем

 char temp = 0x00;

 DDRA = 0x00;

 PORTB = 0xF9;

 while ((temp & 0x03) != 0x03) {

  PORTB = 0xFF;

  temp = PORTA;

  PORTB = 0xF9;

 }

 PORTB = 0xFF;

 DDRA = 0xFF;

}

//********************************************************************

// command: пересылка команд на ЖК дисплей

//********************************************************************

void command(unsigned char n) { // пересылка команд на ЖК дисплей

 status_wait();

 PORTA = n;

 PORTB = 0xFF;

 PORTB = PORTB & 0xFA;

 PORTB = 0xFF;

}

//********************************************************************

//********************************************************************

//data: пересылка данных на ЖК дисплей

//********************************************************************

void data(unsigned char n) { // пересылка данных на ЖК дисплей

 status_wait();

 PORTA = n;

 PORTB = PORTB & 0xF2;

 PORTB = 0xFF;

}

//********************************************************************

// LCD_char: функция пересылки символа на ЖК дисплей

//********************************************************************

void LCD_char(unsigned char n) {

 // функция пересылки символа на ЖК дисплей

 data(n - 0x20);

 command(0xC0);

}

//********************************************************************

// newline: пересылка новой строки на ЖК дисплей

//********************************************************************

void newline(void) {

 // пересылка новой строки на ЖК дисплей

 int i;

 for (i=0; i<16; i++) LCD_char(' ');

}

//********************************************************************

// LCD_output: пересылка последовательности символов на ЖК дисплей

//********************************************************************

void LCD_output(char s[]) {

 // пересылка последовательности символов на ЖК дисплей

 int n = 0;

 while (s[n] != '') {

  LCD_char(s[n]);

  ++n;

 }

}

//********************************************************************

// Reset_cursor: возврат курсора

//********************************************************************

void Reset_cursor(void) { // возврат курсора

 data(0x00);

 data(0x10);

 command(0x24);

}

//********************************************************************

//Clearscreen: очистка экрана ЖКД

//********************************************************************

void Clearscreen(void) { // очистка экрана ЖКД

 int i,j;

 Reset_cursor();

 for (i=0; i<16; i++) for(j=0; j<16; j++) LCD_char(' ');

 Reset_cursor();

}

//********************************************************************

// Initlcd: инициализация ЖКД

//********************************************************************

void Initlcd(void) { // инициализация ЖКД

 PORTB = 0xEF; //принудительный сброс

 delay();

 PORTB = 0xFF; //все линии команд на высоком уровне

 status_wait();

 command(0x80); // установить режим текста

 data(0x00); // установить младший байт адреса текста (L)

 data(0x10); // установить младший байт адреса текста (H)

 command(0x40); //установить адрес команды текста

 data(0x10); //установить область текста

 data(0x00);

 command(0x41);

 command(0x94); //включить текстовый дисплей

 command(0xA7); //курсор 8×8 позиций

 Clearscreen();

 Reset_cursor();

}

//********************************************************************

// InitMes: начальное сообщение

//********************************************************************

void InitMes(void) { // начальное сообщение

 unsigned char k;

 for(k=0; k<3; k++) newline();

 LCD_output(" Portable HTTP");

 newline();

 LCD_output(" TAD System.");

 newline();

 LCD_output(" version 1.0");

}

//********************************************************************

// numdisplay: отображение чисел на ЖК дисплее

//********************************************************************

void numdisplay(char s) { //отображение чисел на ЖК дисплее

 char k;

 newline();

 k = s;

 s = s>>4;

 if (s > 0x08) data(s + 0x17);

 else data(s + 0x10);

 command(0xC0);

 k = k & 0x0F;

 if (k > 0x08) data(k + 0x17);

 else data(k + 0x10);

 command(0xC0);

}

//********************************************************************

// Секция данных - инициализация табличных данных

//********************************************************************

#pragma abs_address 0x3000

char BeP[12] = {0x00, 0x70, 0x00, 0x10,

1 ... 112 113 114 115 116 117 118 119 120 ... 150
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт.
Комментарии