robert arles

Github Twitter?
about1 android1 backlight1 bash1 bayesian probability1 bayesian probablilty1 browsermob2 django5 docker1 firstpost1 flask1 go2 golang2 hugo1 init1 java1 jenkins2 jinja1 keyboard1 linux1 lubuntu1 mitmproxy1 nerdlynews1 nginx1 nltk1 pageloadstats2 pelican1 python11 qa automation1 rabot2 saucelabs1 selenium4 threading1 ubuntu2 webdriver4


Automating Android + MITMProxy, Injecting the Proxy Cert

I’ve created a bash script to get, and then inject an MITMProxy cert into an Android Emulator This presumably works with an actual device, but untested as I don’t currently have one. This process assumes that you have a running Android emulator, the adb tools installed, and a MITMProxy running. It will grab the cert from the proxy, use it to create the file needed, and insert it into the Android device.



# if this script fails, do not leave a pem file (the wrong one!) for other processes to use
rm mitmproxy-ca-cert.pem 2> /dev/null

  echo "Get Cert file from proxy, create and inject cert hash into attached android device."
  echo ""
  echo "No arguments supplied"
  echo "Usage: $0 [-h proxyhost] [-p proxyport]"
  echo "Defaults to $proxyhost:$proxyport"

# loop through the command line options
while getopts "h:p:?" opt; do
      case $opt in
        h)  proxyhost=$OPTARG
        p)  proxyport=$OPTARG
            exit 1
shift $((OPTIND -1))

# get the pem from the proxy server
echo "Downloading Cert (pem) file from url on proxy $proxyhost:$proxyport"
curl --proxy $proxyhost:$proxyport > mitmproxy-ca-cert.pem

# get the hash of the pem file for use as the file name to put on the android device
echo "Setting CERT_HASH"
CERT_HASH="$(openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem | head -1)"

# export the PEM data into the file
echo "Exporting pem data to file $CERT_HASH.0"
openssl x509 -inform PEM -text -in mitmproxy-ca-cert.pem -out /dev/null >> $CERT_HASH.0

# get root on android
# note: this does not work on google PLAY (prod) images, only google API (debug) images
adb root
adb remount

# put the new cert info on the android device
echo "adb push $CERT_HASH.0 /system/etc/security/cacerts/"
adb push $CERT_HASH.0 /system/etc/security/cacerts/
echo "adb shell 'chmod 644 /system/etc/security/cacerts/$CERT_HASH.0'"
adb shell "chmod 644 /system/etc/security/cacerts/$CERT_HASH.0"
echo "adb shell 'ls -l /system/etc/security/cacerts/$CERT_HASH.0'"
adb shell "ls -l /system/etc/security/cacerts/$CERT_HASH.0"
echo "rebooting..."
adb reboot