Forums WoW Modding Discussion Modeling [Archive] Brute force CASC hashes

[Archive] Brute force CASC hashes

[Archive] Brute force CASC hashes

rektbyfaith
Administrator
0
11-04-2025, 10:37 AM
#1
Archived author: valyron • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Since I'm really desperate about the music files from Warlords (I know they are already on Youtube, but I want them straight from the data files), I created a tool to brute force the file names of the missing file hashes in Blizzard's CASC file system.

I know that brute forcing is not a very good method to get the file names (reading dbs files, analysing changed files or injecting code in the client and listening to the file names seem better ideas), but it might help to get some missing names.

At the moment, it only works for music file names that are not too long, but you should easily be able to change my source code to any file name patterns.

It could be faster in my opinion, but it does its job. This is my very first C# program (not my very first program, don't worry), so there might be some odds in the source code. Feel free to optimize it. Every thread only outputs the current file name every 100.000 file names to the command window, so it's 100k times as fast as you can see.

Jenkins96 hash algorithms is taken from TOM_RUS's CASCExplorer.

Make sure you read my notes to understand how it works.

You can find the source code and executables here:

https://github.com/valyron/Jenkins96HashBreaker

So if you have a really fast computer and maybe coding experience, you might want to give it a try.
rektbyfaith
11-04-2025, 10:37 AM #1

Archived author: valyron • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Since I'm really desperate about the music files from Warlords (I know they are already on Youtube, but I want them straight from the data files), I created a tool to brute force the file names of the missing file hashes in Blizzard's CASC file system.

I know that brute forcing is not a very good method to get the file names (reading dbs files, analysing changed files or injecting code in the client and listening to the file names seem better ideas), but it might help to get some missing names.

At the moment, it only works for music file names that are not too long, but you should easily be able to change my source code to any file name patterns.

It could be faster in my opinion, but it does its job. This is my very first C# program (not my very first program, don't worry), so there might be some odds in the source code. Feel free to optimize it. Every thread only outputs the current file name every 100.000 file names to the command window, so it's 100k times as fast as you can see.

Jenkins96 hash algorithms is taken from TOM_RUS's CASCExplorer.

Make sure you read my notes to understand how it works.

You can find the source code and executables here:

https://github.com/valyron/Jenkins96HashBreaker

So if you have a really fast computer and maybe coding experience, you might want to give it a try.

rektbyfaith
Administrator
0
11-04-2025, 10:37 AM
#2
Archived author: valyron • Posted: 2025-11-04T11:37:45.835738
Original source

Quote:Update: Added more file names

Some missing music filenames:

Code:
SOUND\MUSIC\DRAENOR\MUS_60_WolfAtTheGates_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WolfAtTheGates_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WolfAtTheGates_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_C1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_C2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_CallOfTheWarrior_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_CallOfTheWarrior_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_CallOfTheWarrior_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Wonder_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Wonder_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_B3.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H3.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H4.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_C2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_D1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_D2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_G.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEssence_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEssence_H2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EagleOfDraenor_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_BFreedom_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_BFreedom_H2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ArmyLife_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Voce_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Tome_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Tome_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Tome_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_StrangeFever_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_StrangeFever_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_StrangeFever_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Shakedown_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Shakedown_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Shakedown_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Sacrifice_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PrevalentConfliction_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_A3.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentPrescience_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentPrescience_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_LaboriousMisery_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_LaboriousMisery_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_H.MP3
rektbyfaith
11-04-2025, 10:37 AM #2

Archived author: valyron • Posted: 2025-11-04T11:37:45.835738
Original source

Quote:Update: Added more file names

Some missing music filenames:

Code:
SOUND\MUSIC\DRAENOR\MUS_60_WolfAtTheGates_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WolfAtTheGates_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WolfAtTheGates_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MountainsOfNagrand_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_C1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_C2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mobilize_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Eagle_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_CallOfTheWarrior_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_CallOfTheWarrior_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_CallOfTheWarrior_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Blackrock_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Wonder_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Wonder_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_B3.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H3.MP3
SOUND\MUSIC\DRAENOR\MUS_60_WarriorsJourney_H4.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Village_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_C2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_D1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_D2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_G.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Mystic_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEssence_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEssence_H2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EagleOfDraenor_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_BFreedom_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_BFreedom_H2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ArmyLife_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Voce_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_TsHaveIt_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Tome_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Tome_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Tome_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_StrangeFever_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_StrangeFever_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_StrangeFever_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Shakedown_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Shakedown_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Shakedown_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_Sacrifice_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PatiencePoint_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_PrevalentConfliction_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_A1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_A2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_A3.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_ManDown_H1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentPrescience_B.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentPrescience_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_B1.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_B2.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_MalevolentMystique_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_LaboriousMisery_A.MP3
SOUND\MUSIC\DRAENOR\MUS_60_LaboriousMisery_H.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_C.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_D.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_E.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_F.MP3
SOUND\MUSIC\DRAENOR\MUS_60_EtherealEmbers_H.MP3

rektbyfaith
Administrator
0
11-04-2025, 10:37 AM
#3
Archived author: Ladik001 • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Wouldn't it be possible to derive the file names from some of the DBC files?

Also - I have experience with name-breaking in old MPQ (MPQ Archivy - Name breaking). It takes quite long even if the number of letters in 8 and less. Every new letter adds one rank to the length of the process. Maybe it would better to open file by its Encoding Index (OpenFileByEncodingKey) and then check if it's a music file?
rektbyfaith
11-04-2025, 10:37 AM #3

Archived author: Ladik001 • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Wouldn't it be possible to derive the file names from some of the DBC files?

Also - I have experience with name-breaking in old MPQ (MPQ Archivy - Name breaking). It takes quite long even if the number of letters in 8 and less. Every new letter adds one rank to the length of the process. Maybe it would better to open file by its Encoding Index (OpenFileByEncodingKey) and then check if it's a music file?

rektbyfaith
Administrator
0
11-04-2025, 10:37 AM
#4
Archived author: stoneharry • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Originally Posted by Ladik001
[Image: lastpost-right.svg]

Wouldn't it be possible to derive the file names from some of the DBC files?

Also - I have experience with name-breaking in old MPQ (MPQ Archivy - Name breaking). It takes quite long even if the number of letters in 8 and less. Every new letter adds one rank to the length of the process. Maybe it would better to open file by its Encoding Index (OpenFileByEncodingKey) and then check if it's a music file?

99% can be retrieved from reading from the binary, reading DBC's, reading files retrieved from DBC's, etc... But some hard referenced cannot be. See the other thread with the extractor.
rektbyfaith
11-04-2025, 10:37 AM #4

Archived author: stoneharry • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Originally Posted by Ladik001
[Image: lastpost-right.svg]

Wouldn't it be possible to derive the file names from some of the DBC files?

Also - I have experience with name-breaking in old MPQ (MPQ Archivy - Name breaking). It takes quite long even if the number of letters in 8 and less. Every new letter adds one rank to the length of the process. Maybe it would better to open file by its Encoding Index (OpenFileByEncodingKey) and then check if it's a music file?

99% can be retrieved from reading from the binary, reading DBC's, reading files retrieved from DBC's, etc... But some hard referenced cannot be. See the other thread with the extractor.

rektbyfaith
Administrator
0
11-04-2025, 10:37 AM
#5
Archived author: edenc • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Originally Posted by valyron
[Image: lastpost-right.svg]

Since I'm really desperate about the music files from Warlords (I know they are already on Youtube, but I want them straight from the data files), I created a tool to brute force the file names of the missing file hashes in Blizzard's CASC file system.

I know that brute forcing is not a very good method to get the file names (reading dbs files, analysing changed files or injecting code in the client and listening to the file names seem better ideas), but it might help to get some missing names.

At the moment, it only works for music file names that are not too long, but you should easily be able to change my source code to any file name patterns.

It could be faster in my opinion, but it does its job. This is my very first C# program (not my very first program, don't worry), so there might be some odds in the source code. Feel free to optimize it. Every thread only outputs the current file name every 100.000 file names to the command window, so it's 100k times as fast as you can see.

Jenkins96 hash algorithms is taken from TOM_RUS's CASCExplorer.

Make sure you read my notes to understand how it works.

You can find the source code and executables here:

https://github.com/valyron/Jenkins96HashBreaker

So if you have a really fast computer and maybe coding experience, you might want to give it a try.

you are my hero [Image: smile.png]

did you get a change to see if you can get the new blackrock foundry music out?
rektbyfaith
11-04-2025, 10:37 AM #5

Archived author: edenc • Posted: 2025-11-04T11:37:45.835738
Original source

Quote: Originally Posted by valyron
[Image: lastpost-right.svg]

Since I'm really desperate about the music files from Warlords (I know they are already on Youtube, but I want them straight from the data files), I created a tool to brute force the file names of the missing file hashes in Blizzard's CASC file system.

I know that brute forcing is not a very good method to get the file names (reading dbs files, analysing changed files or injecting code in the client and listening to the file names seem better ideas), but it might help to get some missing names.

At the moment, it only works for music file names that are not too long, but you should easily be able to change my source code to any file name patterns.

It could be faster in my opinion, but it does its job. This is my very first C# program (not my very first program, don't worry), so there might be some odds in the source code. Feel free to optimize it. Every thread only outputs the current file name every 100.000 file names to the command window, so it's 100k times as fast as you can see.

Jenkins96 hash algorithms is taken from TOM_RUS's CASCExplorer.

Make sure you read my notes to understand how it works.

You can find the source code and executables here:

https://github.com/valyron/Jenkins96HashBreaker

So if you have a really fast computer and maybe coding experience, you might want to give it a try.

you are my hero [Image: smile.png]

did you get a change to see if you can get the new blackrock foundry music out?

Recently Browsing
 1 Guest(s)
Recently Browsing
 1 Guest(s)