mirror of
https://github.com/ValdikSS/GoodbyeDPI.git
synced 2024-12-22 14:26:08 +00:00
Handle HTTP redirects within IPv6 Flow Label = 0x00 packets
This commit is contained in:
parent
135c97ae69
commit
50e70ace76
@ -60,16 +60,16 @@ WINSOCK_API_LINKAGE INT WSAAPI inet_pton(INT Family, LPCSTR pStringBuf, PVOID pA
|
|||||||
#define IPID_TEMPLATE "#IPID#"
|
#define IPID_TEMPLATE "#IPID#"
|
||||||
#define FILTER_STRING_TEMPLATE \
|
#define FILTER_STRING_TEMPLATE \
|
||||||
"(tcp and " \
|
"(tcp and " \
|
||||||
"(inbound and (" \
|
"((inbound and (" \
|
||||||
"(" \
|
"(" \
|
||||||
"(" \
|
"(" \
|
||||||
"((ip.Id >= 0x0 and ip.Id <= 0xF) " IPID_TEMPLATE \
|
"(ipv6 or (ip.Id >= 0x0 and ip.Id <= 0xF) " IPID_TEMPLATE \
|
||||||
") and " \
|
") and " \
|
||||||
"tcp.SrcPort == 80 and tcp.Ack" \
|
"tcp.SrcPort == 80 and tcp.Ack" \
|
||||||
") or " \
|
") or " \
|
||||||
"((tcp.SrcPort == 80 or tcp.SrcPort == 443) and tcp.Ack and tcp.Syn)" \
|
"((tcp.SrcPort == 80 or tcp.SrcPort == 443) and tcp.Ack and tcp.Syn)" \
|
||||||
")" \
|
")" \
|
||||||
" and (" DIVERT_NO_LOCALNETSv4_SRC " or " DIVERT_NO_LOCALNETSv6_SRC ")) or " \
|
" and (" DIVERT_NO_LOCALNETSv4_SRC " or " DIVERT_NO_LOCALNETSv6_SRC "))) or " \
|
||||||
"(outbound and " \
|
"(outbound and " \
|
||||||
"(tcp.DstPort == 80 or tcp.DstPort == 443) and tcp.Ack and " \
|
"(tcp.DstPort == 80 or tcp.DstPort == 443) and tcp.Ack and " \
|
||||||
"(" DIVERT_NO_LOCALNETSv4_DST " or " DIVERT_NO_LOCALNETSv6_DST "))" \
|
"(" DIVERT_NO_LOCALNETSv4_DST " or " DIVERT_NO_LOCALNETSv6_DST "))" \
|
||||||
@ -701,9 +701,21 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
/* Drop packets from filter with HTTP 30x Redirect */
|
/* Drop packets from filter with HTTP 30x Redirect */
|
||||||
if (do_passivedpi && is_passivedpi_redirect(packet_data, packet_dataLen)) {
|
if (do_passivedpi && is_passivedpi_redirect(packet_data, packet_dataLen)) {
|
||||||
|
if (packet_v4) {
|
||||||
//printf("Dropping HTTP Redirect packet!\n");
|
//printf("Dropping HTTP Redirect packet!\n");
|
||||||
should_reinject = 0;
|
should_reinject = 0;
|
||||||
}
|
}
|
||||||
|
else if (packet_v6 && WINDIVERT_IPV6HDR_GET_FLOWLABEL(ppIpV6Hdr) == 0x0) {
|
||||||
|
/* Contrary to IPv4 where we get only packets with IP ID 0x0-0xF,
|
||||||
|
* for IPv6 we got all the incoming data packets since we can't
|
||||||
|
* filter them in a driver.
|
||||||
|
*
|
||||||
|
* Handle only IPv6 Flow Label == 0x0 for now
|
||||||
|
*/
|
||||||
|
//printf("Dropping HTTP Redirect packet!\n");
|
||||||
|
should_reinject = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* Handle OUTBOUND packet on port 80, search for Host header */
|
/* Handle OUTBOUND packet on port 80, search for Host header */
|
||||||
else if (addr.Direction == WINDIVERT_DIRECTION_OUTBOUND &&
|
else if (addr.Direction == WINDIVERT_DIRECTION_OUTBOUND &&
|
||||||
|
Loading…
Reference in New Issue
Block a user