mitmproxy 学习笔记(一)之安装

 一、背景

       mitmproxy 可以当作抓包工具也可以当作是代理,其具体能力如下:

(1) 支持SSL/TLS的HTTP/1、HTTP/2、WebSockets 请求拦截 ;

(2) 对拦截的 HTTP 请求支持修改(使用python脚本接入 mitmproxy API);

(3) 保存 HTTP 对话以供以后重播和分析;

(4)  重播  HTTP 客户端和服务器

二、知识

      官网(https://www.mitmproxy.org)提供的包,包含3个工具:

1、mitmproxy

    提供一个交互式的界面,可以看到拦截的请求等,在交互式界面中可以输入各种 command 进行操作;

2、mitmweb

     提供一个 web 的界面,可以看到拦截的请求等,在界面上可以对拦截的请求进行数据分析;

3、mitmdump

     提供一个命令行的界面进行操作,类似于 tcpdump for HTTP;

三、安装

1、下载  (https://mitmproxy.org/)

 这里点击 "More Downloads",可以看到更多版本,本次案例中 下载 mitmproxy-5.3.0-linux.tar.gz。

2、安装

 mitmproxy-5.3.0-linux.tar.gz 压缩包中的目录结构:

 可以看到其中含有 3 个工具文件。

mkdir mitmproxy

tar -zxvf mitmproxy-5.3.0-linux.tar.gz -C mitmproxy

# mitmproxy 获取

version_info=`${curr_dir}/../tool/mitmproxy/mitmproxy --version |grep Mitmproxy`
if [ ! -n "$version_info" ] # install fail maybe lack of some library
then
echo -e "`date +%F %T` ERROR: install mitmproxy fail" 
exit 1
else
echo -e "`date +%F %T` INFO: install mitmproxy successfully" 
fi

其中 : mitmproxy --version |grep Mitmproxy  是为了校验 mitmproxy 在服务器环境中能否正确执行。

正确执行结果:

 由于 mitmproxy 使用 python 开发,其不支持跨平台,环境中必须安装支持 python 成功运行的相关软件,所以通过该命令,可以校验环境是否OK。

若环境不 OK,执行该命令的时候会报错,具体可以看 第四章节的 (1) 小点。

3、效果

(1) mitmproxy

./mitmproxy  -p 8040

说明: -p  可以指定 mitmproxy 运行端口,默认是 8001

开启另一个控制台界面,输入:curl --proxy x.x.x.x:8040 http://x.x.x.x:8068/v1/catalog/services   (其中 x.x.x.x  为 安装 mitmproxy 软件的服务器)

 从上图中可以看到 mitmproxy 已经拦截到了请求

(2) mitmdump

启动命令:

./mitmdump -p 8040

开启另一个控制台界面,输入:curl --proxy x.x.x.x:8040 http://x.x.x.x:8068/v1/catalog/services   (其中 x.x.x.x  为 安装 mitmproxy 软件的服务器)

 上图说明 mitmdump 拦截到了请求

(3) mitmweb

启动命令

./mitmweb -p 8040

 开启另一个控制台界面,输入:curl --proxy x.x.x.x:8040 http://x.x.x.x:8068/v1/catalog/services   (其中 x.x.x.x  为 安装 mitmproxy 软件的服务器)

 从上图可以看出:

http://127.0.0.1:8001  是 web 访问的地址。目前遇到的问题,由于安装 mitmproxy 的 服务器是 无界面的 linux 虚拟机,因此在windows 服务上直接使用 http://x.x.x.x:8081 访问未成功,但是在 虚拟机上通过图中的IP是可以访问成功的。

 四、遇到的问题

(1) 环境中没有 GLIBC_2.18

 解决办法:

安装 GLIBC_2.18

a) 下载

    http://mirror.hust.edu.cn/gnu/glibc/   

b) 安装

 

#解压压缩包

tar -zxvf glibc-2.18.tar.gz

#切换到 glibc目录

cd glibc-2.18

#创建 build 目录,用于存储编译后的文件,这里判断若存在 build 目录,则 先删后新建
build_dir=$(pwd)/build
if [ -d "$build_dir" ]
then
rm -rf $build_dir
fi
echo "start to buid glibc-2.18,please wait..."
mkdir build && cd build/

#编译
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin >> ${gclib_log_file} 2>&1
echo "start to make glibc-2.18,please wait..."
make >> ${gclib_log_file} 2>&1
echo "start to install glibc-2.18,please wait..."

# 安装
make install >> ${gclib_log_file} 2>&1

# 检查 glibc 是否安装成功
installed_glibc=`strings /lib64/libc.so.6|grep GLIBC_2.18`
if [ ! -n "$installed_glibc" ]
then
echo -e "`date +%F %T` ERROR: install glibc_2.18 fail" > ${gclib_log_file} 2>&1
exit 1
else
echo -e "`date +%F %T` INFO: install glibc_2.18 successfully" > ${gclib_log_file} 2>&1
fi

 c) 查看系统中 gclib 的安装情况

第一种方式:

ll /lib64/ |grep libc

结果如下:

第二种方式:

strings /lib64/libc.so.6 |grep GLIBC_

 上图展示了已安装的 GCLIB 各种版本

原文地址:https://www.cnblogs.com/sandyflower/p/14038463.html