1
0
mirror of https://github.com/rofl0r/proxychains-ng synced 2025-01-02 01:12:52 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Gijs Hollestelle
a79447dd42
Merge 3ab15aa05c into 1760c93474 2024-12-13 22:59:56 -06:00
rofl0r
1760c93474 core: use string instead of compound literal
fixes compilation when memcpy is defined as a function-like macro at
the cost of one more byte used for the unused zero terminator.

closes #578
2024-08-29 09:31:35 +00:00
Gijs Hollestelle
3ab15aa05c Preserve dnat mapping when used with localnet.
This allows using proxychains as a means of just changing the
destination IP and port of network traffic similar to iptables DNAT
without the need for root permissions.

Example usage:

localnet 127.0.0.0/8
dnat 1.1.1.1:1234 127.0.0.1:8123

This will redirect traffic to 1.1.1.1 on port 1234 to 127.0.0.1:8123.
2022-09-14 13:35:36 +02:00
2 changed files with 5 additions and 1 deletions

View File

@ -999,7 +999,7 @@ err_nn:
} else if(!node && !(hints->ai_flags & AI_PASSIVE)) {
af = ((struct sockaddr_in *) &space->sockaddr_space)->sin_family = AF_INET;
memcpy(&((struct sockaddr_in *) &space->sockaddr_space)->sin_addr,
(char[]){127,0,0,1}, 4);
"\177\0\0\1", 4);
}
if(service) mygetservbyname_r(service, NULL, &se_buf, buf, sizeof(buf), &se);

View File

@ -745,6 +745,10 @@ HOOKFUNC(int, connect, int sock, const struct sockaddr *addr, unsigned int len)
if((p_addr_in->s_addr ^ localnet_addr[i].in_addr.s_addr) & localnet_addr[i].in_mask.s_addr)
continue;
}
if (!v6 && dnat) {
memcpy(&((struct sockaddr_in *) addr)->sin_addr, p_addr_in, sizeof(*p_addr_in));
((struct sockaddr_in *) addr)->sin_port = htons(port);
}
PDEBUG("accessing localnet using true_connect\n");
return true_connect(sock, addr, len);
}