xml rpc library for sending signed data
Project description
signed_xmlrpc - Send signed XML RPC Requests
signed_xmlrpc
is a python library send signed xml rpc requests.
This library can be used in cyber defense exercises when communication with a compromised server and using credentials like usernames and passwords is not possible, because an attacker can use those to compromise more services and servers.
:warning: do not use this library in proiduction environments!
Installation
pip install signed_xmlrpc
Create Key Pair
At this time, the ecdsa library (https://pypi.org/project/ecdsa/) is used to handle signature verification.
from ecdsa import SigningKey
sk = SigningKey.generate()
# private_key
print(base64.b64encode(sk.to_string()))
# public_key
print(base64.b64encode(sk.verifying_key.to_string()))
Example Server
import base64
from ecdsa import VerifyingKey
from signed_xmlrpc.server import SignedXMLRPCServer, SignedRequestHandler
public_key = b'dmTk8IGtxQBC4lPuk9tXUIJqbiz4G01qLEzmt5Fmh9AkpqOWwcSyyVeDczrhGWe7'
# if the signature is not required, the standard python xmlrpc library can be used as client
SignedRequestHandler.REQUIRE_SIGNATURE = True
SignedXMLRPCServer(
VerifyingKey.from_string(base64.b64decode(public_key)),
('0.0.0.0', 8081)
).serve_forever()
Example Client
import base64
from ecdsa import SigningKey
from signed_xmlrpc.client import SigningTransport
import xmlrpc
private_key = b'BxbHQpNKpwKmYOs1RDSMg1vkIYsTTP3o'
server = xmlrpc.client.ServerProxy(
'http://127.0.0.1:8081',
transport=SigningTransport(
private_key=SigningKey.from_string(
base64.b64decode(private_key)
)
)
)
print(server.ping())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
signed_xmlrpc-0.0.1.tar.gz
(4.1 kB
view hashes)
Built Distribution
Close
Hashes for signed_xmlrpc-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e2ea3515080e6b2523385b5c014818ddd4d4254280d85f5366bb66aa6b3fe29 |
|
MD5 | c28ad3bdc4bdc8b2cfe5bc8f1909453c |
|
BLAKE2b-256 | 962f506da6ef97c8e62eb9e60e96b1eca9f8b9e379dcd07042c7abc65f27024a |