17

Fallout 3 and Fallout New Vegas have a hacking minigame that's basically Mastermind. You have a bunch of passwords and four tries. When you get the wrong password, you get the number of letters that were correctly placed. That's it.

enter image description here

How can I play this minigame effectively without resorting to pen and paper and guesswork or tables with the known correct passwords?

2
  • 5
    By the way, this question isn't F:NV specific. The exact same minigame, with the exactly same solutions, exists in Fallout 3. Commented Jul 16, 2013 at 15:21
  • @sanmai As user galacticninja argued, this question is specifically about automation, not optimizing or effectively playing.
    – Joachim
    Commented Jul 26, 2019 at 8:35

6 Answers 6

23

I have already automated this for you. My solver is available at: http://moria.us/fallout3/terminal.html

Note: this is a single-page application, so you can just save the solver to your hard drive as an HTML file and run it from there.

Tutorial

Let's suppose you find the words RAMBO, DUMBO, MAMBA, BRICK, TANKS. Go ahead and enter those into the solver.

[del] RAMBO -0- -1- -2- -3- -4- 3 moves
[del] DUMBO -0- -1- -2- -3- -4- 3 moves
[del] MAMBA -0- -1- -2- -3- -4- 2 moves
[del] BRICK -0- -1- -2- -3- -4- 3 moves
[del] TANKS -0- -1- -2- -3- -4- 3 moves

You can see in the right column some of the words are marked as "2 moves" and some of the words are marked as "3 moves". This column is a little tricky to explain, but this shows the maximum number of required moves necessary to solve the puzzle under the following conditions:

  1. You select that word next, and

  2. You play perfectly afterwards.

So you can see that if you select MAMBA, you will need to guess at most two words in order to find the correct word.

Suppose you select MAMBA, and you have 2 positions correct. Click on the -2- next to MAMBA:

[del] RAMBO -0- -1- -2- -3- -4-
[del] DUMBO -0- -1- -2- -3- -4- 1 moves
[del] MAMBA -0- -1- [2] -3- -4-
[del] BRICK -0- -1- -2- -3- -4-
[del] TANKS -0- -1- -2- -3- -4-

The word must be DUMBO (which is the second move).

During a playthrough of Fallout 3, I noticed that a large number of terminals mostly had "5 move" words with maybe one or two "4 move" words. This means that using the tool, you can play perfectly and beat those terminals every single time... but without the tool, I would abort after three failed guesses.

All you need to do is click a word with a low number of moves.

More information

You can see why MAMBA is the best by clicking on all of the numbers next to MAMBA. No matter what you click, only one other word will be left (or zero).

If you pick a different word, like RAMBO, you might still be left with two choices afterwards. For example, if you choose RAMBO but have 3 positions left, you get:

[del] RAMBO -0- -1- -2- [3] -4-
[del] DUMBO -0- -1- -2- -3- -4- 2 moves
[del] MAMBA -0- -1- -2- -3- -4- 2 moves
[del] BRICK -0- -1- -2- -3- -4-
[del] TANKS -0- -1- -2- -3- -4-

How it works

"View Source" works fine, it's all JavaScript. If I recall correctly, it recursively calculates the maximum number of moves necessary by examining situations like "what if you choose DUMBO and you have 3 correct". The maxmoves() function is where it's at.

27

Use the bracket trick to remove false entries and to refresh your guess attempts.

http://www.gamershell.com/faqs/fallout3hackingguide/1.0/

[II.7] The Bracket Trick

Hidden in the code block you may be able to find what I like to refer to as a "Bracket Trick." A Bracket Trick is a collection of those random punctuation marks that appear between the words that are encased in a bracket of any kind. In the code block above, there is one hidden in there.

The second column of the Code Block and the third row contains this line:

0xFA10 %'%{.@@}#?|+

The Bracket trick in this line is:

{.@@}

Every terminal has a chance to produce bracket tricks, but not every terminal will have one. Some may even have multiple tricks. To tell if you have found a Bracket Trick all you have to do is hover the cursor over the opening bracket. If the entire thing lights up, congratulations, you found it!

A Bracket trick can be between a few different types of brackets:

<___> [____] {____} (____)

Any of these can be any size possible in the scope of the code block and they can be across many lines.

A Bracket Trick will never contain a possible password.

I have found that the best way to search a code block for tricks is to just move the cursor over every character and if something that is not a word lights up, you found one.

Now that you know what they look like and how to find them easily you probably want to know why you want these.

These have a random chance when clicked to either give you another attempt or remove a possibility from the Code Block.

The best time to use one is when you have 3 attempts remaining so you don't try using the word it removes from the block before it does it.

I should mention that the guide linked/cited is for Fallout 3, but the trick is still available in Fallout: New Vegas.

6
  • 5
    200+ hours and I've never even noticed!
    – Steinin
    Commented Jul 16, 2013 at 13:37
  • So in that screenshot "GROUPED" and "GAINING" couldn't have been it right?
    – badp
    Commented Jul 16, 2013 at 14:10
  • @badp I think all words are valid guesses, but if there are brackets that match on either side of the word it will not register as a matched bracket. However, I never knew/used/needed that nuance of the trick while playing the game.
    – Colin D
    Commented Jul 16, 2013 at 14:19
  • 1
    -1 not automated. As per the OPs comments in my answer, this answer does not provide an "automated" solution to solving the hacking puzzle. And as per the OP's comments, this answer thus deserves a downvote. Sorry.
    – Bon Gart
    Commented Jul 16, 2013 at 15:03
  • 10
    It does not answer the question in the title, but does answer the question in the body How can I play this minigame effectively without resorting to pen and paper and guesswork or tables with the known correct passwords?. It is useful (tooltip on up and down vote buttons) because it notifies people of an overlooked game mechanic.
    – Colin D
    Commented Jul 16, 2013 at 18:10
21

If you have a copy of Python 3 lying around, you can do this in a jiffy.

First off, transcribe the passwords in an array like this. (Don't type in the >>> characters.)

>>> passwords = ["hideout", "flowing", "blanket", "dealing", "banning", "leaving",
                 "studies", "fencing", "battles", "chamber", "parties", "carrier",
                 "blazing", "various", "working", "beating", "mention", "wanting"]

We can make a sanity check and make sure all passwords are long the same:

>>> list(map(len, passwords))
[7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]

Now we need to see how many letters are the same between any two passwords. It's a one-liner:

>>> def distance(a,b):
      return sum(1 for al, bl in zip(a,b) if al == bl) if a != b else -1

If the passwords are actually the same we return -1 instead of 7 so we can ignore those cases.

Now we need the code to only pick the passwords that have as many matching characters as the game tells us. This is another one-liner. You give it the list of passwords, what you tried and didn't work and how many characters were right.

>>> def refine(candidates, wrong_pw, matches):
      result = list(x for x in candidates if distance(x, wrong_pw) == matches)
      return result

So let's say you tied the password "flowing" and got 1 character right. Ouch. You then use what we've defined like this:

>>> passwords = refine(passwords, "flowing", 1); passwords
['blanket', 'studies', 'parties', 'carrier', 'mention']

Okay, how about "studies"... nope, 3 correct letters.

>>> passwords = refine(passwords, "studies", 3); passwords
['parties']

Oh look, that must be the password!


So, how do we automize the choice of passwords from a pool? What we can do is look at each option and see, in the worst case, how many passwords that leaves us with. We can then pick the one with the lowest amount of worst-case remaining options. That password is the one with the best guarantee of whittling down the field.

This code checks every password against every other password against every other password to find the best candidate.

def get_next_guess(passwords):
  scores = {}
  for candidate in passwords:
    results = []
    remainder = (x for x in passwords if x != candidate)
    for correct_pw in remainder:
      no_alternatives = len(refine(remainder, candidate,
                                   distance(candidate, correct_pw)))
      results.append(no_alternatives)
    scores[candidate] = max(results)
  return min(scores, key = lambda x: scores[x])

This guesses 'parties' immediately on my computer, which is kind of lucky because 'beating' would've been just as good of a guess. Let's instead look at the one in the screenshot, where the correct password was 'WAITING'.

>>> passwords = ["cleanse", "grouped", "gaining", "wasting", "dusters", "letting", "endings", "fertile", "seeking", "certain", "bandits", "stating", "wanting", "parties", "waiting", "station", "maltase", "monster"]
>>> get_next_guess(passwords)
'wanting'
>>> #incorrect, 6/7 correct
>>> passwords = refine(passwords, "wanting", 6); passwords
['wasting', 'waiting']

With two passwords left, get_next_guess becomes basically a die roll. Just try the first and then the second, and you're done in three tries, no restarts.

(Fun aside. You know the link Colin D shared with the list of 12-character passwords? The writer there picked APPRECIATION. That's actually the best guess! In that case, it leaves you with no more than two alternatives regardless of what the correct password actually is.)

16
  • 5
    ... Why, yes, that certainly is a much easier solution. cough cough
    – user98085
    Commented Jul 16, 2013 at 13:32
  • 1
    Incredibly clever and stupendously useless. Congrats! Have an up vote I guess? Commented Jul 16, 2013 at 13:50
  • 1
    -1 not automated. OP spefically states he didn't want to do it by hand, and this answer still requires the process to be coded and handled by hand (and edited as you enter guesses). So, it's not automated, and by the OP's comments in my answer, it deserves downvotes. Sorry.
    – Bon Gart
    Commented Jul 16, 2013 at 15:02
  • 2
    Revenge downvoting could technically be considered abuse of the privilege to vote. Something to keep in mind.
    – Niro
    Commented Jul 16, 2013 at 15:18
  • 3
    @badp Good idea, you should turn it in to a phone app and leverage the built-in camera!
    – Tacroy
    Commented Jul 16, 2013 at 19:11
3

I'm using a fairly simple, yet surprisingly efficient algorithm, that can be done without taking notes and can lead to the answer relatively quickly:

I'm going to explain my algorithm step-by-step and by using your screenshot as example. For our example, we will assume that the result is WAITING. For the sake of not having to scroll up all the time, I'm incorporating the screenshot in this answer. Screenshot


Step 1:

Select the first word: CLEANSE, the result is 0

Step 2:

Go for the brackets (see @ColinD's answer) until you either recovered your lost attempt or there is no more bracket left to use (let's assume I have retrieved my lost attempt on the first bracket pair). The reason we're doing this in Step 2, and not Step 1, is because you start hacking with the highest amount of attempts possible. In this case you can not have more than 4 attempts. Any additional attempt recovery brackets you find would be wasted then.

You could also wait until you only have 1 attempt left, but I don't recommend this. The reason is, by the time you have only 1 attempt left, you've probably eliminated a lot of possibilities. As a result, any duds eliminated by the brackets may eliminate one of the solutions you've already excluded, thereby wasting that dud removal bracket.

By going for the brackets after your first failed attempt, you have a much better chance at eliminating options you haven't looked at or can't exclude yet, making the dud removals much more valuable.

Step 3:

Go for the next word GROUPED, and compare it with the previous words you've tried. They both have an E in common, but those are not at the same position, so the similarity between both is 0, which fits into our potential solution; the result is 0 here as well...

Step 4:

Assuming you haven't used up all brackets, this would be the perfect time to search for another extra attempt, see step 2.

Step 5:

Rinse and repeat. GAINING has a similarity of 1 compared to GROUPED (they both start with G), so it's not our word. WASTING has a similarity of 0 compared to either CLEANSE (A and N are not in the same position) or GROUPED (G is not in the same position; we do not compare WASTING to GAINING, since we skipped that one); the result is 6 this time around, Yeehaa!!

Step 6:

From here on, it's going to be fast: We are searching for a word that differs from WASTING by only a single letter. DUSTERS, LETTING, ENDINGS, FERTILE, SEEKING, CERTAIN, BANDITS, STATING, no, no and no! WANTING, yes!; the result here is 6 yet again.

Step 7:

From here on, we know that our solution is WA*TING. Before we continue, we look at how many attempts we have, and how many WA*TING words are left. If we only have 1 attempt left and more than 1 possible solution, we try to find an extra attempt using the brackets. In our case, there's only 1 word left, WAITING, which is our solution.


In our example, we used 4 attempts (but recovered 1), so it was a close call.
Normally, you'll find the solution much faster, since there are lots of helpful bracket pairs (in our example, there was only 1 pair).

You do not need any pen or paper using this algorithm, since the GUI already shows you, which words you tried out (not all of them, but mostly enough), so you don't need to remember them, when comparing your current word with the past ones.

Always keep an eye on the amount of attempts you have left! If you only have 1 attempt left and no more brackets to use and more than 1 potential solution, then quit hacking and try again.

With that said, I wish you the best of luck.
Oh, and don't try to hack into my PC, because I'd be really sad if you did

:'-(

4
  • "by only a single letter." "WANTING" is 7, not 6 letters long :P
    – badp
    Commented Jul 16, 2013 at 17:38
  • @badp I was a bit confused by your previous comment, but I did find the flaw in my answer thanks to it after all. After trying WANTING or WASTING, I said the result would be 5, but it's actually 6. I can be really daft sometimes, lol...
    – Nolonar
    Commented Jul 16, 2013 at 17:53
  • wait to go for the brackets until you have chosen 3. Either enough duds will be removed for you to get the right one, or you will get your allowance replenished, giving you 7 attempts to get the right password
    – SeanC
    Commented Jul 16, 2013 at 18:51
  • @SeanC, I don't recommend waiting until you have only 1 attempt left. I've added an explanation why in step 2. It basically boils down to: the longer you play, the more options you can exclude. If you then find a dud elimination bracket, that bracket has a much larger chance at eliminating an option you've already excluded, thereby wasting that bracket. Also, having less options to look at (because you have eliminated them early), the faster you can solve the problem.
    – Nolonar
    Commented Oct 26 at 16:48
1

You can essentially automate hacking with this mod on Nexus.

With this mod , hacking terminals is really more easy ! You can choose ONE of these esp :

Easier_hacking_5_8 : Terminals will show 5-8 words possibilities instead 5-20 in original game. Lucky_hacking_5 : only 5 words possibilities Action_Boy_hacking : only 1 word possibilities , i don't want to waste my time with this ! ( more close than older fallouts )

By the way terminals still need science skill to open.

Select the Action_Boy_hacking option. Disable or delete the other ESP files.


You may be able to reduce the delay further with lStewieAl's Tweaks:

Faster Hacking Transition - decreases the delay after successfully hacking from 3 seconds to 0.5 seconds

note:

All tweaks are disabled by default and must be enabled in the provided ini.

1
-3

The fact that the passwords you guess with are printed on the lower right of the screen as you guess them makes the process of guessing the right password MUCH easier.

You pick one. Even getting 0 letters correct helps you eliminate a bunch of passwords. Look for patterns before you start guessing. Are there a pile of words that end in "ING"? If there are, pick one of those first. If you don't get at least 3 letters right, then you know that ALL of those words that end in ING are not the right ones.

If you come at it with the right mindset, it shouldn't require pen and paper, or a second computer running a program. It's a hacking game. If you really want to make it easier, put more points into Science, or player.modav science 100

2
  • 2
    Not sure why you were downvoted. Commented Jul 16, 2013 at 14:15
  • 1
    @ChargingPun because I didn't ask how to do it by hand or through stats/cheating. I assume somebody already wrote a very small piece of javascript or something for this, since it's all fairly easy to implement.
    – badp
    Commented Jul 16, 2013 at 14:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.