Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
DoubleLabyrinth committed Jun 23, 2018
1 parent d8ca9eb commit 5be272b
Showing 1 changed file with 63 additions and 3 deletions.
66 changes: 63 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,71 @@ A keygen for 010Editor

### 1.2 VersionLicense Key

* TODO
`VersionLicense` key is also generated by 8-bytes-long data. To make it clear, I use

```cpp
unsigned char data[8];
```

to represent the 8-bytes-long data, too.

`VersionLicense` key can only be used for specified version or the older. And it does not has time limit.

* __data[4] ~ data[7]__ are __Checksum__ and calculated by `CalculateChecksum` function where `IsRegistrationVersion = true`, `a3 = MajorVersion >= 2 ? 0 : MajorVersion`. `LicenseCount` and `utf8_username` are based on your input.

* __data[3]__ must be `0x9C`. It represents the type of key.

* __data[1] ~ data[2]__ are based on __EncodedLicenseCount__, __data[7]__ and __data[5]__. __EncodedLicenseCount__ can be calculated by `EncodeLicenseCount` function where `DesiredLicenseCount` is based on your input.

```cpp
data[1] = EncodedLicenseCount.bytes[1] ^ data[7];
data[2] = EncodedLicenseCount.bytes[0] ^ data[5];
```

* __data[0]__ is based on `MajorVersion` and __data[6]__.

```cpp
data[0] = MajorVersion;
data[0] ^= 0xA7;
data[0] -= 0x3D;
data[0] ^= 0x18;
data[0] ^= Password.data[6];
```

Finally, the `VersionLicense` key is the hex string of `data[8]` where 4 hex chars consist of a block and each block is joined by `"-"`(hyphen).

### 1.3 TimeLicense Key

* TODO
`TimeLicense` key is generated by 10-bytes-long data which is different to `Evaluation` and `VersionLicense` key. To make it clear, I use

```cpp
unsigned char data[10];
```

to represent the 10-bytes-long data.

`TimeLicense` key can be used for any kind of version. But it has time limit.

* __data[4] ~ data[7]__ are __Checksum__ and calculated by `CalculateChecksum` function where `IsRegistrationVersion = true`, `a3 = DaystampOfExpiration`. `DaystampOfExpiration`, `LicenseCount` and `utf8_username` are based on your input.

* __data[0], data[8] ~ data[9]__ are based on __EncodedExpireDaystamp__ and __data[4] ~ data[6]__. __EncodedExpireDaystamp__ can be calculated by `EncodeExpireDate` function where `Seed = 0x5B8C27` and `DaystampOfExpiration` is based on your input.

```cpp
data[0] = EncodedExpireDaystamp.bytes[0] ^ data[6];
data[8] = EncodedExpireDaystamp.bytes[1] ^ data[4];
data[9] = EncodedExpireDaystamp.bytes[2] ^ data[5];
```

* __data[3]__ must be `0xAC`. It represents the type of key.

* __data[1] ~ data[2]__ are based on __EncodedLicenseCount__, __data[7]__ and __data[5]__. __EncodedLicenseCount__ can be calculated by `EncodeLicenseCount` function where `DesiredLicenseCount` is based on your input.

```cpp
data[1] = EncodedLicenseCount.bytes[1] ^ data[7];
data[2] = EncodedLicenseCount.bytes[0] ^ data[5];
```

Finally, the `TimeLicense` key is the hex string of `data[10]` where 4 hex chars consist of a block and each block is joined by `"-"`(hyphen).

## 2. How to build
In console:
Expand All @@ -90,4 +150,4 @@ E:\Github\010Editor-keygen\cpp>
```
__NOTICE:__
The key generated will expired after 2020-06-23.
This key generated will expired after 2020-06-23. If you want to modify expire date, please modify variables named __ExpireYear__, __ExpireMonth__ and __ExpireDay__ in `main.cpp`.

0 comments on commit 5be272b

Please sign in to comment.