首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pcap.net C#中更改ip

在pcap.net C#中更改ip
EN

Stack Overflow用户
提问于 2016-02-19 09:33:34
回答 1查看 464关注 0票数 1

我想要一些关于Pcap.net的问题

我找到了这个密码

我尝试在C#中使用以下代码:

代码语言:javascript
复制
private Packet ChangePacketIp(Packet packet, string oldIpAddress, string newIpAddress)
    {
        try
        {
            EthernetLayer ethernet = (EthernetLayer)packet.Ethernet.ExtractLayer();
            IpV4Layer ipV4Layer = (IpV4Layer)packet.Ethernet.IpV4.ExtractLayer();
            DateTime packetTimestamp = packet.Timestamp;

            if (packet.Ethernet.IpV4.Source.ToString() == oldIpAddress)
            {
                ipV4Layer.Source = new IpV4Address(newIpAddress);
                ipV4Layer.HeaderChecksum = null;
            }
            else if (packet.Ethernet.IpV4.Destination.ToString() == oldIpAddress)
            {
                ipV4Layer.CurrentDestination = new IpV4Address(newIpAddress);
                ipV4Layer.HeaderChecksum = null;
            }

            if (packet.Ethernet.IpV4.Protocol == IpV4Protocol.Tcp)
            {
                TcpLayer tcpLayer = (TcpLayer)packet.Ethernet.IpV4.Tcp.ExtractLayer();
                tcpLayer.Checksum = null;
                ILayer payload = packet.Ethernet.IpV4.Tcp.Payload.ExtractLayer();
                return PacketBuilder.Build(packetTimestamp, ethernet, ipV4Layer, tcpLayer, payload);
            }
            else if (packet.Ethernet.IpV4.Protocol == IpV4Protocol.Udp)
            {
                UdpLayer udpLayer = (UdpLayer)packet.Ethernet.IpV4.Udp.ExtractLayer();
                udpLayer.Checksum = null;
                ILayer payload = packet.Ethernet.IpV4.Udp.Payload.ExtractLayer();
                return PacketBuilder.Build(packetTimestamp, ethernet, ipV4Layer, udpLayer, payload);
            }
            else
            {
                return null;
            }


        }
        catch
        {
            return null;
        }

如果我想在按钮事件上使用它,我尝试如下:

代码语言:javascript
复制
ChangePacketIp( xxxxx ,"example","example");

但是我应该用什么来代替xxxxx?

它想要包,但我现在不这么想了

请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-19 19:45:18

试试这个:

代码语言:javascript
复制
    private Packet ChangePacketIp(Packet packet)
    {
            EthernetLayer ethernetLayer = ...

            // Check whether the packet is ipv4 packet.
            if (ethernetLayer.EtherType == EthernetType.IpV4)
            {
                DateTime packetTimestamp = ...
                TransportLayer transportlayer = ...
                ILayer datagramLayer = ...
                IpV4Layer ipV4Layer = ...
                if (packet.Ethernet.IpV4.Source.ToString() == OriginalIpAddress)
                    ipV4Layer.Source = new IpV4Address(NewIpAddress);
                else if (packet.Ethernet.IpV4.Destination.ToString() == OriginalIpAddress)
                    ipV4Layer.CurrentDestination = new IpV4Address(NewIpAddress);
                ipV4Layer.HeaderChecksum = null;

                if (transportlayer == null)
                    return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, datagramLayer);
                else
                {
                    transportlayer.Checksum = null;
                    ILayer payload = packet.Ethernet.IpV4.Transport.Payload.ExtractLayer();
                    return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, transportlayer, payload);
                }
            }
            else
                return packet;
    }

用法:

代码语言:javascript
复制
ChangePacketIp(packet, "1.1.1.1", "2.2.2.2")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35501834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档