Дослідження криптографічних алгоритмів шифрування сигналів
Мета. Моделювання методів шифрування сигналів.
Теоретичні відомості
Із доповненням Arduino Ethernet Shield, можливо під'єднання плати Arduino Diecimila до локальної мережі. Тоді ця плата може слугувати як сервер для оброблення вхідних з'єднань. Для початку роботи необхідно у тілі функції setup() провести ініціалізацію бібліотеки ethernet та мережевих налаштувань:
void setup()
{
Ethernet.begin(mac, ip);
}
Можливий такий синтаксис функції:
Ethernet.begin(mac, ip);
Ethernet.begin(mac, ip, gateway);
Ethernet.begin(mac, ip, gateway, subnet);
де, mac — MAC адреса для пристрою (масив із байт);
ip — IP адреса пристрою (масив із 4 байт);
gateway — IP адреса мережевого шлюзу (масив із 4 байт). Опція: за замовчуванням це пристрій, у якого останній октет установлений у 1.
subnet — маска підмережі (масив із 4 байт). Опція: за замовчуванням установлюється у 255.255.255.0
Приклад:
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
void setup()
{
Ethernet.begin(mac, ip);
}
void loop {}
Для виконання різних функцій необхідно створити екземпляр класу Client або Server.
Синтаксис для Client:
Client(ip, port) — створює клієнта для підключення до вказаної ІР адреси із вказаним портом.
Синтаксис для Server:
Server(port) — створює сервер, який прослуховує вказані порти.
Хід роботи
1. Запустити програму Arduino Environment.
2. Встановити додаток Arduino Ethernet Shield:
Рисунок 10 – Додатковий пристрій для моделювання роботи сервера | Рисунок 11 – Зовнішній вигляд готового макету для моделювання роботи сервера |
2. Увести та проаналізувати такий код (для роботи екземпляра класа Client):
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte server[] = { 64, 233, 187, 99 }; // Google
Client client(server, 80);
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
if (client.connect()) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
3. Увести та проаналізувати такий код (для роботи екземпляра класу Server):
#include <Ethernet.h>
// network configuration. gateway and subnet are optional.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte gateway[] = { 10, 0, 0, 1 };
byte subnet[] = { 255, 255, 0, 0 };
// telnet defaults to port 23
Server server = Server(23);
void setup()
{
// initialize the ethernet device
Ethernet.begin(mac, ip, gateway, subnet);
// start listening for clients
server.begin();
}
void loop()
{
Client client = server.available();
if (client) {
server.write(client.read());
}
}
4. Зробити звіт та надати його викладачу.
Контрольні запитання
1. Описати принцип використання серверів в системах захисту інформації.
2. В чому основна відмінність моделювання дій клієнта від моделювання дій сервера?
3. Яким чином визначається маска мережі в програмі?
4. Описати принцип призначення портів в тексті програми.
Лабораторна робота № 3