aboutsummaryrefslogtreecommitdiff
path: root/network
diff options
context:
space:
mode:
authorD Woodfall <dave@slackbuilds.org>2023-05-20 02:50:12 +0100
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2023-05-20 11:17:16 +0700
commita109fd39babe9587e141ba06cc465ff3c0218026 (patch)
tree7bdf9c202508b10605e5eca2835ea4ae850c012e /network
parentf1c979991acd4fe8f5e364d9fa3ade4ca461b0d7 (diff)
network/proxychains-ng: Added (TCP and DNS through proxy server)
Signed-off-by: bedlam <dave@slackbuilds.org> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'network')
-rw-r--r--network/proxychains-ng/0001-Use-proper-library-version-for-libproxychains.patch41
-rw-r--r--network/proxychains-ng/README3
-rw-r--r--network/proxychains-ng/doinst.sh14
-rw-r--r--network/proxychains-ng/proxychains-ng.SlackBuild119
-rw-r--r--network/proxychains-ng/proxychains-ng.info10
-rw-r--r--network/proxychains-ng/renamed-ng.diff439
-rw-r--r--network/proxychains-ng/slack-desc19
7 files changed, 645 insertions, 0 deletions
diff --git a/network/proxychains-ng/0001-Use-proper-library-version-for-libproxychains.patch b/network/proxychains-ng/0001-Use-proper-library-version-for-libproxychains.patch
new file mode 100644
index 0000000000..6350c1346a
--- /dev/null
+++ b/network/proxychains-ng/0001-Use-proper-library-version-for-libproxychains.patch
@@ -0,0 +1,41 @@
+From: Boyuan Yang <byang@debian.org>
+Date: Sun, 15 Aug 2021 13:18:32 -0400
+Subject: Use proper library version for libproxychains
+
+Forwarded: not-needed
+---
+ Makefile | 4 ++--
+ src/proxyresolv | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 7f3f4fa..0524bf8 100644
+--- a/Makefile
++++ b/Makefile
+@@ -37,11 +37,11 @@ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+ SOCKET_LIBS =
+
+-LDSO_SUFFIX = so
++LDSO_SUFFIX = so.4
+ LD_SET_SONAME = -Wl,-soname=
+ INSTALL = ./tools/install.sh
+
+-LDSO_PATHNAME = libproxychains4.$(LDSO_SUFFIX)
++LDSO_PATHNAME = libproxychains.$(LDSO_SUFFIX)
+
+ SHARED_LIBS = $(LDSO_PATHNAME)
+ ALL_LIBS = $(SHARED_LIBS)
+diff --git a/src/proxyresolv b/src/proxyresolv
+index f10a412..fafed7e 100755
+--- a/src/proxyresolv
++++ b/src/proxyresolv
+@@ -12,7 +12,7 @@ if [ $# = 0 ] ; then
+ fi
+
+
+-test -z $LD_PRELOAD && export LD_PRELOAD=libproxychains4.so
++test -z $LD_PRELOAD && export LD_PRELOAD=libproxychains.so.4.0.0
+
+ if type dig 1>/dev/null 2>&1 ; then
+ dig $1 @$DNS_SERVER +tcp | awk '/A.?[0-9]+\.[0-9]+\.[0-9]/{print $5; }'
diff --git a/network/proxychains-ng/README b/network/proxychains-ng/README
new file mode 100644
index 0000000000..b030bb2c35
--- /dev/null
+++ b/network/proxychains-ng/README
@@ -0,0 +1,3 @@
+proxychains-ng is a preloader which hooks calls to sockets in
+dynamically linked programs and redirects it through one or more
+socks/http proxies.
diff --git a/network/proxychains-ng/doinst.sh b/network/proxychains-ng/doinst.sh
new file mode 100644
index 0000000000..bc6e407776
--- /dev/null
+++ b/network/proxychains-ng/doinst.sh
@@ -0,0 +1,14 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/proxychains-ng.conf.new
diff --git a/network/proxychains-ng/proxychains-ng.SlackBuild b/network/proxychains-ng/proxychains-ng.SlackBuild
new file mode 100644
index 0000000000..6c098b4aeb
--- /dev/null
+++ b/network/proxychains-ng/proxychains-ng.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# Slackware build script for "proxychains-ng".
+# 2023-05-20 DW: Renamed from proxychains
+
+# Copyright -2014 GPLeo <slackbuilds@gmail.com>
+# Copyright 2014-2015 Marcel Saegebarth <marc@mos6581.de>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=proxychains-ng
+VERSION=${VERSION:-4.16}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# debian patch for .so -> .so.4
+patch -p1 --verbose < \
+ $CWD/0001-Use-proper-library-version-for-libproxychains.patch
+# add -ng suffix
+patch -p1 --verbose <$CWD/renamed-ng.diff
+make clean
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+make install-config DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mv $PKG/etc/$PRGNAM.conf $PKG/etc/$PRGNAM.conf.new
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS COPYING README TODO VERSION $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/network/proxychains-ng/proxychains-ng.info b/network/proxychains-ng/proxychains-ng.info
new file mode 100644
index 0000000000..23a49d812d
--- /dev/null
+++ b/network/proxychains-ng/proxychains-ng.info
@@ -0,0 +1,10 @@
+PRGNAM="proxychains-ng"
+VERSION="4.16"
+HOMEPAGE="https://github.com/rofl0r/proxychains-ng/"
+DOWNLOAD="https://github.com/rofl0r/proxychains-ng/archive/v4.16/proxychains-ng-4.16.tar.gz"
+MD5SUM="acd5807e89df4cca70270260e85e9373"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="D Woodfall"
+EMAIL="dave@slackbuilds.org"
diff --git a/network/proxychains-ng/renamed-ng.diff b/network/proxychains-ng/renamed-ng.diff
new file mode 100644
index 0000000000..c57319a948
--- /dev/null
+++ b/network/proxychains-ng/renamed-ng.diff
@@ -0,0 +1,439 @@
+diff -Naur a/Makefile c/Makefile
+--- a/Makefile 2022-01-23 14:16:56.000000000 +0000
++++ c/Makefile 2023-05-20 00:57:46.859277054 +0000
+@@ -40,14 +40,14 @@
+ LD_SET_SONAME = -Wl,-soname=
+ INSTALL = ./tools/install.sh
+
+-LDSO_PATHNAME = libproxychains.$(LDSO_SUFFIX)
++LDSO_PATHNAME = libproxychains-ng.$(LDSO_SUFFIX)
+
+ SHARED_LIBS = $(LDSO_PATHNAME)
+ ALL_LIBS = $(SHARED_LIBS)
+-PXCHAINS = proxychains4
+-PXCHAINS_D = proxychains4-daemon
++PXCHAINS = proxychains-ng
++PXCHAINS_D = proxychains-ng-daemon
+ ALL_TOOLS = $(PXCHAINS) $(PXCHAINS_D)
+-ALL_CONFIGS = src/proxychains.conf
++ALL_CONFIGS = src/proxychains-ng.conf
+
+ -include config.mak
+
+diff -Naur a/README c/README
+--- a/README 2022-01-23 14:16:56.000000000 +0000
++++ c/README 2023-05-20 00:54:13.262327679 +0000
+@@ -204,24 +204,24 @@
+ proxychains looks for config file in following order:
+ 1) file listed in environment variable PROXYCHAINS_CONF_FILE or
+ provided as a -f argument to proxychains script or binary.
+-2) ./proxychains.conf
+-3) $(HOME)/.proxychains/proxychains.conf
+-4) $(sysconfdir)/proxychains.conf **
++2) ./proxychains-ng.conf
++3) $(HOME)/.proxychains-ng/proxychains-ng.conf
++4) $(sysconfdir)/proxychains-ng.conf **
+
+-** usually /etc/proxychains.conf
++** usually /etc/proxychains-ng.conf
+
+ Usage Example:
+
+- $ proxychains telnet targethost.com
++ $ proxychains-ng telnet targethost.com
+
+ in this example it will run telnet through proxy(or chained proxies)
+-specified by proxychains.conf
++specified by proxychains-ng.conf
+
+ Usage Example:
+
+- $ proxychains -f /etc/proxychains-other.conf telnet targethost2.com
++ $ proxychains-ng -f /etc/proxychains-other.conf telnet targethost2.com
+
+-in this example it will use different configuration file then proxychains.conf
++in this example it will use different configuration file then proxychains-ng.conf
+ to connect to targethost2.com host.
+
+ Usage Example:
+diff -Naur a/src/common.c c/src/common.c
+--- a/src/common.c 2022-01-23 14:16:56.000000000 +0000
++++ c/src/common.c 2023-05-20 00:51:19.554186687 +0000
+@@ -99,26 +99,26 @@
+ if(check_path(path))
+ goto have;
+
+- // priority 3; $HOME/.proxychains/proxychains.conf
++ // priority 3; $HOME/.proxychains-ng/proxychains-ng.conf
+ path = getenv("HOME");
+- snprintf(pbuf, bufsize, "%s/.proxychains/%s", path, PROXYCHAINS_CONF_FILE);
++ snprintf(pbuf, bufsize, "%s/.proxychains-ng/%s", path, PROXYCHAINS_CONF_FILE);
+ path = pbuf;
+ if(check_path(path))
+ goto have;
+
+- // priority 3b: ~/config/settings/proxychains.conf (for haiku)
++ // priority 3b: ~/config/settings/proxychains-ng.conf (for haiku)
+ path = getenv("HOME");
+ snprintf(pbuf, bufsize, "%s/config/settings/%s", path, PROXYCHAINS_CONF_FILE);
+ path = pbuf;
+ if(check_path(path))
+ goto have;
+
+- // priority 4: $SYSCONFDIR/proxychains.conf
++ // priority 4: $SYSCONFDIR/proxychains-ng.conf
+ path = SYSCONFDIR "/" PROXYCHAINS_CONF_FILE;
+ if(check_path(path))
+ goto have;
+
+- // priority 5: /etc/proxychains.conf
++ // priority 5: /etc/proxychains-ng.conf
+ path = "/etc/" PROXYCHAINS_CONF_FILE;
+ if(check_path(path))
+ goto have;
+diff -Naur a/src/common.h c/src/common.h
+--- a/src/common.h 2022-01-23 14:16:56.000000000 +0000
++++ c/src/common.h 2023-05-20 00:51:22.282173337 +0000
+@@ -3,8 +3,8 @@
+
+ #define PROXYCHAINS_CONF_FILE_ENV_VAR "PROXYCHAINS_CONF_FILE"
+ #define PROXYCHAINS_QUIET_MODE_ENV_VAR "PROXYCHAINS_QUIET_MODE"
+-#define PROXYCHAINS_CONF_FILE "proxychains.conf"
+-#define LOG_PREFIX "[proxychains] "
++#define PROXYCHAINS_CONF_FILE "proxychains-ng.conf"
++#define LOG_PREFIX "[proxychains-ng] "
+ #ifndef SYSCONFDIR
+ #define SYSCONFDIR "/etc"
+ #endif
+diff -Naur a/src/proxychains-ng.conf c/src/proxychains-ng.conf
+--- a/src/proxychains-ng.conf 1970-01-01 00:00:00.000000000 +0000
++++ c/src/proxychains-ng.conf 2023-05-20 00:52:48.484751404 +0000
+@@ -0,0 +1,162 @@
++# proxychains-ng.conf VER 4.x
++#
++# HTTP, SOCKS4a, SOCKS5 tunneling proxifier with DNS.
++
++
++# The option below identifies how the ProxyList is treated.
++# only one option should be uncommented at time,
++# otherwise the last appearing option will be accepted
++#
++#dynamic_chain
++#
++# Dynamic - Each connection will be done via chained proxies
++# all proxies chained in the order as they appear in the list
++# at least one proxy must be online to play in chain
++# (dead proxies are skipped)
++# otherwise EINTR is returned to the app
++#
++strict_chain
++#
++# Strict - Each connection will be done via chained proxies
++# all proxies chained in the order as they appear in the list
++# all proxies must be online to play in chain
++# otherwise EINTR is returned to the app
++#
++#round_robin_chain
++#
++# Round Robin - Each connection will be done via chained proxies
++# of chain_len length
++# all proxies chained in the order as they appear in the list
++# at least one proxy must be online to play in chain
++# (dead proxies are skipped).
++# the start of the current proxy chain is the proxy after the last
++# proxy in the previously invoked proxy chain.
++# if the end of the proxy chain is reached while looking for proxies
++# start at the beginning again.
++# otherwise EINTR is returned to the app
++# These semantics are not guaranteed in a multithreaded environment.
++#
++#random_chain
++#
++# Random - Each connection will be done via random proxy
++# (or proxy chain, see chain_len) from the list.
++# this option is good to test your IDS :)
++
++# Make sense only if random_chain or round_robin_chain
++#chain_len = 2
++
++# Quiet mode (no output from library)
++#quiet_mode
++
++## Proxy DNS requests - no leak for DNS data
++# (disable all of the 3 items below to not proxy your DNS requests)
++
++# method 1. this uses the proxychains4 style method to do remote dns:
++# a thread is spawned that serves DNS requests and hands down an ip
++# assigned from an internal list (via remote_dns_subnet).
++# this is the easiest (setup-wise) and fastest method, however on
++# systems with buggy libcs and very complex software like webbrowsers
++# this might not work and/or cause crashes.
++proxy_dns
++
++# method 2. use the old proxyresolv script to proxy DNS requests
++# in proxychains 3.1 style. requires `proxyresolv` in $PATH
++# plus a dynamically linked `dig` binary.
++# this is a lot slower than `proxy_dns`, doesn't support .onion URLs,
++# but might be more compatible with complex software like webbrowsers.
++#proxy_dns_old
++
++# method 3. use proxychains4-daemon process to serve remote DNS requests.
++# this is similar to the threaded `proxy_dns` method, however it requires
++# that proxychains4-daemon is already running on the specified address.
++# on the plus side it doesn't do malloc/threads so it should be quite
++# compatible with complex, async-unsafe software.
++# note that if you don't start proxychains4-daemon before using this,
++# the process will simply hang.
++#proxy_dns_daemon 127.0.0.1:1053
++
++# set the class A subnet number to use for the internal remote DNS mapping
++# we use the reserved 224.x.x.x range by default,
++# if the proxified app does a DNS request, we will return an IP from that range.
++# on further accesses to this ip we will send the saved DNS name to the proxy.
++# in case some control-freak app checks the returned ip, and denies to
++# connect, you can use another subnet, e.g. 10.x.x.x or 127.x.x.x.
++# of course you should make sure that the proxified app does not need
++# *real* access to this subnet.
++# i.e. dont use the same subnet then in the localnet section
++#remote_dns_subnet 127
++#remote_dns_subnet 10
++remote_dns_subnet 224
++
++# Some timeouts in milliseconds
++tcp_read_time_out 15000
++tcp_connect_time_out 8000
++
++### Examples for localnet exclusion
++## localnet ranges will *not* use a proxy to connect.
++## note that localnet works only when plain IP addresses are passed to the app,
++## the hostname resolves via /etc/hosts, or proxy_dns is disabled or proxy_dns_old used.
++
++## Exclude connections to 192.168.1.0/24 with port 80
++# localnet 192.168.1.0:80/255.255.255.0
++
++## Exclude connections to 192.168.100.0/24
++# localnet 192.168.100.0/255.255.255.0
++
++## Exclude connections to ANYwhere with port 80
++# localnet 0.0.0.0:80/0.0.0.0
++# localnet [::]:80/0
++
++## RFC6890 Loopback address range
++## if you enable this, you have to make sure remote_dns_subnet is not 127
++## you'll need to enable it if you want to use an application that
++## connects to localhost.
++# localnet 127.0.0.0/255.0.0.0
++# localnet ::1/128
++
++## RFC1918 Private Address Ranges
++# localnet 10.0.0.0/255.0.0.0
++# localnet 172.16.0.0/255.240.0.0
++# localnet 192.168.0.0/255.255.0.0
++
++### Examples for dnat
++## Trying to proxy connections to destinations which are dnatted,
++## will result in proxying connections to the new given destinations.
++## Whenever I connect to 1.1.1.1 on port 1234 actually connect to 1.1.1.2 on port 443
++# dnat 1.1.1.1:1234 1.1.1.2:443
++
++## Whenever I connect to 1.1.1.1 on port 443 actually connect to 1.1.1.2 on port 443
++## (no need to write :443 again)
++# dnat 1.1.1.2:443 1.1.1.2
++
++## No matter what port I connect to on 1.1.1.1 port actually connect to 1.1.1.2 on port 443
++# dnat 1.1.1.1 1.1.1.2:443
++
++## Always, instead of connecting to 1.1.1.1, connect to 1.1.1.2
++# dnat 1.1.1.1 1.1.1.2
++
++# ProxyList format
++# type ip port [user pass]
++# (values separated by 'tab' or 'blank')
++#
++# only numeric ipv4 addresses are valid
++#
++#
++# Examples:
++#
++# socks5 192.168.67.78 1080 lamer secret
++# http 192.168.89.3 8080 justu hidden
++# socks4 192.168.1.49 1080
++# http 192.168.39.93 8080
++#
++#
++# proxy types: http, socks4, socks5, raw
++# * raw: The traffic is simply forwarded to the proxy without modification.
++# ( auth types supported: "basic"-http "user/pass"-socks )
++#
++[ProxyList]
++# add proxy here ...
++# meanwile
++# defaults set to "tor"
++socks4 127.0.0.1 9050
++
+diff -Naur a/src/proxychains.conf c/src/proxychains.conf
+--- a/src/proxychains.conf 2022-01-23 14:16:56.000000000 +0000
++++ c/src/proxychains.conf 1970-01-01 00:00:00.000000000 +0000
+@@ -1,162 +0,0 @@
+-# proxychains.conf VER 4.x
+-#
+-# HTTP, SOCKS4a, SOCKS5 tunneling proxifier with DNS.
+-
+-
+-# The option below identifies how the ProxyList is treated.
+-# only one option should be uncommented at time,
+-# otherwise the last appearing option will be accepted
+-#
+-#dynamic_chain
+-#
+-# Dynamic - Each connection will be done via chained proxies
+-# all proxies chained in the order as they appear in the list
+-# at least one proxy must be online to play in chain
+-# (dead proxies are skipped)
+-# otherwise EINTR is returned to the app
+-#
+-strict_chain
+-#
+-# Strict - Each connection will be done via chained proxies
+-# all proxies chained in the order as they appear in the list
+-# all proxies must be online to play in chain
+-# otherwise EINTR is returned to the app
+-#
+-#round_robin_chain
+-#
+-# Round Robin - Each connection will be done via chained proxies
+-# of chain_len length
+-# all proxies chained in the order as they appear in the list
+-# at least one proxy must be online to play in chain
+-# (dead proxies are skipped).
+-# the start of the current proxy chain is the proxy after the last
+-# proxy in the previously invoked proxy chain.
+-# if the end of the proxy chain is reached while looking for proxies
+-# start at the beginning again.
+-# otherwise EINTR is returned to the app
+-# These semantics are not guaranteed in a multithreaded environment.
+-#
+-#random_chain
+-#
+-# Random - Each connection will be done via random proxy
+-# (or proxy chain, see chain_len) from the list.
+-# this option is good to test your IDS :)
+-
+-# Make sense only if random_chain or round_robin_chain
+-#chain_len = 2
+-
+-# Quiet mode (no output from library)
+-#quiet_mode
+-
+-## Proxy DNS requests - no leak for DNS data
+-# (disable all of the 3 items below to not proxy your DNS requests)
+-
+-# method 1. this uses the proxychains4 style method to do remote dns:
+-# a thread is spawned that serves DNS requests and hands down an ip
+-# assigned from an internal list (via remote_dns_subnet).
+-# this is the easiest (setup-wise) and fastest method, however on
+-# systems with buggy libcs and very complex software like webbrowsers
+-# this might not work and/or cause crashes.
+-proxy_dns
+-
+-# method 2. use the old proxyresolv script to proxy DNS requests
+-# in proxychains 3.1 style. requires `proxyresolv` in $PATH
+-# plus a dynamically linked `dig` binary.
+-# this is a lot slower than `proxy_dns`, doesn't support .onion URLs,
+-# but might be more compatible with complex software like webbrowsers.
+-#proxy_dns_old
+-
+-# method 3. use proxychains4-daemon process to serve remote DNS requests.
+-# this is similar to the threaded `proxy_dns` method, however it requires
+-# that proxychains4-daemon is already running on the specified address.
+-# on the plus side it doesn't do malloc/threads so it should be quite
+-# compatible with complex, async-unsafe software.
+-# note that if you don't start proxychains4-daemon before using this,
+-# the process will simply hang.
+-#proxy_dns_daemon 127.0.0.1:1053
+-
+-# set the class A subnet number to use for the internal remote DNS mapping
+-# we use the reserved 224.x.x.x range by default,
+-# if the proxified app does a DNS request, we will return an IP from that range.
+-# on further accesses to this ip we will send the saved DNS name to the proxy.
+-# in case some control-freak app checks the returned ip, and denies to
+-# connect, you can use another subnet, e.g. 10.x.x.x or 127.x.x.x.
+-# of course you should make sure that the proxified app does not need
+-# *real* access to this subnet.
+-# i.e. dont use the same subnet then in the localnet section
+-#remote_dns_subnet 127
+-#remote_dns_subnet 10
+-remote_dns_subnet 224
+-
+-# Some timeouts in milliseconds
+-tcp_read_time_out 15000
+-tcp_connect_time_out 8000
+-
+-### Examples for localnet exclusion
+-## localnet ranges will *not* use a proxy to connect.
+-## note that localnet works only when plain IP addresses are passed to the app,
+-## the hostname resolves via /etc/hosts, or proxy_dns is disabled or proxy_dns_old used.
+-
+-## Exclude connections to 192.168.1.0/24 with port 80
+-# localnet 192.168.1.0:80/255.255.255.0
+-
+-## Exclude connections to 192.168.100.0/24
+-# localnet 192.168.100.0/255.255.255.0
+-
+-## Exclude connections to ANYwhere with port 80
+-# localnet 0.0.0.0:80/0.0.0.0
+-# localnet [::]:80/0
+-
+-## RFC6890 Loopback address range
+-## if you enable this, you have to make sure remote_dns_subnet is not 127
+-## you'll need to enable it if you want to use an application that
+-## connects to localhost.
+-# localnet 127.0.0.0/255.0.0.0
+-# localnet ::1/128
+-
+-## RFC1918 Private Address Ranges
+-# localnet 10.0.0.0/255.0.0.0
+-# localnet 172.16.0.0/255.240.0.0
+-# localnet 192.168.0.0/255.255.0.0
+-
+-### Examples for dnat
+-## Trying to proxy connections to destinations which are dnatted,
+-## will result in proxying connections to the new given destinations.
+-## Whenever I connect to 1.1.1.1 on port 1234 actually connect to 1.1.1.2 on port 443
+-# dnat 1.1.1.1:1234 1.1.1.2:443
+-
+-## Whenever I connect to 1.1.1.1 on port 443 actually connect to 1.1.1.2 on port 443
+-## (no need to write :443 again)
+-# dnat 1.1.1.2:443 1.1.1.2
+-
+-## No matter what port I connect to on 1.1.1.1 port actually connect to 1.1.1.2 on port 443
+-# dnat 1.1.1.1 1.1.1.2:443
+-
+-## Always, instead of connecting to 1.1.1.1, connect to 1.1.1.2
+-# dnat 1.1.1.1 1.1.1.2
+-
+-# ProxyList format
+-# type ip port [user pass]
+-# (values separated by 'tab' or 'blank')
+-#
+-# only numeric ipv4 addresses are valid
+-#
+-#
+-# Examples:
+-#
+-# socks5 192.168.67.78 1080 lamer secret
+-# http 192.168.89.3 8080 justu hidden
+-# socks4 192.168.1.49 1080
+-# http 192.168.39.93 8080
+-#
+-#
+-# proxy types: http, socks4, socks5, raw
+-# * raw: The traffic is simply forwarded to the proxy without modification.
+-# ( auth types supported: "basic"-http "user/pass"-socks )
+-#
+-[ProxyList]
+-# add proxy here ...
+-# meanwile
+-# defaults set to "tor"
+-socks4 127.0.0.1 9050
+-
diff --git a/network/proxychains-ng/slack-desc b/network/proxychains-ng/slack-desc
new file mode 100644
index 0000000000..ab1a012a50
--- /dev/null
+++ b/network/proxychains-ng/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+proxychains-ng: proxychains-ng (TCP and DNS through proxy server)
+proxychains-ng:
+proxychains-ng: proxychains-ng is a preloader which hooks calls to sockets in
+proxychains-ng: dynamically linked programs and redirects it through one or more
+proxychains-ng: socks/http proxies.
+proxychains-ng:
+proxychains-ng: Homepage: https://github.com/rofl0r/proxychains-ng/
+proxychains-ng:
+proxychains-ng:
+proxychains-ng:
+proxychains-ng: