# how-does-Xmanager-encrypt-password
**Repository Path**: duankd/how-does-Xmanager-encrypt-password
## Basic Information
- **Project Name**: how-does-Xmanager-encrypt-password
- **Description**: x-shell解密
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-07-23
- **Last Updated**: 2021-07-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# How Does Xmanager Encrypt password?
This repo will tell you how Xmanager encrypts password and offer a tool to reveal passwords encrypted by Xmanager.
## 1. What is Xmanager?
Xmanager is the market's leading PC X server that brings the power of X applications to a Windows environment.
With Xmanager, X applications installed on remote UNIX based machines run seamlessly with Windows application side by side.
It provides a powerful session management console, easy-to-use X application launcher, X server profile management tool, SSH module and a high performance PC X server for securely accessing a remote and virtualized UNIX and Linux environment.
You can find its official website [here](https://www.netsarang.com/).
## 2. What does indicate that Xmanager encrypts password?
If you open Xshell or Xftp in Xmanager and then create a new session, you will find a window like:
After you input your username and password then click "Ok", Xshell and Xftp will save your configuration at
|Product |Session File Location |
|--------|:--------------------------------------------------------------|
|XShell 5|`%userprofile%\Documents\NetSarang\Xshell\Sessions` |
|XFtp 5 |`%userprofile%\Documents\NetSarang\Xftp\Sessions` |
|XShell 6|`%userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions` |
|XFtp 6 |`%userprofile%\Documents\NetSarang Computer\6\Xftp\Sessions` |
The following is a sample session file created by Xftp 5:
You can find there is a field named `Password` and the value of this field seems to be encoded by Base64 (Yes, you are right).
And there is another field named `Version` which indicates how passwords are encrypted.
## 3. How does Xmanager encrypt password?
See [here](doc/how-does-Xmanager-encrypt-password.md).
## 4. How to use the sample code
Make sure that you have installed `Python3`.
Make sure that you have installed `pypiwin32`, `pycryptodome` module.
```
Usage:
XShellCryptoHelper.py <-e | -d>
[-ver ver_sting]
[-user user_string]
[-sid sid_string]
[-key key_string]
<-e|-d>: Specify encryption(-e) or decryption(-d).
[-ver ver_string]: Specify version of session file.
ver_string can be "5.1", "5.2", "6.0" and etc.
If not specified, the latest version will be used.
[-user user_string]: Specify username. This parameter will be used if version > 5.2.
If not specified, the current username will be used.
[-sid sid_string]: Specify SID. This parameter will be used if version >= 5.1.
If not specified, the current user's SID will be used.
[-key key_string]: Specify user's master password.
If specified, implicit "-ver 6.0"
: Plain password text or base64-encoded encrypted text.
```
```
Usage:
XFtpCryptoHelper.py <-e | -d>
[-ver ver_sting]
[-user user_string]
[-sid sid_string]
[-key key_string]
<-e|-d>: Specify encryption(-e) or decryption(-d).
[-ver ver_string]: Specify version of session file.
ver_string can be "5.1", "5.2", "6.0" and etc.
If not specified, the latest version will be used.
[-user user_string]: Specify username. This parameter will be used if version > 5.2.
If not specified, the current username will be used.
[-sid sid_string]: Specify SID. This parameter will be used if version >= 5.1.
If not specified, the current user's SID will be used.
[-key key_string]: Specify user's master password.
If specified, implicit "-ver 6.0"
: Plain password text or base64-encoded encrypted text.
```
Example:
1. Encrypt Password:
```
$ XShellCryptoHelper.py -e -ver 5.0 "This is a test"
/6KaTrKwm0cmhr0yAWQ=
$ XFtpCryptoHelper.py -e -ver 5.0 "This is a test"
TPKSg0QQ6o795vnPIMs=
$ XShellCryptoHelper.py -e -ver 5.1 -sid S-1-5-21-917267712-1342860078-1792151419-512 "This is a test"
hIMxIyQ3HbJsVIdbbunHvh7ZAvuN1NSJl8ZFL11+UJ+82+KAixa89O3OTAfRTg==
$ XShellCryptoHelper.py -e -ver 5.3 -user Administrator -sid S-1-5-21-917267712-1342860078-1792151419-512 "This is a test"
zv21O1x43qRs3c5NckDHvh7ZAvuN1NSJl8ZFL11+UJ+82+KAixa89O3OTAfRTg==
$ XShellCryptoHelper.py -e -key 123123 "This is a test"
Rrm3P3AL0iDV7nBbS2bHvh7ZAvuN1NSJl8ZFL11+UJ+82+KAixa89O3OTAfRTg==
```
2. Decrypt Password:
```cmd
$ XShellCryptoHelper.py -d -ver 5.0 /6KaTrKwm0cmhr0yAWQ=
This is a test
$ XFtpCryptoHelper.py -d -ver 5.0 TPKSg0QQ6o795vnPIMs=
This is a test
$ XShellCryptoHelper.py -d -ver 5.1 -sid S-1-5-21-917267712-1342860078-1792151419-512 hIMxIyQ3HbJsVIdbbunHvh7ZAvuN1NSJl8ZFL11+UJ+82+KAixa89O3OTAfRTg==
This is a test
$ XShellCryptoHelper.py -d -ver 5.3 -user Administrator -sid S-1-5-21-917267712-1342860078-1792151419-512 zv21O1x43qRs3c5NckDHvh7ZAvuN1NSJl8ZFL11+UJ+82+KAixa89O3OTAfRTg==
This is a test
$ XShellCryptoHelper.py -d -key 123123 Rrm3P3AL0iDV7nBbS2bHvh7ZAvuN1NSJl8ZFL11+UJ+82+KAixa89O3OTAfRTg==
This is a test
```