Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/rofl0r/proxychains-ng.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-22fat-binary-m1: use arm64e for dylib, but not for executableHEADmasterrofl0r
according to research done by @malash, the proxychains4 binary itself isn't allowed to use system-internal arm64e mode; but it's possible to add it as a 3rd architecture to the shared library (.dylib), and then even inject it into system binaries like /usr/bin/curl, which didn't work since the introduction of SIP. therefore, we now create the dylib with all 3 archs, but the launcher only with arm64 and x86_64. closes #453
2022-06-11use -Wno-unknown-pragmas if availablerofl0r
this heavily reduces compiler warning spam in build logs.
2022-06-01fix --fat-binary-m1 optionrofl0r
even though the preload library was built correctly, the LDFLAGS set weren't passed to the main proxychains4 binary, resulting in link errors against the fat object files. closes #452
2022-05-19configure: add --fat-binary-m1 for arm64e/x86_64 (M1) fat binaryrofl0r
addresses #451 closes #383
2022-05-15Fix zsh completion file to proxychains4Zenithal
2022-04-13Add zsh completion fileFreed-Wu
2022-04-13using qsort for 4 ints is overkillrofl0r
replace it with custom mini sort routine.
2022-04-12Add hook to close_range function, solves #439. |0!Recolic Keghart
2022-01-25add configure check for non-POSIX compliant getnameinfo signaturerofl0r
- glibc < 2.14 uses "unsigned" instead of "int" for flags - openbsd and freebsd use "size_t" instead of socklen_t for servlen and nodelen, while still using socklen_t for salen. closes #430
2022-01-23release 4.16v4.16rofl0r
2022-01-22proxy_getaddrinfo(): Fill in ai_socktype if requestedVladimir Panteleev
If the application specifies a protocol but not a socket type, normally getaddrinfo will select a corresponding protocol. Mimic this behavior in our implementation of the function as well. We only care about the case we're actually able to proxify (SOCK_STREAM / IPPROTO_TCP). Fixes proxifying pssh.
2022-01-22src/proxychains.conf: Fix typosVladimir Panteleev
2022-01-10main: add more luser-friendly error message when execvp failsrofl0r
closes #423 closes #412
2022-01-03support IPv6 localnetsEero Häkkinen
closes #218
2021-12-17only use -ldl if available (netbsd compilation fix)rofl0r
fixes #416
2021-12-14configure: detect OSX >= 12 and use new dyld hooking methodrofl0r
closes #409
2021-12-14preliminary support for new DYLD hooking method for OSX Montereyrofl0r
there's currently no build system support yet. after ./configure was executed, add -DMONTEREY_HOOKING to CFLAGS/CPPFLAGS in config.mak to activate this. addressing #409 special thanks go to @yicong2007 and @YangshengLu for helping to figure out this new technique.
2021-12-12introduce HOOKFUNC macro to mark all libc hook functionsrofl0r
this is currently a NO-OP, but it's already useful in that it clearly marks our hook functions that override libc. this in preparation of adding support for MacOS 12.0.1 "Monterey", which apparently requires a new dynlinker hooking method.
2021-12-12remove 10 year old workaround for wrong glibc getnameinfo signaturerofl0r
in ce655fdac82ed843b94a1f1a176475e9dbe432c1 the getnameinfo function was factored into a separate TU to prevent its POSIX signature from colliding with GLIBC's wrong prototype. since this has been fixed in GLIBC 10 years ago, it should be safe by now. undoing the workaround has the advantage that all hooked functions are now available in the same place, which is a prerequisite for a change i'm about to commit. if it turns out there's still systems in use that use the old GLIBC version with the wrong prototype, we can add a configure check dealing with it.
2021-12-12update some testcasesrofl0r
2021-10-01configure: fix regression in detecting linker optionsrofl0r
introduced in 83bfa0b61df4803c0c3f94c910d9c25d825c0ed1, the check_link_silent option always returned the result from the rm -f command rather than the result from the compiler. fixes #400
2021-07-24release 4.15v4.15rofl0r
2021-07-23configure: fix check_link_silent and check_compileFabrice Fontaine
Replace -o /dev/null by -o "$tmpc".out in check_link_silent and check_compile otherwise test will fail with some bugged binutils (https://sourceware.org/bugzilla/show_bug.cgi?id=19526) since version 4.13 and https://github.com/rofl0r/proxychains-ng/commit/35a674bdbc294730429a1007c9e7ce01e65b49b5: checking what's the option to use in linker to set library name ... cannot find an option to set library name package/pkg-generic.mk:249: recipe for target '/home/buildroot/autobuild/instance-2/output-1/build/proxychains-ng-4.14/.stamp_configured' failed Fixes: - http://autobuild.buildroot.org/results/9320d9b2c69882e23bbe7b30057eb8bee0c9d2e5 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2021-05-19README: freenode -> liberarofl0r
2021-05-14initialize rand seed with nano-second granularityrofl0r
in scenarios where one is to spin up several processes with the same proxy list in random mode, all processes started in the same second would pick the same proxy due to using the same srand() seed. closes #380
2021-04-30configure: check for -pthread vs -lpthread (#379)rofl0r
2021-02-05proxy_getaddrinfo(): debug: print hints->ai_flagsrofl0r
2021-02-05debug.h: print pid in all debug outputrofl0r
2021-02-05test_getaddrinfo: also print port informationrofl0r
2021-01-08fix compiler parentheses warning in dnat coderofl0r
2021-01-08proxychains.conf: fix localnet documentationrofl0r
localnet with hostnames/DNS is not compatible with remote dns - if remote dns is activated we get an ip from the remote dns resolver in the connect() call, so we don't know whether the destination would match any localnet - except from the ANY localnet 0.0.0.0 - in which case we would need to do a real DNS lookup with the remote DNS ip involving both the rdns resolver to get the original hostname back and then call the native DNS resolver function - for which there is only getaddrinfo() when we don't want to support the 5 different gethostbyname_r() variants in existence, or using getaddrinfo(), which in turn requires memory allocation/free() - in other words a huge mess. we also can't easily check in the resolver whether an ANY-destination localnet is enabled and the port matches, because the resolver might only resolve the hostname at this stage, but not the destination port. addressing #358
2020-12-18configure: check first whether C compiler worksrofl0r
closes #353
2020-12-12support 'raw' proxy type (#348)Alexandre Viau
2020-10-29configure: fix typo in fail()rofl0r
2020-10-29configure: add missing function fail()rofl0r
2020-10-28proxy_gethostbyname_old(): fix omission of namebuffer populationrofl0r
2020-10-28proxy_gethostbyname_old(): fix returned address typerofl0r
2020-10-28proxy_gethostbyname_old(): likewise.rofl0r
2020-10-28proxy_gethostbyname(): fix failure to omit DNS lookup for ipv4 addrsrofl0r
gethostbyname() is specified to transform simple numeric ipv4 addresses into their binary form. since proxy_gethostbyname() was used as a backend for all resolver functions, somehow we assumed the check for an ipv4 was done from another site, however this didn't hold true when the caller used gethostbyname() directly. fixes #347
2020-10-28move isnumericipv4() to common.crofl0r
2020-10-26tunnel_to: shrink huge buffer sizerofl0r
the buffer buff was only used for the initial handshake packets, which in all supported protocols are usual less than a 100 bytes, with user/pass and dns name at maximum we'd require 768 bytes, which still leaves us a formidable 256 bytes for the rest of the packet. this fixes a segfault with microsocks which on musl uses tiny thread stack sizes of 8KB.
2020-10-26shrink huge gethostbyname bufferrofl0r
careful analysis has shown that the buffer is only ever used for at most a single hostname, so 256 bytes are sufficient. the huge 8KB buffer caused stack overflow when used with microsocks, which defaults to tiny thread stacks of 8KB with musl libc.
2020-09-24experimental new feature: proxy_dns_daemonrofl0r
since many users complain about issues with modern, ultracomplex clusterfuck software such as chromium, nodejs, etc, i've reconsidered one of my original ideas how to implement remote dns lookup support. instead of having a background thread serving requests via a pipe, the user manually starts a background daemon process before running proxychains, and the two processes then communicate via UDP. this requires much less hacks (like hooking of close() to prevent pipes from getting closed) and doesn't need to call any async-signal unsafe code like malloc(). this means it should be much more compatible than the previous method, however it's not as practical and slightly slower. it's recommended that the proxychains4-daemon runs on localhost, and if you use proxychains-ng a lot you might want to set ip up as a service that starts on boot. a single proxychains4-daemon should theoretically be able to serve many parallel proxychains4 instances, but this has not yet been tested so far. it's also possible to run the daemon on other computers, even over internet, but currently there is no error-checking/ timeout code at all; that means the UDP connection needs to be very stable. the library code used for the daemon sources are from my projects libulz[0] and htab[1], and the server code is loosely based on microsocks[2]. their licenses are all compatible with the GPL. if not otherwise mentioned, they're released for this purpose under the standard proxychains-ng license (see COPYING). [0]: https://github.com/rofl0r/libulz [1]: https://github.com/rofl0r/htab [2]: https://github.com/rofl0r/microsocks
2020-09-23get rid of ip_type.crofl0r
2020-09-21get_chain_data: fix strstr() config parsingrofl0r
using strstr() is a very error-prone way for config parsing. for example if "proxy_dns" is being tested for the line "proxy_dns_old", it would return true. we fix this by removing leading and trailing whitespace from the line to parse and use strcmp/strncmp() instead. the if(1) has been inserted so we can keep the same indentation level and not spam the commit with whitespace changes.
2020-09-21proxy_dns_old: use pipe2 if available, else O_CLOEXECrofl0r
make the old code a little less lame
2020-09-21add support for "proxy_dns_old" to use old 3.1 DNS lookup methodrofl0r
some lamer on IRC by the name of annoner/R3M0RS3/penis was complaining that 3.1 is a lot better than proxychains-ng, because it happens to work with the browser he's interested in. since this wasn't the first time this is requested, let's give this those lamers what they want: lame code!
2020-09-20make sure allocator thread is only used if proxy_dns is requestedrofl0r
2020-09-20initialize allocator thread from get_chain_data if neededrofl0r
since we caved in to demands that it should be possible to allow hostnames in the proxy list section, we now got to deal with the fallout. the code was calling at_get... assuming that the allocator thread is always used.
2020-09-20only start allocator thread if proxy_dns is requestedrofl0r
this should fix problems with programs that do whacky non-async-signal-safe stuff.