Skocz do zawartości
makaron

Python

Rekomendowane odpowiedzi

Witam,

Próbuje wygenerować słownik brute force i znalazłem kawałek kodu z Pythona do tego zadania. Autor napisał że aby dostosować generator do swoich potrzeb musimy zmodyfikować kilka zmiennych ale niestety nie mam pojęcia jak to zrobić.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zdobądź pojęcie. Polecam odpowiednią literaturę.

 

Dzieki za rzeczowa odpowiedz.

Niemam pojecia o programowaniu dlatego zapytalem. Domniemywam ze moje pytanie jest proste gdyz kod jest juz napisany a jedynie co trzeba zmienic to warosci odpowiedzialne za num i low ale probowalem i nie wychodzilo.

Dla kogos kto zna sie choc troche nie jest problemem pokazanie gdzie nalezy wpisac te 2-3 linje lub je zmodyfikowac.

W sumie mogles odpisac www.google.com zajelo by to mniej znakow.

Po drugie nie mam zamiaru uczyc sie i zobywac wiedze w tym kierunku gdyz potrzebuje tylko prostej informacji. To tak jak by ktos kupil samochod i musial by umiec zmienic rozrzad, skrzynie , zrobic FW update na ECU.... ale jak ktos zapyta jak wymienic H7 lub dolac olej/plyn do chlodnicy to mozna mu odpisac i dac pare hintow , gdyz to jest w miare proste w wiekszosci pojazdow osobowych.

 

PS. Sorki za znaki ale nie pisze z pracy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To może chociaż kod gdzieś zamieścisz?

Nie jesteśmy wróżkami, żeby zgadnąć co za źródło masz na myśli i które linie zmienić.

 

 

Hint - tutaj w treści postu

code //jeżeli mało kodu

codebox //jeżeli dużo kodu
Ewentualnie w jakimś zipie/rarze/tgz na serwerze do pobrania.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Sorki cos sie pokpilo gdyz powinien byc link do tego kodu juz w pierwszym poscie.

 




def xselections(items, n) _linenums:0'>f=open('wordlist', 'w')def xselections(items, n): if n==0: yield [] else: for i in xrange(len(items)): for ss in xselections(items, n-1): yield [items]+ss# Numbers = 48 - 57# Capital = 65 - 90# Lower = 97 - 122numb = range(48,58)cap = range(65,91)low = range(97,123)choice = 0while int(choice) not in range(1,8): choice = raw_input(''' 1) Numbers 2) Capital Letters 3) Lowercase Letters 4) Numbers + Capital Letters 5) Numbers + Lowercase Letters 6) Numbers + Capital Letters + Lowercase Letters 7) Capital Letters + Lowercase Letters : ''')choice = int(choice)poss = []if choice == 1: poss += numbelif choice == 2: poss += capelif choice == 3: poss += lowelif choice == 4: poss += numb poss += capelif choice == 5: poss += numb poss += lowelif choice == 6: poss += numb poss += cap poss += lowelif choice == 7: poss += cap poss += lowbigList = []for i in poss: bigList.append(str(chr(i)))MIN = raw_input("What is the min size of the word? ")MIN = int(MIN)MAX = raw_input("What is the max size of the word? ")MAX = int(MAX)for i in range(MIN,MAX+1): for s in xselections(bigList,i): f.write(''.join(s) + '\n')

 

Znalazlem tez drugi ktory juz zmodyfikowalem ale z tego co sie orientuje ten pierwszy jest w stanie generowac hasla szybciej.

to code do drugiego.

 

#! /usr/bin/python# author:    Luke Chenimport sysfrom optparse import OptionParserdef main():    characters = "0123456789abcdefghijklmnopqrstuvwxyz"        parser = OptionParser( description = "Dictionary Generator", version = "1.0" )    parser.add_option( "-f", "--fast", action = "store_true", help = "fast mode, generate only sequence and repeating characters like ccccc and 7654" )    parser.add_option( "-n", "--number", action = "store_true", help = "only numeral, 0-9" )    parser.add_option( "-a", "--alphabet", action = "store_true", help = "only alphabet, a-z" )    parser.add_option( "-c", "--custom", action = "store", help = "from custom characters" )    parser.add_option( "-l", "--length", action = "store", type = int, default = 6, help = "length of each word in the dictionary" )    parser.add_option( "-o", "--output", metavar = "FILE", help = "write output to FILE" )        ( options, args ) = parser.parse_args()        if options.number and options.alphabet:        parser.error( "options -n and -a are mutually exclusive" )    elif options.number:        characters = "0123456789"    elif options.alphabet:        characters = "abcdefghijklmnopqrstuvwxyz"    elif options.custom:        characters = options.custom        # initialize    for index in range( options.length ):        combination.append( characters[ 0 ] )    if options.fast:    # fast mode        fast( characters, options.length )    else:        normal( characters, options.length )        def fast( characters, length ):    global combination, result        for i in range( len( characters )):        for j in range( length ):            combination[ j ] = characters[ i ]        print "".join( combination )    for index in range( len( characters ) - length + 1 ):        reverse = characters[ index : index + length ]        print reverse        print reverse[ :: -1 ]def normal( characters, length ):    global combination    characters += ';'    # ';' is the ending symbol    while combination[ 0 ] != ';':        print "".join( combination )        index = length - 1    # current digit ( from right to left )        # carrying        while combination[ index ] == characters[ -2 ] and index != 0:            combination[ index ] = characters[ 0 ]            index = index - 1        # increment        combination[ index ] = characters[ characters.find( combination[ index ] ) + 1 ]        combination = []if __name__ == "__main__":    main()

Pojawil sie tez problem gdyz nie potrzebuje stringow z np.

00000000000a

00000000000b

itp

Wie ktos moze jak zmodyfikowac obojetnie ktory z nich abym mial max 3 te same znaki z rzedu np:

000abcdef12

aaa123456789

aaabbbcccddd

itp?

Zajmuje to szmat czasu a wiem ze te hasla beda bezcelowe.

 

Update:

Juz wiem gdzie zmieniac wartosci:

# Numbers = 48 - 57

# Capital = 65 - 90

# Lower = 97 - 122

dla kazdego to n+1 czyli a-f to 97-103 itd dla Cap i numb ale nadal niemam pojecia jak zmodyfikowac ten kod aby nie generowal tych 10-ciu takich samych znakow z rzedu.

Edytowane przez makaron

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...