mirror of
https://github.com/Neo-Desktop/WindowsXPKg
synced 2025-06-13 09:04:17 +03:00
Compare commits
37 Commits
v0.2.0-bet
...
v0.3.0-bet
Author | SHA1 | Date | |
---|---|---|---|
1fd7550f85 | |||
1f85bf954e | |||
74ff1ea08c | |||
0a63055e91 | |||
94da628e48 | |||
8e58232803 | |||
78ec40f4e3 | |||
9d36fb2f66 | |||
2166ee6e2f | |||
e85add2a54 | |||
f459316865 | |||
60a9b0ea70 | |||
0ebce49cf0 | |||
caa37365d4 | |||
8fe0fc06b2 | |||
fc4b83d1e8 | |||
aa331ad6e4 | |||
9b06fcf162 | |||
a4d810b030 | |||
c209070a66 | |||
9c01c93e77 | |||
b41b596e54 | |||
8723928e48 | |||
8b603c96f1 | |||
403bcb9dd5 | |||
8368b6a6c7 | |||
2415d1374f | |||
d1024950da | |||
1ca5114b21 | |||
da10583fdf | |||
034c00a5b8 | |||
cd050c65d6 | |||
02434e935d | |||
09f1300afc | |||
a3de0e845f | |||
6287b4c773 | |||
a5ce3abe13 |
8
.github/workflows/dos-djgpp.yml
vendored
8
.github/workflows/dos-djgpp.yml
vendored
@ -37,7 +37,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup build environment
|
||||
run: |
|
||||
@ -64,8 +64,8 @@ jobs:
|
||||
git clone https://github.com/UMSKT/openssl.git openssl
|
||||
pushd openssl
|
||||
source ${{ github.workspace }}/djgpp/setenv
|
||||
./Configure no-threads -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP
|
||||
make && make install
|
||||
./Configure no-threads no-tests -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP
|
||||
make && make install_sw
|
||||
popd
|
||||
|
||||
- name: Build
|
||||
@ -81,7 +81,7 @@ jobs:
|
||||
mv build/umskt.exe build/actions_upload/
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-DOS
|
||||
path: build/actions_upload
|
||||
|
16
.github/workflows/freebsd.yml
vendored
16
.github/workflows/freebsd.yml
vendored
@ -21,12 +21,12 @@
|
||||
name: C/C++ CI (FreeBSD)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "*" ]
|
||||
paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
|
||||
pull_request:
|
||||
branches: [ "*" ]
|
||||
paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
|
||||
#push:
|
||||
# branches: [ "*" ]
|
||||
# paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
|
||||
#pull_request:
|
||||
# branches: [ "*" ]
|
||||
# paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
runs-on: ubuntu-latest
|
||||
name: build-x86_64
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build & Test in FreeBSD
|
||||
id: test
|
||||
@ -59,7 +59,7 @@
|
||||
mv build/umskt build/actions_upload/umskt
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-FreeBSD
|
||||
path: build/actions_upload
|
||||
|
4
.github/workflows/linux.yml
vendored
4
.github/workflows/linux.yml
vendored
@ -37,7 +37,7 @@ jobs:
|
||||
- arch: aarch64
|
||||
steps:
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup latest Alpine Linux for ${{ matrix.arch }}
|
||||
uses: jirutka/setup-alpine@v1
|
||||
@ -67,7 +67,7 @@ jobs:
|
||||
mv build/umskt build/actions_upload/umskt
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-linux-${{ matrix.arch }}-static
|
||||
path: build/actions_upload
|
||||
|
4
.github/workflows/macos.yml
vendored
4
.github/workflows/macos.yml
vendored
@ -35,7 +35,7 @@ jobs:
|
||||
- arch: x86_64
|
||||
steps:
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Configure and build UMSKT
|
||||
run: |
|
||||
@ -54,7 +54,7 @@ jobs:
|
||||
./umskt
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-macOS-${{ matrix.arch }}
|
||||
path: build/actions_upload
|
||||
|
175
.github/workflows/windows.yml
vendored
175
.github/workflows/windows.yml
vendored
@ -23,126 +23,83 @@ name: C/C++ CI (Windows)
|
||||
on:
|
||||
push:
|
||||
branches: [ "*" ]
|
||||
paths-ignore: [ '**.md', 'doc/**', '.idea/**'] # If only these files are edited, skip
|
||||
paths-ignore: [ '**.md', 'doc/**', '.idea/**']
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-32bit:
|
||||
build-tdm:
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, x86]
|
||||
steps:
|
||||
# https://github.com/actions/runner-images/issues/6067#issuecomment-1213069040
|
||||
- name: Install Windows XP Support for Visual Studio
|
||||
- name: Setup TDM-GCC
|
||||
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 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
|
||||
Write-Host Downloading TDM-GCC v10.3.0...
|
||||
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'
|
||||
Write-Host Creating directory...
|
||||
New-Item -ItemType Directory -Path 'C:\TDM-GCC-64'
|
||||
Write-Host Copying files [Set 1/3]...
|
||||
Start-Process '7z' -ArgumentList 'e C:\Windows\temp\TDM-GCC-64.exe -oC:\TDM-GCC-64 -y' -Wait
|
||||
Write-Host Copying files [Set 2/3]...
|
||||
Start-Process '7z' -ArgumentList 'e C:\TDM-GCC-64\*.tar.xz -oC:\TDM-GCC-64 -y' -Wait
|
||||
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 Adding environment variables...
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
|
||||
|
||||
- name: Checkout Source Tree
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup MSBuild
|
||||
uses: microsoft/setup-msbuild@v1
|
||||
- name: Download OpenSSL-TDM release asset
|
||||
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
|
||||
uses: threeal/cmake-action@v1.2.0
|
||||
with:
|
||||
generator: "Visual Studio 17 2022"
|
||||
options: CMAKE_SYSTEM_VERSION="5.1.2600"
|
||||
args: -A "Win32" -T v141_xp
|
||||
- name: Configure UMSKT (TDM-GCC ${{ matrix.arch }})
|
||||
shell: pwsh
|
||||
run: |
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
$OPENSSL_ROOT = "$env:OPENSSL_ROOT"
|
||||
$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
|
||||
working-directory: build
|
||||
run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release
|
||||
- name: Build UMSKT (TDM-GCC ${{ matrix.arch }})
|
||||
shell: pwsh
|
||||
run: |
|
||||
$env:PATH = 'C:\TDM-GCC-64\bin;' + $env:PATH
|
||||
mingw32-make
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: UMSKT-Win32
|
||||
path: build/Release
|
||||
|
||||
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
|
||||
name: UMSKT-TDM${{ matrix.arch }}
|
||||
path: umskt.exe
|
||||
|
8
.gitignore
vendored
8
.gitignore
vendored
@ -252,4 +252,10 @@ _deps
|
||||
CMakeSettings.json
|
||||
|
||||
# Visual Studio
|
||||
.vs/
|
||||
.vs/
|
||||
|
||||
CPM_modules
|
||||
CPM_*.cmake
|
||||
cpm-package-lock.cmake
|
||||
*.a
|
||||
*_cmrc*
|
@ -21,6 +21,13 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
|
||||
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_OSX_SYSROOT "macosx" CACHE PATH "macOS SDK path")
|
||||
|
||||
@ -207,6 +214,12 @@ ELSE()
|
||||
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_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)
|
||||
SET_PROPERTY(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB})
|
||||
ENDIF()
|
||||
|
84
keys.json
84
keys.json
@ -132,12 +132,18 @@
|
||||
"Windows Longhorn (6.0.4039.0 -> Pre PIDGENX)": {
|
||||
"BINK": ["74", "75"]
|
||||
},
|
||||
"Expression Web 2007 / Sharepoint Server 2007": {
|
||||
"BINK": ["76", "77"]
|
||||
},
|
||||
"Identity Lifecycle Manager 2007": {
|
||||
"BINK": ["78", "79"]
|
||||
},
|
||||
"Visual Studio 2008": {
|
||||
"BINK": ["78", "79"]
|
||||
},
|
||||
"Sharepoint Designer 2007": {
|
||||
"BINK": ["7C", "7D"]
|
||||
},
|
||||
"Office 2007 Applications": {
|
||||
"BINK": ["7E", "7F"]
|
||||
},
|
||||
@ -147,8 +153,8 @@
|
||||
"Office 2007 Standard / Professional / Ultimate / Enterprise": {
|
||||
"BINK": ["82", "83"]
|
||||
},
|
||||
"Office 2007 OEM (2007 MS Office system)": {
|
||||
"BINK": ["84"]
|
||||
"Office 2007 Hybrid": {
|
||||
"BINK": ["84", "85"]
|
||||
},
|
||||
"Office 2007 Home & Student": {
|
||||
"BINK": ["88", "89"]
|
||||
@ -324,15 +330,15 @@
|
||||
"a": "1",
|
||||
"b": "0",
|
||||
"g": {
|
||||
"x": "17272533675023793624680016937607161394427776688401278127884215858369066406365237833207419170117031265147050748737186",
|
||||
"y": "10897684556651576571671151674586120690608236542740270859915076272932083320838022698730208293779451126638581586588925"
|
||||
"x": "2424861453756882196229359499252409442096928108454123044238107428456451053748664006504056679987776648547354283230029",
|
||||
"y": "7324425970176151969116486392910180591819760394015255323965851504893617199075285355320677185484219270306349221725496"
|
||||
},
|
||||
"n": "44682719955829289",
|
||||
"p": "31123778862031392435299439090755153401162704597024288571183830527113563344679315725116915983118187065183839828632113",
|
||||
"priv": "30177475288172038",
|
||||
"n": "42173753096150573",
|
||||
"p": "23576896825148261563986794905854575022252138407149635186332207102431578828005131860154350053063599250972940889198609",
|
||||
"priv": "21644128200478272",
|
||||
"pub": {
|
||||
"x": "10584120526089473026246191383792758367144927589909587205278073830223938861208553884400816982485323081066790399437204",
|
||||
"y": "19710761542152200618172612283139324015316083022563473705358032993141026289202915973780473937312193485361804450068338"
|
||||
"x": "22559965909720054111451558679234685221190121968477792217083519033370405738218408301652020048970098652944061723131120",
|
||||
"y": "4867649293914467066273247931825593002116583959412689222356329515920397531410942846741846700237094219959206105155903"
|
||||
}
|
||||
},
|
||||
"0C": {
|
||||
@ -800,6 +806,66 @@
|
||||
"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": {
|
||||
"a": "1",
|
||||
"b": "0",
|
||||
|
@ -423,7 +423,7 @@ int CLI::BINK1998Generate() {
|
||||
} else {
|
||||
// generate a random number to use as a serial
|
||||
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;
|
||||
char *cRaw = BN_bn2dec(bnrand);
|
||||
@ -484,7 +484,7 @@ int CLI::BINK2002Generate() {
|
||||
// generate a key
|
||||
for (int i = 0; i < this->total; i++) {
|
||||
DWORD pAuthInfo;
|
||||
RAND_bytes((BYTE *)&pAuthInfo, 4);
|
||||
UMSKT::umskt_rand_bytes((BYTE *)&pAuthInfo, 4);
|
||||
pAuthInfo &= BITMASK(10);
|
||||
|
||||
if (this->options.verbose) {
|
||||
|
@ -58,3 +58,78 @@ FNEXPORT int PIDGEN2_GenerateRetail(char* channelID, char* &keyout) {
|
||||
FNEXPORT int PIDGEN2_GenerateOEM(char* year, char* day, char* oem, char* 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
|
||||
}
|
||||
|
@ -38,6 +38,10 @@
|
||||
#include <fmt/core.h>
|
||||
#include <fmt/format.h>
|
||||
|
||||
#ifdef __DJGPP__
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
// Algorithm macros
|
||||
#define PK_LENGTH 25
|
||||
#define NULL_TERMINATOR 1
|
||||
@ -59,6 +63,17 @@
|
||||
#define BYDWORD(n) (DWORD)(*((n) + 0) | *((n) + 1) << 8 | *((n) + 2) << 16 | *((n) + 3) << 24)
|
||||
#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 {
|
||||
public:
|
||||
static std::FILE* debug;
|
||||
@ -67,7 +82,10 @@ public:
|
||||
class ConfigurationID;
|
||||
|
||||
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
|
||||
|
@ -201,7 +201,7 @@ void PIDGEN3::BINK1998::Generate(
|
||||
EC_POINT *r = EC_POINT_new(eCurve);
|
||||
|
||||
// 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.
|
||||
// R = cG;
|
||||
|
@ -236,7 +236,7 @@ void PIDGEN3::BINK2002::Generate(
|
||||
EC_POINT *r = EC_POINT_new(eCurve);
|
||||
|
||||
// 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
|
||||
EC_POINT_mul(eCurve, r, nullptr, basePoint, c, numContext);
|
||||
|
Reference in New Issue
Block a user