################################################################################## #Kerberos Server stuff starts here ################################################################################## class KERBServer(): def serve_thread_udp(host, port, handler): try: server = ThreadingUDPServer((host, port), handler) server.serve_forever() except Exception, e: print "Error starting UDP server on port %s: %s:" % (str(port),str(e)) def serve_thread_tcp(host, port, handler): try: server = ThreadingTCPServer((host, port), handler) server.serve_forever() except Exception, e: print "Error starting TCP server on port %s: %s:" % (str(port),str(e)) #Function name self-explanatory def start(Krb_On_Off): if Krb_On_Off == "ON": t1 = threading.Thread(name="KerbUDP", target=serve_thread_udp, args=("0.0.0.0", 88,KerbUDP)) t2 = threading.Thread(name="KerbTCP", target=serve_thread_tcp, args=("0.0.0.0", 88, KerbTCP)) for t in [t1,t2]: t.setDaemon(True) t.start() return t1, t2 if Krb_On_Off == "OFF": return False class ThreadingUDPServer(ThreadingMixIn, UDPServer): allow_reuse_address = 1 def server_bind(self): UDPServer.server_bind(self) class ThreadingTCPServer(ThreadingMixIn, TCPServer): allow_reuse_address = 1 def server_bind(self): TCPServer.server_bind(self) def ParseMSKerbv5TCP(Data): MsgType = Data[21:22] EncType = Data[43:44] MessageType = Data[32:33] if MsgType == "\x0a" and EncType == "\x17" and MessageType =="\x02": if Data[49:53] == "\xa2\x36\x04\x34" or Data[49:53] == "\xa2\x35\x04\x33": HashLen = struct.unpack('