-
-
Save soutar/22a1e1df23147d5ba1f4 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node | |
var options = require('minimist')(process.argv.slice(2), { default: { | |
cport: 8888 | |
}}); | |
var disable = options.disable || options.d; | |
var enable = options.enable || options.e; | |
var status = options.s || options.status; | |
var child = require('child_process'); | |
// -s or --status to list active rules | |
if (status) { | |
child.exec('sudo pfctl -s nat -i bridge100', function (error, stdout, stderror) { | |
console.log(stdout || stderror); | |
}); | |
return; | |
} | |
if (enable) { | |
var pfrules = [ | |
'rdr pass on bridge100 inet proto tcp from any to any port 80 -> 127.0.0.1 port {charles_port}', | |
]; | |
pfrules.forEach(function (pfrule) { | |
pfrule = pfrule.replace(/{charles_port}/g, options.cport); | |
child.exec('echo "' + pfrule + '" | sudo pfctl -ef -'); | |
}); | |
console.log('HTTP & HTTPS traffic on Internet Sharing network now redirecting to 127.0.0.1:' + options.cport); | |
return; | |
} else if (disable) { | |
console.log('Cleared all rules on the Internet Sharing network'); | |
child.exec('sudo pfctl -F nat -i bridge100'); | |
return; | |
} | |
console.log('Usage: -e to enable, -d to disable or -s for status'); |
This is only redirecting HTTP traffic, not HTTPS right? The port 443 is not being acknowledged here.
I tried just simply adding another rule, but that didn't work.
'rdr pass on bridge100 inet proto tcp from any to any port 443 -> 127.0.0.1 port {charles_port}'
Any idea how to capture HTTPS traffic?
The script is prepared to catch a single pf rule.
So in order to add both http and https, they need to be together in the same string.
var pfrules = [ 'rdr pass on bridge100 inet proto tcp from any to any port 80 -> 127.0.0.1 port {charles_port} \n rdr pass on bridge100 inet proto tcp from any to any port 443 -> 127.0.0.1 port {charles_port}' ];
I can't seem to get logs from my Roku device when I try to capture HTTPS traffic.
I constantly receive 503 errors with "Invalid first line in request".
What could I be missing?
This is only redirecting HTTP traffic, not HTTPS right? The port 443 is not being acknowledged here.
I tried just simply adding another rule, but that didn't work.
'rdr pass on bridge100 inet proto tcp from any to any port 443 -> 127.0.0.1 port {charles_port}'
Any idea how to capture HTTPS traffic?