Skip to content

[한주승] 프로젝트 소개  #3

@jooseung

Description

@jooseung

프로젝트명

  • chmorgan/packetnet

분야 및 한줄 정의

  • 네트워크 패킷을 캡쳐하여 그 구조를 분석하거나 패킷을 구성할 수 있는 Library를 제공한다.

사용언어

  • C#

주요 feature 에 대한 시나리오 1 개 ( 사용법 )

  1. 장치 열기
  2. 네트워크 패킷 캡처
  3. 캡처 패킷 분석.
using System;
using SharpPcap;
using PacketDotNet;

namespace CapturingAndParsingPackets
{
    class MainClass
    {
        // used to stop the capture loop
        private static bool stopCapturing = false;

        public static void Main(string[] args)
        {
            int i = 0;
            var devices = CaptureDeviceList.Instance;

            foreach(var dev in devices)
            {
                Console.WriteLine("{0}) {1} {2}", i, dev.Name, dev.Description);
                i++;
            }

            Console.WriteLine();
            Console.Write("-- Please choose a device to capture: ");
            i = int.Parse( Console.ReadLine() );

            var device = devices[i];

            // Open the device for capturing
            int readTimeoutMilliseconds = 1000;
            device.Open(DeviceMode.Promiscuous, readTimeoutMilliseconds);

            while(stopCapturing == false)
            {
                // Capture a packet
                var rawCapture = device.GetNextPacket();
                
                // Parse the packet
                Packet p = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data);

                // Print the packet
                Console.WriteLine(p.ToString());
            }

            device.Close();
        }
    }
}

총라인수, 폴더구조(depth 2-3), 프로젝트 폴더기준 capture (CLI 기반이면 ls 결과)

  • 총라인수
     263 text files.
     259 unique files.                                          
      48 files ignored.

http://cloc.sourceforge.net v 1.60  T=0.55 s (457.7 files/s, 87371.7 lines/s)
--------------------------------------------------------------------------------
Language                      files          blank        comment           code
--------------------------------------------------------------------------------
C#                              236           5554          13364          24005
XML                               1             87              2           3934
MSBuild scripts                   6              0             14            557
Bourne Again Shell                4             43             35            102
ASP.Net                           3              1              0             26
--------------------------------------------------------------------------------
SUM:                            250           5685          13415          28624
--------------------------------------------------------------------------------
  • 폴더 구조
.
├── ArchitectureNotes
├── Examples
│   ├── CapturingAndParsingPackets
│   ├── CapturingAndParsingWiFiPackets
│   ├── ConstructingPackets
│   ├── ConstructingWiFiPackets
│   ├── SharpPcap.dll
│   ├── SharpPcap.dll.config
│   └── SharpPcap.xml
├── LICENSE
├── PacketDotNet
│   ├── ARPFields.cs
│   ├── ARPOperation.cs
│   ├── ARPPacket.cs
│   ├── ApplicationPacket.cs
│   ├── AssemblyInfo.cs
│   ├── DataLinkPacket.cs
│   ├── DrdaCodepointType.cs
│   ├── DrdaDDMFields.cs
│   ├── DrdaDDMPacket.cs
│   ├── DrdaDDMParameter.cs
│   ├── DrdaPacket.cs
│   ├── EthernetFields.cs
│   ├── EthernetPacket.cs
│   ├── EthernetPacketType.cs
│   ├── ICMPv4Fields.cs
│   ├── ICMPv4Packet.cs
│   ├── ICMPv4TypeCodes.cs
│   ├── ICMPv6Fields.cs
│   ├── ICMPv6Packet.cs
│   ├── ICMPv6Types.cs
│   ├── IGMPMessageType.cs
│   ├── IGMPv2Fields.cs
│   ├── IGMPv2Packet.cs
│   ├── ILogInactive.cs
│   ├── IPProtocolType.cs
│   ├── IPv4Fields.cs
│   ├── IPv4Packet.cs
│   ├── IPv6Fields.cs
│   ├── IPv6Packet.cs
│   ├── Ieee80211
│   ├── Ieee8021QFields.cs
│   ├── Ieee8021QPacket.cs
│   ├── IeeeP8021PPriorities.cs
│   ├── InternetLinkLayerPacket.cs
│   ├── InternetPacket.cs
│   ├── IpPacket.cs
│   ├── IpPort.cs
│   ├── IpVersion.cs
│   ├── LLDP
│   ├── LLDPPacket.cs
│   ├── LSA.cs
│   ├── LSAFields.cs
│   ├── LSAType.cs
│   ├── Libraries
│   ├── LinkLayers.cs
│   ├── LinuxSLLFields.cs
│   ├── LinuxSLLPacket.cs
│   ├── LinuxSLLType.cs
│   ├── MiscUtil
│   ├── NullFields.cs
│   ├── NullPacket.cs
│   ├── NullPacketType.cs
│   ├── OSPFPacket.cs
│   ├── OSPFPacketType.cs
│   ├── OSPFVersion.cs
│   ├── OSPFv2Fields.cs
│   ├── OSPFv2Packet.cs
│   ├── PPPFields.cs
│   ├── PPPPacket.cs
│   ├── PPPProtocol.cs
│   ├── PPPoECode.cs
│   ├── PPPoEFields.cs
│   ├── PPPoEPacket.cs
│   ├── Packet.cs
│   ├── PacketDotNet.csproj
│   ├── PacketOrByteArraySegment.cs
│   ├── PayloadType.cs
│   ├── RawIPPacket.cs
│   ├── RawIPPacketProtocol.cs
│   ├── SessionPacket.cs
│   ├── StringOutputType.cs
│   ├── Tcp
│   ├── TcpFields.cs
│   ├── TcpPacket.cs
│   ├── TransportPacket.cs
│   ├── UdpFields.cs
│   ├── UdpPacket.cs
│   ├── Utils
│   └── WakeOnLanPacket.cs
├── PacketDotNet.nuspec
├── PacketNet.slnArchitectureNotes  LICENSE       PacketDotNet.nuspec  README.md  Test
Examples           PacketDotNet  PacketNet.sln        Scripts

├── README.md
├── Scripts
│   ├── Common
│   ├── ReleaseProcess
│   ├── build_release
│   ├── generate_release_notes
│   ├── make_bin_release
│   └── make_src_release
└── Test
    ├── ByteSetupMethods.cs
    ├── CaptureFiles
    ├── LoggingConfiguration.cs
    ├── Misc
    ├── NUnitSetupClass.cs
    ├── PacketType
    ├── Performance
    ├── Rate.cs
    ├── '''Test.csproj
    ├── lib
    └── log4net.config

  • 프로젝트 캡처
ArchitectureNotes  LICENSE       PacketDotNet.nuspec  README.md  Test
Examples           PacketDotNet  PacketNet.sln        Scripts

개발 및 테스트 환경 구성 : IDE 및 편집기와 debugging 툴 세팅

  • Visual Studio 2013 사용.

컴파일 / 실행 테스트 : “hello world” 및 임의 내용 포함 테스트

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions