All right, let's see what we can do here. So we're gonna crack RokU without using RokU. So all I did was took the RokU dictionary, piped it through MD5, so we have a big-ass list of MD5 hashes now, and let's see what we can do. Looks like we lost a few hashes in the conversion, but I think we'll be all right. All right, so most basic, let's do a hashcat RokU.hash. We'll do tach E3 and let's just do five character. So this will do all character classes for five positions, but we're going to start doing one, and then we'll do two, and then we'll do three, then we'll do four, then we'll do five. So that's what this increment flag does. So that is one, two, three, four, five. I think we're doing okay. All right, almost 300,000 in 27 seconds. Why not? So let's try... We need to grab... We don't have anything. We can't do a wiki strip, that would take too long. Let's see if we can find a dictionary. Something small. Let's try, like, all words of 10 letters, and we want that in a text file. Can't I just have a dictionary? We have... Oh yeah, good point. We could use ASPEL, that's true. Let's grab wiki strip because we can use it regardless. And then, do we have ASPEL? Where do ASPEL's dicts go? There we go. So I'm guessing we could probably use the ENUS. Let's do that one. Yeah, maybe that's not a good one. Maybe without accents? I don't think that one's even gonna... That one's gonna matter. Let's instead... Let's go grab... There we go. Let's grab this one. Some random list of words off of GitHub, this ought to be interesting. So we're gonna do rocku.hash, and then feed it words.txt, and let's see what we get. Actually, let's look at what these even look like. Yeah, this'll work. Okay, actually, it wasn't terrible, so that's good. Let's try doing... Let's do an A6 and see what we get. And we'll just add... Let's just add two digits. No, let's just add... Yeah, let's do two digits, and then let's also increment. So we exhaust both of those. Oops, that's gonna fail. But yeah, I mean, I guess that works. We got 2% just off of that. All right, all right. What if we do... If we already incremented two spaces, let's not run that again. Let's do... Well, let's just do like... What year did this come out? 2009, right? So let's do 2008. Oh, we're gonna have to trim this hash file too, because these load times are a bit ridiculous. All right, so not a whole lot of 2008 passwords. Let's... We're gonna add remove. And we're also gonna do an out file. We don't need to do an out file, because we can do a pop file. So what this is gonna do is... So we're gonna take all these words that are in words.txt. We're gonna add 2009 to it. Actually, let's just do... Let's do 2000 digit, digit. So that should cover everything from 0, 0 to 99. And then we're gonna remove everything that we cracked, because it's gonna go in our pop file anyway. And then after that, we'll roll our pop file back and we'll try some rule-based attacks. So we've only got 13,700,000 more hashes to crack. Not a lot. Let's do a cut-d, attack-f2-on from hashcat.popfile. And we're gonna put that to pop.dict. And then let's roll... Instead of doing an A6, let's just do generated rules. And let's do like... Let's do like 5,000 of them. We'll move that removed so we don't have to keep doing it every time we want to change a command line or a run line. Probably should have suppressed output. This is... Get hit status, but we're not gonna see anything. We're up over a million now. So that... That got us almost 11%. No, 8... 9%. Almost 9%. It's pretty good. And the great thing is, is that if we do that again, we're gonna get a bunch more. But this time we're gonna write this... We'll start writing this out to a file so we don't slow down at all. w... We'll call this rocku.out. It's not w, it's tacho. This load time's a little bit ridiculous. I think we'll manage. Let's just see what our GPU is doing as well. So down here we'll do like a watchtech n5 nvidia smi. So even for md5, because there's so many hashes, we're still only going at what's that? 118... 118 million candidates per second, which is a little bit sad, but you know. So we got 278,000 on that one, or 288,000. So if we do it again, we'll get even more. So you just sit here and you loop this attack. I think after this one we'll just do maybe just an uppercase. I don't know. If you have... If you have an idea, tell me what you want to try in the chat, and we'll give it a shot and see how many you get. All right, so let's try... Let's try just uppercasing everything. Wow, we got nothing. Probably because we already had an uppercase in our generated rules. What else can we do? We could try doing some truncates. Let's actually do this. No, no, we'll just do the truncate first. So we'll just take one character off the right side of the plain text and see what happens. Normally this is really good if you have a word list that already has years on the end of it. So if you've already cracked hashes and somebody's using password 2019 and then they use password 2020, you trim one to two positions off and then you fill that with digits and get back to it. All right, so let's roll our cracks, because I forgot to do this. We'll roll our cracks back into our word list. I already forgot what I called it. Pot.dict. And then because we started writing an out file, we're going to do the same thing for the out file. Well, actually we don't need to do that. Yeah, we don't need to do that. All right, so we're going to take from the left side, or sorry, from the right side, using tack k, we're going to truncate the first two positions of the word that's in pot.dict. And then we're going to try and run everything for two positions and see what we get. Yep, that'll do it. It was actually getting a lot more than I expected it would. All right, so we're, what, 10.48% in. We've only got a lot more to go. All right, so if we truncated two, and it did really well, let's truncate three, but instead of adding something, just keep it with the same two positions and see if maybe we can catch some stuff that doesn't have that. This is a little brute force-y without actually doing a mask attack, but I mean, it still kind of makes sense. If somebody prepended, for instance, numbers to a password, if they start with their birth year or something at the beginning, we can strip those off and then start replacing the first digit or the first character that comes after that. Yeah, see that? We're still getting stuff. So one thing I keep seeing in here is there are a lot of passwords that are just digits. So this would be, to me, tells me that I need to go and brute force all of these, what is that, six, seven characters of digits. So after this one finishes, we'll see if we can do that, because seven digits will be pretty quick. I mean, technically, we could probably even go out to 12, but I don't know. We'll see what the runtime looks like. All right, so we're going to strip all this stuff off, and then we're just going to say A3, and we only want digits for, we'll say up to eight. And because there were ones that were less than eight, we're going to increment this as well. So we'll try one digit, then two digits, then three digits, then four digits. All right, so that was pretty quick, and that got us, what, almost seven percent. All right, so let's get rid of this increment, and let's do one more. Actually, who cares? Let's just go until it's going to take too long. So we're going to waste a little bit of time going over the things we already went over, but it was fast enough that it shouldn't really matter too much. I'm really going to keep getting faster as we keep cracking hashes, because it's less workload to do comparisons against. So what we should also see down here is our GPU memory is going to spike once the attack gets going, because we've got all that stuff loaded into the video card's memory. This is kind of a good example of why Rocky was bad in some ways. Like, it's good, but you could trim all of this crap out, because it's going to be rare that you're ever going to see a password that looks like this in a dump today or during a pen test or something. Like, if companies had passwords that look like this, their building's probably on fire. Oh, 24% almost? I'll take it. But this also means 24% of this dictionary is crap. Right? So we're at... let's see what percent we're at so far. So we're at almost 24%... Sorry, almost 25%. Well, that's what? 14 divided by 4 is math? So what these probably are are spammer passwords, though, or automated accounts. So in a lot of ways, you know, like Twitter, for instance, or something... Reddit would be a good one. When you're doing automated account stuff, you don't really care about the security of the account if all you're going to do is sit there and upvote each other or, you know, do retweets or, you know, maybe it's a Twitch bot or something like that. So these are likely... I don't know much about the site other than the dictionary. I mean, it could be telephone numbers, but a five-digit telephone number, like we did have a lot of fives. Six, even. Yep, that's true. Asian countries where sometimes a sentence can be said in a string of numbers, sure. I kind of want it to stop cracking so we can do something else. But you know what? I'm gonna take them. What if... let's do... let's make a word list. We'll just use cool again. That's easy. Don't tell DT. I'm gonna scrape Defcon.org. So what are we doing? This is only... so this is only 12. Oh, this is gonna take 30 minutes. I don't want to wait 30 minutes. We're only doing the default, so it's only gonna go too deep. It won't spider too recursively. All right, screw that. I'm tired of waiting. 31 minutes to finish. I don't want to sit around for 31 minutes. Okay, but we're at 25%, so that's pretty good. What else can we do? What if... oh, let's do the Pathwell masks. And if you're not familiar with what the Pathwell masks are, we will discuss those tomorrow. So this is the top 100 topologies that were observed in corporate networks. Since we have a bunch of them, we'll just do this in a loop. Yep, yep, A3 in the mask. And then we'll call it done. Come on, you can do it. Okay. Looks like a pretty good result. So this is all going to be the same structure. So you see we've got one upper. What's that? One, two, three, four, five lowers and two digits. So that would be numbers. Six, eight characters. So we're cracking eight character passwords in... what's our runtime? Less than a minute. And the entire attack is going to complete in about a minute. Oh, we're actually over 25% because we're missing... what? 200 and... yeah, about 200,000 hashes out of this. Or no, we're missing like 3 million. So we're way over 25% at this point. And we're only 40-45 minutes in. So let's actually even... let's take pack. And we'll run pack against our cracks and generate some rules and then run some rules against our cracks and see what happens. Let's actually pause this for a second. And what do we call this? pot.dict, I think. Yeah. And we're going to sort this thing before we do this anyway. So let's do... what was that out file? It's like... no, it wasn't hashcut, it was rocku.out. We'll put those in there. And then we will do a sort techu.pot.dict to pot.sorted. And then we'll move pot.sorted to pot.dict. Such a lewd file name. Okay. So let's go... we'll let this keep going. So we will resume this with R. And then let's do... let's do mask... no, we don't want maskgen, we want rulegen. So... uh-oh. I don't think pack is Python 3. That doesn't look like it to me. We'll try it. Yeah, I didn't think so. Okay. So we're going to do... app.cache.search.python2. No module named enchant. So probably the pip to install enchant. We don't even have pip. Oh no. It's all going to hell. What? Python 2 doesn't have... that was pip.whl. No, let's do it. Yeah, it ain't there, man. app.install.python.tack.pip. We need to summon ifelix to port pack to Python 3. What provides enchant now? Python 3 enchant? No, Python 2 enchant. What happens if we do that? Oh, it's pyenchant. Let me smart. Enchant C library. Okay. lib enchant dove. Yeah, it kind of looks like they may have pulled it, but we're working around it. Where are we at? Going slowly, but we're still going. Okay. Okay, we did it. All right. So we want to run statsgen on our dictionary. So that was pot.dict. We'll let it do its thing. All right, so we've got... So these aren't going to help us too much. I mean, they might... We could probably run these and get something out of them, but we're kind of unlikely to. But that's a good example of extracting masks out of dumps that you... Or not dumps, but cracks that you've done. So we could take these right here and put them in a new file and then start running them. But what I want to do is... Do we have our analysis? No, we don't. Why do we not have our analysis? No, because we didn't output them. That's why. So let's write that to masks.out. All right, and then we'll feed that into maskgen. I wonder what the math he based. So that's on a billion per second. I don't think we're going to be able to... I don't think we're going to be able to cover that in this stream. Let's do rulegen though. And we'll just generate some rules. Excuse me? So how does that work for maskgen, but not for rulegen? Or was it statsgen that failed before? I don't even remember anymore. I guess I just forgot to redo it. Okay, so let's take a look at our options here. We can make that a little bit smaller. Take the defaults on everything. We're going through pack. Generating some rules. We've cracked about, I want to say, close to 30% of Rocky right now using nothing but masks, rules, and passwords that we've cracked from those. Pack's going to take its sweet time because, you know... So pack needs to run through about four and a half million candidates. So this is going to take a little bit. So we'll let that run down there and we'll let our path while masks keep running. The old Minga special. You know, this card has like 13 gig of video memory. We'd probably be fine. Let's do it. I ain't scared. Right, yeah. That dictionary just grew massively for pack. So, oh well, it'll get over it. Okay. So we're gonna do rocky.hash. What'd you want? You wanted the pot.dict. One, two, three, four, five, six. All right, here we go. So we're auto-generating just shy of a million rules. And we're going to run that against every... What? Because. Because I don't want to. What if there's... What if there is a 65 character password in here? I want it. And I'm not going to get that with taco. Why no w4? Yeah, that's a good question. Because I'm trying to run pack. That's why. I would like this box to actually remain accessible. I don't... You know what, dude? My armpits smell like free birds right now. It smells delicious. Nope, that's too close. Oh, well, you're throwing prints in there. That's a little close to cheating. We don't want to use... We don't want to use rocky.hash to crack rocky.hash. That kind of defeats the purpose. If we did that... Imagine Rocky just came out, right? Like we're all we're all fawning over the fact that we have 14.3 million hashes and we want to crack them. We wouldn't have that. We wouldn't know what rules Rocky was using. It's totally unfair. It's like walking in to do a pen test with a domain admin account and then claiming you own the entire network. Get out of here. Almost at 20... Almost at 25. We can do it. Do you put on your Bon Jovi? Let's go. It probably would have been smarter to write the cracks to a file. So this would go a little bit quicker. But it's also a little less interesting because then you just sit there and look at a status screen updating every 20 seconds. See, but this looks like it could actually be an interesting mask to run. So we've got a big string of these. There's some with E. Let's try doing a lower in six digits. So we'll do A3. We're going to do lower 2, 3, 4, 5, 6. And then just in case there's some that are maybe five, we'll do increment. And we're actually going to write these to rocky.out, because this should run fast enough, it won't matter. Better? All right, so 25, 21. So we're definitely getting cracks. So we started at 25.07, so we got, what, 14 or 0.14% out of that. That's not as good as I thought it would be. This is more... this one was more fun. Actually, let's not even do that yet. Let's roll our cracks back in. And this is pot.dict. I'm going to sort u. Did that just say it's close to the end? We need to roll the old hashes back in too, though. Dude, is this going to finish? In nine hours? Oh my god. Ain't nobody got time for that. Once pack's done, we'll... Actually, you know what? If I kill this pack, we'll go faster. So we'll let pack do its thing, and then we'll run the pack rules. Now, you know what? I want to run... What was that? Lower, one, two, three. We already do this? I think we did. Let's do the opposite of that. So we've got this one, which seems to be doing a thing. One, two, three, four, five, six, lower. One, two, three, four, five, six, lower. Uh-oh. Did we break it? I think it's broken. We ran out of memory because pack is trying to do four million rules. Yeah. I need a sad trombone. Should've let pack finish. Oh shit. Well, we didn't do too bad before we crashed. I mean, I can't even... I can't even scroll. Like, this thing is... This thing is toast. So we did... What do we have here? 2.9, so we're at three million there. And then we trimmed out about three million. So we cracked about... Well, I guess that would be almost 50% then, right? So we've cracked half of Rock You in an hour and 19 minutes using nothing but masks and a couple word lists. I think we used the English dictionary. Got a bunch of stuff with some hybrid attacks. Did some mask attacks with digits. Because for whatever reason, Rock You has a million digit passwords. No, this is it. You have to... Britney Spears forum. Oh shit, we're back. Pack did its thing. Really inopportune time, too. I just shoved food in my mouth. All right, so pack went and took a look at all the words that we had in our word list. And I built a rule set out of that. And then it sorted that rule set. So we can take this analysisSorted.rule and feed this in on our... feed this in using our pot.dict. We should get a shit ton of cracks. Let's see what happens. pot.dict techr pack analysisSorted rule. No, and we don't have to cover those because hashcat defaults to MD5 as it's... It defaults to MD5 as the hash type. And since we're running MD5s, we don't need to worry about it. And because we're still doing dictionary attacks, we don't need to specify A because the default value is to do a dictionary attack. So adding rules to a dictionary is still a dictionary attack. It's just mangled by rules. I mean, at this point, we might just crack everything. I think I just saw my password fly by too. The hell's with the 727s? A bunch of Boeing fans at Rocky. Yeah, I saw that. I think so. Let's do it. And if only that were the case. All right, so password.dict. And then we're going to run... We're not going to run pack again because... No. And we want analysis rule sorted. I would laugh if this got nothing. I think it did it. 2787, yeah. Good work, Manga, you got nothing. I don't know. It's only one word, why would it have queued? Maybe because it split the workload? No, there's an R. Oh, wait. All right. Yeah, yeah, yeah. I missed an R. What was that? Two percent, roughly. 2787 to 3074, almost three percent. Now, what if... I don't want to do the whole thing because that's going to take way too long. What if s-w-o-r-d... We'll do two to start. No, we'll do one to start. Forgetting all kinds of stuff. I probably should have done this as increment because these startup times are getting a bit ridiculous. Word pass. No one will ever guess. Oh, we're getting faster. We're up to 500 million, almost 500 million. Yeah, drosap, drosap's always a good one. I mean, that did pretty good. Nope. So that doesn't matter because we already specified it here. Let's run it out a few more characters and see what it gets. Something that would have been smart is if we did the lowercase o, the uppercase o, and then a zero. And then for i, we do lower i, upper i, and a one. Run that file. Yeah, I did that. We ran the top 100 pathway masks. Yeah, yeah, yeah. I'm not doing that. Dude, on a Tesla? No. All right, after this one, we'll run it. That's going to take 10 minutes. I don't want to do that. If you're over there analyzing what the fastest thing you can run to crack as much as you can, be disappointed. So what do we have? So we have A3 incrementing from a minimum of 8 with a runtime of 17 seconds. We have 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. Okay. Oh, this changed. Yeah, increment min. Yeah, the tools haven't been updated in a while though. I don't know, I mean, there comes a point where, you know, you get used to or you've already generated the things that you need to generate, and you've already found other ways of doing something that you don't need to pull the tools back into it. Yeah, no, I still pwmin. I mean, hell, I didn't even catch it when you typed it and typed it myself, so, you know. It's not cheating that much because we're still running the attacks. Yeah, yeah, I know. But there's a very big difference between, let's use the rules generated from RockYou against RockYou versus hcstat. Because you still have to base... You still have to get your baseline in before you do that. It is cheating. That's why we regenerated... We regenerated the rule set down here. Yeah, yeah. Oh, no, no, no, no. But I'm done in about 30 seconds anyway because it's 11 o'clock and I want to take a break from sitting here. All right, so we did 4.4 million plus... Math is hard. One, four, three, four, four, three, nine, one, minus... One, one, nine, two, five, two, five, four, seven, two. So, four, that's 5.8 million. So we did just under 50% in an hour and 40 minutes. It's pretty good. So I'm gonna blow this box away. That was fun. Maybe tomorrow we can do something similar. I'll save the... I'll save the cracks, but we'll see. Saturday night's gonna be crazy. Anyway, that's it for now. Thanks, guys.