我在我的应用程序中使用PcapDotNet
DLL,获取Wireshark
文件并通过我的网卡播放数据包。
现在我想要做的是将数据包IPv4
地址更改为IPv6
数据包。
所以我使用这个DLL将paccket解析为byte[]
并转换为字符串HEXA:
string hexa = "0030881545830018e7fdaea1080045000034021f40008006e616C0A80001cab11079c29c0077a0804bc8f98dd24e501840fc82b6000041525449434c452033340d0a";
这是我的IPv4
地址(192.168.0.1):
C0A80001
这是从IPv4
转换后的IPv6地址:
fe80:0:0:0:0:0:c0a8:1
在Hexa
:
66-65-38-30-3A-30-3A-30-3A-30-3A-30-3A-30-3A-63-30-61-38-3A-31
public static string StirngToHexa(string str)
{
byte[] ba = Encoding.Default.GetBytes(str);
string hexString = BitConverter.ToString(ba);
return hexString;
}
public static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
.ToArray();
}
所以我用IPv4
替换IPv6
(没有' - '),构建新数据包并播放此数据包。
问题是,在播放此数据包并检查vei Wireshark
结果后,数据包IP就像58.48.58.48
而不是IPv6一样奇怪。
我做错了吗?