Password Hashing Swiss Army Knife
by Sneed - Friday January 12, 2024 at 11:18 AM
#1
Password Hashing Swiss Army Knife
(Weird algorithms, salts, and other oddities)

Hello BreachForums,

I've been doing hash cracking as a hobby for a few years now, and would consider myself pretty skilled in the field at this point. I decided to make this thread to explain the algorithms for various databases on the forum, where they aren't clearly labeled in their threads, source code, or documentation. The majority of the time, a hash consisting of 32 hexadecimal characters will be straight MD5. Many people will assume this, then get frustrated when they end up with a 0% crack rate.

Hopefully, by reading this thread, you won't spend hours running a massive dictionary against the wrong algorithm. Valid hash:plain or hash:salt:plain pairs are provided for each example, so you can verify that the listed algorithm is indeed correct. Most of these have been known for a few years, but if you see an algorithm or salt that was provably discovered by yourself, drop a reply and I'll update the thread with credit to you.

This thread was originally posted by yours truly on BFv1. I am the original author.

Website-specific hashes
armorgames.com - SHA1($SALT.SHA1($PASS.$SALT))
The salt for all hashes is: Everyone always wants new things. Everybody likes new inventions, new technology. People will never be replaced by machines. In the end, life and business are about human connections. And computers are about trying to murder you in a lake.
No example hashes at the moment, I'll add them in later.


daniweb.com - MD5(MD5(MD5($PASS).$SALT).$KEY)
The static key/pepper for all hashes is: `"D"@n1'W'3b`
Example hashes:
001537e003b2c92e38920951c30ad838:^gI:`"D"@n1'W'3b`:thirty3
00436f3ff28fac1c6f0659b4bf110e34:<5*:`"D"@n1'W'3b`:Elizabeth1
005e704e359b14ca656b631511dd9a2e:hCh:`"D"@n1'W'3b`:safari1
008a5b5dab55b5879771d8b53c4718fd:Nzg:`"D"@n1'W'3b`:wetwilly
008b195a555b76083b5d087261ddd587:T<J:`"D"@n1'W'3b`:weather


hltv.org - MD5(MD5($PASS).MD5($PASS).MD5($PASS).MD5($PASS).$SALT)
The salt for all hashes is: GoRainbowThisFuckingdweeb
Example hashes:
3fe7a3fba731f89145c1e8678ceddab7:GoRainbowThisFuckingdweeb:power
14447517f003da343d6a32f0543d052e:GoRainbowThisFuckingdweeb:amelie
5cf7efb9ac5a3cbc170e3153ffd08531:GoRainbowThisFuckingdweeb:colt45
3f2341985cedaa9bfba1f5e1cc2b737e:GoRainbowThisFuckingdweeb:19882k3
356d3a75e930a9c8a4b7e57f1953b726:GoRainbowThisFuckingdweeb:elskerdegjonas


homerefill.com.br - SHA512($PASS.$SALT)
The hashes are stored in base64; simply decode them to hexadecimal and wrap the salts in curly brackets.
Example hashes:
6046851c9019953f4674e420e7f9ec21ff2375b836e227198743cc4cb061c174bbdb1bb92b474e6b44f0f7165c9f5acc3beb8e8f78710d2873daf0153038845c:{i4xgct8uzv48c04o484wgoks00kcs44}:orange
000f338853bea0929610c657884c5a6d03b1113feebc506e492cfeaf0d4f4e371cd1c54afa02fb43fa23d7d2f2ad11ec122f0d60c877aeea36ad1f255a898596:{8yheo3cf5ickok8skcs04gwsss4sw0w}:clarabela
fb40a5849250310682cdd1f5ed0f070cd20adfe3e7c9a9a411aa3986167b4952cb313b67a0391e31167d460c426805fbc1c78d3dbfe85ff95fc9d3c6e51c8aa3:{294dbrjdhmxwcgg4skcgwowwksgkc88}:green0331
0ec8a6a7eee272f214b1a5d5a6ee6ceecb6ca10beeefe089a97c4074620619ad98100c88b8fc98c9f0ac834f729dec94747dfbf643e8d2f22292e197861b2030:{nnbvdufmvg0o8kwg4440kg0cw8c84s0}:ferrarispider
fb169a5610b076c08c3415b3b19f3a335f35d7bb792ea8176d7859a61ca81e1291c7421784b1a9329ea4adcb1adb03174fb253d5b1dbf08cbbbb50a920f0b0e7:{fxf7f5rd5lw04kkw8ck800w0c0oks0g}:felicidades2013


leet.cc - SHA512($PASS.$SALT)^WHIRLPOOL($SALT.$PASS)
Two hashes are calculated: a SHA2-512 hash, and a Whirlpool hash. An XOR operation is performed and the output is represented in hexadecimal. The salt is the username in lowercase characters. I've added an example formula as well as the hashes in order to show the individual operations, since this is a pretty bizarre algorithm and XOR isn't something I've seen incorporated into password storage before.
Example hashes:
496ae573109bd95f3270250998907270fc05626d91f095454db3dfa04ac769190a649f5864b170d0ca10b8e4c031a2e9b11da9549f30273cf1452d9c625bc202:000:nick
28cce7bdf9d19a62eae68e81310a5919d834458051f33a3206f49c88662ab22c41c86693dbc19fa250513f5e3780914a9061e25bc5e3c7ba3bb3a798a0a29255:1234iam:1234a
5d742312279c82335bc8c299255508dd879b6fd642fbbc605d0a64065967ebf6cc8c1bb12affd66d236454083b736193187a693a09cf291300936e9151fb565e:1236789:*password*
0fbca71cee758396c682a08f9114c830e4364043344339333532a9e280a5dcccfaa145444bcfc948d6dfac8d239d78dca379a3b533632e381a32947799e1168c:smert2000:123456788
056d9f0638f2b13dc3b032d9dfc575f1195ec4c62fe6e3c2d69f20cf9659868c3763db624a7bf98ac2ded86a4c04033212c4fb1a31459a95ab4d03985b8af3b1:bruhbruh12345679:turtle2
Example formula:
Spoiler Spoiler


myrepospace.com - MD5($PASS.$SALT)
There is a second column of MD5 values in this database, the salt for these hashes is: MRS-WINS. However, many of them seem to be auto-generated as MyRepoSpace had already been breached and force changed all user passwords. From my own findings, they seem to have employed a mandatory uppercase letter as well as a digit.
Example hashes:
00293cd2b2137a21900cd4da8b0678b1:MRS-WINS:Jonnym12
5dafb46b9c3b8ae26e8edacc11eda687:MRS-WINS:Gavindain6
e003ac438710ef7a633141efa1697a5a:MRS-WINS:Minecraft360
ff03e97b104d04b27ba3045a9e5b66ad:MRS-WINS:Password69$$
f4d0c8b995d05639b34f8220d4172cfb:MRS-WINS:WelcomeHome01


reverbnation.com - SHA1("eMinor--".$SALT.SHA1("eMinor--".$pass."--}")."--}")
Uses a confusing algorithm, prepending "eMinor" and wrapping the input in two pairs of hyphens, I've again added an example formula to demonstrate.
Example hashes:
7d3c4a80888719d72666d4d7e583c88febd6f09f:959be2bef6f8a713535f776e71808b62556adf02:peppiniello
ce09e3bcbc86270e86e10c8c12f91f8fcedf3356:a62c05900d03bece29b955af9cbbd9a8efccc6dc:pepperon1
80a690ed56ad0d7fc72dc0191d3f6fc35ee98ff8:9bcb419e8e4a1e6b818ed75467db814c020f4edf:pepe100
69bd848d5a1a0ff038c89fe554268d31ebd1b41c:f69575d23ab8399c1d87910ddef54435d2b93c62:penny44
845f85071879e3273de09b2ad34513a9e643ac34:2b8958ab796b896c8663b1afe9fb18b8245af01f:pennstate4
Example formula:
Spoiler Spoiler


sentry.mba - BCRYPT
This breach uses regular bcrypt, but Sentry messed something up causing it to be garbled, like the following:
$2a$07$$2y$14$UT.TVg9tr2qb2rOn.B6ZJi/9LWANdsTZxaw6weu3UaDZsi
The above is not a valid bcrypt hash; PHP correctly recognizes this, and instead replaces the salt (22 characters following the cost factor) with dots, allowing them to be cracked.
Example hash:
$2a$07$......................n.B6ZJi/9LWANdsTZxaw6weu3UaDZsi:jacksson123


sirhurt.net - MD5($PASS.$SALT)
The salt for all hashes is: 78hsdSJH#$%
Example hashes:
257f38d439205c7ef9679028781540ab:78hsdSJH#$%:banana1
0035b1a709cf5af65ad534812d4af105:78hsdSJH#$%:Qwerty2007
508f6e52e1705c28138a1609bd18130b:78hsdSJH#$%:tbhtbhtbh123
a17d1e29a88926877dd90f9b08b417f2:78hsdSJH#$%:Jose19/02/200
728320dcfc3758c4ac7c1711d54ae918:78hsdSJH#$%:Almightyshooter123


tumblr.com - UNKNOWN
It is not possible to crack the hashes from the Tumblr breach. Either the algorithm is unknown, is missing a static salt, or maybe they used a hardware security module. However, all users with the same password will also share the same hash. You can use this to your advantage by checking those users in other databases and seeing if they share similar passwords.


wattpad.com - HMAC_SHA256($SALT.$PASS, $KEY)
Salt being a SHA1 hash of the user's "ID" field. The secret key is "d2e1a4c569e7018cc142e9cce755a964bd9b193d2d31f02d80bb589c959afd7e"
Example hashes:
f7c95f0df7fc445876af565b3b5699c0824ae2bbde648cab16c3775cb70bf92d:b74b5eae156acf2344c58e849cfc63d1b02f1bc6:d2e1a4c569e7018cc142e9cce755a964bd9b193d2d31f02d80bb589c959afd7e:domi77
11fce0d23f541ce06b8d8c3204313b75b9cbb3247b9e1e41987d527993b75948:0d8ee56135ae4d1ed93ab1c3d524a062d76d020e:d2e1a4c569e7018cc142e9cce755a964bd9b193d2d31f02d80bb589c959afd7e:wowman
ddd25b1faf2256e83b19ae7f305e04738e5f47d3e20d6ce32602d04cd0a08e07:7f703db3b9949444d0764acd90a5a03ddc064d78:d2e1a4c569e7018cc142e9cce755a964bd9b193d2d31f02d80bb589c959afd7e:bevertje
ac8ed5b1c0245fb717d5552a7d8bfb8ec9408aa14a9137e0af9c7b073a32396c:700c4535abc15251f9e3499eb2a4428487d028c3:d2e1a4c569e7018cc142e9cce755a964bd9b193d2d31f02d80bb589c959afd7e:letmein2013
7a0d5c94fd90c01a0f5b386b53361582f09c5411e97eff3d4117595129aa11a9:ff6d9634453289497fca7dfd51988fab7e1290df:d2e1a4c569e7018cc142e9cce755a964bd9b193d2d31f02d80bb589c959afd7e:ilovetwilight



CMS hashes
Habbo Private Servers (UberCMS) - (habbo.st, famehotel.org) - MD5($PASS.$SALT)
The salt xCg532%@%gdvf^5DGaa6&*rFTfg^FD4$OIFThrR_gh(ugf*/ is hardcoded into some open-source Habbo CMS (@griimnak identified this as likely being UberCMS), I've seen it used by several Habbo-related data breaches such as habbo.st and some others I can't remember right now. A search also revealed that some installations are modified to use different algorithms, but still use this salt, so try it if you're having trouble cracking hashes belonging to a Habbo retro.
Example hashes:
fa0404a7749f37fd9bc87eae7fb791be:xCg532%@%gdvf^5DGaa6&*rFTfg^FD4$OIFThrR_gh(ugf*/:leo
3079cf0e43cfb37e925e0d2174764e25:xCg532%@%gdvf^5DGaa6&*rFTfg^FD4$OIFThrR_gh(ugf*/:Sina123
9345b3a77c7bed0e3f7e22a62f89330b:xCg532%@%gdvf^5DGaa6&*rFTfg^FD4$OIFThrR_gh(ugf*/:andreas.66
d31cfd4b6ea4fb83cb49b6fe74458f32:xCg532%@%gdvf^5DGaa6&*rFTfg^FD4$OIFThrR_gh(ugf*/:lenny+helga
fc16c04cebd8261f242cdbea8cde9e19:xCg532%@%gdvf^5DGaa6&*rFTfg^FD4$OIFThrR_gh(ugf*/:ichbinklaussehverdammtgutaus


Minecraft Cracked Servers (AuthMe) - (popular plugin, too many breaches to list...) - SHA256(SHA256($PASS).$SALT)
AuthMe is a popular Minecraft plugin for servers to provide their own authentication instead of Mojang's, in order to allow players with pirated versions of the game to play. It uses two rounds of SHA256 along with a salt, and simply stores them as $SHA$(salt)$(hash) instead of regular hash:salt. Hashcat supports this natively with -m 20711.
Example hashes:
$SHA$2053412c7e2a05cf$90418aa107085f456e191f56c0330c6dfb3b083bd4453ea0dcb8637d7ee679ca:Dems
$SHA$1da220b6cd251f52$13505c625f486ef048887017bd26684aff0d25a3c5780b362cee4d40a673c607:[пороль]
$SHA$1d5efaeb70ac519d$b189328d7168db9e8c29986a5a8e816ffcd79181e4e0ab5052177009f660040c:Hydro123
$SHA$cde494ce6ff7626c$553853af4c8e967f28ed0453983adb8d3f40a956ba62a31eb969a2a3c42dfc1b:wersus123
$SHA$b9ddf9fab322294d$02328203979724204172c347f2e5ce9c9015dce047ab78b5f71982cf7f806026:azertyuiop


PrestaShop - (popular CMS, too many breaches to list...) - MD5($SALT.$PASS)
The static salt is a 56-character string, stored as the _COOKIE_KEY_ variable in the settings.inc.php file, and is unique to each installation of PrestaShop. The salt is not stored anywhere in the database, therefore it is impossible to crack these hashes if the attacker did not have access to the server, or didn't take the salt at the time. Newer versions use bcrypt, which doesn't require the _COOKIE_KEY_ variable and can be cracked like any other bcrypt hashes. Hashcat has an optimized kernel (-m 11000) for this.
Example hashes:
None right now, will add later.
List of PrestaShop breaches and their respective salts (I'd really like to add more of these so please message me if you know some):
Spoiler Spoiler
(No matter what I do, the spoiler tags arbitrarily add spaces where there shouldn't be - sorry, I can't fix this table alignment)



Ruby on Rails "restful-auth" - (8tracks.com, animaljam.com, kickstarter.com, zynga.com, etc...) - SHA1("--".$SALT."--".$PASS."--") / SHA1(SHA1(SHA1(SHA1(SHA1(SHA1(SHA1(SHA1(SHA1(SHA1($KEY."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)."--".$SALT."--".$PASS."--".$KEY)
Known by some as "SHA1DASH", this extension for the Ruby on Rails framework uses a salted SHA1 with hyphens surrounding each value (hashcat -m 27200). Newer versions employ a "key", and perform 10 rounds of SHA1 hashing (hashcat -m 19500), although the number of rounds can be modified by the user.
Example hashes (without key, -m 27200):
00003daaf8bd54ff51c0635de4be471999ed4ce5:7ae63c0ca2adb2d3987bd9ade2c12b9b2238a0b3:150688
0000431b7a97c28e95691b446731be11f797c8a3:3e5834444cf08ed22921d294651483a305888988:080598
0000854cb36c640bb718067e31c7aa91088bb548:e4e9bc9eebf98d0b459798548842bf2c973ff998:whatthehell
0000b937a147926ceb1dba3186580eb6ee4cf0b9:0a3c26b1ea4501e0f71b864f71c936259bf81d44:dragon80
0000c9614deb13a8299a6674cb6402ca994f8c2d:1200b1e5a112fdcc45a5e3578e640516f804b8cf:Hello123
Example hashes (with key, -m 19500):
0000373d403ad71ff7f35bf8f12698f709083379:5vHa9wPAs1pfrjZskTcD:f5945d1c74d3502f8a3de8562e5bf21fe3fec887:snickers
0000a3f1e0825a9fe502ed1f43eef2a8d9948a69:084KD9FRZvKTfW9ydRNH:f5945d1c74d3502f8a3de8562e5bf21fe3fec887:696969
0000de501d926a057cc82d0d66413890024a07d7:FKG4YDmD4Qxt4bAgV4Rp:f5945d1c74d3502f8a3de8562e5bf21fe3fec887:swordfish
0000dff66c214fd51e2a492d0128e90dc613c5aa:y0JuN4tQvmWhj0F6iRH8:f5945d1c74d3502f8a3de8562e5bf21fe3fec887:freebird
0001aa1c67f4dea50adff2d65a7e62b88e0b3e82:nD6JkBY7KF32yPLKUSnh:f5945d1c74d3502f8a3de8562e5bf21fe3fec887:shithead
List of breaches and their respective keys (I only know of one at the moment, but since it comes from the same CMS I decided to put it in this section):
Spoiler Spoiler
Example formula:
Spoiler Spoiler


Simple Machines Forum - (popular CMS, too many breaches to list...) - HMAC_MD5($PASS, $KEY) / SHA1($SALT.$PASS)
Despite having a database field explicitly named "salt", to my knowledge this has never been utilized in any version of SMF. The salt (or key) is always the username in lowercase, and the encoding depends on whatever the server was using (this usually doesn't matter, but it's worth mentioning in the case of foreign sites). Older versions of SMF use HMAC MD5 with the salt used as a key, newer versions use SHA1 and just concatenates the salt and plaintext.
Example hashes (MD5):
01ae9bdd27b704f4a10d2e227ccaeafa:vautour47:falcon47
a35d47dace0f9b95573b84c92d3e3693:scooter mcgraw:chelsea
cf56f44ba213cd350167df424624bf71:claudiano:eusou+eu22789
02df7587c30be3512f6a3f4da67d2302:dallascowboys_rp:nancy1959
462f84fc27d0dff7372c76e7984fee63:jon_hobbit2002:perfectdark
Example hashes (SHA1):
93dc3491655d8d73762e616627e2c05c70eea42f:rs4:parabola
fc7a4875d3f09d6f1418e864e0847895d5f4e9f3:morgan:dupadupa
67e9c39bbb05d3bf08f5dc535f25ec9509a6eed6:bugmenot:somepassword
2ad6b587860256e50e98dd9ec95a93259991e9dd:explode2005:●●●●●●●●●●●
28e2f6fcd913fd896c9238df8b1f57e4102b9a8f:tomasz szewczyk:06121974
a572b200231e84928e7c0fc7a181f53ad30f4f88:nicholas.c.watson:kimpossible


World of Warcraft Private Servers - (paragon-servers.com, neverendless-wow.com, rising-gods.de, valkyrie-wow.org) - SHA1($SALT.$PASS)
The salt is the username in uppercase with a colon appended. Passwords are also stored in uppercase (ASCII characters only), no idea who decided to do this or why.
Example hashes:
a8364bc439031b3e33f56a9b8ecfb0b1ec464a7e:AMIGO::GH6RTE
a536d33fde71cc7587ef5fffddf7fd2af7b75e78:SAIKA972::S77680
c1a9f6d254448eabeab470b9a4a5404bcfb64ed8:DYDYCHLOE::CHLOéX3
038775ff298b0f4b08c2d88b1b00a50219a44884:MAJADAM7::JESUISUNNOOB5*
615b4c7b1c85ebfca4887fbf5e67b453814f1aad:LOLMILEYELVIN::BROOKLYN1693


This thread is incomplete, but I'll continue adding more to the list (and yes, I'll beautify it more too). If you have any requests or can't find the algorithm for a specific breach or CMS, leave a reply and I'll add it to the OP. Before requesting, you should check Hashcat's example hashes page. I will not add every single hashing algorithm to this thread; just the ones that aren't obvious from a quick run through any open-source hash identifier.
Formerly @‍God, but that username was stolen from me.
Reply
#2
Thanks for sharing this again, pretty interesting information.
Reply
#3
This is so dope and well made thanks
Reply
#4
Nicely put together, very detailed (I like how you put forward details about potential hurdles along the way such as encoding for foreign sites and whatnot).
:clap:
Reply
#5
Thanks for (re)posting this. I plan to follow it in case anything new is added. Clearly I had seen it before because I had copied your Wattpad comments in my wattpad "script". I don't think I ever tried dehashing any though. I can just download a bunch.

How do people get the salt? Especially the super long ones or ones made up of crazy special characters

Because according to VICE:
The passwords, however, were not in plaintext, but were "hashed," a process that turns the actual password into a different string of digits. The company also added a series of random bytes at the end of the passwords before hashing them, or "salted" them, as Tumblr said when it disclosed the breach. The company, however, didn't say exactly what algorithm it used to hash the passwords.

Since Tumblr's announcement, the hacked data appears to have been circulating within the internet underground. A hacker known as Peace, who also claims to have the data and was selling it on the darknet marketplace The Real Deal, said Tumblr used SHA1 to hash the passwords.
Reply
#6
(02-24-2024, 02:21 AM)blackboar Wrote: Thanks for (re)posting this. I plan to follow it in case anything new is added. Clearly I had seen it before because I had copied your Wattpad comments in my wattpad "script". I don't think I ever tried dehashing any though. I can just download a bunch.

How do people get the salt? Especially the super long ones or ones made up of crazy special characters

Because according to VICE:
The passwords, however, were not in plaintext, but were "hashed," a process that turns the actual password into a different string of digits. The company also added a series of random bytes at the end of the passwords before hashing them, or "salted" them, as Tumblr said when it disclosed the breach. The company, however, didn't say exactly what algorithm it used to hash the passwords.

Since Tumblr's announcement, the hacked data appears to have been circulating within the internet underground. A hacker known as Peace, who also claims to have the data and was selling it on the darknet marketplace The Real Deal, said Tumblr used SHA1 to hash the passwords.

I would assume the longer salts (particularly static salts) are exfiltrated through source code. Unique salts are usually stored in the database alongside the hashes, though sometimes they are determined by other variables e.g username or email
Formerly @‍God, but that username was stolen from me.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Argon2 and bcrypt for password hashing and cache-hard algos Someone1611 4 2,339 02-24-2024, 02:18 AM
Last Post: blackboar



 Users browsing this thread: 1 Guest(s)