wowcat

52 Downloads

Yeah, I admit it, there are easier to use MPQ viewers out there.

Huge Warning

  • This project contains executable code. Given the huge potential for abuse, I encourage you to treat this project as if it were carrying the plague. Stay far the hell away from it unless you have a very good reason not to.
  • I signed the executables with my GPG key, but that of course requires you to go out of your way to verify the signatures and ensure the files haven't been tampered with... and also know my GPG key... which I have no secure way of telling you. >_<

Features

The advantages of this one are:

  • Deals with all the MPQ archives as a whole, rather than one at a time.
  • You don't have to select MPQ archives at all, if WoW is in the default location.
  • Can convert BLP images to PNG.
  • Runs in Linux. It's what all the cool kids are using.
  • Isn't limited to MPQ archives. Can be used to retrieve anything WoW can see, such as third party AddOns or saved variables.
  • Files from the local filesystem are case-insensitive, even if you're not using Windows.
  • Understands and corrects files named '.' or '..', and '..' can't be used to escape the install directory.
  • Can easilly be executed from scripts. In fact, without a GUI, that's all it's good for.

Example Usage

# Everything you never wanted to know.
wowcat --help

# Plays 'Power of the Horde' directly from the MPQ archive, without writing anything to your harddisk.
wowcat Sound/Music/ZoneMusic/DMF_L70ETC01.mp3 | mplayer -

# Watch the Burning Crusade intro. The file is really in the Data/enUS/ directory.
wowcat Interface/Cinematics/WOW_Intro_BC_1024.avi | mplayer -cache 8192 -

# See a list of every single file World of Warcraft can see (and probably lockup if you have recursive symlinks):
wowcat "(listfile)" | less

# Get a list of the files in Warcraft's root directory.
wowcat .

# Totally legal.
wowcat ../../../../interface/addons/././blizzard_calendar/../../framexml/globalstrings.lua

# As a cat command, I'm morally obligated to copy from stdin to stdout.
echo "hello world" | wowcat -

# Convert a BLP image to PNG and open it with The Gimp
wowcat Interface/FlavorImages/ScarletCrusadeLogo.png -o image.png && gimp image.png

# I also started a program for converting DBC client database files into Lua, but you should consider it highly experimental.
dbc2lua -f "id:i name:s" DBFilesClient/Map.dbc

If WoW is in some wierd location, you can tell wowcat where to find it by setting the environment variable WOW_ROOT. You can also change the locale by setting WOW_LOCALE.

Bugs

  • Won't properly handle recursive symlinks, but WoW can't either, so it's moot.
  • (listfile) won't include files more than 63 levels deep. If you have that many nested directories, I encourage you to organize your files better.