# Kybonet - software KM switch with encryption!
### Description
Share your keyboard and mouse connected to a computer over the network!
This tool allows to share your input devices with many computers in the same
network (one at a time). You can switch from one computer to the next one
with a configurable hotkey (by default *F7*).
*How does it work?*
The host computer (the one with the keyboard/mouse) runs the server, and every
computer where you want to use that keyboard run the client.
To keep things easy, there is no point-to-point connection here, but a zmq
publish/subscribe scheme. The server'll publish the keyboard events encrypted
with the public key of the selected client, so only that client'll be able to
decode them. When pressing the hotkey, the server'll start using the public key
of the 2nd client to encrypt the events. Now only the 2nd client'll be able to
decode them.
### Setup the client
* Step 0 - (optional) Create a venv.
```bash
python3 -m venv venv
. venv/bin/activate
```
* Step 1 - Install the required packages.
```bash
pip install kybonet
```
* Step 2 - Generate public/private keys pair (one in each client).
```bash
# generate
kybonet-keygen
# Copy public key to the server
scp <public-key.pub> <user>@<server>:<path>/
```
* Step 3 - Run.
```bash
kybonet-client <server-ip> -p <port> -i <private-key>
```
### Setup the server
* Step 0 - (optional) Create a venv.
```bash
python3 -m venv venv
. venv/bin/activate
```
* Step 1 - Install the required packages.
```bash
pip install kybonet
```
* Step 2 - List the available devices and identify the ones you want to be shared:
```bash
kybonet-devices
```
**Note:** It's likely that you need to add your user to the *input* group in
order to have access to the input devies. Check that with `ls -las /dev/input`
and add it with `usermod -aG <group> <user>`. **You'll have to login again so
the change take effect.**
* Step 3 - Open the default config file or get a copy of it
(*~/.local/kybonet/config.yml*). Add as many clients as you want, with at
least a name and the path to their public key (the hotkey field is optional).
In case you don't like the default values, you can also assign the hotkeys you
want to switch between clients and to exit the program.
* Step 4 - Run.
```bash
kybonet-server -p <PORT> -c <config-file>
```
**Note:** If the config-file is ommited, it'll be loaded from
*~/.local/kybonet/config.yml*. If you want a fresh start, remove it and when
you run `kybonet-server` a new one'll be created.
### Info
Please report any issues [here](https://github.com/akukulanski/kybonet/issues).
Start typing, and have fun!
Raw data
{
"_id": null,
"home_page": "https://github.com/akukulanski/kybonet",
"name": "kybonet",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.6",
"maintainer_email": null,
"keywords": "keyboard, mouse, kvm, switch, encrypt",
"author": "Ariel Kukulanski",
"author_email": "akukulanski@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/91/8b/55ade88b4b91e4026f4d92245e21d42c450e489998a1dee2303889f3b931/kybonet-0.0.9.tar.gz",
"platform": null,
"description": "# Kybonet - software KM switch with encryption!\n\n### Description\n\n\nShare your keyboard and mouse connected to a computer over the network!\n\nThis tool allows to share your input devices with many computers in the same\nnetwork (one at a time). You can switch from one computer to the next one\nwith a configurable hotkey (by default *F7*).\n\n*How does it work?*\n\nThe host computer (the one with the keyboard/mouse) runs the server, and every\ncomputer where you want to use that keyboard run the client.\n\nTo keep things easy, there is no point-to-point connection here, but a zmq\npublish/subscribe scheme. The server'll publish the keyboard events encrypted\nwith the public key of the selected client, so only that client'll be able to\ndecode them. When pressing the hotkey, the server'll start using the public key\nof the 2nd client to encrypt the events. Now only the 2nd client'll be able to\ndecode them.\n\n\n### Setup the client\n\n* Step 0 - (optional) Create a venv.\n\n```bash\npython3 -m venv venv\n. venv/bin/activate\n```\n\n* Step 1 - Install the required packages.\n\n```bash\npip install kybonet\n```\n\n* Step 2 - Generate public/private keys pair (one in each client).\n\n```bash\n# generate\nkybonet-keygen\n# Copy public key to the server\nscp <public-key.pub> <user>@<server>:<path>/\n```\n\n* Step 3 - Run.\n\n```bash\nkybonet-client <server-ip> -p <port> -i <private-key>\n```\n\n\n### Setup the server\n\n* Step 0 - (optional) Create a venv.\n\n```bash\npython3 -m venv venv\n. venv/bin/activate\n```\n\n* Step 1 - Install the required packages.\n\n```bash\npip install kybonet\n```\n\n* Step 2 - List the available devices and identify the ones you want to be shared:\n\n```bash\nkybonet-devices\n```\n\n**Note:** It's likely that you need to add your user to the *input* group in\norder to have access to the input devies. Check that with `ls -las /dev/input`\nand add it with `usermod -aG <group> <user>`. **You'll have to login again so\nthe change take effect.**\n\n* Step 3 - Open the default config file or get a copy of it\n(*~/.local/kybonet/config.yml*). Add as many clients as you want, with at\nleast a name and the path to their public key (the hotkey field is optional).\nIn case you don't like the default values, you can also assign the hotkeys you\nwant to switch between clients and to exit the program.\n\n* Step 4 - Run.\n\n```bash\nkybonet-server -p <PORT> -c <config-file>\n```\n\n**Note:** If the config-file is ommited, it'll be loaded from\n*~/.local/kybonet/config.yml*. If you want a fresh start, remove it and when\nyou run `kybonet-server` a new one'll be created.\n\n### Info\n\nPlease report any issues [here](https://github.com/akukulanski/kybonet/issues).\n\nStart typing, and have fun!\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "Software KVM switch over the network with encryption (keyboard and mouse only, no video).",
"version": "0.0.9",
"project_urls": {
"Bug Tracker": "https://github.com/akukulanski/kybonet/issues",
"Homepage": "https://github.com/akukulanski/kybonet",
"Source Code": "https://github.com/akukulanski/kybonet"
},
"split_keywords": [
"keyboard",
" mouse",
" kvm",
" switch",
" encrypt"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "76c40173ca3b85bb1bb5d0b1bbfcf771effca0db86b93b069ea99e2416547ff4",
"md5": "f1144373f3414760d74938143eef00d1",
"sha256": "5b76f3c58646235e9c57162a910bdadc2a46d1731bbff6794b5c7267a788ffff"
},
"downloads": -1,
"filename": "kybonet-0.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f1144373f3414760d74938143eef00d1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.6",
"size": 11459,
"upload_time": "2024-11-09T23:28:42",
"upload_time_iso_8601": "2024-11-09T23:28:42.197711Z",
"url": "https://files.pythonhosted.org/packages/76/c4/0173ca3b85bb1bb5d0b1bbfcf771effca0db86b93b069ea99e2416547ff4/kybonet-0.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "918b55ade88b4b91e4026f4d92245e21d42c450e489998a1dee2303889f3b931",
"md5": "e8cc05b40343de1ef81a35172391c527",
"sha256": "1008cae9753075482681969575b25c86125340202ef86dc4711cc81905754941"
},
"downloads": -1,
"filename": "kybonet-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "e8cc05b40343de1ef81a35172391c527",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.6",
"size": 11485,
"upload_time": "2024-11-09T23:28:44",
"upload_time_iso_8601": "2024-11-09T23:28:44.558631Z",
"url": "https://files.pythonhosted.org/packages/91/8b/55ade88b4b91e4026f4d92245e21d42c450e489998a1dee2303889f3b931/kybonet-0.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-09 23:28:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "akukulanski",
"github_project": "kybonet",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "kybonet"
}