Загрузка...

Трафик и его анализ

Тема в разделе C# создана пользователем Finik8 23 окт 2022. 313 просмотров

  1. Finik8
    Finik8 Автор темы 23 окт 2022 1 25 июн 2022
    Всем привет, у меня такая проблемка, нужен анализатор и классификатор трафика, что-то по типу Charles, но хочу сделать сам. Как можно получать трафик компа? Сделал некоторую часть кода, но выходит вот такой результат:

    [IMG]
    из этого мне нужно как-то понять, какой сервис отправляет или принимает эти пакеты.

    Вот код(подскажите, действую в правильном направлении или нужно сделать что-то другое?):


    C#
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using PacketDotNet;
    using SharpPcap;
    using SharpPcap.WinPcap;

    namespace ConsoleTraf
    {
    internal class Program
    {
    CaptureDeviceList dList;
    ICaptureDevice device;
    Thread thread;
    static ICaptureDevice captureDevice;
    static int i = 0;
    static string s = "";

    static void Main(string[] args)
    {

    capture();
    }

    static void capture()
    {
    int x = 0;
    while (x != 9)
    {

    try
    {



    CaptureDeviceList deviceList = CaptureDeviceList.Instance;
    // выбираем первое устройство в спсике (для примера)
    int z = 0;


    double maxByteSum = 0;
    PerformanceCounterCategory performanceCounterCategory = new PerformanceCounterCategory("Network Interface");
    string instance = performanceCounterCategory.GetInstanceNames()[0]; // 1st NIC !
    PerformanceCounter performanceCounterSent = new PerformanceCounter("Network Interface", "Bytes Sent/sec", instance);
    PerformanceCounter performanceCounterReceived = new PerformanceCounter("Network Interface", "Bytes Received/sec", instance);

    for (int i = 0; i < 1000; i++)
    {
    //Console.WriteLine("bytes sent: {0}\tbytes received: {1}", performanceCounterSent.NextValue(), performanceCounterReceived.NextValue());
    if ((double)performanceCounterReceived.NextValue() > maxByteSum)
    {
    maxByteSum = (double)performanceCounterReceived.NextValue();
    }

    Thread.Sleep(10);
    }

    if (maxByteSum > 7000)
    {
    Console.WriteLine("Используется видео-хостинг!");
    Console.WriteLine("Используется видео-хостинг!");
    Console.WriteLine("Используется видео-хостинг!");
    Console.WriteLine("Используется видео-хостинг!");
    Console.WriteLine("Используется видео-хостинг!");
    }

    for (int i = 0; i < 9; i++)
    {
    Console.Write(i + "\n");
    Console.WriteLine(deviceList[i]);
    }
    //foreach (var dev in deviceList)
    //{
    // Console.WriteLine(Convert.ToString(z), dev);
    // z++;
    // //richTextBox1.AppendText(dev.Name);
    // //MessageBox.Show(dev.Name);
    //}

    //for (int i = 0; i < deviceList.Count; i++)
    //{
    captureDevice = deviceList[4];
    // регистрируем событие, которое срабатывает, когда пришел новый пакет
    captureDevice.OnPacketArrival += new PacketArrivalEventHandler(Program_OnPacketArrival);
    // открываем в режиме promiscuous, поддерживается также нормальный режим
    captureDevice.Open(DeviceMode.Promiscuous, 1000);
    // начинаем захват пакетов
    captureDevice.StartCapture();




    //}
    x++;

    }
    catch (ThreadAbortException)
    {
    Thread.ResetAbort();
    captureDevice.Close();
    captureDevice.OnPacketArrival -= new PacketArrivalEventHandler(Program_OnPacketArrival);
    return;
    }
    }
    }

    static void Program_OnPacketArrival(object sender, CaptureEventArgs e)
    {




    // парсинг всего пакета
    Packet packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);

    var ip = packet.Extract<PacketDotNet.IPPacket>();
    string ipInfoTo = Convert.ToString(ip);
    if (ip != null)
    {
    Console.WriteLine("Original IP packet: " + ip.ToString() + "\n");

    }
    var tcp = packet.Extract<PacketDotNet.TcpPacket>();
    string tcpInfo = Convert.ToString(tcp);
    if (tcp != null)
    {
    Console.WriteLine("Original TCP packet: " + tcp.ToString() + "\n");

    }

    var udp = packet.Extract<PacketDotNet.UdpPacket>();
    string udpInfo = Convert.ToString(udp);
    if (udp != null)
    {
    Console.WriteLine("Orig Upd packet: " + udp.ToString() + "\n");
    }

    if (ipInfoTo.Contains("IPv6Packet") && udpInfo != null || udpInfo != "" /*&& ipInfoTo.Contains("TimeToLive=128"*/)
    {
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    Console.WriteLine("Это ТЕЛЕГРАМ!!!");
    }
    if (ipInfoTo.Contains("IPv4Packet") && udpInfo == null || udpInfo == "" && tcpInfo.Contains("SourcePort=443") && ipInfoTo.Contains("SourcePort=443"))
    {
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    Console.WriteLine("Это браузер!!!");
    }
    Console.WriteLine("------------------------------");
    }




    }
    }
     
  2. binance-coin-bnb
    heetsea7
    heetsea7 23 окт 2022 Заблокирован(а) 227 20 мар 2019
    А какая вообще цель этой программы? Почему нельзя определить Telegram по открытым процессам? Зачем через пакеты?
     
    1. Посмотреть предыдущие комментарии (8)
    2. Finik8 Автор темы
    3. Finik8 Автор темы
    4. binance-coin-bnb
      heetsea7
Загрузка...
Top