Skip to content

Commit d669d49

Browse files
committed
Debug version
1 parent 6057e27 commit d669d49

5 files changed

Lines changed: 63 additions & 68 deletions

File tree

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ CFLAGS_MAIN=-DLIB_DIR=\"$(libdir)\" -DSYSCONFDIR=\"$(sysconfdir)\" -DDLL_NAME=\"
4444

4545
all: $(ALL_LIBS) $(ALL_TOOLS)
4646

47+
debug: CFLAGS += -D DEBUG
48+
debug: $(ALL_LIBS) $(ALL_TOOLS)
49+
4750
install-config:
4851
install -d $(DESTDIR)/$(sysconfdir)
4952
install $(INSTALL_FLAGS) 644 src/proxybound.conf $(DESTDIR)/$(sysconfdir)/

proxybound

20.1 KB
Binary file not shown.

src/core.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,20 +114,23 @@ typedef int (*connect_t)(int, const struct sockaddr *, socklen_t);
114114
typedef struct hostent* (*gethostbyname_t)(const char *);
115115
typedef int (*freeaddrinfo_t)(struct addrinfo *);
116116
typedef struct hostent *(*gethostbyaddr_t) (const void *, socklen_t, int);
117-
118-
typedef int (*getaddrinfo_t)(const char *, const char *, const struct addrinfo *,
119-
struct addrinfo **);
120-
121-
typedef int (*getnameinfo_t) (const struct sockaddr *, socklen_t, char *,
122-
socklen_t, char *, socklen_t, int);
123-
117+
typedef int (*getaddrinfo_t)(const char *, const char *, const struct addrinfo *, struct addrinfo **);
118+
typedef int (*getnameinfo_t) (const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int);
124119

125120
extern connect_t true_connect;
126121
extern gethostbyname_t true_gethostbyname;
127122
extern getaddrinfo_t true_getaddrinfo;
128123
extern freeaddrinfo_t true_freeaddrinfo;
129124
extern getnameinfo_t true_getnameinfo;
130125
extern gethostbyaddr_t true_gethostbyaddr;
126+
127+
typedef ssize_t (*send_t)(int, const void *, size_t, int);
128+
typedef ssize_t (*sendto_t)(int, const void *, size_t, int, const struct sockaddr, socklen_t);
129+
typedef ssize_t (*sendmsg_t)(int, const struct msghdr, int);
130+
131+
extern send_t true_send;
132+
extern sendto_t true_sendto;
133+
extern sendmsg_t true_sendmsg;
131134

132135
struct gethostbyname_data {
133136
struct hostent hostent_space;

src/debug.h

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/libproxybound.c

Lines changed: 50 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -45,41 +45,17 @@
4545
#define SOCKFAMILY(x) (satosin(x)->sin_family)
4646
#define MAX_CHAIN 512
4747

48-
49-
50-
51-
52-
53-
54-
55-
#include <stdio.h>
56-
#include <stdlib.h>
57-
#include <unistd.h>
58-
#include <dlfcn.h>
59-
#include <sys/types.h>
60-
#include <sys/socket.h>
61-
#include <string.h>
62-
#include <strings.h>
63-
#include <sys/types.h>
64-
#include <netinet/in.h>
65-
#include <arpa/inet.h>
66-
#include <sys/poll.h>
67-
#include <sys/time.h>
68-
#include <pwd.h>
69-
#include <errno.h>
70-
#include <fcntl.h>
71-
#include <stdarg.h>
72-
#include <resolv.h>
73-
74-
75-
7648
connect_t true_connect;
7749
gethostbyname_t true_gethostbyname;
7850
getaddrinfo_t true_getaddrinfo;
7951
freeaddrinfo_t true_freeaddrinfo;
8052
getnameinfo_t true_getnameinfo;
8153
gethostbyaddr_t true_gethostbyaddr;
8254

55+
send_t true_send;
56+
sendto_t true_sendto;
57+
sendmsg_t true_sendmsg;
58+
8359
int tcp_read_time_out;
8460
int tcp_connect_time_out;
8561
chain_type proxybound_ct;
@@ -144,6 +120,10 @@ static void do_init(void) {
144120
SETUP_SYM(freeaddrinfo);
145121
SETUP_SYM(gethostbyaddr);
146122
SETUP_SYM(getnameinfo);
123+
124+
//SETUP_SYM(send);
125+
//SETUP_SYM(sendto);
126+
//SETUP_SYM(sendmsg);
147127

148128
init_l = 1;
149129
}
@@ -198,6 +178,9 @@ static void get_chain_data(proxy_data * pd, unsigned int *proxy_count, chain_typ
198178
char local_in_addr_port[32];
199179
char local_in_addr[32], local_in_port[32], local_netmask[32];
200180
FILE *file = NULL;
181+
182+
//printf("ssssssssss\n");
183+
//dprintf("sssszeezesssssssss\n");
201184

202185
if(proxybound_got_chain_data)
203186
return;
@@ -366,8 +349,19 @@ int connect(int sock, const struct sockaddr *addr, socklen_t len) {
366349
optlen = sizeof(socktype);
367350
getsockopt(sock, SOL_SOCKET, SO_TYPE, &socktype, &optlen);
368351

369-
//if(!(SOCKFAMILY(*addr) == AF_INET && socktype == SOCK_STREAM)) {
370-
if(SOCKFAMILY(*addr) != AF_INET) {
352+
353+
p_addr_in = &((struct sockaddr_in *) addr)->sin_addr;
354+
355+
PDEBUG("aaaaaaaaaaa\n");
356+
for(i = 0; i < num_localnet_addr; i++) {
357+
PDEBUG("eeeeeeeeeeee\n");
358+
if((localnet_addr[i].in_addr.s_addr & localnet_addr[i].netmask.s_addr) == (p_addr_in->s_addr & localnet_addr[i].netmask.s_addr)) {
359+
PDEBUG("bbbbbbbbbbbbbb\n");
360+
}
361+
}
362+
363+
//if(!(SOCKFAMILY(*addr) == AF_INET && socktype == SOCK_STREAM)) {
364+
if((SOCKFAMILY(*addr) != AF_INET) || (socktype != SOCK_STREAM)) {
371365
if (proxybound_allow_leak) {
372366
PDEBUG("allowing unproxified non tcp connect()\n");
373367
return true_connect(sock, addr, len);
@@ -378,7 +372,8 @@ int connect(int sock, const struct sockaddr *addr, socklen_t len) {
378372
}
379373
}
380374

381-
if(socktype != SOCK_STREAM) {
375+
//Rejecting non local udp
376+
/*if (socktype == SOCK_DGRAM){
382377
if (proxybound_allow_leak) {
383378
PDEBUG("allowing unproxified udp connect()\n");
384379
return true_connect(sock, addr, len);
@@ -387,9 +382,11 @@ int connect(int sock, const struct sockaddr *addr, socklen_t len) {
387382
//exit(0);
388383
return -1;
389384
}
390-
}
385+
}*/
386+
387+
388+
391389

392-
p_addr_in = &((struct sockaddr_in *) addr)->sin_addr;
393390
port = ntohs(((struct sockaddr_in *) addr)->sin_port);
394391

395392
#ifdef DEBUG
@@ -403,26 +400,13 @@ int connect(int sock, const struct sockaddr *addr, socklen_t len) {
403400
remote_dns_connect = (ntohl(p_addr_in->s_addr) >> 24 == remote_dns_subnet);
404401

405402
for(i = 0; i < num_localnet_addr && !remote_dns_connect; i++) {
406-
if((localnet_addr[i].in_addr.s_addr & localnet_addr[i].netmask.s_addr)
407-
== (p_addr_in->s_addr & localnet_addr[i].netmask.s_addr)) {
403+
if((localnet_addr[i].in_addr.s_addr & localnet_addr[i].netmask.s_addr) == (p_addr_in->s_addr & localnet_addr[i].netmask.s_addr)) {
408404
if(!localnet_addr[i].port || localnet_addr[i].port == port) {
409405
PDEBUG("accessing localnet using true_connect\n");
410406
return true_connect(sock, addr, len);
411407
}
412408
}
413409
}
414-
415-
//Rejecting non local udp
416-
if (socktype == SOCK_DGRAM){
417-
if (proxybound_allow_leak) {
418-
PDEBUG("allowing unproxified udp connect()\n");
419-
return true_connect(sock, addr, len);
420-
} else {
421-
PDEBUG("blocking unproxified udp connect()\n");
422-
//exit(0);
423-
return -1;
424-
}
425-
}
426410

427411
flags = fcntl(sock, F_GETFL, 0);
428412
if(flags & O_NONBLOCK)
@@ -441,6 +425,25 @@ int connect(int sock, const struct sockaddr *addr, socklen_t len) {
441425
return ret;
442426
}
443427

428+
/*
429+
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen) {
430+
return true_sendto(sockfd, buf, len, flags, *dest_addr, addrlen);
431+
//return 0;
432+
}
433+
434+
ssize_t send(int sockfd, const void *buf, size_t len, int flags) {
435+
return true_send(sockfd, buf, len, flags);
436+
//return 0;
437+
}
438+
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags) {
439+
return true_sendmsg(sockfd, *msg, flags);
440+
//return 0;
441+
}*/
442+
443+
//sendmsg
444+
445+
//ssize_t send(int sockfd, const void *buf, size_t len, int flags) {}
446+
444447
//TODO: DNS LEAK: OTHER RESOLVER FUNCTION
445448
//realresinit = dlsym(lib, "res_init");
446449
//realresquery = dlsym(lib, "res_query");
@@ -496,7 +499,6 @@ void freeaddrinfo(struct addrinfo *res) {
496499
return;
497500
}
498501

499-
500502
int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags) {
501503
char ip_buf[16];
502504
int ret = 0;

0 commit comments

Comments
 (0)