Giter VIP home page Giter VIP logo

pyxie's People

Contributors

bitw1ze avatar eb4g avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

zaidos

pyxie's Issues

Hex editor

Currently there is no way to properly handle binary data in the UI for manual interception. There are two options:

  1. Easy: Make the user specify a hex editor program to launch when they want to edit binary data. This is somewhat clunky, but could be the best solution.
  2. Harder: Implement hex-editing functionality in the GUI itself, or find an open-source implementation that could be used in the application.

UI for parsed protocol data

When protocol data is received, there are two ways to deal with it in the UI: raw or parsed. Right now you can only view and edit raw data. However, the UI should also be able to take data parsed into a dict and display that in a somewhat-friendly manner to the user, allowing them to modify individual fields in the protocol.

Support more kinds of proxying

I'm starting to think it's not a great idea to limit oneself to one kind of proxying. Some applications can be configured (or even forced) to tunnel binary data over an HTTP CONNECT or SOCKS proxy. This is usually easier to set up than transparent proxying, so why not support it?

These proxies could probably be implemented as wrappers.

Write certificate generation code in Python

Certificate generation is currently done with a very janky shell script. This was done because it was a quick and dirty way to generate SSL certificates on the fly without having to deal with convoluted APIs. This needs to be reimplemented cleanly in Python with proper error handling.

Re-add support for forwarding traffic with netfilter

When intercepting traffic with a VPN or arp spoofing, transparent proxies should be able to forwarding traffic with kernel interfaces like netfilter rather than configuration options or application-level data like HTTP host headers. The current code to do this is commented out in utils.py because it doesn't work on some Linux kernels. Find a way to do this reliably and add some good error-handling so it's possible to fall back into other forwarding modes.

Muliple proxies

Make it possible to have multiple proxy listeners at once, configurable either in the GUI, a config file, or command-line arguments in the CLI. It should be very easy to add support for multiple proxy listeners, but making it configurable in the GUI will take some more time.

Simplify Protocol class design

The Protocol class design should provide what is needed and not get in the way. Currently, it is kind of a pain to work with because of communication with the UI and other reasons.

For message-based protocols,

  • implement send/recv of full messages both inbound and outbound
  • on receive: parse headers and payload from raw data into a dict
  • on send: serialized the dict back to raw data

Pyxie should send the raw and parsed data from the Protocol to the UI without the Protocol implementer having to worry about it. Likewise, the Protocol should block when traffic data is sent to the UI and receive the (potentially modified) data, serialize it, and send it along its merry way.

Implement Macros

Create a Macro base class and create some example implementations. Create a GUI interface to create and edit simple macros and to load custom ones.

Implement Wireshark-like traffic view

It would be nice to see each message of the protocol in the traffic tab rather than the entire conversation in the stream. If desired, it should be possible to view all traffic in the stream (like "Follow TCP Stream" in Wireshark), but by default it should only show one message at a time.

Fix Streams table in GUI

The Streams table has a couple problems with it. It should not be editable (this was actually a regression and will be fixed soon), and it should not be possible to select more than one row at a time. I have not been able to figure out how to make the latter possible, despite following documentation and using functions that are supposed to make that work.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.