Compare commits
28 Commits
change-ico
...
smol
Author | SHA1 | Date | |
---|---|---|---|
ebc9059cb0 | |||
df22eccb0b | |||
f02a2abb34 | |||
83d9039efe | |||
2e426e32dd | |||
848519b9ac | |||
47812ea933 | |||
7f8544cb1b | |||
3d6bf59057 | |||
424f966e32 | |||
b2f072cbe6 | |||
95a13c127d | |||
5586c29557 | |||
f1db4cf517 | |||
da2a83b483 | |||
3002e98c1d | |||
76049370c3 | |||
ab09ab904c | |||
d85e10cf90 | |||
a93fcda3e0 | |||
df25a47ec2 | |||
ec6d12760e | |||
972eef88b6 | |||
3d94685209 | |||
e45776479d | |||
8ac486f806 | |||
cbc1af3306 | |||
50279dee5a |
120
.github/workflows/dos-djgpp.yml
vendored
@ -18,7 +18,7 @@
|
|||||||
# @FileCreated by Neo on 06/19/2023
|
# @FileCreated by Neo on 06/19/2023
|
||||||
# @Maintainer Neo
|
# @Maintainer Neo
|
||||||
|
|
||||||
name: C/C++ CI (DOS DJGPP)
|
name: DOS DJGPP
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -188,3 +188,121 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: UMSKT-DOS-x86
|
name: UMSKT-DOS-x86
|
||||||
path: build/actions_upload
|
path: build/actions_upload
|
||||||
|
compress:
|
||||||
|
needs: build
|
||||||
|
if: success()
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Setup test environment
|
||||||
|
run: |
|
||||||
|
sudo apt -y update
|
||||||
|
sudo apt -y install dosbox
|
||||||
|
|
||||||
|
- name: Download artifact
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: UMSKT-DOS-x86
|
||||||
|
path: .
|
||||||
|
|
||||||
|
- name: Install UPX
|
||||||
|
uses: crazy-max/ghaction-upx@v3
|
||||||
|
with:
|
||||||
|
install-only: true
|
||||||
|
|
||||||
|
- name: Compress binary
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
upx umskt.exe --best --ultra-brute -v
|
||||||
|
|
||||||
|
- name: Setup DOSBox test environment
|
||||||
|
run: |
|
||||||
|
mkdir -p dosbox_test
|
||||||
|
cp umskt.exe dosbox_test/
|
||||||
|
# Download DPMI server directly
|
||||||
|
# wget https://github.com/UMSKT/winactiontest/raw/refs/heads/main/CWSDPMI.EXE -O dosbox_test/CWSDPMI.EXE
|
||||||
|
# Create test batch file
|
||||||
|
cat > dosbox_test/test.bat << EOL
|
||||||
|
@echo off
|
||||||
|
echo Running test 1...
|
||||||
|
umskt.exe -b 2C -c 365 -s 069420 > TEST1.TXT
|
||||||
|
if errorlevel 1 goto error
|
||||||
|
echo Running test 2...
|
||||||
|
umskt.exe -i 253286028742154311079061239762245184619981623171292574 > TEST2.TXT
|
||||||
|
if errorlevel 1 goto error
|
||||||
|
echo Tests completed > DONE.TXT
|
||||||
|
goto end
|
||||||
|
:error
|
||||||
|
echo Test failed > ERROR.TXT
|
||||||
|
:end
|
||||||
|
exit
|
||||||
|
EOL
|
||||||
|
# Create DOSBox configuration
|
||||||
|
cat > dosbox_test/dosbox.conf << EOL
|
||||||
|
[sdl]
|
||||||
|
nosound=true
|
||||||
|
[cpu]
|
||||||
|
cputype=386
|
||||||
|
core=dynamic
|
||||||
|
cycles=max
|
||||||
|
[autoexec]
|
||||||
|
mount c .
|
||||||
|
c:
|
||||||
|
test.bat
|
||||||
|
exit
|
||||||
|
EOL
|
||||||
|
|
||||||
|
- name: Run tests in DOSBox
|
||||||
|
|
||||||
|
run: |
|
||||||
|
cd dosbox_test
|
||||||
|
timeout 30s dosbox -conf dosbox.conf -nogui -exit
|
||||||
|
# Check if the test completed successfully
|
||||||
|
if [ ! -f DONE.TXT ]; then
|
||||||
|
echo "Tests did not complete successfully"
|
||||||
|
if [ -f ERROR.TXT ]; then
|
||||||
|
echo "Test execution failed"
|
||||||
|
fi
|
||||||
|
if [ -f TEST1.TXT ]; then
|
||||||
|
echo "Test 1 output:"
|
||||||
|
cat TEST1.TXT
|
||||||
|
fi
|
||||||
|
if [ -f TEST2.TXT ]; then
|
||||||
|
echo "Test 2 output:"
|
||||||
|
cat TEST2.TXT
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Verify test outputs
|
||||||
|
if [ ! -f TEST1.TXT ] || [ ! -f TEST2.TXT ]; then
|
||||||
|
echo "Test output files missing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Check test results - looking for key format patterns
|
||||||
|
if ! grep -qE '[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}' TEST1.TXT || \
|
||||||
|
! grep -qE '[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}' TEST2.TXT; then
|
||||||
|
echo "Tests failed - unexpected output format"
|
||||||
|
echo "Test 1 output:"
|
||||||
|
cat TEST1.TXT
|
||||||
|
echo "Test 2 output:"
|
||||||
|
cat TEST2.TXT
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "All tests passed successfully"
|
||||||
|
echo "Test 1 output:"
|
||||||
|
cat TEST1.TXT
|
||||||
|
echo "Test 2 output:"
|
||||||
|
cat TEST2.TXT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Move executable to upload directory
|
||||||
|
run: |
|
||||||
|
mkdir actions_upload
|
||||||
|
mv umskt.exe actions_upload/
|
||||||
|
|
||||||
|
- name: Upload build artifact
|
||||||
|
uses: actions/upload-artifact@v4.6.2
|
||||||
|
with:
|
||||||
|
name: UMSKT-DOS-x86-Compressed
|
||||||
|
path: actions_upload
|
||||||
|
2
.github/workflows/freebsd.yml
vendored
@ -18,7 +18,7 @@
|
|||||||
# @FileCreated by techguy16 on 07/23/2023
|
# @FileCreated by techguy16 on 07/23/2023
|
||||||
# @Maintainer techguy16
|
# @Maintainer techguy16
|
||||||
|
|
||||||
name: C/C++ CI (FreeBSD)
|
name: FreeBSD
|
||||||
|
|
||||||
on:
|
on:
|
||||||
#push:
|
#push:
|
||||||
|
2
.github/workflows/linux.yml
vendored
@ -18,7 +18,7 @@
|
|||||||
# @FileCreated by TheTank20 on 06/13/2023
|
# @FileCreated by TheTank20 on 06/13/2023
|
||||||
# @Maintainer Neo
|
# @Maintainer Neo
|
||||||
|
|
||||||
name: C/C++ CI (Linux)
|
name: Linux
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
2
.github/workflows/macos.yml
vendored
@ -18,7 +18,7 @@
|
|||||||
# @FileCreated by techguy16 on 07/23/2023
|
# @FileCreated by techguy16 on 07/23/2023
|
||||||
# @Maintainer techguy16
|
# @Maintainer techguy16
|
||||||
|
|
||||||
name: C/C++ CI (macOS)
|
name: macOS
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
2
.github/workflows/windows-arm.yml
vendored
@ -18,7 +18,7 @@
|
|||||||
# @FileCreated by TheTank20 on 07/08/2025
|
# @FileCreated by TheTank20 on 07/08/2025
|
||||||
# @Maintainer Neo
|
# @Maintainer Neo
|
||||||
|
|
||||||
name: C/C++ CI (Windows ARM)
|
name: Windows ARM
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
81
.github/workflows/windows-x86-x64.yml
vendored
@ -18,7 +18,7 @@
|
|||||||
# @FileCreated by TheTank20 on 07/08/2025
|
# @FileCreated by TheTank20 on 07/08/2025
|
||||||
# @Maintainer Neo
|
# @Maintainer Neo
|
||||||
|
|
||||||
name: C/C++ CI (Windows x86+64)
|
name: Windows x86+64
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -98,9 +98,9 @@ jobs:
|
|||||||
cd openssl-1.1.1
|
cd openssl-1.1.1
|
||||||
|
|
||||||
if [[ ${{ matrix.arch }} == "x86" ]]; then
|
if [[ ${{ matrix.arch }} == "x86" ]]; then
|
||||||
/usr/bin/perl Configure mingw --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-32 no-tests no-sse2 no-asm no-threads -DOPENSSL_DEV_NO_ATOMICS -mno-mmx -mno-sse -mno-sse2 -march=i686 -mtune=generic
|
/usr/bin/perl Configure mingw --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-32 no-tests no-sse2 no-asm no-threads -DOPENSSL_DEV_NO_ATOMICS -mno-mmx -mno-sse -mno-sse2 -march=i686 -mtune=generic -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector
|
||||||
else
|
else
|
||||||
/usr/bin/perl Configure mingw64 --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-64 no-tests no-asm -DOPENSSL_DEV_NO_ATOMICS -mno-mmx
|
/usr/bin/perl Configure mingw64 --prefix=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-${{ matrix.arch }} --openssldir=$(cygpath -u "$GITHUB_WORKSPACE")/OpenSSL-TDM-64 no-tests no-asm -DOPENSSL_DEV_NO_ATOMICS -mno-mmx -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector
|
||||||
fi
|
fi
|
||||||
mingw32-make -j
|
mingw32-make -j
|
||||||
mingw32-make install_sw
|
mingw32-make install_sw
|
||||||
@ -158,3 +158,78 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: UMSKT-WinNT-${{ matrix.arch }}
|
name: UMSKT-WinNT-${{ matrix.arch }}
|
||||||
path: umskt.exe
|
path: umskt.exe
|
||||||
|
|
||||||
|
compress:
|
||||||
|
needs: build
|
||||||
|
if: success()
|
||||||
|
runs-on: windows-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- arch: x86
|
||||||
|
- arch: x64
|
||||||
|
steps:
|
||||||
|
- name: Setup TDM-GCC
|
||||||
|
run: |
|
||||||
|
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: Setup UPX
|
||||||
|
run: |
|
||||||
|
Invoke-WebRequest -Uri 'https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-win64.zip' -OutFile 'C:\Windows\temp\upx.zip'
|
||||||
|
Write-Host Creating directory...
|
||||||
|
New-Item -ItemType Directory -Path 'C:\UPX'
|
||||||
|
Write-Host Copying files...
|
||||||
|
Expand-Archive -Path 'C:\Windows\temp\upx.zip' -DestinationPath 'C:\UPX'
|
||||||
|
Write-Host Adding environment variables...
|
||||||
|
$env:PATH = 'C:\UPX\upx-5.0.2-win64;' + $env:PATH
|
||||||
|
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)
|
||||||
|
|
||||||
|
- name: Download ${{matrix.arch}} artifact
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: UMSKT-WinNT-${{ matrix.arch }}
|
||||||
|
path: .
|
||||||
|
- name: Compress binaries
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
# Strip symbols
|
||||||
|
strip .\umskt.exe
|
||||||
|
|
||||||
|
# Remove resources
|
||||||
|
llvm-objcopy --remove-section .rsrc umskt.exe umskt_comp.exe
|
||||||
|
|
||||||
|
# Compress with UPX
|
||||||
|
& "C:\UPX\upx-5.0.2-win64\upx.exe" --best --ultra-brute .\umskt_comp.exe
|
||||||
|
|
||||||
|
# Replace original EXE
|
||||||
|
Remove-Item .\umskt.exe
|
||||||
|
Rename-Item -Path .\umskt_comp.exe -NewName umskt.exe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host Test 1 - generating key
|
||||||
|
.\umskt.exe -b 2C -c 365 -s 069420 -v
|
||||||
|
Write-Host Test 2 - generatng confid
|
||||||
|
.\umskt.exe -i 253286028742154311079061239762245184619981623171292574
|
||||||
|
|
||||||
|
- name: Upload build artifact
|
||||||
|
uses: actions/upload-artifact@v4.6.2
|
||||||
|
with:
|
||||||
|
name: UMSKT-WinNT-${{ matrix.arch }}-Compressed
|
||||||
|
path: umskt.exe
|
||||||
|
@ -27,6 +27,11 @@ if (WIN32 AND NOT MSVC)
|
|||||||
set(CMAKE_CXX_COMPILER "C:/TDM-GCC-64/bin/g++.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")
|
message(STATUS "[UMSKT] Forcing use of TDM-GCC in C:/TDM-GCC-64")
|
||||||
|
|
||||||
|
# Add size optimization flags for GCC
|
||||||
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector")
|
||||||
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wl,--gc-sections -Wl,--strip-all")
|
||||||
|
|
||||||
# Configure windres for resource compilation
|
# Configure windres for resource compilation
|
||||||
set(CMAKE_RC_COMPILER "C:/TDM-GCC-64/bin/windres.exe")
|
set(CMAKE_RC_COMPILER "C:/TDM-GCC-64/bin/windres.exe")
|
||||||
set(CMAKE_RC_COMPILER_INIT windres)
|
set(CMAKE_RC_COMPILER_INIT windres)
|
||||||
@ -123,13 +128,13 @@ ENDIF()
|
|||||||
IF(MSVC)
|
IF(MSVC)
|
||||||
SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
IF(NOT BUILD_SHARED_LIBS)
|
IF(NOT BUILD_SHARED_LIBS)
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MT")
|
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Os /GL /GS- /Gy")
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd")
|
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd")
|
||||||
ELSE()
|
ELSE()
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MD")
|
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /Os /GL /GS- /Gy")
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd")
|
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT")
|
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT /OPT:REF /OPT:ICF")
|
||||||
SET(CMAKE_ENABLE_EXPORTS ON)
|
SET(CMAKE_ENABLE_EXPORTS ON)
|
||||||
SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc)
|
SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc)
|
||||||
SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp)
|
SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp)
|
||||||
|
32
README.md
@ -1,24 +1,26 @@
|
|||||||
# Universal MS Key Toolkit (UMSKT)
|
<p align="center"><img src="https://avatars.githubusercontent.com/u/135211890?s=128&c=0" alt="umskt logo"/></p>
|
||||||
|
|
||||||
|
<h1 align="center"><b>U</b>niversal <b>MS</b> <b>K</b>ey <b>T</b>oolkit (UMSKT)</h1>
|
||||||
|
|
||||||
|
<p align="center">An open source toolkit designed to generate licence keys for MS products circa 1998 - 2006</p>
|
||||||
|
<hr />
|
||||||
|
|
||||||
**Connect with us**
|
**Connect with us**
|
||||||
|
|
||||||
[](https://umskt.zulipchat.com)
|
|
||||||
[](https://web.libera.chat/gamja/?nick=Guest?#mspid)
|
|
||||||
[](https://discord.gg/PpBSpuphWM)
|
[](https://discord.gg/PpBSpuphWM)
|
||||||
|
[](https://web.libera.chat/gamja/?nick=Guest?#mspid)
|
||||||
|
[](https://umskt.zulipchat.com)
|
||||||
|
|
||||||
**Build status**
|
----
|
||||||
|
|
||||||
[](../../actions/workflows/windows-x86-x64.yml)
|
| CI Build status |
|
||||||
|
| ------------ |
|
||||||
[](../../actions/workflows/windows-arm.yml)
|
| [](../../actions/workflows/windows-x86-x64.yml) |
|
||||||
|
| [](../../actions/workflows/windows-arm.yml) |
|
||||||
[](../../actions/workflows/macos.yml)
|
| [](../../actions/workflows/macos.yml) |
|
||||||
|
| [](../../actions/workflows/linux.yml) |
|
||||||
[](../../actions/workflows/linux.yml)
|
| [](../../actions/workflows/freebsd.yml) |
|
||||||
|
| [](../../actions/workflows/dos-djgpp.yml) |
|
||||||
[](../../actions/workflows/freebsd.yml)
|
|
||||||
|
|
||||||
[](../../actions/workflows/dos-djgpp.yml)
|
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
|
BIN
extras/icon_sources/128x128.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
extras/icon_sources/128x128_vga.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
extras/icon_sources/16x16.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
extras/icon_sources/16x16_vga.png
Normal file
After Width: | Height: | Size: 453 B |
BIN
extras/icon_sources/256x256.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
extras/icon_sources/256x256_vga.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
extras/icon_sources/32x32.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
extras/icon_sources/32x32_vga.png
Normal file
After Width: | Height: | Size: 541 B |
BIN
extras/icon_sources/48x48.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
extras/icon_sources/48x48_vga.png
Normal file
After Width: | Height: | Size: 646 B |
BIN
extras/icon_sources/64x64.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
extras/icon_sources/64x64_vga.png
Normal file
After Width: | Height: | Size: 785 B |
BIN
extras/icon_sources/96x96.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
extras/icon_sources/96x96_vga.png
Normal file
After Width: | Height: | Size: 1017 B |
2
extras/icon_sources/README.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
The icons in this folder follow the same CC-BY-SA 4.0 license as the final version, seen in the src folder.
|
||||||
|
Modifications were made to the smaller VGA icons for clarity.
|
BIN
extras/icon_sources/source.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
extras/icon_sources/source_vga.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
29
src/cli.cpp
@ -61,7 +61,7 @@ void CLI::showHelp(char *argv[]) {
|
|||||||
fmt::print("\t-v --verbose\tenable verbose output\n");
|
fmt::print("\t-v --verbose\tenable verbose output\n");
|
||||||
fmt::print("\t-n --number\tnumber of keys to generate (defaults to 1)\n");
|
fmt::print("\t-n --number\tnumber of keys to generate (defaults to 1)\n");
|
||||||
fmt::print("\t-f --file\tspecify which keys file to load\n");
|
fmt::print("\t-f --file\tspecify which keys file to load\n");
|
||||||
fmt::print("\t-i --instid\tinstallation ID used to generate confirmation ID\n");
|
fmt::print("\t-i --instid\tinstallation ID used to generate confirmation ID (reads from stdin if no argument provided)\n");
|
||||||
fmt::print("\t-m --mode\tproduct family to activate.\n\t\t\tvalid options are \"WINDOWS\", \"OFFICEXP\", \"OFFICE2K3\", \"OFFICE2K7\" or \"PLUSDME\"\n\t\t\t(defaults to \"WINDOWS\")\n");
|
fmt::print("\t-m --mode\tproduct family to activate.\n\t\t\tvalid options are \"WINDOWS\", \"OFFICEXP\", \"OFFICE2K3\", \"OFFICE2K7\" or \"PLUSDME\"\n\t\t\t(defaults to \"WINDOWS\")\n");
|
||||||
fmt::print("\t-p --productid\tthe product ID of the Program to activate. only required for Office 2K3 and Office 2K7 programs\n");
|
fmt::print("\t-p --productid\tthe product ID of the Program to activate. only required for Office 2K3 and Office 2K7 programs\n");
|
||||||
fmt::print("\t-b --binkid\tspecify which BINK identifier to load (defaults to 2E)\n");
|
fmt::print("\t-b --binkid\tspecify which BINK identifier to load (defaults to 2E)\n");
|
||||||
@ -168,14 +168,14 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
|
|||||||
options->keysFilename = argv[i+1];
|
options->keysFilename = argv[i+1];
|
||||||
i++;
|
i++;
|
||||||
} else if (arg == "-i" || arg == "--instid") {
|
} else if (arg == "-i" || arg == "--instid") {
|
||||||
if (i == argc - 1) {
|
|
||||||
options->error = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
options->instid = argv[i+1];
|
|
||||||
options->applicationMode = MODE_CONFIRMATION_ID;
|
options->applicationMode = MODE_CONFIRMATION_ID;
|
||||||
|
if (i == argc - 1 || argv[i+1][0] == '-') {
|
||||||
|
// No argument provided, will read from stdin later
|
||||||
|
options->instid = "";
|
||||||
|
} else {
|
||||||
|
options->instid = argv[i+1];
|
||||||
i++;
|
i++;
|
||||||
|
}
|
||||||
} else if (arg == "-m" || arg == "--mode") {
|
} else if (arg == "-m" || arg == "--mode") {
|
||||||
std::string mode = argv[i+1];
|
std::string mode = argv[i+1];
|
||||||
char *p = &mode[0];
|
char *p = &mode[0];
|
||||||
@ -369,6 +369,12 @@ bool CLI::stripKey(const char *in_key, char out_key[PK_LENGTH]) {
|
|||||||
return (i == PK_LENGTH);
|
return (i == PK_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CLI::readFromStdin() {
|
||||||
|
std::string input;
|
||||||
|
std::getline(std::cin, input);
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
CLI::CLI(Options options, json keys) {
|
CLI::CLI(Options options, json keys) {
|
||||||
this->options = options;
|
this->options = options;
|
||||||
this->keys = keys;
|
this->keys = keys;
|
||||||
@ -572,7 +578,14 @@ int CLI::BINK2002Validate() {
|
|||||||
|
|
||||||
int CLI::ConfirmationID() {
|
int CLI::ConfirmationID() {
|
||||||
char confirmation_id[49];
|
char confirmation_id[49];
|
||||||
int err = ConfirmationID::Generate(this->options.instid.c_str(), confirmation_id, options.activationMode, options.productid, options.overrideVersion);
|
std::string instid = this->options.instid;
|
||||||
|
|
||||||
|
// If instid is empty, read from stdin
|
||||||
|
if (instid.empty()) {
|
||||||
|
instid = readFromStdin();
|
||||||
|
}
|
||||||
|
|
||||||
|
int err = ConfirmationID::Generate(instid.c_str(), confirmation_id, options.activationMode, options.productid, options.overrideVersion);
|
||||||
|
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case ERR_TOO_SHORT:
|
case ERR_TOO_SHORT:
|
||||||
|
@ -96,6 +96,7 @@ public:
|
|||||||
static void printID(DWORD *pid);
|
static void printID(DWORD *pid);
|
||||||
void printKey(char *pk);
|
void printKey(char *pk);
|
||||||
static bool stripKey(const char *in_key, char out_key[PK_LENGTH]);
|
static bool stripKey(const char *in_key, char out_key[PK_LENGTH]);
|
||||||
|
static std::string readFromStdin();
|
||||||
|
|
||||||
int BINK1998Generate();
|
int BINK1998Generate();
|
||||||
int BINK2002Generate();
|
int BINK2002Generate();
|
||||||
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 192 KiB |
431
src/windows/icon_LICENSE
Normal file
@ -0,0 +1,431 @@
|
|||||||
|
UMSKT Program Icon © 2025 by TehAwesomestKitteh (modified by TheTank20
|
||||||
|
for usability and clarity) is licensed under CC BY-SA 4.0:
|
||||||
|
|
||||||
|
Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
|
does not provide legal services or legal advice. Distribution of
|
||||||
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
|
Using Creative Commons Public Licenses
|
||||||
|
|
||||||
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
|
conditions that creators and other rights holders may use to share
|
||||||
|
original works of authorship and other material subject to copyright
|
||||||
|
and certain other rights specified in the public license below. The
|
||||||
|
following considerations are for informational purposes only, are not
|
||||||
|
exhaustive, and do not form part of our licenses.
|
||||||
|
|
||||||
|
Considerations for licensors: Our public licenses are
|
||||||
|
intended for use by those authorized to give the public
|
||||||
|
permission to use material in ways otherwise restricted by
|
||||||
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
|
Considerations for the public: By using one of our public
|
||||||
|
licenses, a licensor grants the public permission to use the
|
||||||
|
licensed material under specified terms and conditions. If
|
||||||
|
the licensor's permission is not necessary for any reason--for
|
||||||
|
example, because of any applicable exception or limitation to
|
||||||
|
copyright--then that use is not regulated by the license. Our
|
||||||
|
licenses grant only permissions under copyright and certain
|
||||||
|
other rights that a licensor has authority to grant. Use of
|
||||||
|
the licensed material may still be restricted for other
|
||||||
|
reasons, including because others have copyright or other
|
||||||
|
rights in the material. A licensor may make special requests,
|
||||||
|
such as asking that all changes be marked or described.
|
||||||
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||||
|
License
|
||||||
|
|
||||||
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
|
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||||
|
License"). To the extent this Public License may be interpreted as a
|
||||||
|
contract, You are granted the Licensed Rights in consideration of Your
|
||||||
|
acceptance of these terms and conditions, and the Licensor grants You
|
||||||
|
such rights in consideration of benefits the Licensor receives from
|
||||||
|
making the Licensed Material available under these terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
|
||||||
|
Section 1 -- Definitions.
|
||||||
|
|
||||||
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
|
Rights that is derived from or based upon the Licensed Material
|
||||||
|
and in which the Licensed Material is translated, altered,
|
||||||
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
|
permission under the Copyright and Similar Rights held by the
|
||||||
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
|
Material is a musical work, performance, or sound recording,
|
||||||
|
Adapted Material is always produced where the Licensed Material is
|
||||||
|
synched in timed relation with a moving image.
|
||||||
|
|
||||||
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
|
accordance with the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
c. BY-SA Compatible License means a license listed at
|
||||||
|
creativecommons.org/compatiblelicenses, approved by Creative
|
||||||
|
Commons as essentially the equivalent of this Public License.
|
||||||
|
|
||||||
|
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
|
closely related to copyright including, without limitation,
|
||||||
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
|
Rights, without regard to how the rights are labeled or
|
||||||
|
categorized. For purposes of this Public License, the rights
|
||||||
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
|
Rights.
|
||||||
|
|
||||||
|
e. Effective Technological Measures means those measures that, in the
|
||||||
|
absence of proper authority, may not be circumvented under laws
|
||||||
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
|
agreements.
|
||||||
|
|
||||||
|
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
|
g. License Elements means the license attributes listed in the name
|
||||||
|
of a Creative Commons Public License. The License Elements of this
|
||||||
|
Public License are Attribution and ShareAlike.
|
||||||
|
|
||||||
|
h. Licensed Material means the artistic or literary work, database,
|
||||||
|
or other material to which the Licensor applied this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
i. Licensed Rights means the rights granted to You subject to the
|
||||||
|
terms and conditions of this Public License, which are limited to
|
||||||
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
|
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
|
under this Public License.
|
||||||
|
|
||||||
|
k. Share means to provide material to the public by any means or
|
||||||
|
process that requires permission under the Licensed Rights, such
|
||||||
|
as reproduction, public display, public performance, distribution,
|
||||||
|
dissemination, communication, or importation, and to make material
|
||||||
|
available to the public including in ways that members of the
|
||||||
|
public may access the material from a place and at a time
|
||||||
|
individually chosen by them.
|
||||||
|
|
||||||
|
l. Sui Generis Database Rights means rights other than copyright
|
||||||
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
|
m. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
|
||||||
|
Section 2 -- Scope.
|
||||||
|
|
||||||
|
a. License grant.
|
||||||
|
|
||||||
|
1. Subject to the terms and conditions of this Public License,
|
||||||
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
|
|
||||||
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
|
in part; and
|
||||||
|
|
||||||
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
|
3. Term. The term of this Public License is specified in Section
|
||||||
|
6(a).
|
||||||
|
|
||||||
|
4. Media and formats; technical modifications allowed. The
|
||||||
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
|
all media and formats whether now known or hereafter created,
|
||||||
|
and to make technical modifications necessary to do so. The
|
||||||
|
Licensor waives and/or agrees not to assert any right or
|
||||||
|
authority to forbid You from making technical modifications
|
||||||
|
necessary to exercise the Licensed Rights, including
|
||||||
|
technical modifications necessary to circumvent Effective
|
||||||
|
Technological Measures. For purposes of this Public License,
|
||||||
|
simply making modifications authorized by this Section 2(a)
|
||||||
|
(4) never produces Adapted Material.
|
||||||
|
|
||||||
|
5. Downstream recipients.
|
||||||
|
|
||||||
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
|
recipient of the Licensed Material automatically
|
||||||
|
receives an offer from the Licensor to exercise the
|
||||||
|
Licensed Rights under the terms and conditions of this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
b. Additional offer from the Licensor -- Adapted Material.
|
||||||
|
Every recipient of Adapted Material from You
|
||||||
|
automatically receives an offer from the Licensor to
|
||||||
|
exercise the Licensed Rights in the Adapted Material
|
||||||
|
under the conditions of the Adapter's License You apply.
|
||||||
|
|
||||||
|
c. No downstream restrictions. You may not offer or impose
|
||||||
|
any additional or different terms or conditions on, or
|
||||||
|
apply any Effective Technological Measures to, the
|
||||||
|
Licensed Material if doing so restricts exercise of the
|
||||||
|
Licensed Rights by any recipient of the Licensed
|
||||||
|
Material.
|
||||||
|
|
||||||
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
|
b. Other rights.
|
||||||
|
|
||||||
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
|
2. Patent and trademark rights are not licensed under this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
3. To the extent possible, the Licensor waives any right to
|
||||||
|
collect royalties from You for the exercise of the Licensed
|
||||||
|
Rights, whether directly or through a collecting society
|
||||||
|
under any voluntary or waivable statutory or compulsory
|
||||||
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
|
reserves any right to collect such royalties.
|
||||||
|
|
||||||
|
|
||||||
|
Section 3 -- License Conditions.
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
|
following conditions.
|
||||||
|
|
||||||
|
a. Attribution.
|
||||||
|
|
||||||
|
1. If You Share the Licensed Material (including in modified
|
||||||
|
form), You must:
|
||||||
|
|
||||||
|
a. retain the following if it is supplied by the Licensor
|
||||||
|
with the Licensed Material:
|
||||||
|
|
||||||
|
i. identification of the creator(s) of the Licensed
|
||||||
|
Material and any others designated to receive
|
||||||
|
attribution, in any reasonable manner requested by
|
||||||
|
the Licensor (including by pseudonym if
|
||||||
|
designated);
|
||||||
|
|
||||||
|
ii. a copyright notice;
|
||||||
|
|
||||||
|
iii. a notice that refers to this Public License;
|
||||||
|
|
||||||
|
iv. a notice that refers to the disclaimer of
|
||||||
|
warranties;
|
||||||
|
|
||||||
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
b. ShareAlike.
|
||||||
|
|
||||||
|
In addition to the conditions in Section 3(a), if You Share
|
||||||
|
Adapted Material You produce, the following conditions also apply.
|
||||||
|
|
||||||
|
1. The Adapter's License You apply must be a Creative Commons
|
||||||
|
license with the same License Elements, this version or
|
||||||
|
later, or a BY-SA Compatible License.
|
||||||
|
|
||||||
|
2. You must include the text of, or the URI or hyperlink to, the
|
||||||
|
Adapter's License You apply. You may satisfy this condition
|
||||||
|
in any reasonable manner based on the medium, means, and
|
||||||
|
context in which You Share Adapted Material.
|
||||||
|
|
||||||
|
3. You may not offer or impose any additional or different terms
|
||||||
|
or conditions on, or apply any Effective Technological
|
||||||
|
Measures to, Adapted Material that restrict exercise of the
|
||||||
|
rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material,
|
||||||
|
including for purposes of Section 3(b); and
|
||||||
|
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public
|
||||||
|
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||||
|
its public licenses to material it publishes and in those instances
|
||||||
|
will be considered the “Licensor.” The text of the Creative Commons
|
||||||
|
public licenses is dedicated to the public domain under the CC0 Public
|
||||||
|
Domain Dedication. Except for the limited purpose of indicating that
|
||||||
|
material is shared under a Creative Commons public license or as
|
||||||
|
otherwise permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the
|
||||||
|
public licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
|
|