
5ый семестр / 7. Сети и телекомуникации (сomplete)_1 / SiT / Лабораторная работа 10 / Лабораторная 6
.doc
Министерство науки и высшего образования РФ
Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Отчёт по лабораторной работе №6
Сниффер.
По дисциплине «Сети и телекоммуникации»
Выполнили студенты гр. 439 — 4:
___________ Фомин М.А.
«____» _________ 2022
Проверил доцент каф. АСУ:
___________ Суханов А.Я.
«____» _________ 2022
Томск 2022
Введение
Любым программам для мониторинга сети, инструментам безопасности необходим перехват сетевых пакетов. Цель работы: Научиться использовать технологии перехвата сетевых пакетов.
Задание
Реализовать программу (сниффер) для перехвата пакетов в сети Wi-Fi.
Реализовать удобный вывод данных о перехваченном пакете.
Листинг программы
PROGRAM.CS
public class Program
{
public static void Main()
{
var devices = CaptureDeviceList.Instance;
if (devices.Count < 1)
{
Console.WriteLine("Не был обнаружен девайс");
return;
}
var device = devices[4];
device.OnPacketArrival += new PacketArrivalEventHandler(device_OnPacketArrival);
int readTimeoutMilliseconds = 1000;
device.Open(DeviceMode.Promiscuous, readTimeoutMilliseconds);
Console.WriteLine("Нажмите Ctrl+C для выхода...");
device.Capture();
}
private static void device_OnPacketArrival(object sender, CaptureEventArgs e)
{
Packet packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
DateTime time = e.Packet.Timeval.Date;
int len = e.Packet.Data.Length;
ICMPv4Packet icmpPacket = ICMPv4Packet.GetEncapsulated(packet);
TcpPacket tcpPacket = TcpPacket.GetEncapsulated(packet);
IpPacket ipPacket = IpPacket.GetEncapsulated(packet);
string ipTO = ipPacket.SourceAddress.ToString();
string ipFROM = ipPacket.DestinationAddress.ToString();
string portTO;
string portFROM;
string protocol = ipPacket.Protocol.ToString();
string versionProtocol = ipPacket.Version.ToString();
if (protocol == "TCP")
{
portTO = tcpPacket.SourcePort.ToString();
portFROM = tcpPacket.DestinationPort.ToString();
}
else
{
portTO = "None";
portFROM = "None";
}
Console.WriteLine("{0}:{1}:{2} | Packet: {3,4} | {4,15}:{5,-5} => {6,15}:{7,-5} | Protocol: {8,5} Version: {9,5}",
time.Hour, time.Minute, time.Second, len, ipTO, portTO, ipFROM, portFROM, protocol, versionProtocol);
}
}
Результаты работы
На рисунке 1 представлена работа сниффера.
Рисунок 1 — работа сниффера
Выводы
В результате лабораторной работы был написана программа для перехвата сетевых пакетов внутри локальной сети. Научился использовать технологии перехвата сетевых пакетов, для работы с которой был использован язык C# и библиотека SharpPcap.