[{"data":1,"prerenderedAt":782},["ShallowReactive",2],{"\u002Fblog\u002F2020\u002Fcrack-the-hash":3,"\u002Fblog\u002F2020\u002Fcrack-the-hash-surround":771},{"id":4,"title":5,"author":6,"badge":11,"body":13,"date":759,"description":760,"draft":761,"extension":762,"image":763,"meta":765,"navigation":766,"path":767,"seo":768,"stem":769,"__hash__":770},"posts\u002Fblog\u002F2020\u002Fcrack-the-hash.md","Crack The Hash",{"name":7,"to":8,"avatar":9},"Nir Galon","https:\u002F\u002Fx.com\u002Fnirgn975",{"src":10},"\u002Favatar.webp",{"label":12},"hacking",{"type":14,"value":15,"toc":752},"minimark",[16,33,42,47,61,73,81,107,111,122,131,144,159,170,173,182,189,193,208,215,224,233,333,339,441,447,456,460,463,478,490,493,502,529,545,564,595,604,613,638,647,656,663,693,700,729,741,745,748],[17,18,19,20,25,26,32],"p",{},"In earlier post (at ",[21,22,24],"a",{"href":23},"\u002Fblog\u002F2020\u002Fopen-source-intelligence\u002F#6-pivoting","Passive.. Passive Recon.. Passive Reconnaissance.. OSINT!",") I mention we can use ",[21,27,31],{"href":28,"rel":29},"https:\u002F\u002Fhashcat.net",[30],"nofollow","hashcat"," to try and crack a password we found, but it wasn't the meaning of the post (and it's a red line for me to do that and put his cleartext password on the web for someone who didn't actually try to hack my service).",[17,34,35,36,41],{},"But in this post we'll learn how to use hashcat to crack passwords, and even do that much faster on the cloud with GCP (",[21,37,40],{"href":38,"rel":39},"https:\u002F\u002Fcloud.google.com\u002F",[30],"Google Cloud Platform",").",[43,44,46],"h2",{"id":45},"_1-request-a-quota","1. Request a Quota",[17,48,49,50,54,55,60],{},"First thing you need to do is to request a quota, because by default the quota for GPU on GCP is zero. In this post I'll be using ",[51,52,53],"em",{},"\"\"NVIDIA Tesla K80\""," GPU, so go to ",[21,56,59],{"href":57,"rel":58},"https:\u002F\u002Fcloud.google.com\u002Fcompute\u002Fdocs\u002Fgpus\u002F#introduction",[30],"this"," link and make sure they have this kind of GPU on the zone you want to deploy your VM.",[17,62,63],{},[64,65],"img",{"alt":66,"className":67,"height":70,"src":71,"width":72},"Available GPU Zones",[68,69],"rounded-lg","mx-auto",350,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Favailable-gpu-zones.webp",841,[17,74,75,76,80],{},"In my case I want to deploy the VM on ",[77,78,79],"code",{},"europe-west1-b",", so we're clear.",[17,82,83,84,87,88,91,92,95,96,98,99,102,103,106],{},"To make the quota request open the left menu and under ",[51,85,86],{},"\"IAM & Admin\""," you'll have a ",[51,89,90],{},"\"Quotas\""," button, click it and just filter by the ",[51,93,94],{},"\"GPU\""," keyword to see all the GPUs GCP offer. Choose ",[51,97,53],{},", and click on ",[51,100,101],{},"\"ALL QUOTAS\"",", now just mark the zone you want your quota in and click on the top button that says ",[51,104,105],{},"\"EDIT QUOTAS\"",".",[43,108,110],{"id":109},"_2-create-the-vm","2. Create the VM",[17,112,113,114,117,118,121],{},"After Google approved your quota, let's build the VM. Go to ",[51,115,116],{},"\"Compute Engine\""," tab on the left side menu in GCP, and then click on the ",[51,119,120],{},"\"CREATE INSTANCE\""," button.",[17,123,124],{},[64,125],{"alt":126,"className":127,"height":128,"src":129,"width":130},"GCP Compute Engine",[68,69],317,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fgcp-compute-engine.webp",830,[17,132,133,134,137,138,141,142,41],{},"Now you'll be redirected to a new page where you can configure your VM. I named my VM ",[77,135,136],{},"crack-the-hash"," and then I choose the region I got the quota at (in my case ",[77,139,140],{},"Belgium"," and the zone ",[77,143,79],{},[17,145,146,147,150,151,154,155,158],{},"The next step is to choose the machine type. In our case we need to choose the ",[51,148,149],{},"\"old\""," series, ",[77,152,153],{},"N1",", because this is the only one that has the option for GPU. After that, choose the machine type itself (I choose the ",[77,156,157],{},"n1-standard-4"," which has 4 vCPU and 15Gb memory, but you can choose which ever you want. Just keep in mind it'll affect the speed a bit).",[17,160,161,162,165,166,169],{},"The GPU is kinda hidden under the ",[77,163,164],{},"machine configuration"," section, you'll see a ",[77,167,168],{},"CPU platform and GPU"," button, click it and an option to choose a GPU will open up. I choose Nvidia Tesla K80, because we're just learning here and I want to keep the costs down",[17,171,172],{},"The final step is the boot disk, I choose 30GB SSD and the latest Ubuntu (20.04) LTS - which means we'll install CUDA manually (Google has images with CUDA installed by default, but we're trying to learn here so I choose the longer way).",[17,174,175],{},[64,176],{"alt":177,"className":178,"height":179,"src":180,"width":181},"GCP Instance Configuration",[68,69],578,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fgcp-instance-configuration.webp",603,[17,183,184,185,188],{},"After you're all done, scroll down and click on the ",[51,186,187],{},"\"Create\""," blue button and just wait a couple of minutes until the machine will be created and boot up.",[43,190,192],{"id":191},"_3-install-cuda-and-hashcat","3. Install CUDA and Hashcat",[17,194,195,196,201,202,207],{},"When the machine is up and running the first thing we need to do is to install ",[21,197,200],{"href":198,"rel":199},"https:\u002F\u002Fdeveloper.nvidia.com\u002Fabout-cuda",[30],"CUDA"," first. CUDA is a parallel computing platform and application programming interface model created by Nvidia and ",[21,203,206],{"href":204,"rel":205},"https:\u002F\u002Fhashcat.net\u002Fhashcat",[30],"Hashcat"," is using it.",[17,209,210,211,214],{},"First we need to SSH into the machine, the easiest way to do it is to click on the ",[51,212,213],{},"\"SSH\""," button and just let GCP open a new terminal right in the browser window.",[17,216,217],{},[64,218],{"alt":219,"className":220,"height":221,"src":222,"width":223},"GCP Connect Via SSH",[68,69],153,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fgcp-connect-via-ssh.webp",682,[17,225,226,227,232],{},"After that the terminal is open, go to the ",[21,228,231],{"href":229,"rel":230},"https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=2004&target_type=debnetwork",[30],"CUDA Toolkit download page"," and choose the platform you want to install it to, it'll give you all the commands - just paste them in the terminal. In my case here they are:",[234,235,241],"pre",{"className":236,"code":237,"filename":238,"language":239,"meta":240,"style":240},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","wget https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002Frepos\u002Fubuntu2004\u002Fx86_64\u002Fcuda-ubuntu2004.pin\nsudo mv cuda-ubuntu2004.pin \u002Fetc\u002Fapt\u002Fpreferences.d\u002Fcuda-repository-pin-600\nsudo apt-key adv --fetch-keys https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002Frepos\u002Fubuntu2004\u002Fx86_64\u002F7fa2af80.pub\nsudo add-apt-repository \"deb https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002Frepos\u002Fubuntu2004\u002Fx86_64\u002F \u002F\"\nsudo apt-get update\nsudo apt-get -y install cuda\n","terminal","bash","",[77,242,243,256,271,288,306,317],{"__ignoreMap":240},[244,245,248,252],"span",{"class":246,"line":247},"line",1,[244,249,251],{"class":250},"sBMFI","wget",[244,253,255],{"class":254},"sfazB"," https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002Frepos\u002Fubuntu2004\u002Fx86_64\u002Fcuda-ubuntu2004.pin\n",[244,257,259,262,265,268],{"class":246,"line":258},2,[244,260,261],{"class":250},"sudo",[244,263,264],{"class":254}," mv",[244,266,267],{"class":254}," cuda-ubuntu2004.pin",[244,269,270],{"class":254}," \u002Fetc\u002Fapt\u002Fpreferences.d\u002Fcuda-repository-pin-600\n",[244,272,274,276,279,282,285],{"class":246,"line":273},3,[244,275,261],{"class":250},[244,277,278],{"class":254}," apt-key",[244,280,281],{"class":254}," adv",[244,283,284],{"class":254}," --fetch-keys",[244,286,287],{"class":254}," https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002Frepos\u002Fubuntu2004\u002Fx86_64\u002F7fa2af80.pub\n",[244,289,291,293,296,300,303],{"class":246,"line":290},4,[244,292,261],{"class":250},[244,294,295],{"class":254}," add-apt-repository",[244,297,299],{"class":298},"sMK4o"," \"",[244,301,302],{"class":254},"deb https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002Frepos\u002Fubuntu2004\u002Fx86_64\u002F \u002F",[244,304,305],{"class":298},"\"\n",[244,307,309,311,314],{"class":246,"line":308},5,[244,310,261],{"class":250},[244,312,313],{"class":254}," apt-get",[244,315,316],{"class":254}," update\n",[244,318,320,322,324,327,330],{"class":246,"line":319},6,[244,321,261],{"class":250},[244,323,313],{"class":254},[244,325,326],{"class":254}," -y",[244,328,329],{"class":254}," install",[244,331,332],{"class":254}," cuda\n",[17,334,335,336,106],{},"After everything is installed successfully it's time to install ",[21,337,206],{"href":28,"rel":338},[30],[234,340,342],{"className":236,"code":341,"filename":238,"language":239,"meta":240,"style":240},"wget https:\u002F\u002Fhashcat.net\u002Ffiles\u002Fhashcat-6.1.1.7z\nsudo apt install p7zip\np7zip -d hashcat-6.1.1.7z\nsudo cp hashcat-6.1.1\u002Fhashcat64.bin \u002Fusr\u002Fbin\u002F\nsudo ln -s \u002Fusr\u002Fbin\u002Fhashcat64.bin \u002Fusr\u002Fbin\u002Fhashcat\nsudo cp -Rv hashcat-6.1.1\u002FOpenCL\u002F \u002Fusr\u002Fbin\u002F\nsudo cp hashcat-6.1.1\u002Fhashcat.hcstat2 \u002Fusr\u002Fbin\u002F\nsudo cp hashcat-6.1.1\u002Fhashcat.hctune \u002Fusr\u002Fbin\u002F\n",[77,343,344,351,363,374,387,403,417,429],{"__ignoreMap":240},[244,345,346,348],{"class":246,"line":247},[244,347,251],{"class":250},[244,349,350],{"class":254}," https:\u002F\u002Fhashcat.net\u002Ffiles\u002Fhashcat-6.1.1.7z\n",[244,352,353,355,358,360],{"class":246,"line":258},[244,354,261],{"class":250},[244,356,357],{"class":254}," apt",[244,359,329],{"class":254},[244,361,362],{"class":254}," p7zip\n",[244,364,365,368,371],{"class":246,"line":273},[244,366,367],{"class":250},"p7zip",[244,369,370],{"class":254}," -d",[244,372,373],{"class":254}," hashcat-6.1.1.7z\n",[244,375,376,378,381,384],{"class":246,"line":290},[244,377,261],{"class":250},[244,379,380],{"class":254}," cp",[244,382,383],{"class":254}," hashcat-6.1.1\u002Fhashcat64.bin",[244,385,386],{"class":254}," \u002Fusr\u002Fbin\u002F\n",[244,388,389,391,394,397,400],{"class":246,"line":308},[244,390,261],{"class":250},[244,392,393],{"class":254}," ln",[244,395,396],{"class":254}," -s",[244,398,399],{"class":254}," \u002Fusr\u002Fbin\u002Fhashcat64.bin",[244,401,402],{"class":254}," \u002Fusr\u002Fbin\u002Fhashcat\n",[244,404,405,407,409,412,415],{"class":246,"line":319},[244,406,261],{"class":250},[244,408,380],{"class":254},[244,410,411],{"class":254}," -Rv",[244,413,414],{"class":254}," hashcat-6.1.1\u002FOpenCL\u002F",[244,416,386],{"class":254},[244,418,420,422,424,427],{"class":246,"line":419},7,[244,421,261],{"class":250},[244,423,380],{"class":254},[244,425,426],{"class":254}," hashcat-6.1.1\u002Fhashcat.hcstat2",[244,428,386],{"class":254},[244,430,432,434,436,439],{"class":246,"line":431},8,[244,433,261],{"class":250},[244,435,380],{"class":254},[244,437,438],{"class":254}," hashcat-6.1.1\u002Fhashcat.hctune",[244,440,386],{"class":254},[17,442,443,444,106],{},"And now let's test that Hashcat is installed properly and recognize our GPU by running ",[77,445,446],{},"sudo hashcat --benchmark",[17,448,449],{},[64,450],{"alt":451,"className":452,"height":453,"src":454,"width":455},"Hashcat recognize our GPU",[68,69],305,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fhashcat-benchmark.webp",632,[43,457,459],{"id":458},"_4-lets-get-down-to-business","4. Let's get down to business",[17,461,462],{},"The first thing we need is a password list. You can make your own password (word) list, but there is no need to work that hard when there is so much stuff free on the internet just waiting for you. And it's not just free it's proven! There are cleartext passwords from leaked databases, so you know it's words\u002Fnumber combinations that are used in the real world by users.",[17,464,465,466,471,472,477],{},"The best place to get some of it is the ",[21,467,470],{"href":468,"rel":469},"https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FSecLists\u002Ftree\u002Fmaster\u002FPasswords",[30],"SecList on GitHub",", and one of the most popular list is the ",[21,473,476],{"href":474,"rel":475},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRockYou",[30],"rockyou"," one. So let's download it to our VM and use that list to crack some passwords.",[234,479,481],{"className":236,"code":480,"filename":238,"language":239,"meta":240,"style":240},"wget https:\u002F\u002Fgithub.com\u002Fbrannondorsey\u002Fnaive-hashcat\u002Freleases\u002Fdownload\u002Fdata\u002Frockyou.txt\n",[77,482,483],{"__ignoreMap":240},[244,484,485,487],{"class":246,"line":247},[244,486,251],{"class":250},[244,488,489],{"class":254}," https:\u002F\u002Fgithub.com\u002Fbrannondorsey\u002Fnaive-hashcat\u002Freleases\u002Fdownload\u002Fdata\u002Frockyou.txt\n",[17,491,492],{},"To crack a password you first need to know the hash type of that password - which hashing algorithm they use to encrypt the password (there are multiple ways to discover it, and also a lot of projects that are trying to do that automatically, but this is not the purpose of this post, so Google it).",[17,494,495,496,501],{},"For testing I encrypt some text with ",[21,497,500],{"href":498,"rel":499},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBcrypt",[30],"Bcrypt hash function",", here are the results:",[234,503,507],{"className":504,"code":505,"language":506,"meta":240,"style":240},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$2b$04$jysbNjr164hK4E7tqk2B.OJoj4qAg9xHF4gLqain2m9pGb1bcsRf6\n$2b$04$T.E6VXlAlt\u002FK\u002FgfVBBrs8eULxwBTDGVZ1CNsE.yJX5Yt9LjqH5bDO\n$2b$04$XMOmhaV4EM.8fDCVEk3GYOmSbHvVoSx1cDyxhSeebBmCZyGisq7sG\n$2b$04$GIVH57JcU5wZyfwyu0A6Uuq.WrUDFLQfPC5HGHDsdfPfdWvP2jklS\n","txt",[77,508,509,514,519,524],{"__ignoreMap":240},[244,510,511],{"class":246,"line":247},[244,512,513],{},"$2b$04$jysbNjr164hK4E7tqk2B.OJoj4qAg9xHF4gLqain2m9pGb1bcsRf6\n",[244,515,516],{"class":246,"line":258},[244,517,518],{},"$2b$04$T.E6VXlAlt\u002FK\u002FgfVBBrs8eULxwBTDGVZ1CNsE.yJX5Yt9LjqH5bDO\n",[244,520,521],{"class":246,"line":273},[244,522,523],{},"$2b$04$XMOmhaV4EM.8fDCVEk3GYOmSbHvVoSx1cDyxhSeebBmCZyGisq7sG\n",[244,525,526],{"class":246,"line":290},[244,527,528],{},"$2b$04$GIVH57JcU5wZyfwyu0A6Uuq.WrUDFLQfPC5HGHDsdfPfdWvP2jklS\n",[17,530,531,532,537,538,541,542,41],{},"Now, go to the ",[21,533,536],{"href":534,"rel":535},"https:\u002F\u002Fhashcat.net\u002Fwiki\u002Fdoku.php?id=example_hashes",[30],"documentation of Hashcat"," and check what ",[77,539,540],{},"Hash-Mode"," number is the hash algorithm that I used (in our case it's ",[77,543,544],{},"3200",[17,546,547,548,551,552,555,556,559,560,563],{},"A basic running is just to use the ",[77,549,550],{},"m"," flag with the mode 3200, the ",[77,553,554],{},"o"," flag to point Hashcat where to put all of the cracked passwords, and then just the file with the hashes (I put them in ",[77,557,558],{},"test.txt"," on the VM) and the file with the cleartext passwords list (the ",[77,561,562],{},"rockyou.txt"," we downloaded earlier).",[234,565,567],{"className":236,"code":566,"filename":238,"language":239,"meta":240,"style":240},"sudo hashcat -m 3200 -o cracked.txt test.txt rockyou.txt\n",[77,568,569],{"__ignoreMap":240},[244,570,571,573,576,579,583,586,589,592],{"class":246,"line":247},[244,572,261],{"class":250},[244,574,575],{"class":254}," hashcat",[244,577,578],{"class":254}," -m",[244,580,582],{"class":581},"sbssI"," 3200",[244,584,585],{"class":254}," -o",[244,587,588],{"class":254}," cracked.txt",[244,590,591],{"class":254}," test.txt",[244,593,594],{"class":254}," rockyou.txt\n",[17,596,597],{},[64,598],{"alt":599,"className":600,"height":601,"src":602,"width":603},"Basic Hash Cracking",[68,69],922,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fbasic-hash-cracking.webp",678,[17,605,606,607,610,611,41],{},"While Hashcat is running you can write ",[77,608,609],{},"s"," on the terminal to check the status of the process. You'll see how much time it estimates the run will take, how many hashes it's already cracked, and what the progress is (how many passwords it already checked from how many there are in the file we choose - ",[77,612,562],{},[17,614,615,616,618,619,622,623,626,627,630,631,633,634,637],{},"It'll take a while to go over all the passwords in ",[77,617,562],{},", because it won't be able to crack all four hashes I gave you. When it'll finish you can see in the ",[77,620,621],{},"cracked.txt"," file that Hashcat only cracked 3 out of 4 hashes. The fourth one is ",[77,624,625],{},"$2b$04$GIVH57JcU5wZyfwyu0A6Uuq.WrUDFLQfPC5HGHDsdfPfdWvP2jklS"," which is the Bcrypt of ",[77,628,629],{},"aSd12345",", this text is present in the ",[77,632,562],{}," file but as all lowercase letters (",[77,635,636],{},"asd12345",", which is also the third hash). This is where the rules of Hashcat come into play.",[17,639,640],{},[64,641],{"alt":642,"className":643,"height":644,"src":645,"width":646},"Basic Cracking Results",[68,69],331,"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fbasic-cracking-results.webp",614,[17,648,649,650,655],{},"Using a ruleset we can change our wordlist to contain more variations of the existing text. And again, we don't need to invent the wheel here, there are a lot of rules that people already write for Hashcat and one of them is ",[21,651,654],{"href":652,"rel":653},"https:\u002F\u002Fgithub.com\u002Fpraetorian-inc\u002FHob0Rules",[30],"Hob0rules"," which will help us do all the variations of lowercase and uppercase letters in our wordlist.",[17,657,658,659,662],{},"So let's use those rules, first download the repo, next we need to ",[77,660,661],{},"unzip"," the zip file, and finally change the directory name.",[234,664,666],{"className":236,"code":665,"filename":238,"language":239,"meta":240,"style":240},"wget https:\u002F\u002Fgithub.com\u002Fpraetorian-inc\u002FHob0Rules\u002Farchive\u002Fmaster.zip\nunzip master.zip\nmv Hob0Rules-master\u002F Hob0Rules\n",[77,667,668,675,682],{"__ignoreMap":240},[244,669,670,672],{"class":246,"line":247},[244,671,251],{"class":250},[244,673,674],{"class":254}," https:\u002F\u002Fgithub.com\u002Fpraetorian-inc\u002FHob0Rules\u002Farchive\u002Fmaster.zip\n",[244,676,677,679],{"class":246,"line":258},[244,678,661],{"class":250},[244,680,681],{"class":254}," master.zip\n",[244,683,684,687,690],{"class":246,"line":273},[244,685,686],{"class":250},"mv",[244,688,689],{"class":254}," Hob0Rules-master\u002F",[244,691,692],{"class":254}," Hob0Rules\n",[17,694,695,696,699],{},"To run Hashcat again, but now with the rules we downloaded all we need to do is to use the ",[77,697,698],{},"r"," flag and point it to the path of the rule file.",[234,701,703],{"className":236,"code":702,"filename":238,"language":239,"meta":240,"style":240},"sudo hashcat -m 3200 -o cracked.txt -r Hob0Rules\u002Fhob064.rule test.txt rockyou.txt\n",[77,704,705],{"__ignoreMap":240},[244,706,707,709,711,713,715,717,719,722,725,727],{"class":246,"line":247},[244,708,261],{"class":250},[244,710,575],{"class":254},[244,712,578],{"class":254},[244,714,582],{"class":581},[244,716,585],{"class":254},[244,718,588],{"class":254},[244,720,721],{"class":254}," -r",[244,723,724],{"class":254}," Hob0Rules\u002Fhob064.rule",[244,726,591],{"class":254},[244,728,594],{"class":254},[17,730,731,732,734,735,737,738,740],{},"Now if you write ",[77,733,609],{}," in the terminal to check the status progress of the cracking process you can see that instead of 57,377,536 passwords combinations that the ",[77,736,562],{}," file contains, Hashcat checks 3,672,162,304 passwords combinations, because it uses uppercase and lowercase combinations of the same text that the ",[77,739,562],{}," file contains.",[43,742,744],{"id":743},"_5-summary","5. Summary",[17,746,747],{},"That's it, we cracked the hash! And we leverage the cloud to do it faster and cheaper. If you want to continue, you can rent a couple of GPUs in Google (in the same VM) and leverage them to crack your hashes much faster! Also, you can read the Hashcat documentation and try to use other methods to speed up your cracking.",[749,750,751],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":240,"searchDepth":258,"depth":258,"links":753},[754,755,756,757,758],{"id":45,"depth":258,"text":46},{"id":109,"depth":258,"text":110},{"id":191,"depth":258,"text":192},{"id":458,"depth":258,"text":459},{"id":743,"depth":258,"text":744},"2020-11-01","Cracking password hashes with Hashcat on a GPU-equipped GCP instance.",false,"md",{"src":764},"\u002Fposts\u002F2020\u002Fcrack-the-hash\u002Fcrack-passwords.webp",{},true,"\u002Fblog\u002F2020\u002Fcrack-the-hash",{"title":5,"description":760},"blog\u002F2020\u002Fcrack-the-hash","Kxdt51ps9kzVonCgq3UMNn_MNYkQUIcIE-pk-uYZuS8",[772,777],{"title":773,"path":774,"stem":775,"description":776,"children":-1},"Load Balancing Applications with HAProxy and Docker","\u002Fblog\u002F2017\u002Fload-balancing-applications-with-haproxy-and-docker","blog\u002F2017\u002Fload-balancing-applications-with-haproxy-and-docker","Load balancing containerized apps with Docker Compose, Docker Swarm, and HAProxy.",{"title":778,"path":779,"stem":780,"description":781,"children":-1},"Jekyll Starter Kit generator 3.x.x","\u002Fblog\u002F2020\u002Fjekyll-starter-kit-generator-3.x.x","blog\u002F2020\u002Fjekyll-starter-kit-generator-3.x.x","The Jekyll Starter Kit generator jumps to version 3.x.x after Jekyll 4.",1786001638688]