Example #1
0
    def handle(self):
        try:
            self.request.settimeout(0.5)
            data = self.request.recv(1024)

            ##session request 139
            if data[0] == "\x81":
                Buffer = "\x82\x00\x00\x00"
                self.request.send(Buffer)
                data = self.request.recv(1024)

            ##Negotiate proto answer.
            if data[8:10] == "\x72\x00":
                head = SMBHeader(cmd="\x72",
                                 flag1="\x80",
                                 flag2="\x00\x00",
                                 pid=pidcalc(data),
                                 mid=midcalc(data))
                Body = SMBNegoAnsLM(Dialect=Parse_Nego_Dialect(data),
                                    Domain="",
                                    Key=settings.Config.Challenge)
                Body.calculate()
                Packet = str(head) + str(Body)
                Buffer = struct.pack(">i", len(''.join(Packet))) + Packet
                self.request.send(Buffer)
                data = self.request.recv(1024)

            ##Session Setup AndX Request
            if data[8:10] == "\x73\x00":
                if Is_LMNT_Anonymous(data):
                    head = SMBHeader(cmd="\x73",
                                     flag1="\x90",
                                     flag2="\x53\xc8",
                                     errorcode="\x72\x00\x00\xc0",
                                     pid=pidcalc(data),
                                     tid=tidcalc(data),
                                     uid=uidcalc(data),
                                     mid=midcalc(data))
                    Packet = str(head) + str(SMBSessEmpty())
                    Buffer = struct.pack(">i", len(''.join(Packet))) + Packet
                    self.request.send(Buffer)

                else:
                    ParseLMNTHash(data, self.client_address[0])
                    head = SMBHeader(cmd="\x73",
                                     flag1="\x90",
                                     flag2="\x53\xc8",
                                     errorcode="\x22\x00\x00\xc0",
                                     pid=pidcalc(data),
                                     tid=tidcalc(data),
                                     uid=uidcalc(data),
                                     mid=midcalc(data))
                    Packet = str(head) + str(SMBSessEmpty())
                    Buffer = struct.pack(">i", len(''.join(Packet))) + Packet
                    self.request.send(Buffer)
                    data = self.request.recv(1024)

        except Exception:
            self.request.close()
            pass
Example #2
0
	def handle(self):
		try:
			self.request.settimeout(1)
			data = self.request.recv(1024)
			Challenge = RandomChallenge()
			if data[0] == b"\x81":  #session request 139
				Buffer = "\x82\x00\x00\x00"
				self.request.send(NetworkSendBufferPython2or3(Buffer))
				data = self.request.recv(1024)

			if data[8:10] == b"\x72\x00":  #Negotiate proto answer.
				head = SMBHeader(cmd="\x72",flag1="\x80", flag2="\x00\x00",pid=pidcalc(NetworkRecvBufferPython2or3(data)),mid=midcalc(NetworkRecvBufferPython2or3(data)))
				Body = SMBNegoAnsLM(Dialect=Parse_Nego_Dialect(NetworkRecvBufferPython2or3(data)),Domain="",Key=NetworkRecvBufferPython2or3(Challenge))
				Body.calculate()
				Packet = str(head)+str(Body)
				Buffer = StructPython2or3('>i', str(Packet))+str(Packet)
				self.request.send(NetworkSendBufferPython2or3(Buffer))
				data = self.request.recv(1024)

			if data[8:10] == b"\x73\x00":  #Session Setup AndX Request
				if Is_LMNT_Anonymous(data):
					head = SMBHeader(cmd="\x73",flag1="\x90", flag2="\x53\xc8",errorcode="\x72\x00\x00\xc0",pid=pidcalc(NetworkRecvBufferPython2or3(data)),tid=tidcalc(NetworkRecvBufferPython2or3(data)),uid=uidcalc(NetworkRecvBufferPython2or3(data)),mid=midcalc(NetworkRecvBufferPython2or3(data)))
					Packet = str(head)+str(SMBSessEmpty())
					Buffer = StructPython2or3('>i', str(Packet))+str(Packet)
					self.request.send(NetworkSendBufferPython2or3(Buffer))
				else:
					ParseLMNTHash(data,self.client_address[0], Challenge)
					head = SMBHeader(cmd="\x73",flag1="\x90", flag2="\x53\xc8",errorcode="\x22\x00\x00\xc0",pid=pidcalc(NetworkRecvBufferPython2or3(data)),tid=tidcalc(NetworkRecvBufferPython2or3(data)),uid=uidcalc(NetworkRecvBufferPython2or3(data)),mid=midcalc(NetworkRecvBufferPython2or3(data)))
					Packet = str(head) + str(SMBSessEmpty())
					Buffer = StructPython2or3('>i', str(Packet))+str(Packet)
					self.request.send(NetworkSendBufferPython2or3(Buffer))
					data = self.request.recv(1024)
		except Exception:
			self.request.close()
			pass