Skip to content

Commit 9f9cbce

Browse files
committed
简化packet修改
1 parent 7c20397 commit 9f9cbce

2 files changed

Lines changed: 8 additions & 29 deletions

File tree

FastGithub.PacketIntercept/Dns/DnsInterceptor.cs

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -119,38 +119,17 @@ unsafe private void ModifyDnsPacket(WinDivertPacket packet, WinDivertAddress add
119119
var loopback = question.Type == RecordType.A ? IPAddress.Loopback : IPAddress.IPv6Loopback;
120120
var record = new IPAddressResourceRecord(domain, loopback, this.ttl);
121121
response.AnswerRecords.Add(record);
122-
var responsePayload = response.ToArray();
123122

124-
// 修改payload和包长
125-
packet.GetWriter(packet.Length - result.DataLength).Write(responsePayload);
123+
// 修改payload
124+
var writer = packet.GetWriter(packet.Length - result.DataLength);
125+
writer.Write(response.ToArray());
126126

127-
// 修改ip包
128-
IPAddress destAddress;
129-
if (result.IPV4Header != null)
130-
{
131-
destAddress = result.IPV4Header->DstAddr;
132-
result.IPV4Header->DstAddr = result.IPV4Header->SrcAddr;
133-
result.IPV4Header->SrcAddr = destAddress;
134-
result.IPV4Header->Length = (ushort)packet.Length;
135-
}
136-
else
137-
{
138-
destAddress = result.IPV6Header->DstAddr;
139-
result.IPV6Header->DstAddr = result.IPV6Header->SrcAddr;
140-
result.IPV6Header->SrcAddr = destAddress;
141-
result.IPV6Header->Length = (ushort)(packet.Length - sizeof(IPV6Header));
142-
}
143-
144-
// 修改udp包
145-
var destPort = result.UdpHeader->DstPort;
146-
result.UdpHeader->DstPort = result.UdpHeader->SrcPort;
147-
result.UdpHeader->SrcPort = destPort;
148-
result.UdpHeader->Length = (ushort)(sizeof(UdpHeader) + responsePayload.Length);
149-
150-
addr.Flags |= WinDivertAddressFlag.Impostor;
151-
packet.CalcOutboundFlag(addr);
127+
packet.ReverseEndPoint();
128+
packet.ApplyLengthToHeaders();
152129
packet.CalcChecksums(addr);
130+
packet.CalcOutboundFlag(addr);
153131

132+
addr.Flags |= WinDivertAddressFlag.Impostor;
154133
this.logger.LogInformation($"{domain}->{loopback}");
155134
}
156135

FastGithub.PacketIntercept/FastGithub.PacketIntercept.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<ItemGroup>
88
<FrameworkReference Include="Microsoft.AspNetCore.App" />
99
<PackageReference Include="DNS" Version="7.0.0" />
10-
<PackageReference Include="WindivertDotnet" Version="1.0.7" />
10+
<PackageReference Include="WindivertDotnet" Version="1.1.0" />
1111
</ItemGroup>
1212

1313
<ItemGroup>

0 commit comments

Comments
 (0)