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

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

			if data[8:10] == "\x72\x00":  #Negotiate proto answer.
				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)

			if data[8:10] == "\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(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(0.5)
            data = self.request.recv(1024)

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

            if data[8:10] == "\x72\x00":  #Negotiate proto answer.
                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)

            if data[8:10] == "\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(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