{"id":74,"date":"2012-01-14T18:00:13","date_gmt":"2012-01-14T18:00:13","guid":{"rendered":"https:\/\/trouble.org\/wp\/?p=74"},"modified":"2012-01-23T01:08:55","modified_gmt":"2012-01-23T01:08:55","slug":"getting-password-hash-on-os-x","status":"publish","type":"post","link":"https:\/\/trouble.org\/?p=74","title":{"rendered":"getting password hash on OS-X"},"content":{"rendered":"<p>I keep having to look this up&#8230; so here&#8217;s a perl script (click to DL below). Also prints out some other stuff I keep forgetting how to get.<\/p>\n<p>Also does it for the user logged in, so you can sudo and have it work. Will die if you can&#8217;t read the hash file. Sample run:<\/p>\n<pre style=\"padding-left: 30px;\"># .\/get_hashpipe.pl\r\n Running Snow Leopard, version 10.6.8\r\n You is: zen\r\n Gen UID for zen = 70140C2C-0014-4759-A3CE-D7DC9EAA047C\r\n I got your hash pipe:\r\n E2DBDB9CE7C573B9CF242EE9B01AD4D4C9DDEFDDE74F9E4<\/pre>\n<p>&nbsp;<\/p>\n<p>Etcetera. \u00a0Thought about options to specify users or get all user hashes, but I don&#8217;t really use this much :)<\/p>\n<div class=\"codecolorer-container perl blackboard\" style=\"overflow:auto;white-space:nowrap;height:800px;\"><div class=\"perl codecolorer\"><span class=\"co1\">#!\/usr\/bin\/perl<\/span><br \/>\n<br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># get a hash from the mysterious mac storage place<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># get OS version<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># looks like sw_vers came out in 10.3... at least that's<\/span><br \/>\n<span class=\"co1\"># what the man page uses as an example<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># outputs something like:<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 ProductName: \u00a0 \u00a0Mac OS X<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 ProductVersion: 10.6.8<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 BuildVersion: \u00a0 10K549<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># According to wiki:<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Public Beta: &quot;Kodiak&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.0: &quot;Cheetah&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.1: &quot;Puma&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.2: &quot;Jaguar&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.3: &quot;Panther&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.4: &quot;Tiger&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.5: &quot;Leopard&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.6: &quot;Snow Leopard&quot;<\/span><br \/>\n<span class=\"co1\"># \u00a0 \u00a0 \u00a0 Version 10.7: &quot;Lion&quot;<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># I was running kodiak at earthlink, back in the day, who knew?<\/span><br \/>\n<span class=\"co1\"># Close enough to UNIX (but what is UNIX anymore, really?)<\/span><br \/>\n<span class=\"co1\"># Schweet cinema display, too! That machine cost over 10k....<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"re0\">%OS_NAME<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><br \/>\n<span class=\"st0\">&quot;10.0&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Cheetah&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.1&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Puma&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.2&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Jaguar&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.3&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Panther&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.4&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Tiger&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.5&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Leopard&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.6&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Snow Leopard&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"st0\">&quot;10.7&quot;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"st0\">&quot;Lion&quot;<\/span><br \/>\n<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/open.html\"><span class=\"kw3\">open<\/span><\/a><span class=\"br0\">&#40;<\/span>OS_VER<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;sw_vers |&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/die.html\"><span class=\"kw3\">die<\/span><\/a> <span class=\"st0\">&quot;can't run sw_vers<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/chomp.html\"><span class=\"kw3\">chomp<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#40;<\/span><span class=\"re0\">$key<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$value<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/split.html\"><span class=\"kw3\">split<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"co2\">\/:\\s*\/<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"co2\">\/ProductVersion\/<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"br0\">&#40;<\/span><span class=\"re0\">$maj<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$min<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$rev<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/split.html\"><span class=\"kw3\">split<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"co2\">\/\\.\/<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$value<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\"># print &quot;Maj: $maj, Min: $min, Rev: $rev ($maj.$min)\\n&quot;;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/print.html\"><span class=\"kw3\">print<\/span><\/a> <span class=\"st0\">&quot;Running &quot;<\/span> <span class=\"sy0\">.<\/span> <span class=\"re0\">$OS_NAME<\/span><span class=\"br0\">&#123;<\/span><span class=\"st0\">&quot;$maj.$min&quot;<\/span><span class=\"br0\">&#125;<\/span> <span class=\"sy0\">.<\/span> <span class=\"st0\">&quot;, version $maj.$min.$rev<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">last<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/close.html\"><span class=\"kw3\">close<\/span><\/a><span class=\"br0\">&#40;<\/span>OS_VER<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\"># who are you\/me\/etc?<\/span><br \/>\n<span class=\"co1\"># started with whoami... but sudo fucks with it... getlogin should do the trick<\/span><br \/>\n<span class=\"re0\">$i_is<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/getlogin.html\"><span class=\"kw3\">getlogin<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/print.html\"><span class=\"kw3\">print<\/span><\/a> <span class=\"st0\">&quot;You is: $i_is<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\"># get the Generated UID<\/span><br \/>\n<br \/>\n<span class=\"co1\"># should work post tiger<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$min<\/span> <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/open.html\"><span class=\"kw3\">open<\/span><\/a><span class=\"br0\">&#40;<\/span>DSCL<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;dscl localhost -read \/Search\/Users\/$i_is |&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/die.html\"><span class=\"kw3\">die<\/span><\/a> <span class=\"st0\">&quot;can't run dscl<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/chomp.html\"><span class=\"kw3\">chomp<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"co2\">\/GeneratedUID\/<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"re0\">$guid<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/substr.html\"><span class=\"kw3\">substr<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"co5\">$_<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">14<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/print.html\"><span class=\"kw3\">print<\/span><\/a> <span class=\"st0\">&quot;Gen UID for $i_is = $guid<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">last<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/close.html\"><span class=\"kw3\">close<\/span><\/a><span class=\"br0\">&#40;<\/span>DSCL<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\"># on Tiger you might have to run... but does anyone really care? No idea if this works<\/span><br \/>\n<span class=\"kw1\">elsif<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$min<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/open.html\"><span class=\"kw3\">open<\/span><\/a><span class=\"br0\">&#40;<\/span>NIUTIL<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;niutil -readprop . \/users\/$i_is generateduid|&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/die.html\"><span class=\"kw3\">die<\/span><\/a> <span class=\"st0\">&quot;can't run niutil successfully<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/print.html\"><span class=\"kw3\">print<\/span><\/a> <span class=\"st0\">&quot;Min = $min<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/die.html\"><span class=\"kw3\">die<\/span><\/a> <span class=\"st0\">&quot;come on loser, this was written in 2012. What does OS = $maj.$min.$min mean?<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">#<\/span><br \/>\n<span class=\"co1\"># finally, pass the hash pipe (cue wheezer)<\/span><br \/>\n<span class=\"co1\">#<\/span><br \/>\n<br \/>\n<span class=\"re0\">$shadow_file<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;\/var\/db\/shadow\/hash\/$guid&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/die.html\"><span class=\"kw3\">die<\/span><\/a> <span class=\"st0\">&quot;can't read $shadow_file<span class=\"es0\">\\n<\/span>&quot;<\/span> <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span> <span class=\"sy0\">-<\/span>r <span class=\"re0\">$shadow_file<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/open.html\"><span class=\"kw3\">open<\/span><\/a><span class=\"br0\">&#40;<\/span>GUIDFILE<span class=\"sy0\">,<\/span> <span class=\"re0\">$shadow_file<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/die.html\"><span class=\"kw3\">die<\/span><\/a> <span class=\"st0\">&quot;can't open shadow hash file $shadow_file<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"re0\">$shadow_line<\/span> <span class=\"sy0\">=<\/span> <span class=\"sy0\">;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/chomp.html\"><span class=\"kw3\">chomp<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$shadow_line<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/close.html\"><span class=\"kw3\">close<\/span><\/a><span class=\"br0\">&#40;<\/span>GUIDFILE<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"re0\">$hash_pipe<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/perldoc.perl.org\/functions\/substr.html\"><span class=\"kw3\">substr<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$shadow_line<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">168<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">48<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<a href=\"http:\/\/perldoc.perl.org\/functions\/print.html\"><span class=\"kw3\">print<\/span><\/a> <span class=\"st0\">&quot;I got your hash pipe:<span class=\"es0\">\\n<\/span>$hash_pipe<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>&nbsp;<\/p>\n<p>[attachments titletag=&#8221;h4&#8243;]<\/p>\n<!-- WP Attachments -->\r\n        <div style=\"width:100%;margin:10px 0 10px 0;\">\r\n            <h3>Attachments<\/h3>\r\n        <ul class=\"post-attachments\"><li class=\"post-attachment mime-application-x-perl\"><a href=\"https:\/\/trouble.org\/wp-content\/uploads\/2012\/01\/get_hashpipe.pl\">get_hashpipe.pl<\/a> <small>(ERROR)<\/small><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>I keep having to look this up&#8230; so here&#8217;s a perl script (click to DL below). Also prints out some other stuff I keep forgetting how to get. Also does it for the user logged in, so you can sudo and have it work. Will die if you can&#8217;t read the hash file. Sample run: [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,32,4,6],"tags":[326,45,47],"class_list":["post-74","post","type-post","status-publish","format-standard","hentry","category-code","category-mac","category-security","category-tech","tag-perl","tag-probably-out-there-somewhere","tag-things-i-forget"],"_links":{"self":[{"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts\/74","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=74"}],"version-history":[{"count":21,"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":155,"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts\/74\/revisions\/155"}],"wp:attachment":[{"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}