Skip to main content

sickserv

Project description

sickserv

This is a Python 3.6+ client-server wrapper & framework that allows you to rapidly build simple, fast, encrypted, asynchronous, multi-client application communication.

Highlights:

  • Client/server wrapper around Sanic, requests, and websocket-client.
  • Provides a framework for multi-client communication, based around unique system identifiers.
  • Supports simplistically sending and receiving RC4 encrypted JSON payloads.
  • Supports sending either string or byte values using base64 encoding.
  • Provides a client and server for either websocket or non-websocket applications.
  • Natively asynchronous, provided by Sanic.
  • Client/server support for RC4 rekey on-the-fly.

Install

Do it up:

$ pip install sickserv --user

Communication Flow

Initial payloads are always JSON (with a defined endpoint), which are then base64 encoded, RC4 encrypted, and then sent over HTTP or HTTPS (on any port desired).

Send data:
JSON -> base64 encode values -> RC4 encrypt -> send (HTTPS)

Recv data:
recv (HTTPS) -> RC4 decrypt -> base64 decode values -> JSON

Simple Example (non-WebSocket)

See the examples/ folder for more, including: a MUD, chat server, and reverse shell.

Server:

from sickserv import server, set_init_key
from sickserv.server import response

set_init_key('yellow-submarine')

@server.app.route('/test/<sysid>', methods=['POST',])
async def test(request, sysid):
    payload = server.unprocess_payload(sysid, request.body)
    print(payload)
    return_payload = server.process_payload(sysid, {'Look Mom': 'No Hands!'})
    return response.text(return_payload)

server.run(port=1337)

Client:

from sickserv import SickServClient, set_init_key

set_init_key('yellow-submarine')
ssc = SickServClient('127.0.0.1', port=1337)
payload = {
    'endpoint': 'test',
    'example': 'This is some example test data'
}
response = ssc.send(payload)
print(response)

Server side:

$ python server.py

  _____ ____   __  __  _  _____   ___  ____  __ __ 
 / ___/|    | /  ]|  |/ ]/ ___/  /  _]|    \|  |  |
(   \_  |  | /  / |  ' /(   \_  /  [_ |  D  )  |  |
 \__  | |  |/  /  |    \ \__  ||    _]|    /|  |  |
 /  \ | |  /   \_ |     \/  \ ||   [_ |    \|  :  |
 \    | |  \     ||  .  |\    ||     ||  .  \\   / 
  \___||____\____||__|\_| \___||_____||__|\_| \_/  

    v0.1.3 - https://github.com/vesche/sickserv 

[2019-10-26 06:12:47 -0500] [31313] [INFO] Goin' Fast @ http://0.0.0.0:1337
[2019-10-26 06:12:47 -0500] [31313] [INFO] Starting worker [31313]
{'example': 'This is some example test data'}
[2019-10-26 06:12:57 -0500] - (sanic.access)[INFO][127.0.0.1:41550]: POST http://127.0.0.1:1337/test/b0610ba87aa2  200 60

Client side:

$ python test_client.py
{'Look Mom': 'No Hands!'}

Rekey

An initial, matching RC4 key must be supplied. However, the session can easily be rekeyed on the fly.

A rekey is done from the client-end, like so:

ssc.rekey()                       # rekey with a random 16 character length key
ssc.rekey(length=32)              # rekey with a random 32 character length key
ssc.rekey(key='purple-submarine') # rekey with a custom defined key

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sickserv-0.1.3.tar.gz (9.1 kB view details)

Uploaded Source

File details

Details for the file sickserv-0.1.3.tar.gz.

File metadata

  • Download URL: sickserv-0.1.3.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.6 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for sickserv-0.1.3.tar.gz
Algorithm Hash digest
SHA256 06c37ba7fa67a85ab2fad2d37e13b9d4a73473df5bfeec8e440c9f355f944dd5
MD5 094f71db84646866089eb62924b37d36
BLAKE2b-256 eeeff14c1c0a7a0b38f7d4b25484448ef14532645d34401c115e0c7ca41c1239

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page