Skip to content

Instantly share code, notes, and snippets.

@darkhelmet
Created August 17, 2012 02:55
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save darkhelmet/3375538 to your computer and use it in GitHub Desktop.
Save darkhelmet/3375538 to your computer and use it in GitHub Desktop.
2012/08/21 10:41:40 took 1.831589s (9 ns/op) to try 'a' for index 0
2012/08/21 10:41:42 took 1.812426s (9 ns/op) to try 'b' for index 0
2012/08/21 10:41:45 took 1.816416s (9 ns/op) to try 'c' for index 0
2012/08/21 10:41:48 took 1.82774s (9 ns/op) to try 'd' for index 0
2012/08/21 10:41:50 took 1.814831s (9 ns/op) to try 'e' for index 0
2012/08/21 10:41:53 took 1.825167s (9 ns/op) to try 'f' for index 0
2012/08/21 10:41:56 took 1.858311s (9 ns/op) to try 'g' for index 0
2012/08/21 10:41:59 took 1.818296s (9 ns/op) to try 'h' for index 0
2012/08/21 10:42:02 took 1.883082s (9 ns/op) to try 'i' for index 0
2012/08/21 10:42:04 took 1.834942s (9 ns/op) to try 'j' for index 0
2012/08/21 10:42:07 took 1.813992s (9 ns/op) to try 'k' for index 0
2012/08/21 10:42:10 took 1.822631s (9 ns/op) to try 'l' for index 0
2012/08/21 10:42:13 took 1.847494s (9 ns/op) to try 'm' for index 0
2012/08/21 10:42:15 took 1.83805s (9 ns/op) to try 'n' for index 0
2012/08/21 10:42:16 took 1.02971s (10 ns/op) to try 'o' for index 0
2012/08/21 10:42:19 took 1.818259s (9 ns/op) to try 'p' for index 0
2012/08/21 10:42:22 took 1.825644s (9 ns/op) to try 'q' for index 0
2012/08/21 10:42:25 took 1.844277s (9 ns/op) to try 'r' for index 0
2012/08/21 10:42:26 took 1.08873s (10 ns/op) to try 's' for index 0
2012/08/21 10:42:28 took 1.81759s (9 ns/op) to try 't' for index 0
2012/08/21 10:42:31 took 1.824032s (9 ns/op) to try 'u' for index 0
2012/08/21 10:42:34 took 1.83204s (9 ns/op) to try 'v' for index 0
2012/08/21 10:42:37 took 1.904603s (9 ns/op) to try 'w' for index 0
2012/08/21 10:42:40 took 1.863944s (9 ns/op) to try 'x' for index 0
2012/08/21 10:42:42 took 1.852906s (9 ns/op) to try 'y' for index 0
2012/08/21 10:42:45 took 1.824118s (9 ns/op) to try 'z' for index 0
2012/08/21 10:42:45 best guess is 's' for index 0
2012/08/21 10:42:45 guess is now: s
2012/08/21 10:42:46 took 1.068303s (10 ns/op) to try 'a' for index 1
2012/08/21 10:42:47 took 1.079981s (10 ns/op) to try 'b' for index 1
2012/08/21 10:42:48 took 1.071348s (10 ns/op) to try 'c' for index 1
2012/08/21 10:42:49 took 1.067966s (10 ns/op) to try 'd' for index 1
2012/08/21 10:42:51 took 1.351272s (13 ns/op) to try 'e' for index 1
2012/08/21 10:42:52 took 1.068148s (10 ns/op) to try 'f' for index 1
2012/08/21 10:42:53 took 1.076612s (10 ns/op) to try 'g' for index 1
2012/08/21 10:42:54 took 1.07034s (10 ns/op) to try 'h' for index 1
2012/08/21 10:42:55 took 1.074498s (10 ns/op) to try 'i' for index 1
2012/08/21 10:42:56 took 1.137437s (11 ns/op) to try 'j' for index 1
2012/08/21 10:42:57 took 1.069079s (10 ns/op) to try 'k' for index 1
2012/08/21 10:42:58 took 1.073556s (10 ns/op) to try 'l' for index 1
2012/08/21 10:43:00 took 1.065161s (10 ns/op) to try 'm' for index 1
2012/08/21 10:43:01 took 1.069797s (10 ns/op) to try 'n' for index 1
2012/08/21 10:43:02 took 1.073306s (10 ns/op) to try 'o' for index 1
2012/08/21 10:43:03 took 1.071276s (10 ns/op) to try 'p' for index 1
2012/08/21 10:43:04 took 1.07624s (10 ns/op) to try 'q' for index 1
2012/08/21 10:43:05 took 1.07456s (10 ns/op) to try 'r' for index 1
2012/08/21 10:43:06 took 1.072315s (10 ns/op) to try 's' for index 1
2012/08/21 10:43:07 took 1.070085s (10 ns/op) to try 't' for index 1
2012/08/21 10:43:08 took 1.082756s (10 ns/op) to try 'u' for index 1
2012/08/21 10:43:09 took 1.067249s (10 ns/op) to try 'v' for index 1
2012/08/21 10:43:10 took 1.078102s (10 ns/op) to try 'w' for index 1
2012/08/21 10:43:11 took 1.073015s (10 ns/op) to try 'x' for index 1
2012/08/21 10:43:13 took 1.07183s (10 ns/op) to try 'y' for index 1
2012/08/21 10:43:14 took 1.069789s (10 ns/op) to try 'z' for index 1
2012/08/21 10:43:14 best guess is 'e' for index 1
2012/08/21 10:43:14 guess is now: se
2012/08/21 10:43:15 took 1.344448s (13 ns/op) to try 'a' for index 2
2012/08/21 10:43:16 took 1.347396s (13 ns/op) to try 'b' for index 2
2012/08/21 10:43:18 took 1.655495s (16 ns/op) to try 'c' for index 2
2012/08/21 10:43:19 took 1.356312s (13 ns/op) to try 'd' for index 2
2012/08/21 10:43:21 took 1.345047s (13 ns/op) to try 'e' for index 2
2012/08/21 10:43:22 took 1.350463s (13 ns/op) to try 'f' for index 2
2012/08/21 10:43:24 took 1.375841s (13 ns/op) to try 'g' for index 2
2012/08/21 10:43:25 took 1.3768s (13 ns/op) to try 'h' for index 2
2012/08/21 10:43:26 took 1.366313s (13 ns/op) to try 'i' for index 2
2012/08/21 10:43:28 took 1.35606s (13 ns/op) to try 'j' for index 2
2012/08/21 10:43:29 took 1.355135s (13 ns/op) to try 'k' for index 2
2012/08/21 10:43:30 took 1.361343s (13 ns/op) to try 'l' for index 2
2012/08/21 10:43:32 took 1.353531s (13 ns/op) to try 'm' for index 2
2012/08/21 10:43:33 took 1.353111s (13 ns/op) to try 'n' for index 2
2012/08/21 10:43:35 took 1.353681s (13 ns/op) to try 'o' for index 2
2012/08/21 10:43:36 took 1.352122s (13 ns/op) to try 'p' for index 2
2012/08/21 10:43:37 took 1.351896s (13 ns/op) to try 'q' for index 2
2012/08/21 10:43:39 took 1.351947s (13 ns/op) to try 'r' for index 2
2012/08/21 10:43:40 took 1.349008s (13 ns/op) to try 's' for index 2
2012/08/21 10:43:41 took 1.371353s (13 ns/op) to try 't' for index 2
2012/08/21 10:43:43 took 1.342177s (13 ns/op) to try 'u' for index 2
2012/08/21 10:43:44 took 1.346467s (13 ns/op) to try 'v' for index 2
2012/08/21 10:43:45 took 1.35912s (13 ns/op) to try 'w' for index 2
2012/08/21 10:43:47 took 1.348726s (13 ns/op) to try 'x' for index 2
2012/08/21 10:43:48 took 1.341956s (13 ns/op) to try 'y' for index 2
2012/08/21 10:43:50 took 1.338412s (13 ns/op) to try 'z' for index 2
2012/08/21 10:43:50 best guess is 'c' for index 2
2012/08/21 10:43:50 guess is now: sec
2012/08/21 10:43:51 took 1.649195s (16 ns/op) to try 'a' for index 3
2012/08/21 10:43:53 took 1.648582s (16 ns/op) to try 'b' for index 3
2012/08/21 10:43:55 took 1.65911s (16 ns/op) to try 'c' for index 3
2012/08/21 10:43:56 took 1.656882s (16 ns/op) to try 'd' for index 3
2012/08/21 10:43:58 took 1.655411s (16 ns/op) to try 'e' for index 3
2012/08/21 10:44:00 took 1.649987s (16 ns/op) to try 'f' for index 3
2012/08/21 10:44:01 took 1.64954s (16 ns/op) to try 'g' for index 3
2012/08/21 10:44:03 took 1.656154s (16 ns/op) to try 'h' for index 3
2012/08/21 10:44:05 took 1.660259s (16 ns/op) to try 'i' for index 3
2012/08/21 10:44:06 took 1.648393s (16 ns/op) to try 'j' for index 3
2012/08/21 10:44:08 took 1.665999s (16 ns/op) to try 'k' for index 3
2012/08/21 10:44:10 took 1.660111s (16 ns/op) to try 'l' for index 3
2012/08/21 10:44:11 took 1.662047s (16 ns/op) to try 'm' for index 3
2012/08/21 10:44:13 took 1.662394s (16 ns/op) to try 'n' for index 3
2012/08/21 10:44:15 took 1.67747s (16 ns/op) to try 'o' for index 3
2012/08/21 10:44:16 took 1.710004s (17 ns/op) to try 'p' for index 3
2012/08/21 10:44:18 took 1.661175s (16 ns/op) to try 'q' for index 3
2012/08/21 10:44:20 took 2.017125s (20 ns/op) to try 'r' for index 3
2012/08/21 10:44:22 took 1.669194s (16 ns/op) to try 's' for index 3
2012/08/21 10:44:24 took 1.721332s (17 ns/op) to try 't' for index 3
2012/08/21 10:44:25 took 1.70185s (17 ns/op) to try 'u' for index 3
2012/08/21 10:44:27 took 1.672186s (16 ns/op) to try 'v' for index 3
2012/08/21 10:44:29 took 1.665426s (16 ns/op) to try 'w' for index 3
2012/08/21 10:44:30 took 1.659484s (16 ns/op) to try 'x' for index 3
2012/08/21 10:44:32 took 1.666524s (16 ns/op) to try 'y' for index 3
2012/08/21 10:44:34 took 1.654732s (16 ns/op) to try 'z' for index 3
2012/08/21 10:44:34 best guess is 'r' for index 3
2012/08/21 10:44:34 guess is now: secr
2012/08/21 10:44:36 took 1.948363s (19 ns/op) to try 'a' for index 4
2012/08/21 10:44:38 took 1.960753s (19 ns/op) to try 'b' for index 4
2012/08/21 10:44:40 took 1.952895s (19 ns/op) to try 'c' for index 4
2012/08/21 10:44:42 took 1.952916s (19 ns/op) to try 'd' for index 4
2012/08/21 10:44:44 took 2.268885s (22 ns/op) to try 'e' for index 4
2012/08/21 10:44:46 took 1.950635s (19 ns/op) to try 'f' for index 4
2012/08/21 10:44:48 took 1.953565s (19 ns/op) to try 'g' for index 4
2012/08/21 10:44:50 took 1.959299s (19 ns/op) to try 'h' for index 4
2012/08/21 10:44:52 took 1.957601s (19 ns/op) to try 'i' for index 4
2012/08/21 10:44:54 took 1.952231s (19 ns/op) to try 'j' for index 4
2012/08/21 10:44:56 took 1.967332s (19 ns/op) to try 'k' for index 4
2012/08/21 10:44:58 took 2.005395s (20 ns/op) to try 'l' for index 4
2012/08/21 10:45:00 took 1.959489s (19 ns/op) to try 'm' for index 4
2012/08/21 10:45:02 took 1.954355s (19 ns/op) to try 'n' for index 4
2012/08/21 10:45:04 took 1.95293s (19 ns/op) to try 'o' for index 4
2012/08/21 10:45:06 took 1.958358s (19 ns/op) to try 'p' for index 4
2012/08/21 10:45:08 took 1.988996s (19 ns/op) to try 'q' for index 4
2012/08/21 10:45:10 took 1.972359s (19 ns/op) to try 'r' for index 4
2012/08/21 10:45:12 took 1.967608s (19 ns/op) to try 's' for index 4
2012/08/21 10:45:14 took 1.97113s (19 ns/op) to try 't' for index 4
2012/08/21 10:45:16 took 1.954375s (19 ns/op) to try 'u' for index 4
2012/08/21 10:45:18 took 1.954053s (19 ns/op) to try 'v' for index 4
2012/08/21 10:45:20 took 1.959914s (19 ns/op) to try 'w' for index 4
2012/08/21 10:45:22 took 1.954189s (19 ns/op) to try 'x' for index 4
2012/08/21 10:45:24 took 1.958487s (19 ns/op) to try 'y' for index 4
2012/08/21 10:45:26 took 1.963749s (19 ns/op) to try 'z' for index 4
2012/08/21 10:45:26 best guess is 'e' for index 4
2012/08/21 10:45:26 guess is now: secre
2012/08/21 10:45:28 took 2.306085s (23 ns/op) to try 'a' for index 5
2012/08/21 10:45:30 took 2.259485s (22 ns/op) to try 'b' for index 5
2012/08/21 10:45:32 took 2.263704s (22 ns/op) to try 'c' for index 5
2012/08/21 10:45:35 took 2.258347s (22 ns/op) to try 'd' for index 5
2012/08/21 10:45:37 took 2.266537s (22 ns/op) to try 'e' for index 5
2012/08/21 10:45:39 took 2.285617s (22 ns/op) to try 'f' for index 5
2012/08/21 10:45:42 took 2.274509s (22 ns/op) to try 'g' for index 5
2012/08/21 10:45:44 took 2.270082s (22 ns/op) to try 'h' for index 5
2012/08/21 10:45:46 took 2.247548s (22 ns/op) to try 'i' for index 5
2012/08/21 10:45:48 took 2.253666s (22 ns/op) to try 'j' for index 5
2012/08/21 10:45:51 took 2.255835s (22 ns/op) to try 'k' for index 5
2012/08/21 10:45:53 took 2.261086s (22 ns/op) to try 'l' for index 5
2012/08/21 10:45:55 took 2.260327s (22 ns/op) to try 'm' for index 5
2012/08/21 10:45:58 took 2.249142s (22 ns/op) to try 'n' for index 5
2012/08/21 10:46:00 took 2.268898s (22 ns/op) to try 'o' for index 5
2012/08/21 10:46:02 took 2.296827s (22 ns/op) to try 'p' for index 5
2012/08/21 10:46:04 took 2.266846s (22 ns/op) to try 'q' for index 5
2012/08/21 10:46:07 took 2.254734s (22 ns/op) to try 'r' for index 5
2012/08/21 10:46:09 took 2.258779s (22 ns/op) to try 's' for index 5
2012/08/21 10:46:11 took 2.331592s (23 ns/op) to try 't' for index 5
2012/08/21 10:46:14 took 2.265515s (22 ns/op) to try 'u' for index 5
2012/08/21 10:46:16 took 2.257629s (22 ns/op) to try 'v' for index 5
2012/08/21 10:46:18 took 2.274695s (22 ns/op) to try 'w' for index 5
2012/08/21 10:46:21 took 2.257781s (22 ns/op) to try 'x' for index 5
2012/08/21 10:46:23 took 2.260393s (22 ns/op) to try 'y' for index 5
2012/08/21 10:46:25 took 2.26481s (22 ns/op) to try 'z' for index 5
2012/08/21 10:46:25 best guess is 't' for index 5
2012/08/21 10:46:25 guess is now: secret
2012/08/21 10:46:25 password guess after 4m48.325355s is: secret
2012/08/21 10:36:51 took 1.734077s (17 ns/op) to try 'a' for index 0
2012/08/21 10:36:53 took 1.74429s (17 ns/op) to try 'b' for index 0
2012/08/21 10:36:55 took 1.732096s (17 ns/op) to try 'c' for index 0
2012/08/21 10:36:57 took 1.762732s (17 ns/op) to try 'd' for index 0
2012/08/21 10:36:59 took 1.779806s (17 ns/op) to try 'e' for index 0
2012/08/21 10:37:00 took 1.744297s (17 ns/op) to try 'f' for index 0
2012/08/21 10:37:02 took 1.770387s (17 ns/op) to try 'g' for index 0
2012/08/21 10:37:04 took 1.76061s (17 ns/op) to try 'h' for index 0
2012/08/21 10:37:06 took 1.805303s (18 ns/op) to try 'i' for index 0
2012/08/21 10:37:08 took 1.858575s (18 ns/op) to try 'j' for index 0
2012/08/21 10:37:09 took 1.78187s (17 ns/op) to try 'k' for index 0
2012/08/21 10:37:11 took 1.752848s (17 ns/op) to try 'l' for index 0
2012/08/21 10:37:13 took 1.747479s (17 ns/op) to try 'm' for index 0
2012/08/21 10:37:15 took 1.737252s (17 ns/op) to try 'n' for index 0
2012/08/21 10:37:16 took 1.78585s (17 ns/op) to try 'o' for index 0
2012/08/21 10:37:18 took 1.826338s (18 ns/op) to try 'p' for index 0
2012/08/21 10:37:20 took 1.847823s (18 ns/op) to try 'q' for index 0
2012/08/21 10:37:22 took 1.799321s (17 ns/op) to try 'r' for index 0
2012/08/21 10:37:24 took 1.785805s (17 ns/op) to try 's' for index 0
2012/08/21 10:37:26 took 2.072547s (20 ns/op) to try 't' for index 0
2012/08/21 10:37:28 took 2.057964s (20 ns/op) to try 'u' for index 0
2012/08/21 10:37:30 took 1.880862s (18 ns/op) to try 'v' for index 0
2012/08/21 10:37:32 took 1.876555s (18 ns/op) to try 'w' for index 0
2012/08/21 10:37:34 took 1.754507s (17 ns/op) to try 'x' for index 0
2012/08/21 10:37:35 took 1.755322s (17 ns/op) to try 'y' for index 0
2012/08/21 10:37:37 took 1.756215s (17 ns/op) to try 'z' for index 0
2012/08/21 10:37:37 best guess is 'u' for index 0
2012/08/21 10:37:37 guess is now: u
2012/08/21 10:37:39 took 1.760613s (17 ns/op) to try 'a' for index 1
2012/08/21 10:37:41 took 1.761909s (17 ns/op) to try 'b' for index 1
2012/08/21 10:37:42 took 1.752936s (17 ns/op) to try 'c' for index 1
2012/08/21 10:37:44 took 1.76934s (17 ns/op) to try 'd' for index 1
2012/08/21 10:37:46 took 1.799374s (17 ns/op) to try 'e' for index 1
2012/08/21 10:37:48 took 1.764728s (17 ns/op) to try 'f' for index 1
2012/08/21 10:37:50 took 1.810783s (18 ns/op) to try 'g' for index 1
2012/08/21 10:37:51 took 1.778063s (17 ns/op) to try 'h' for index 1
2012/08/21 10:37:53 took 1.756731s (17 ns/op) to try 'i' for index 1
2012/08/21 10:37:55 took 1.764307s (17 ns/op) to try 'j' for index 1
2012/08/21 10:37:57 took 1.749663s (17 ns/op) to try 'k' for index 1
2012/08/21 10:37:59 took 1.742413s (17 ns/op) to try 'l' for index 1
2012/08/21 10:38:00 took 1.735105s (17 ns/op) to try 'm' for index 1
2012/08/21 10:38:02 took 1.741219s (17 ns/op) to try 'n' for index 1
2012/08/21 10:38:04 took 1.738746s (17 ns/op) to try 'o' for index 1
2012/08/21 10:38:06 took 1.737417s (17 ns/op) to try 'p' for index 1
2012/08/21 10:38:07 took 1.735658s (17 ns/op) to try 'q' for index 1
2012/08/21 10:38:09 took 1.74333s (17 ns/op) to try 'r' for index 1
2012/08/21 10:38:11 took 1.75258s (17 ns/op) to try 's' for index 1
2012/08/21 10:38:13 took 1.951087s (19 ns/op) to try 't' for index 1
2012/08/21 10:38:15 took 1.738706s (17 ns/op) to try 'u' for index 1
2012/08/21 10:38:16 took 1.738152s (17 ns/op) to try 'v' for index 1
2012/08/21 10:38:18 took 1.758051s (17 ns/op) to try 'w' for index 1
2012/08/21 10:38:20 took 1.757376s (17 ns/op) to try 'x' for index 1
2012/08/21 10:38:22 took 1.740322s (17 ns/op) to try 'y' for index 1
2012/08/21 10:38:23 took 1.745401s (17 ns/op) to try 'z' for index 1
2012/08/21 10:38:23 best guess is 't' for index 1
2012/08/21 10:38:23 guess is now: ut
2012/08/21 10:38:25 took 1.779432s (17 ns/op) to try 'a' for index 2
2012/08/21 10:38:27 took 1.742486s (17 ns/op) to try 'b' for index 2
2012/08/21 10:38:29 took 1.739506s (17 ns/op) to try 'c' for index 2
2012/08/21 10:38:30 took 1.748531s (17 ns/op) to try 'd' for index 2
2012/08/21 10:38:32 took 1.733672s (17 ns/op) to try 'e' for index 2
2012/08/21 10:38:34 took 1.740196s (17 ns/op) to try 'f' for index 2
2012/08/21 10:38:36 took 1.738501s (17 ns/op) to try 'g' for index 2
2012/08/21 10:38:38 took 1.746025s (17 ns/op) to try 'h' for index 2
2012/08/21 10:38:39 took 1.74206s (17 ns/op) to try 'i' for index 2
2012/08/21 10:38:41 took 1.751229s (17 ns/op) to try 'j' for index 2
2012/08/21 10:38:43 took 1.764492s (17 ns/op) to try 'k' for index 2
2012/08/21 10:38:45 took 1.735132s (17 ns/op) to try 'l' for index 2
2012/08/21 10:38:46 took 1.756044s (17 ns/op) to try 'm' for index 2
2012/08/21 10:38:48 took 1.74525s (17 ns/op) to try 'n' for index 2
2012/08/21 10:38:50 took 1.744929s (17 ns/op) to try 'o' for index 2
2012/08/21 10:38:52 took 1.758912s (17 ns/op) to try 'p' for index 2
2012/08/21 10:38:53 took 1.74362s (17 ns/op) to try 'q' for index 2
2012/08/21 10:38:55 took 1.742555s (17 ns/op) to try 'r' for index 2
2012/08/21 10:38:57 took 1.751819s (17 ns/op) to try 's' for index 2
2012/08/21 10:38:59 took 1.747677s (17 ns/op) to try 't' for index 2
2012/08/21 10:39:00 took 1.756031s (17 ns/op) to try 'u' for index 2
2012/08/21 10:39:02 took 1.757336s (17 ns/op) to try 'v' for index 2
2012/08/21 10:39:04 took 1.757846s (17 ns/op) to try 'w' for index 2
2012/08/21 10:39:06 took 1.755368s (17 ns/op) to try 'x' for index 2
2012/08/21 10:39:08 took 1.744082s (17 ns/op) to try 'y' for index 2
2012/08/21 10:39:09 took 1.73922s (17 ns/op) to try 'z' for index 2
2012/08/21 10:39:09 best guess is 'z' for index 2
2012/08/21 10:39:09 guess is now: utz
2012/08/21 10:39:11 took 1.735325s (17 ns/op) to try 'a' for index 3
2012/08/21 10:39:13 took 1.730931s (17 ns/op) to try 'b' for index 3
2012/08/21 10:39:15 took 1.741805s (17 ns/op) to try 'c' for index 3
2012/08/21 10:39:16 took 1.738235s (17 ns/op) to try 'd' for index 3
2012/08/21 10:39:18 took 1.734553s (17 ns/op) to try 'e' for index 3
2012/08/21 10:39:20 took 1.737055s (17 ns/op) to try 'f' for index 3
2012/08/21 10:39:22 took 1.737009s (17 ns/op) to try 'g' for index 3
2012/08/21 10:39:23 took 1.738219s (17 ns/op) to try 'h' for index 3
2012/08/21 10:39:25 took 1.74421s (17 ns/op) to try 'i' for index 3
2012/08/21 10:39:27 took 1.740176s (17 ns/op) to try 'j' for index 3
2012/08/21 10:39:29 took 1.734271s (17 ns/op) to try 'k' for index 3
2012/08/21 10:39:30 took 1.730433s (17 ns/op) to try 'l' for index 3
2012/08/21 10:39:32 took 1.750199s (17 ns/op) to try 'm' for index 3
2012/08/21 10:39:34 took 1.747967s (17 ns/op) to try 'n' for index 3
2012/08/21 10:39:36 took 1.750042s (17 ns/op) to try 'o' for index 3
2012/08/21 10:39:37 took 1.733457s (17 ns/op) to try 'p' for index 3
2012/08/21 10:39:39 took 1.738587s (17 ns/op) to try 'q' for index 3
2012/08/21 10:39:41 took 1.732526s (17 ns/op) to try 'r' for index 3
2012/08/21 10:39:43 took 1.732473s (17 ns/op) to try 's' for index 3
2012/08/21 10:39:44 took 1.732315s (17 ns/op) to try 't' for index 3
2012/08/21 10:39:46 took 1.730921s (17 ns/op) to try 'u' for index 3
2012/08/21 10:39:48 took 1.73053s (17 ns/op) to try 'v' for index 3
2012/08/21 10:39:50 took 1.730292s (17 ns/op) to try 'w' for index 3
2012/08/21 10:39:51 took 1.731046s (17 ns/op) to try 'x' for index 3
2012/08/21 10:39:53 took 1.741506s (17 ns/op) to try 'y' for index 3
2012/08/21 10:39:55 took 1.745479s (17 ns/op) to try 'z' for index 3
2012/08/21 10:39:55 best guess is 'z' for index 3
2012/08/21 10:39:55 guess is now: utzz
2012/08/21 10:39:57 took 1.737109s (17 ns/op) to try 'a' for index 4
2012/08/21 10:39:58 took 1.73384s (17 ns/op) to try 'b' for index 4
2012/08/21 10:40:00 took 1.732896s (17 ns/op) to try 'c' for index 4
2012/08/21 10:40:02 took 1.756107s (17 ns/op) to try 'd' for index 4
2012/08/21 10:40:04 took 1.76619s (17 ns/op) to try 'e' for index 4
2012/08/21 10:40:06 took 1.766919s (17 ns/op) to try 'f' for index 4
2012/08/21 10:40:07 took 1.825819s (18 ns/op) to try 'g' for index 4
2012/08/21 10:40:09 took 1.767931s (17 ns/op) to try 'h' for index 4
2012/08/21 10:40:11 took 1.747495s (17 ns/op) to try 'i' for index 4
2012/08/21 10:40:13 took 1.746092s (17 ns/op) to try 'j' for index 4
2012/08/21 10:40:15 took 1.748542s (17 ns/op) to try 'k' for index 4
2012/08/21 10:40:16 took 1.731791s (17 ns/op) to try 'l' for index 4
2012/08/21 10:40:18 took 1.742057s (17 ns/op) to try 'm' for index 4
2012/08/21 10:40:20 took 1.739045s (17 ns/op) to try 'n' for index 4
2012/08/21 10:40:22 took 1.734199s (17 ns/op) to try 'o' for index 4
2012/08/21 10:40:23 took 1.734476s (17 ns/op) to try 'p' for index 4
2012/08/21 10:40:25 took 1.750334s (17 ns/op) to try 'q' for index 4
2012/08/21 10:40:27 took 1.757009s (17 ns/op) to try 'r' for index 4
2012/08/21 10:40:29 took 1.732821s (17 ns/op) to try 's' for index 4
2012/08/21 10:40:30 took 1.729974s (17 ns/op) to try 't' for index 4
2012/08/21 10:40:32 took 1.735483s (17 ns/op) to try 'u' for index 4
2012/08/21 10:40:34 took 1.738588s (17 ns/op) to try 'v' for index 4
2012/08/21 10:40:36 took 1.740469s (17 ns/op) to try 'w' for index 4
2012/08/21 10:40:37 took 1.749772s (17 ns/op) to try 'x' for index 4
2012/08/21 10:40:39 took 1.750248s (17 ns/op) to try 'y' for index 4
2012/08/21 10:40:41 took 1.74075s (17 ns/op) to try 'z' for index 4
2012/08/21 10:40:41 best guess is 'g' for index 4
2012/08/21 10:40:41 guess is now: utzzg
2012/08/21 10:40:43 took 1.74194s (17 ns/op) to try 'a' for index 5
2012/08/21 10:40:44 took 1.743246s (17 ns/op) to try 'b' for index 5
2012/08/21 10:40:46 took 1.742332s (17 ns/op) to try 'c' for index 5
2012/08/21 10:40:48 took 1.734484s (17 ns/op) to try 'd' for index 5
2012/08/21 10:40:50 took 1.732418s (17 ns/op) to try 'e' for index 5
2012/08/21 10:40:51 took 1.734814s (17 ns/op) to try 'f' for index 5
2012/08/21 10:40:53 took 1.735498s (17 ns/op) to try 'g' for index 5
2012/08/21 10:40:55 took 1.735613s (17 ns/op) to try 'h' for index 5
2012/08/21 10:40:57 took 1.738788s (17 ns/op) to try 'i' for index 5
2012/08/21 10:40:58 took 1.735026s (17 ns/op) to try 'j' for index 5
2012/08/21 10:41:00 took 1.741023s (17 ns/op) to try 'k' for index 5
2012/08/21 10:41:02 took 1.750048s (17 ns/op) to try 'l' for index 5
2012/08/21 10:41:04 took 1.739218s (17 ns/op) to try 'm' for index 5
2012/08/21 10:41:05 took 1.738538s (17 ns/op) to try 'n' for index 5
2012/08/21 10:41:07 took 1.736559s (17 ns/op) to try 'o' for index 5
2012/08/21 10:41:09 took 1.735955s (17 ns/op) to try 'p' for index 5
2012/08/21 10:41:11 took 1.728941s (17 ns/op) to try 'q' for index 5
2012/08/21 10:41:12 took 1.727511s (17 ns/op) to try 'r' for index 5
2012/08/21 10:41:14 took 1.745381s (17 ns/op) to try 's' for index 5
2012/08/21 10:41:16 took 1.745949s (17 ns/op) to try 't' for index 5
2012/08/21 10:41:18 took 1.744131s (17 ns/op) to try 'u' for index 5
2012/08/21 10:41:20 took 1.737221s (17 ns/op) to try 'v' for index 5
2012/08/21 10:41:21 took 1.74453s (17 ns/op) to try 'w' for index 5
2012/08/21 10:41:23 took 1.741699s (17 ns/op) to try 'x' for index 5
2012/08/21 10:41:25 took 1.742492s (17 ns/op) to try 'y' for index 5
2012/08/21 10:41:27 took 1.739574s (17 ns/op) to try 'z' for index 5
2012/08/21 10:41:27 best guess is 'z' for index 5
2012/08/21 10:41:27 guess is now: utzzgz
2012/08/21 10:41:27 password guess after 4m36.864772s is: utzzgz
package main
import (
"container/heap"
"crypto/subtle"
"flag"
"log"
T "testing"
"time"
)
var (
password = flag.String("password", "secret", "The password to try and guess")
letters = []byte("abcdefghijklmnopqrstuvwxyz")
compare = flag.String("compare", "broken", "The comparison function to use. Must be one of constant or broken (default)")
)
type TestRun struct {
Time int64
Byte byte
}
type Times []TestRun
func (t Times) Len() int { return len(t) }
func (t Times) Less(i, j int) bool { return t[i].Time > t[j].Time }
func (t Times) Swap(i, j int) { t[i], t[j] = t[j], t[i] }
func (t *Times) Push(v interface{}) {
*t = append(*t, v.(TestRun))
}
func (t *Times) Pop() interface{} {
a := *t
n := len(a)
v := a[n-1]
*t = a[0 : n-1]
return v
}
type Compare func(x, y []byte) int
func BrokenCompare(x, y []byte) int {
for i := range x {
if x[i] != y[i] {
return 0
}
}
return 1
}
func Crack(password []byte, comp Compare) []byte {
n := len(password)
guess := make([]byte, n)
for index := range password {
times := make(Times, 0)
for _, letter := range letters {
guess[index] = letter
result := T.Benchmark(func(b *T.B) {
for i := 0; i < b.N; i++ {
comp(password, guess)
}
})
heap.Push(&times, TestRun{
Time: result.NsPerOp(),
Byte: letter,
})
log.Printf("took %s (%d ns/op) to try %q for index %d", result.T, result.NsPerOp(), letter, index)
}
tr := heap.Pop(&times).(TestRun)
guess[index] = tr.Byte
log.Printf("best guess is %q for index %d", tr.Byte, index)
log.Printf("guess is now: %s", guess)
}
return guess
}
func ConstantTimeCrack(pw []byte) []byte {
return Crack(pw, subtle.ConstantTimeCompare)
}
func BrokenCrack(pw []byte) []byte {
return Crack(pw, BrokenCompare)
}
func main() {
flag.Parse()
var guess []byte
pw := []byte(*password)
start := time.Now()
switch *compare {
case "broken":
guess = BrokenCrack(pw)
case "constant":
guess = ConstantTimeCrack(pw)
default:
log.Fatalf("%s is not a valid compare function. Must be one of broken or constant")
}
end := time.Now()
dur := end.Sub(start)
log.Printf("password guess after %s is: %s", dur, guess)
}
@networkimprov
Copy link

On public-network sites, best practice is to salt & hash stored passwords, as described below. Have you tried hashing the input password and each guess?

https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment