diff --git a/cowrie/commands/tftp.py b/cowrie/commands/tftp.py index aee1b48..e6d2327 100644 --- a/cowrie/commands/tftp.py +++ b/cowrie/commands/tftp.py @@ -62,17 +62,20 @@ class command_tftp(HoneyPotCommand): re.sub('[^A-Za-z0-9]', '_', self.file_to_get)) self.safeoutfile = os.path.join(self.download_path, tmp_fname) - with tftpy.TftpClient(self.hostname, int(self.port)) as tclient: - try: - tclient.download(self.file_to_get, self.safeoutfile, progresshook) - self.file_to_get = self.fs.resolve_path(self.file_to_get, self.protocol.cwd) - if hasattr(tclient.context, 'metrics'): - self.fs.mkfile(self.file_to_get, 0, 0, tclient.context.metrics.bytes, 33188) - else: - self.fs.mkfile(self.file_to_get, 0, 0, 0, 33188) - self.fs.update_realfile(self.fs.getfile(self.file_to_get), self.safeoutfile) - except tftpy.TftpException, err: - pass + tclient = None + + try: + tclient = tftpy.TftpClient(self.hostname, int(self.port)) + tclient.download(self.file_to_get, self.safeoutfile, progresshook) + self.file_to_get = self.fs.resolve_path(self.file_to_get, self.protocol.cwd) + if hasattr(tclient.context, 'metrics'): + self.fs.mkfile(self.file_to_get, 0, 0, tclient.context.metrics.bytes, 33188) + else: + self.fs.mkfile(self.file_to_get, 0, 0, 0, 33188) + self.fs.update_realfile(self.fs.getfile(self.file_to_get), self.safeoutfile) + except tftpy.TftpException, err: + if tclient and tclient.context and not tclient.context.fileobj.closed: + tclient.context.fileobj.close() if os.path.exists(self.safeoutfile):