PyRemoteConsole

A pure Python 3 package containing hooks for running remote python consoles to interact with running scripts in real time.


License
MIT
Install
pip install PyRemoteConsole==0.0.2

Documentation

PyRemoteConsole

PyRemoteConsole contains hooks for connecting to running python scripts remotely. It contains a pure-python "encryption" scheme that is used to obfuscate communication between the client and the server.

Install

pip install PyRemoteConsole

Setup & Usage

The key file that comes with PyRemoteConsole will work but you should generate a new key by running the obfuscation.py file. You should see the following text:

Generating key...
Key generated.
Validating key for prosperity...
Key is valid.  Encryptor working successfully!

A key should never fail, but it's validated anyway.

Even repeating words and patterns will generate unique cipher-text:

hello hello hello hello hello hello hello hello
̬ĮʀÀ
(ŬNJ�ɢʷMfDZċǚϺ-éȼ˭̕ȿ�ïɐDžƹ{əʺ�ʙ�ΦΑțϾɚɛ͜ǙʡƽǛť

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ΧϬʸΟϫ«�͚ǣϱȐ˩ȍ�3͜p̚ĺ̒bĘʇɅ͋Ƚďɏ͛ʬƥƏƼʌˢ͊ǝͅ#ȇƄƩŨ϶Ǖ³¾

Anything sent and received while using the built-in encryption should be considered un-readable, but not necessarily secure.

Client & Server

If you have script_A.py and want to be able to connect to it while it's running you need to include code from the client.py file.

from PyRemoteConsole.client import Client, run_command_client

run_command_client should be launched in an additional thread.

from threading import Thread
from time import sleep

host = '10.0.0.2'
port = 12347
includes = {'a': 'Some object'}
t = Thread(target=run_command_client, args=[host, port], kwargs={'includes': includes})
t.start()

use the includes kwarg to pass whatever objects you want to have access to remotely. i.e. includes = {'some_obj': 'obj_val'}

Client tracks events that happen in the run_command_client thread and also allows you to shut down the run_command_client loop safely.

Client.restart = True
Client.shutdown = True
while Client.alive:
    sleep(0.05)
t.join()

To connect to the script running the run_command_client thread you need to import run_server from the server.py file.

from PyRemoteConsole.server import run_server

host = 10.0.0.2
port = 12347
run_server(host, port)