BSSZDS930

博客园 首页 新随笔 联系 订阅 管理

mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。

mitmproxy还有两个关联组件。

一个是mitmdump,它是mitmproxy的命令行接口,利用它可对接Python脚本,用Python实现监听后的处理。

另一个是mitmweb,它是一个Web程序,通过它可清楚观察mitmproxy捕获的请求。

window操作系统不支持用mitmproxy命令,可用mitmdump或mitmweb代替。 $mitmdump --version    mitmweb -p 889 -s mitm.py   

由于mitmproxy默认不支持https,所以要安装CA证书。

mitmproxy-ca.pem  PEM格式的证书私钥
mitmproxy-ca.p12   双击windows安装

mitmproxy-ca-cert.pem PEM格式证书,适用于大多数非Windows平台,android安装
mitmproxy-ca-cert.p12 PKCS12格式的证书,适用于Windows平台
mitmproxy-ca-cert.cer 与mitmproxy-ca-cert.pem相同,只是改变后缀,适用于部分Android平台

mitmproxy-dhparam.pem PEM格式的秘钥文件,用于增强SSL安全性


# C:\Users\.mitmproxy目录下存放证书
  1. 安装
  2. windows:   mitmweb  -p 9999 修改端口。 #linux指定代理端口 mimtproxy -p 9999     
  3. 将mitmproxy的证书push到安卓系统的证书目录中; 

在shell中计算证书的散列值

openssl  x509  -subject_hash_old  -inform PEM  -in ~/.mitmproxy/mitmproxy-ca-cert.pem | head -1

将证书push到安卓系统的证书目录中

adb push  ~/.mitmproxy/mitmproxy-ca-cert.pem    /system/etc/security/cacerts/c8750f0d.0

      3. 查看pc的局域网地址,通过adb设置代理的地址和端口号;

ERROR: Read-only file system
解决:adb remount 重新装载Android文件系统,使文件系统可读可写

 
  • 设置代理  adb shell settings put global http_proxy ip:port       (ip为PC的局域网ip,端口为mitmproxy设置的代理端口)
  • 移除设置的代理  adb shell settings delete global http_proxy    【global_http_proxy_host 、 global_http_proxy_port】

 

 

mitmproxy有如下几项功能。

  • 拦截HTTP和HTTPS请求和响应。

  • 保存HTTP会话并进行分析。

  • 模拟客户端发起请求,模拟服务端返回响应。

  • 利用反向代理将流量转发给指定的服务器。

  • 支持Mac和Linux上的透明代理。

  • 利用Python对HTTP请求和响应进行实时处理。

原理

手机和PC在同一个局域网内,设置代理为mitmproxy的代理地址。
“中间人”:手机在访问互联网时,流量数据包就会流经mitmproxy,mitmproxy再去转发这些数据包到真实的服务器;
                  服务器返回数据包时再由mitmproxy转发回手机,这样mitmproxy抓取到所有Request和Response。
另外这个过程还可对接mitmdump,抓取到的Request和Response的具体内容都可直接用Python来处理,比如得到Response之后可直接进行解析,然后存入数据库就完成了数据的解析和存储过程。
 
 
posted on 2020-01-19 20:30  BSSZDS930  阅读(831)  评论(0编辑  收藏  举报