2017-02-08 2 views
0

Я пытаюсь написать скрипт python для грубой силы. Я следую этому руководству link и модифицировал его в соответствии с моими потребностями. большая часть кода работает отлично, за исключением того, выход только один выход вместо 26Для цикла функция

file = args.imp 
MAX_KEY_SIZE = 26 
message = open(file) 

def getKey(): 
    key = 0 
    print("Enter the key number (1-%s)" % (MAX_KEY_SIZE)) 
    key = int(input()) 
    while True: 
      if (key >= 1 and key <= MAX_KEY_SIZE): 
        return key 

def decode(message, key): 
    translated = '' 


    for symbol in message.read(): 

      num = ord(symbol) 
      num += key 

      if num > ord('Z'): 
        num -= 26 
      elif num < ord('A'): 
        num += 26 
      translated += chr(num) 
    return translated 


key = getKey() 

for k in range(1, MAX_KEY_SIZE + 1): 
    print(k, decode(message, key)) 

выхода:

Enter the key number (1-26) 
4 
1 BDPWCCONVESDKLOOVACAXKYFJJBGDCSLRRPTYYYIBQNOXLZYHCHCNZCRM 
2 
3 
4 
5 
6 etc to 26 

ответ

1

После вызова функции read() он считывает весь файл и оставляет курсор чтения, расположенный в конце файла. Когда вы прочтете файл с этой ситуацией, он вернет вам '' (пустая строка). Это причина, вы получаете выход только на первой итерации и остаетесь пустыми.

Вы можете искать (указывать курсор в начале файла) в соответствии с ответом @schwobaseggl.

или читать весь файл сразу в начале,

message = open(file).read() 

# code here 

def decode(message, key): 
    translated = '' 
    for symbol in message: 
      num = ord(symbol) 
      num += key 
      if num > ord('Z'): 
        num -= 26 
      elif num < ord('A'): 
        num += 26 
      translated += chr(num) 
    return translated 
+0

То есть, конечно, умный способ;) – schwobaseggl

+0

Спасибо, что работы –

2

Вы не можете прочитать файл снова и снова, как и что. Вы должны установить положение объекта файла обратно в начало. В противном случае message.read() просто вернет пустую строку. Add

message.seek(0) 

к началу вашей функции decode.

+0

Спасибо, что работает –

Смежные вопросы