38 Commits

Author SHA1 Message Date
1fd7550f85 Merge pull request #119 from thepwrtank18/djgpp-rng
RNG bugfix for DOS (DJGPP)
2025-06-09 23:20:45 -05:00
1f85bf954e RNG bugfix for DOS (DJGPP) 2025-06-09 23:15:34 -05:00
74ff1ea08c https://www.youtube.com/watch?v=y3M3xpKV7wA
Replace MSVC with TDM-GCC
2025-06-07 21:11:48 -04:00
0a63055e91 32-bit 2025-06-05 01:05:45 -04:00
94da628e48 Update windows.yml 2025-06-05 01:00:39 -04:00
8e58232803 ops 2025-06-05 00:58:06 -04:00
78ec40f4e3 sdfjkwwhqd 2025-06-05 00:57:13 -04:00
9d36fb2f66 this is stupid 2025-06-05 00:41:27 -04:00
2166ee6e2f PICK ONE ARE YOU WINDOWS OR UNIX 2025-06-05 00:14:58 -04:00
e85add2a54 5 HOURS DEBUGGING THIS CRAP 2025-06-05 00:10:01 -04:00
f459316865 Satya Nadella this is your fault 2025-06-04 23:59:59 -04:00
60a9b0ea70 i'm going to kms
https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-key
2025-06-04 23:49:36 -04:00
0ebce49cf0 final theory 2025-06-04 23:34:50 -04:00
caa37365d4 theory of everything 3 2025-06-04 23:32:32 -04:00
8fe0fc06b2 theory of everything 2 2025-06-04 23:24:02 -04:00
fc4b83d1e8 theory of everything 2025-06-04 23:13:06 -04:00
aa331ad6e4 broken glass theory 2025-06-04 23:03:30 -04:00
9b06fcf162 ice soup theory 2025-06-04 22:52:06 -04:00
a4d810b030 tree method 2025-06-04 22:43:58 -04:00
c209070a66 progress 2025-06-04 20:24:27 -04:00
9c01c93e77 ctrl shift l moment 2025-06-04 20:09:07 -04:00
b41b596e54 ??? 2025-06-04 20:04:51 -04:00
8723928e48 Update windows.yml 2025-06-04 19:59:50 -04:00
8b603c96f1 Update windows.yml 2025-06-04 19:51:59 -04:00
403bcb9dd5 initial TDM-GCC switchover 2025-06-04 19:43:22 -04:00
8368b6a6c7 Merge pull request #116 from UMSKT/disable-freebsd
Disable automatic FreeBSD GH action
2025-04-13 21:14:58 -04:00
2415d1374f Disable FreeBSD GH action 2025-04-13 19:52:53 -04:00
d1024950da Fix GH actions 2025-04-13 19:09:02 -04:00
1ca5114b21 Update dos-djgpp.yml 2025-04-13 17:50:24 -04:00
da10583fdf Update freebsd.yml 2025-04-13 17:50:14 -04:00
034c00a5b8 Update linux.yml 2025-04-13 17:50:02 -04:00
cd050c65d6 Update macos.yml 2025-04-13 17:49:44 -04:00
02434e935d Update windows.yml 2025-04-13 17:49:00 -04:00
09f1300afc Update windows.yml 2025-04-13 17:47:43 -04:00
a3de0e845f Update keys.json 2025-04-13 17:42:09 -04:00
6287b4c773 Bink Data Update (#113)
* Update keys.json

Added BINK ID10

* Update keys.json

added/updated some missing BINKID data
BINKID 0x0B
BINKID 0x42
BINKID 0x43
BINKID 0x44
BINKID 0x45
2025-03-12 10:35:47 -07:00
a5ce3abe13 the end of updating openssl manually 2024-07-25 23:47:07 -05:00
27344f6d4b begone strikethrough 2024-07-25 23:32:38 -05:00
14 changed files with 278 additions and 144 deletions

View File

@ -37,7 +37,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Source Tree - name: Checkout Source Tree
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup build environment - name: Setup build environment
run: | run: |
@ -64,8 +64,8 @@ jobs:
git clone https://github.com/UMSKT/openssl.git openssl git clone https://github.com/UMSKT/openssl.git openssl
pushd openssl pushd openssl
source ${{ github.workspace }}/djgpp/setenv source ${{ github.workspace }}/djgpp/setenv
./Configure no-threads -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP ./Configure no-threads no-tests -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP
make && make install make && make install_sw
popd popd
- name: Build - name: Build
@ -81,7 +81,7 @@ jobs:
mv build/umskt.exe build/actions_upload/ mv build/umskt.exe build/actions_upload/
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v3.1.2 uses: actions/upload-artifact@v4.6.2
with: with:
name: UMSKT-DOS name: UMSKT-DOS
path: build/actions_upload path: build/actions_upload

View File

@ -21,12 +21,12 @@
name: C/C++ CI (FreeBSD) name: C/C++ CI (FreeBSD)
on: on:
push: #push:
branches: [ "*" ] # branches: [ "*" ]
paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip # paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
pull_request: #pull_request:
branches: [ "*" ] # branches: [ "*" ]
paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip # paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
workflow_dispatch: workflow_dispatch:
@ -35,7 +35,7 @@
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: build-x86_64 name: build-x86_64
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Build & Test in FreeBSD - name: Build & Test in FreeBSD
id: test id: test
@ -59,7 +59,7 @@
mv build/umskt build/actions_upload/umskt mv build/umskt build/actions_upload/umskt
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v3.1.2 uses: actions/upload-artifact@v4.6.2
with: with:
name: UMSKT-FreeBSD name: UMSKT-FreeBSD
path: build/actions_upload path: build/actions_upload

View File

@ -37,7 +37,7 @@ jobs:
- arch: aarch64 - arch: aarch64
steps: steps:
- name: Checkout Source Tree - name: Checkout Source Tree
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup latest Alpine Linux for ${{ matrix.arch }} - name: Setup latest Alpine Linux for ${{ matrix.arch }}
uses: jirutka/setup-alpine@v1 uses: jirutka/setup-alpine@v1
@ -67,7 +67,7 @@ jobs:
mv build/umskt build/actions_upload/umskt mv build/umskt build/actions_upload/umskt
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v3.1.2 uses: actions/upload-artifact@v4.6.2
with: with:
name: UMSKT-linux-${{ matrix.arch }}-static name: UMSKT-linux-${{ matrix.arch }}-static
path: build/actions_upload path: build/actions_upload

View File

@ -35,7 +35,7 @@ jobs:
- arch: x86_64 - arch: x86_64
steps: steps:
- name: Checkout Source Tree - name: Checkout Source Tree
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Configure and build UMSKT - name: Configure and build UMSKT
run: | run: |
@ -54,7 +54,7 @@ jobs:
./umskt ./umskt
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v3.1.2 uses: actions/upload-artifact@v4.6.2
with: with:
name: UMSKT-macOS-${{ matrix.arch }} name: UMSKT-macOS-${{ matrix.arch }}
path: build/actions_upload path: build/actions_upload

View File

@ -23,126 +23,83 @@ name: C/C++ CI (Windows)
on: on:
push: push:
branches: [ "*" ] branches: [ "*" ]
paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip paths-ignore: [ '**.md', 'doc/**', '.idea/**']
workflow_dispatch: workflow_dispatch:
jobs: jobs:
build-32bit: build-tdm:
runs-on: windows-latest runs-on: windows-latest
strategy:
matrix:
arch: [x64, x86]
steps: steps:
# https://github.com/actions/runner-images/issues/6067#issuecomment-1213069040 - name: Setup TDM-GCC
- name: Install Windows XP Support for Visual Studio
run: | run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\" Write-Host Downloading TDM-GCC v10.3.0...
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" Invoke-WebRequest -Uri 'https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe' -OutFile 'C:\Windows\temp\TDM-GCC-64.exe'
$componentsToAdd = @( Write-Host Creating directory...
"Microsoft.VisualStudio.Component.WinXP" New-Item -ItemType Directory -Path 'C:\TDM-GCC-64'
) Write-Host Copying files [Set 1/3]...
[string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_} Start-Process '7z' -ArgumentList 'e C:\Windows\temp\TDM-GCC-64.exe -oC:\TDM-GCC-64 -y' -Wait
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache') Write-Host Copying files [Set 2/3]...
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden Start-Process '7z' -ArgumentList 'e C:\TDM-GCC-64\*.tar.xz -oC:\TDM-GCC-64 -y' -Wait
if ($process.ExitCode -eq 0) Write-Host Copying files [Set 3/3]...
{ Start-Process '7z' -ArgumentList 'x C:\TDM-GCC-64\*.tar -oC:\TDM-GCC-64 -y' -Wait
Write-Host "components have been successfully added" Write-Host Adding environment variables...
Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.* $env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
} [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
else
{
Write-Host "components were not installed"
exit 1
}
- name: Download And Install 32-bit OpenSSL
run: |
$installDir = "$Env:ProgramFiles\OpenSSL"
$installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_6.exe"
$installerName = "Win32OpenSSL-3_1_5.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
Remove-Item "$installDir" -Force -Recurse
$installerArgs = '/silent', '/sp-', '/suppressmsgboxes', "/DIR=`"$installDir`""
Start-Process -FilePath $installerPath -ArgumentList $installerArgs -Wait -PassThru
- name: Checkout Source Tree - name: Checkout Source Tree
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup MSBuild - name: Download OpenSSL-TDM release asset
uses: microsoft/setup-msbuild@v1 shell: pwsh
run: |
if ('${{ matrix.arch }}' -eq 'x64') {
$url = "https://github.com/UMSKT/winactiontest/releases/download/openssl/OpenSSL-TDM-64.zip"
$dest = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-64"
$libdir = "lib64"
$cmake_flags = "-m64"
$openssl_root = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-64"
} else {
$url = "https://github.com/UMSKT/winactiontest/releases/download/openssl/OpenSSL-TDM-32.zip"
$dest = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-32"
$libdir = "lib32"
$cmake_flags = "-m32"
$openssl_root = "$env:GITHUB_WORKSPACE/OpenSSL-TDM-32"
}
Invoke-WebRequest -Uri $url -OutFile "OpenSSL-TDM.zip"
Expand-Archive -Path "OpenSSL-TDM.zip" -DestinationPath $env:GITHUB_WORKSPACE
echo "OPENSSL_ROOT=$openssl_root" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "OPENSSL_LIBDIR=$libdir" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "CMAKE_FLAGS=$cmake_flags" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Configure UMSKT - name: Configure UMSKT (TDM-GCC ${{ matrix.arch }})
uses: threeal/cmake-action@v1.2.0 shell: pwsh
with: run: |
generator: "Visual Studio 17 2022" $env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
options: CMAKE_SYSTEM_VERSION="5.1.2600" $OPENSSL_ROOT = "$env:OPENSSL_ROOT"
args: -A "Win32" -T v141_xp $OPENSSL_LIB = "$OPENSSL_ROOT/$env:OPENSSL_LIBDIR"
$OPENSSL_INC = "$OPENSSL_ROOT/include"
cmake -G "MinGW Makefiles" `
-DCMAKE_C_COMPILER="gcc" `
-DCMAKE_CXX_COMPILER="g++" `
-DOPENSSL_ROOT_DIR="$OPENSSL_ROOT" `
-DOPENSSL_INCLUDE_DIR="$OPENSSL_INC" `
-DOPENSSL_CRYPTO_LIBRARY="$OPENSSL_LIB/libcrypto.a" `
-DOPENSSL_SSL_LIBRARY="$OPENSSL_LIB/libssl.a" `
-DCMAKE_C_FLAGS="$env:CMAKE_FLAGS" `
-DCMAKE_CXX_FLAGS="$env:CMAKE_FLAGS" `
.
- name: Build UMSKT - name: Build UMSKT (TDM-GCC ${{ matrix.arch }})
working-directory: build shell: pwsh
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release run: |
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
mingw32-make
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v3.1.2 uses: actions/upload-artifact@v4.6.2
with: with:
name: UMSKT-Win32 name: UMSKT-TDM${{ matrix.arch }}
path: build/Release path: umskt.exe
build-64bit:
runs-on: windows-latest
steps:
- name: Install Windows XP Support for Visual Studio
run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$componentsToAdd = @(
"Microsoft.VisualStudio.Component.WinXP"
)
[string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_}
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
if ($process.ExitCode -eq 0)
{
Write-Host "components have been successfully added"
Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.*
}
else
{
Write-Host "components were not installed"
exit 1
}
- name: Download And Install 64-bit OpenSSL
run: |
$installDir = "$Env:ProgramFiles\OpenSSL"
$installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_6.exe"
$installerName = "Win64OpenSSL-3_1_6.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
Remove-Item "$installDir" -Force -Recurse
$installerArgs = '/silent', '/sp-', '/suppressmsgboxes', "/DIR=`"$installDir`""
Start-Process -FilePath $installerPath -ArgumentList $installerArgs -Wait -PassThru
- name: Checkout Source Tree
uses: actions/checkout@v3
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1
- name: Configure UMSKT
uses: threeal/cmake-action@v1.2.0
with:
generator: "Visual Studio 17 2022"
args: -A "x64" -T "v141_xp"
- name: Build UMSKT
working-directory: build
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release
- name: Upload build artifact
uses: actions/upload-artifact@v3.1.2
with:
name: UMSKT-Win64
path: build/Release

8
.gitignore vendored
View File

@ -252,4 +252,10 @@ _deps
CMakeSettings.json CMakeSettings.json
# Visual Studio # Visual Studio
.vs/ .vs/
CPM_modules
CPM_*.cmake
cpm-package-lock.cmake
*.a
*_cmrc*

View File

@ -21,6 +21,13 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.12) CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
PROJECT(UMSKT) PROJECT(UMSKT)
# Force TDM-GCC on Windows if not using MSVC
if (WIN32 AND NOT MSVC)
set(CMAKE_C_COMPILER "C:/TDM-GCC-64/bin/gcc.exe" CACHE FILEPATH "C Compiler" FORCE)
set(CMAKE_CXX_COMPILER "C:/TDM-GCC-64/bin/g++.exe" CACHE FILEPATH "C++ Compiler" FORCE)
message(STATUS "[UMSKT] Forcing use of TDM-GCC in C:/TDM-GCC-64")
endif()
SET(CMAKE_CXX_STANDARD 17) SET(CMAKE_CXX_STANDARD 17)
SET(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "macOS SDK path") SET(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "macOS SDK path")
@ -207,6 +214,12 @@ ELSE()
TARGET_INCLUDE_DIRECTORIES(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) TARGET_INCLUDE_DIRECTORIES(umskt PUBLIC ${OPENSSL_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(umskt _umskt ${OPENSSL_CRYPTO_LIBRARIES} ${ZLIB_LIBRARIES} fmt nlohmann_json::nlohmann_json umskt::rc ${UMSKT_LINK_LIBS}) TARGET_LINK_LIBRARIES(umskt _umskt ${OPENSSL_CRYPTO_LIBRARIES} ${ZLIB_LIBRARIES} fmt nlohmann_json::nlohmann_json umskt::rc ${UMSKT_LINK_LIBS})
TARGET_LINK_DIRECTORIES(umskt PUBLIC ${UMSKT_LINK_DIRS}) TARGET_LINK_DIRECTORIES(umskt PUBLIC ${UMSKT_LINK_DIRS})
# Link required Windows system libraries for OpenSSL
if (WIN32)
target_link_libraries(umskt crypt32 ws2_32)
endif()
IF(MSVC AND MSVC_MSDOS_STUB) IF(MSVC AND MSVC_MSDOS_STUB)
SET_PROPERTY(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB}) SET_PROPERTY(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB})
ENDIF() ENDIF()

View File

@ -51,13 +51,12 @@ In light of the recent exponential interest in this project I've decided to put
* Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster+is%3Asuccess), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster+is%3Asuccess), [macOS](../../actions/workflows/macos.yml?query=branch%3Amaster+is%3Asuccess), [FreeBSD](../../actions/workflows/freebsd.yml?query=branch%3Amaster+is%3Asuccess), [DOS DJGPP](../../actions/workflows/dos-djgpp.yml?query=branch%3Amaster+is%3Asuccess)) * Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster+is%3Asuccess), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster+is%3Asuccess), [macOS](../../actions/workflows/macos.yml?query=branch%3Amaster+is%3Asuccess), [FreeBSD](../../actions/workflows/freebsd.yml?query=branch%3Amaster+is%3Asuccess), [DOS DJGPP](../../actions/workflows/dos-djgpp.yml?query=branch%3Amaster+is%3Asuccess))
* ~~*(GitHub account \*not\* required)*~~ * *(GitHub account \*not\* required)*
* ~~Download the latest release for your operating system and architecture from [the releases page](../../releases)~~ * Download the latest release for your operating system and architecture from [the releases page](../../releases)
* No official releases right now, use the other method to get the latest version.
* **Note:** Before continuing, please ensure you have the `umskt` executable extracted and on UNIX-like systems, have execution permissions (`chmod +x umskt`). * **Note:** Before continuing, please ensure you have the `umskt` executable extracted and on UNIX-like systems, have execution permissions (`chmod +x umskt`).
#### 2. Install OpenSSL 3.1.2. #### 2. Install OpenSSL.
For Windows, click [here](https://slproweb.com/products/Win32OpenSSL.html) and choose the right version. For other operating systems, consult your package manager. For Windows, click [here](https://slproweb.com/products/Win32OpenSSL.html) and choose the right version. For other operating systems, consult your package manager.
*Note: This only applies if the build you download has OpenSSL embedded (static library) or not. You can usually tell if the download size is measured in KB or MB. If it's MB, you don't need this.* *Note: This only applies if the build you download has OpenSSL embedded (static library) or not. You can usually tell if the download size is measured in KB or MB. If it's MB, you don't need this.*

View File

@ -132,12 +132,18 @@
"Windows Longhorn (6.0.4039.0 -> Pre PIDGENX)": { "Windows Longhorn (6.0.4039.0 -> Pre PIDGENX)": {
"BINK": ["74", "75"] "BINK": ["74", "75"]
}, },
"Expression Web 2007 / Sharepoint Server 2007": {
"BINK": ["76", "77"]
},
"Identity Lifecycle Manager 2007": { "Identity Lifecycle Manager 2007": {
"BINK": ["78", "79"] "BINK": ["78", "79"]
}, },
"Visual Studio 2008": { "Visual Studio 2008": {
"BINK": ["78", "79"] "BINK": ["78", "79"]
}, },
"Sharepoint Designer 2007": {
"BINK": ["7C", "7D"]
},
"Office 2007 Applications": { "Office 2007 Applications": {
"BINK": ["7E", "7F"] "BINK": ["7E", "7F"]
}, },
@ -147,8 +153,8 @@
"Office 2007 Standard / Professional / Ultimate / Enterprise": { "Office 2007 Standard / Professional / Ultimate / Enterprise": {
"BINK": ["82", "83"] "BINK": ["82", "83"]
}, },
"Office 2007 OEM (2007 MS Office system)": { "Office 2007 Hybrid": {
"BINK": ["84"] "BINK": ["84", "85"]
}, },
"Office 2007 Home & Student": { "Office 2007 Home & Student": {
"BINK": ["88", "89"] "BINK": ["88", "89"]
@ -324,15 +330,15 @@
"a": "1", "a": "1",
"b": "0", "b": "0",
"g": { "g": {
"x": "17272533675023793624680016937607161394427776688401278127884215858369066406365237833207419170117031265147050748737186", "x": "2424861453756882196229359499252409442096928108454123044238107428456451053748664006504056679987776648547354283230029",
"y": "10897684556651576571671151674586120690608236542740270859915076272932083320838022698730208293779451126638581586588925" "y": "7324425970176151969116486392910180591819760394015255323965851504893617199075285355320677185484219270306349221725496"
}, },
"n": "44682719955829289", "n": "42173753096150573",
"p": "31123778862031392435299439090755153401162704597024288571183830527113563344679315725116915983118187065183839828632113", "p": "23576896825148261563986794905854575022252138407149635186332207102431578828005131860154350053063599250972940889198609",
"priv": "30177475288172038", "priv": "21644128200478272",
"pub": { "pub": {
"x": "10584120526089473026246191383792758367144927589909587205278073830223938861208553884400816982485323081066790399437204", "x": "22559965909720054111451558679234685221190121968477792217083519033370405738218408301652020048970098652944061723131120",
"y": "19710761542152200618172612283139324015316083022563473705358032993141026289202915973780473937312193485361804450068338" "y": "4867649293914467066273247931825593002116583959412689222356329515920397531410942846741846700237094219959206105155903"
} }
}, },
"0C": { "0C": {
@ -800,6 +806,66 @@
"y": "4166331361209663080277908775030002767045551689443380649904104094047767422069625957190676222747168197864341871814070164924686453916110248521040648287862677" "y": "4166331361209663080277908775030002767045551689443380649904104094047767422069625957190676222747168197864341871814070164924686453916110248521040648287862677"
} }
}, },
"42": {
"a": "1",
"b": "0",
"g": {
"x": "11640071446359917693418230277272135573556102510768548148030840368465631925066661215750608051818744662399431859372010847799326485284550650513243041633181229",
"y": "1117219266737324272317290420713713230170128897725948728570838742460014554810962916878884036620621200355133560155042440959180864818213121429155138181344653"
},
"n": "5280334341756112909",
"p": "12942978066077029419384467090650680778545791198987839112733218154226202456650854446314697588718267646821306053679758777877942489272278682133825653213117273",
"priv": "1465309884720242143",
"pub": {
"x": "9351207863776380035890122409035060669425884047354848374635961783863142135448736359201437768670165682794001791952363648653230539557613342151297569318010149",
"y": "9639173047661422234418044696501057599355311018715184869788900265449733286127996011980477454425481367874466175535746037008129571512803245134460273061854442"
}
},
"43": {
"a": "1",
"b": "0",
"g": {
"x": "2834486376491690368456603825217677225471198398912779448345352642108764638231378782668499190157872740666167080466219457629252550710819781972327332131965258",
"y": "4797700757852014957418479446842892711716196864495788466729606301384034376631555735482572108714361434720650684534546885209233659101211883665277770145423350"
},
"n": "5523679238757269761",
"p": "6926191998299775557228051679990184107308003134668712746978570129316018332430570191924825301565850815568703875111335260944754577838427804555602564950786897",
"priv": "2809607843179400714",
"pub": {
"x": "5801087961280458909792080253947945286111446355062440146334723296822174085898835796467483513249817617372724731293482946799424523234786103045200852470225011",
"y": "1919606609989436277853545800995092035920586757555046809012910563836843544210421704301817498648513315478648381017523132165198480986231348796390852153074721"
}
},
"44": {
"a": "1",
"b": "0",
"g": {
"x": "9680658238923578678202657184293847763076151678383489086861167893944370179297511555508861816858010248459991161671607410772896973557285105910275482332653112",
"y": "38902477949345497450784597636513692713869581728781957101503157321110858542746905996206655102425053611084383171688496202957335182347019199622239575131319"
},
"n": "4714695763604443541",
"p": "10060218540908435736634173235406368357048589196592148828376201588591059234309957485052136941552686476146780926855972646273339825261674895471491324476121697",
"priv": "952494568445020851",
"pub": {
"x": "7809435572353033432542259944225681069776007713441000282689259450883474252378043956762041876078756182695744718782433033396721679522564745671507681698680124",
"y": "2120018000497598938986702274873490939171797105426386828711756267078880551570146718754825759969119264518218486103010877173921337418786732248062865348045969"
}
},
"45": {
"a": "1",
"b": "0",
"g": {
"x": "1415506028429814835609318901328901279725664469601609961018689628962980229383879276982285895935656882715108992785111554965336919510937749428526698965204901",
"y": "6142658768171534784725381543698447822724946469773052050322995135930968261406067031627504011235735426349765719550450476207341330596203075437382377459404055"
},
"n": "4705733954672224129",
"p": "8420779903875279756603065163346889837055414440294897668354571673595315405287353764209959201404596284932170027888535337670888642377481800445761115380269649",
"priv": "1845297747391977061",
"pub": {
"x": "5979408142886940137052651399684513359780629840102111793966097396623272737697258705143841606573133958717430112526043253582151662435203695216093728339267096",
"y": "3518591391911442753664238113448734968964864723243113225953452544472418473210828150121884867152997802156077007186900916060906287620287437578440526157889485"
}
},
"50": { "50": {
"a": "1", "a": "1",
"b": "0", "b": "0",

View File

@ -423,7 +423,7 @@ int CLI::BINK1998Generate() {
} else { } else {
// generate a random number to use as a serial // generate a random number to use as a serial
BIGNUM *bnrand = BN_new(); BIGNUM *bnrand = BN_new();
BN_rand(bnrand, 19, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY); UMSKT::umskt_bn_rand(bnrand, 19, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY);
int oRaw; int oRaw;
char *cRaw = BN_bn2dec(bnrand); char *cRaw = BN_bn2dec(bnrand);
@ -484,7 +484,7 @@ int CLI::BINK2002Generate() {
// generate a key // generate a key
for (int i = 0; i < this->total; i++) { for (int i = 0; i < this->total; i++) {
DWORD pAuthInfo; DWORD pAuthInfo;
RAND_bytes((BYTE *)&pAuthInfo, 4); UMSKT::umskt_rand_bytes((BYTE *)&pAuthInfo, 4);
pAuthInfo &= BITMASK(10); pAuthInfo &= BITMASK(10);
if (this->options.verbose) { if (this->options.verbose) {

View File

@ -58,3 +58,78 @@ FNEXPORT int PIDGEN2_GenerateRetail(char* channelID, char* &keyout) {
FNEXPORT int PIDGEN2_GenerateOEM(char* year, char* day, char* oem, char* keyout) { FNEXPORT int PIDGEN2_GenerateOEM(char* year, char* day, char* oem, char* keyout) {
return PIDGEN2::GenerateOEM(year, day, oem, keyout); return PIDGEN2::GenerateOEM(year, day, oem, keyout);
} }
// RNG utility functions
int UMSKT::umskt_rand_bytes(unsigned char *buf, int num) {
#if UMSKT_RNG_DJGPP
// DOS-compatible RNG using DJGPP's random() function
static bool initialized = false;
if (!initialized) {
// Get initial seed from multiple sources for better entropy
struct timeval tv;
gettimeofday(&tv, NULL);
// Combine microseconds with BIOS timer ticks
unsigned long ticks = *(volatile unsigned long *)0x0040001CL;
int seed = (int)((tv.tv_sec ^ tv.tv_usec) ^ (ticks * 100000));
// Initialize both random() and rand() with different seeds
srandom(seed);
srand(seed ^ 0x1234ABCD); // Use a different seed for rand
initialized = true;
}
for (int i = 0; i < num; i++) {
// Use random() for better randomness, especially in lower bits
buf[i] = (unsigned char)(random() & 0xFF);
// Mix in rand() as an additional source
buf[i] ^= (unsigned char)(rand() & 0xFF);
}
return 1;
#else
// Use OpenSSL's RAND_bytes for non-DOS systems
return RAND_bytes(buf, num);
#endif
}
int UMSKT::umskt_bn_rand(BIGNUM *rnd, int bits, int top, int bottom) {
#if UMSKT_RNG_DJGPP
// DOS-compatible RNG implementation for BIGNUMs
unsigned char *buf = (unsigned char *)malloc((bits + 7) / 8);
if (!buf) return 0;
// Generate random bytes
umskt_rand_bytes(buf, (bits + 7) / 8);
// Convert to BIGNUM
if (!BN_bin2bn(buf, (bits + 7) / 8, rnd)) {
free(buf);
return 0;
}
free(buf);
// Apply top/bottom constraints like BN_rand does
if (top != -1) {
if (top) {
if (bits == 0) {
BN_zero(rnd);
return 1;
}
BN_set_bit(rnd, bits - 1);
}
BN_mask_bits(rnd, bits);
}
if (bottom) {
BN_set_bit(rnd, 0);
}
return 1;
#else
// Use OpenSSL's BN_rand for non-DOS systems
return BN_rand(rnd, bits, top, bottom);
#endif
}

View File

@ -38,6 +38,10 @@
#include <fmt/core.h> #include <fmt/core.h>
#include <fmt/format.h> #include <fmt/format.h>
#ifdef __DJGPP__
#include <sys/time.h>
#endif
// Algorithm macros // Algorithm macros
#define PK_LENGTH 25 #define PK_LENGTH 25
#define NULL_TERMINATOR 1 #define NULL_TERMINATOR 1
@ -59,6 +63,17 @@
#define BYDWORD(n) (DWORD)(*((n) + 0) | *((n) + 1) << 8 | *((n) + 2) << 16 | *((n) + 3) << 24) #define BYDWORD(n) (DWORD)(*((n) + 0) | *((n) + 1) << 8 | *((n) + 2) << 16 | *((n) + 3) << 24)
#define BITMASK(n) ((1ULL << (n)) - 1) #define BITMASK(n) ((1ULL << (n)) - 1)
// RNG utility functions
#ifdef __DJGPP__
#define UMSKT_RNG_DJGPP 1
extern "C" {
long int random(void);
int srandom(int seed);
}
#else
#define UMSKT_RNG_DJGPP 0
#endif
class UMSKT { class UMSKT {
public: public:
static std::FILE* debug; static std::FILE* debug;
@ -67,7 +82,10 @@ public:
class ConfigurationID; class ConfigurationID;
static void setDebugOutput(std::FILE* input); static void setDebugOutput(std::FILE* input);
// RNG utility functions
static int umskt_rand_bytes(unsigned char *buf, int num);
static int umskt_bn_rand(BIGNUM *rnd, int bits, int top, int bottom);
}; };
#endif //UMSKT_LIBUMSKT_H #endif //UMSKT_LIBUMSKT_H

View File

@ -201,7 +201,7 @@ void PIDGEN3::BINK1998::Generate(
EC_POINT *r = EC_POINT_new(eCurve); EC_POINT *r = EC_POINT_new(eCurve);
// Generate a random number c consisting of 384 bits without any constraints. // Generate a random number c consisting of 384 bits without any constraints.
BN_rand(c, FIELD_BITS, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY); UMSKT::umskt_bn_rand(c, FIELD_BITS, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY);
// Pick a random derivative of the base point on the elliptic curve. // Pick a random derivative of the base point on the elliptic curve.
// R = cG; // R = cG;

View File

@ -236,7 +236,7 @@ void PIDGEN3::BINK2002::Generate(
EC_POINT *r = EC_POINT_new(eCurve); EC_POINT *r = EC_POINT_new(eCurve);
// Generate a random number c consisting of 512 bits without any constraints. // Generate a random number c consisting of 512 bits without any constraints.
BN_rand(c, FIELD_BITS_2003, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY); UMSKT::umskt_bn_rand(c, FIELD_BITS_2003, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY);
// R = cG // R = cG
EC_POINT_mul(eCurve, r, nullptr, basePoint, c, numContext); EC_POINT_mul(eCurve, r, nullptr, basePoint, c, numContext);