2016-02-11 2 views
-1

может кто-то пожалуйста, помогите мне понять этот кодпитон RECV() и Eval()

clientsock.send("Welcome to Maths_Server 1.0\n") 

try: 
    clientsock.send("Enter the first number, so I can EVALuate it:\n") 
    firstNum = eval(clientsock.recv(1024)) 
    firstNum = firstNum + firstNum + ord(flag[4]) + ord(flag[8]) + ord(flag[5]) 
    clientsock.send("Enter the second number, so I can EVALuate it:\n") 
    secondNum = eval(clientsock.recv(1024)) 
    if secondNum == firstNum: 
     clientsock.send("The flag is: " + flag + "\n") 
     firstNum = 0 
     secondNum = 0 
except: 
    pass 

clientsock.close() 

я хочу знать, что делает ПРИЕМ() делает и как я могу сделать, если заявление истинного

+0

этот код полон ошибок и недостатков безопасности. НЕ ИСПОЛЬЗУЙТЕ ЭТО. – Daniel

+0

Я не использую его, на самом деле моя задача - узнать, как его взломать (домашнее задание), но я не понимаю, что делает recv – AdoobII

+0

'clientsock' - это, очевидно, объект сокета. Итак https://docs.python.org/2/library/socket.html#socket.socket.recv. Обратите внимание: Googling 'python recv' ведет вас к этой точной странице. – kindall

ответ

0

Хорошо , вы не можете определить значение firstNum, потому что оно введено пользователем, поэтому вы вводите случайное число в firstNum, затем для secondNum вы вводите firstNum, так что это означает, что значение eval() принимает значение firstNum и конвертирует его в строку для secondNum, которая сделает if-statement true. Надеюсь, это сработает.

+0

спасибо за объяснение, это сработало, и я получил то, что хотел еще раз :) – AdoobII

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