
5ый семестр / 7. Сети и телекомуникации (сomplete)_1 / SiT / Лабораторная работа 10 / Лабораторная 10
.pdfМинистерство науки и высшего образования РФ
Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Отчет по лабораторной работе №10
Сниффер.
По дисциплине «Сети и телекоммуникации»
Выполнили студенты гр. 438 — 1:
___________ Богачев Р. Е.
___________ Матвиенко Ю. А.
«____» _________ 2021
Проверил доцент каф. АСУ:
___________ Суханов А.Я. «____» _________ 2021
Томск 2021

2
Введение
Основной целью данной лабораторной работы является работы с перехватом сетевых. Любым программам для мониторинга сети, инструментам безопасности необходим перехват сетевых пакетов. Цель работы: Научиться использовать технологии перехвата сетевых пакетов.
1.Задание
Реализовать программу (сниффер) для перехвата пакетов в сети Wi-Fi. Реализовать удобный вывод данных о перехваченном пакете. Подсветка.
2.Листинг программы
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);

3
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);
}
}

4
3.Результаты работы
На рисунке 1 представлен работа сниффера.
Рисунок 1 — работа сниффера

5
Выводы
В результате лабораторной работы был написана программа для перехвата сетевых пакетов внутри локальной сети. Научились использовать технологии перехвата сетевых пакетов, для работы с которой был использован язык C# и библиотека SharpPcap.