Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Σπάσιμο κωδικού με Brute Force Attack

Σπάσιμο κωδικού με Brute Force Attack 13 Χρόνια 8 Μήνες πριν #944

  • hennett
  • Το Άβαταρ του/της hennett
  • Αποσυνδεμένος
  • py____
  • 堕天使 Hennett ®
  • Δημοσιεύσεις: 27
Με αφορμή κάποιες πρόσφατες συζητήσεις με τη παρέα μου περί ασφαλών κωδικών, μπήκα στη διαδικασία να κάνω ένα προγραμματάκι που κάνει τους υπολογισμούς μιας Brute Force Attack.

Είναι μια βιαστική δουλειά (χωρίς να θέλω να δικαιολογηθώ για τυχόν λάθη :P) λόγω εξεταστικής και ελάχιστου χρόνου.
Αυτό που ουσιαστικά κάνει, είναι να δέχεται σαν είσοδο μια πληκτρολόγηση του εκάστοτε χρήστη (αυστηρά μεγαλύτερη από 2 χαρακτήρες), να υπολογίζει τους μέγιστους δυνατούς συνδυασμούς και να τυπώνει το χρόνο που χρειάζετε ένα σύγχρονο desktop pc να σπάσει τον κωδικό.

Οποιεσδήποτε αλλαγές, ενημερώσεις και διορθώσεις είναι ελεύθερες και καλοδεχούμενες από τον καθένα.

ΥΓ: Έχω την εντύπωση πως οι συναρτήσεις (πράξεις) είναι σωστές αλλά δε βάζω και το χέρι μου στη φωτιά :laugh: !
# Importing libraries
import re
import locale
 
# Commify values
def number_format(num, places=0): 
    locale.setlocale(locale.LC_NUMERIC, "") 
    return locale.format("%.*f", (places, num), True)
 
# Initialize values
posChars, comb, seconds, minutes = 0, 0, 0, 0
hours, days, years, prefix, suffix = 0, 0, 0, 0, 'seconds'
lows = re.compile('[a-z]')
highs = re.compile('[A-Z]')
nums = re.compile('[0-9]')
wilds = re.compile('[!,@,#,$,%,^,&,*,?,_,~,-,(,),[,]]')
 
# Ask user for input password (min length 3)
while True:
    word = raw_input('Check how secure is your password: ')
    if(len(word) > 2):
        break
    print 'Your password is way too weak, only ' + str(len(word)) + ' characters long!'
 
# Keep track of characters used
if(lows.findall(word)):
    posChars += 26
if(highs.findall(word)):
    posChars += 26
if(nums.findall(word)):
    posChars += 10
if(wilds.findall(word)):
    posChars += 13
 
# Print statistics
comb = posChars**len(word)
print 'Your password is ' + str(len(word)) + ' characters long and has ' + str(number_format(comb)) + ' combinations.'
seconds = comb/2400000000.0 # Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40 GHz
if(seconds <= 1):
    prefix = seconds
    print 'It would take {0} {1} for a desktop pc to crack your password.'.format(number_format(prefix, 7).rstrip('0'), suffix)
else:
    seconds = int(round(seconds, 0))
    if(seconds > 60):
        minutes = seconds / 60
        seconds = seconds % 60
        prefix = minutes
        suffix = 'minutes'
        if(minutes > 60):
            hours = minutes / 60
            minutes = minutes % 60
            prefix = hours
            suffix = 'hours'
            if(hours > 24):
                days = hours / 24
                hours = hours % 24
                prefix = days
                suffix = 'days'
                if(days > 365):
                    years = days / 365
                    days = days % 365
                    prefix = years
                    suffix = 'years'
    print 'It would take about {0} {1} for a desktop pc to crack your password.'.format(number_format(prefix), suffix)
- I would love to change the world, but they won't give me the source code -
Τελευταία διόρθωση: 13 Χρόνια 3 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.370 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου