示例#1
0
 def test_3(self):
     ipFailCounter = IPFailCounter.IPFailCounter(Global.MAX_TRY_BY_IP)
     srv = ChallengeServer.ChallengeServer("1.1.1.1", ipFailCounter)
     msg, keep = srv.receive(Global.getMessage(1, testUserName))
     self.assertTrue(keep)
     self.assertEqual(msg[0], "2")
     msg, keep = srv.receive(Global.getMessage(4, testUserChallenges[msg[2:].rstrip()]))
示例#2
0
 def test_2(self):
     ipFailCounter = IPFailCounter.IPFailCounter(Global.MAX_TRY_BY_IP)
     srv = ChallengeServer.ChallengeServer("1.1.1.1", ipFailCounter)
     msg, keep = srv.receive(Global.getMessage(1, testUserName))
     self.assertTrue(keep)
     self.assertEqual(msg[0], "2")
     msg, keep = srv.receive(Global.getMessage(4, "abcdefgh"))
     self.assertFalse(keep)
     self.assertEqual(msg[0], "6")
示例#3
0
def main():
    print()
    print()
    print("Challenge client")
    print("================")
    print()
    host = getString("host", Global.REGEX_HOST)
    port = getInt("port")
    user = getString("user", Global.REGEX_USER)
    print("Connect to %s@%s:%d" % (user, host, port))

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    print("connected")
    s.send(Global.getMessage(1, user).encode(encoding="UTF-8"))
    message = getMessage(s)
    if len(message.getRaw()) == 0:
        print("Server has disconnect")
    elif message.isValid():
        if message.getCode() == 2:
            print("chap = '%s'" % message.getContent())
            code = getString("chap", Global.REGEX_CHALLENGE)
            s.send(Global.getMessage(4, code).encode(encoding="UTF-8"))
            message = getMessage(s)
            if len(message.getRaw()) == 0:
                print("Server has disconnect")
            elif message.isValid():
                if message.getCode() == 5:
                    print("User ok!")
                else:
                    print("Bad chap !")
            else:
                print("Error, user unknown !")
        else:
            print("Error, user unknown !")
    else:
        print("Response not valid !")

    s.close()
示例#4
0
 def receive(self, msg):
     print("recive '%s' state %s" % (msg.rstrip(), self.__state))
     message = Global.Message(msg)
     if not message.isValid():
         return self.error(self.errorBadFormat)
     if message.getCode() == 1 and self.__state == State.StateWaitUser:
         if not re.match(Global.REGEX_USER, message.getContent()):
             return self.error(self.errorUser)
         self.__user = User.User(message.getContent())
         if self.__user.isUserValid():
             self.__state = State.StateWaitChallenge
             return Global.getMessage(2, self.__user.getChallenge()), True
         else:
             return self.error(self.errorUser)
     elif message.getCode() == 4 and self.__state == State.StateWaitChallenge:
         if not re.match(Global.REGEX_USER, message.getContent()):
             return self.error(self.errorChallenge)
         if self.__user.isChallengeValid(message.getContent()):
             self.__state = State.StateConnected
             return Global.getMessage(5, "Challenge ok"), True
         else:
             return self.error(self.errorChallenge)
     return self.error(self.errorBadProtocol)
示例#5
0
 def test_1(self):
     ipFailCounter = IPFailCounter.IPFailCounter(Global.MAX_TRY_BY_IP)
     srv = ChallengeServer.ChallengeServer("1.1.1.1", ipFailCounter)
     msg, keep = srv.receive(Global.getMessage(1, "user"))
     self.assertFalse(keep)
     self.assertEqual(msg[0], "3")