chomper icon indicating copy to clipboard operation
chomper copied to clipboard

Make Chomper compatible with MacOS.

Open aniketpanjwani opened this issue 7 years ago • 4 comments

Steps to reproduce the problem:

Chomper is not compatible with MacOS.

Any other comments? What have you tried so far?
  1. Do I need to replace screen in constants.py ?
  2. reset_nat and setup_nat in utils.py would need to be rewritten using the pf firewall.

Anyone have other ideas of what would need to be changed?

aniketpanjwani avatar Feb 18 '18 05:02 aniketpanjwani

I am finally able to use pf to redirect traffic transparently to mitmproxy. MacOS has screen so that command probably doesn't need to change. Are reset_nat and setup_nat the only things that must be changed then?

miheerdew avatar Mar 11 '18 17:03 miheerdew

Awesome! I think a few other things would have to change:

  1. The Makefile init installation rule would need to be updated. I doubt that the automated certificate installation will work, since certificates are probably stored in different places in OSX. I think that the ip forwarding configuration also needs to be updated. As a note, if you want to work on modifying the init rule for OSX, you should look at the Makefile in the iss26 branch rather than on master.
  2. I'm not sure if the lock rule will work, simply because I'm not sure whether you can create a supplementary sudoers file in the same way that you can in Linux.
  3. In ./chomper/block.py, I interact with the root crontab through the set_block_length function. This is important for lifting blocks at the desired time. I don't know if cron works properly on OSX.

aniketpanjwani avatar Mar 11 '18 22:03 aniketpanjwani

I've largely finished automating installation on Debian-based Linuxes, and I've cleared 0.2.1. So, time to work on this issue! Here's a new order of operations:

  • [ ] Use some package to identify the operating system at the beginning of chomper.block.main.

  • [ ] Add an operating_system argument to chomper.utils.reset_nat and chomper.utils.setup_nat. Add control flow to these two functions to use pftables if you're on OSX.

  • [ ] Create a consistent set of instructions for manual installation on OSX. It may be easiest to just adapt the Debian automated installer (just take out the certificate installation - that's tricky to automate cross-platform).

aniketpanjwani avatar Mar 23 '18 02:03 aniketpanjwani

The pf fiewall (called packet filter) originated from openBSD (my favorite OS), so if you have pf working on macOS, then it can also work on openBSD!

https://www.openbsd.org/faq/pf/ https://home.nuug.no/~peter/pf/ https://home.nuug.no/~peter/pftutorial/ https://nostarch.com/pf3

jungle-boogie avatar May 02 '18 22:05 jungle-boogie