savagesteel / mpq-name-breaker

Blizzard MPQ name breaking tool with GPU acceleration support
The Unlicense
5 stars 2 forks source link
mpq mpq-archives powershell powershell-module

MPQ Name Breaker

GitHub Azure DevOps builds (branch) CodeFactor Grade

Introduction

This tool is a PowerShell module that can be used to brute force Blizzard MPQ archives' name hashes.
This has been successfully tested on:

The tool also supports GPU accelerated name breaking.
It relies on the ILGPU library.

Quick start

  1. If you don't have it yet, download and install PowerShell 7.
  2. Download and unzip the MpqNameBreaker PowerShell module.
  3. Launch PowerShell 7, cd to the folder where you unzipped the module and run Import-Module .\MpqNameBreaker
  4. See usage section below to launch name breaking.

Usage

The -HashA and -HashB parameters are unsigned 32-bit integers, the 0x prefix and u suffix are needed.
Parameters are not case sensitive.

# Name breaking for "gendata\cuttt.pal"
Invoke-MpqNameBreaking -HashA 0xD50A0BCCu -HashB 0xB94F2DD2u -Prefix 'gendata\' -Suffix '.pal' -Verbose

The default charset used for the name breaking is 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-.
It can be extended with the -AdditionalChars parameter, or overridden with the -Charset parameter.

# Name breaking without suffix but with additional "." character for "monsters\mega\balr.trn"
Invoke-MpqNameBreaking -HashA 0x26BBF734u -HashB 0x2C785839u `
  -Prefix 'MONSTERS\MEGA\' -AdditionalChars '.' -Verbose

# Name breaking with prefix, suffix and a custom charset containing 
# only letters + "\" for "plrgfx\rogue\rls\rlsas.cl2"
Invoke-MpqNameBreaking -HashA 0xCB636CF4u -HashB 0x7B3E6451u `
  -Prefix 'plrgfx\rogue\r' -Charset 'ABCDEFGHIJKLMNOPQRSTUVWXYZ\' -Suffix '.cl2'  -Verbose

Build

dotnet msbuild -property:Configuration=Release