首页 > 系统相关 >linux命令行代理神器-proxychains

linux命令行代理神器-proxychains

时间:2022-12-12 11:46:42浏览次数:86  
标签:4.11 proxychains libproxychains4 ng 神器 linux DYLD 环境变量

 

https://zuoer.xin/?post=72

 

什么是 proxychains-ng

项目主页:https://github.com/rofl0r/proxychains-ng

 

proxychains-ng 介绍

proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project.

proxychains-ng是proxychains的加强版,主要有以下功能和不足:

•   支持http/https/socks4/socks5

•   支持认证

•   远端dns查询

•   多种代理模式

•   不支持udp/icmp转发

•   少部分程序和在后台运行的可能无法代理

 

proxychains-ng 原理

简单的说就是这个程序 Hook 了 sockets 相关的操作,让普通程序的 sockets 数据走 SOCKS/HTTP 代理。

其核心就是利用了 LD_PRELOAD 这个环境变量(Mac 上是 DYLD_INSERT_LIBRARIES)。

在 Unix 系统中,如果设置了 LD_PRELOAD 环境变量,那么在程序运行时,动态链接器会先加载该环境变量所指定的动态库。也就是说,这个动态库的加载优先于任何其它的库,包括 libc。

ProxyChains 创建了一个叫 libproxychains4.so(Mac 上是 libproxychains4.dylib)的动态库。里面重写了 connect、close 以及 sendto 等与 socket 相关的函数,通过这些函数发出的数据将会走代理,详细代码可以参考 libproxychains.c。

在主程序里,它会读取配置文件,查找 libproxychains4 所在位置,把这些信息存入环境变量后执行子程序。这样子程序里对 socket 相关的函数调用就会被 Hook 了,对子程序来说,跟代理相关的东西都是透明的。

可以用 printenv 程序来查看增加的环境变量,在 Mac 上输出结果类似于:

 

$ proxychains4 printenv

 

[proxychains] config file found: /usr/local/Cellar/proxychains-ng/4.11/etc/proxychains.conf

[proxychains] preloading /usr/local/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib

[proxychains] DLL init: proxychains-ng 4.11

...

PROXYCHAINS_CONF_FILE=/usr/local/Cellar/proxychains-ng/4.11/etc/proxychains.conf

DYLD_FORCE_FLAT_NAMESPACE=1

DYLD_INSERT_LIBRARIES=/usr/local/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib

一共设置了三个环境变量,其中 PROXYCHAINS_CONF_FILE 保存的是配置文件路径,DYLD_INSERT_LIBRARIES 保存的是动态库路径,在 Mac 中,必须使DYLD_FORCE_FLAT_NAMESPACE 为 1 才能保证 DYLD_INSERT_LIBRARIES 起作用。

 

 

 

 

标签:4.11,proxychains,libproxychains4,ng,神器,linux,DYLD,环境变量
From: https://www.cnblogs.com/sinferwu/p/16975614.html

相关文章

  • 功能强大的国产API管理神器 Eolink,亲测好用
    前言大家好,我是海拥,今天给大家讲讲最近很火的Eolink,一款功能强大且非常实用的国产​​API管理工具​​。在我们日常的前端、后端开发测试过程中经常会用到API,特别是在大型......
  • Linux中的一些命令
    1.新增新用户lili,不允许登录系统,用户ID为3000===useradd-u3000-s/sbin/nologinlili2.循环创建目录/www/wwwroot/html/test===mkdir-p/www/wwwroot/html/testcd/ww......
  • linux下,mysql无法远程连接
    1、确认用户是否只允许localhost访问;  在linux下登录mysql   mysql-uroot-p密码;   usemysql;   select`host`,`user`from`user`查看你......
  • [ Linux ] 可重入函数,volatile 关键字,SIGCHLD信号
    1.可重入函数在数据结构初阶时我们学习过链表,其中当然也学习过链表头插。在此我们复习一下链表头插,我们使用画图来演示。newnode->next=head->next;head->next=newnode;......
  • linux安装jdk
    1、安装包下载wget--no-check-certificate--no-cookies--header"Cookie:oraclelicense=accept-securebackup-cookie"http://download.oracle.com/otn-pub/java/jdk/......
  • Linux
    Linux的文件bin放二进制文件dev放外接设备,不能直接使用需要被挂载etc配置文件Home除了root用户的其他用户的家目录,类似于windows的user/用户目录proc表示进程,该目录存......
  • Ubuntu用户得到一个新的Linux Kernel安全更新, 修补10个漏洞
    Canonical今天公布了关于新的Ubuntu Linux内核安全更新的细节,这些更新适用于他们支持的所有Ubuntu版本,以解决由各种研究人员发现的多达10个安全漏洞。新的Ubuntu......
  • Linux IO 监控与深入分析
    引言接昨天电话面试,面试官问了系统IO怎么分析,当时第一反应是使用iotop看系统上各进程的IO读写速度,然后使用iostat看CPU的%iowait时间占比,(%iowait:CPU等待输......
  • 使用这个多功能的 Linux 命令转换音频文件
    SoXSoundExchange甚至可以为你的音频文件添加特效。我工作需要使用音视频媒体,不管你处理哪种媒体,你肯定知道标准化是一种有价值的工具。就像你不会试图把一个分数加到一......
  • Linux常用命令
    常用命令: 一、ls只列出文件名(相当于dir,dir也可以使用)-A:列出所有文件,包含隐藏文件。-l:列表形式,包含文件的绝大部分属性。-R:递归显示。--help:此命令的帮助。 二、cd改变......