def getResponse(self, buff, srcaddr): srcip, srcport, *_ = srcaddr uaname = 'unknown' buff = buff.decode('utf-8', 'ignore') if buff.startswith('OPTIONS ') \ or buff.startswith('INVITE ') \ or buff.startswith('REGISTER '): if self.externalip == srcip: self.log.debug("We received our own packet from %s:%s" % (str(srcip), srcport)) else: self.log.info( "Looks like we received a SIP request from %s:%s" % (str(srcip), srcport)) self.log.debug(buff.__repr__()) return self.log.debug("running fingerPrintPacket()") res = fingerPrintPacket(buff) if res is not None: if 'name' in res: uaname = res['name'][0] else: uaname = 'unknown' self.log.debug(buff.__repr__()) if not self.fpworks: fp = None if fp is None: if self.fpworks: fpname = 'unknown' else: fpname = 'disabled' else: fpname = ' / '.join(fp) self.log.debug('Fingerprint: %s' % fpname) self.log.debug("Uaname: %s" % uaname) #print buff originaldst = getTag(buff) try: dstip = socket.inet_ntoa(pack('!L', int(originaldst[:8], 16))) dstport = int(originaldst[8:12], 16) except (ValueError, TypeError, socket.error): self.log.debug( "original destination could not be decoded: %s" % (originaldst)) dstip, dstport = 'unknown', 'unknown' resultstr = '%s:%s\t->\t%s:%s\t->\t%s\t->\t%s' % ( dstip, dstport, srcip, srcport, uaname, fpname) self.log.info(resultstr) self.resultip['%s:%s' % (srcip, srcport)] = '%s:%s' % (dstip, dstport) self.resultua['%s:%s' % (srcip, srcport)] = uaname self.resultfp['%s:%s' % (srcip, srcport)] = fpname if self.sessionpath is not None and self.dbsyncs: self.resultip.sync() self.resultua.sync() self.resultfp.sync() else: self.log.info('Packet from %s:%s did not contain a SIP msg' % srcaddr) self.log.debug('Packet: %s' % buff.__repr__())
def getResponse(self,buff,srcaddr): from libs.svhelper import fingerPrintPacket,getTag srcip,srcport = srcaddr uaname = 'unknown' if buff.startswith('OPTIONS ') \ or buff.startswith('INVITE ') \ or buff.startswith('REGISTER '): if self.externalip == srcip: self.log.debug("We received our own packet from %s:%s" % srcaddr) else: self.log.info("Looks like we received a SIP request from %s:%s"% srcaddr) self.log.debug(repr(buff)) return self.log.debug("running fingerPrintPacket()") res = fingerPrintPacket(buff) if res is not None: if res.has_key('name'): uaname = res['name'][0] else: uaname = 'unknown' self.log.debug(`buff`) #if self.fpworks: # try: # fp = self.sipfingerprint(buff) # except: # self.log.error("fingerprinting gave errors - will be disabled") # self.fpworks = False if not self.fpworks: fp = None if fp is None: if self.fpworks: fpname = 'unknown' else: fpname = 'disabled' else: fpname = ' / '.join(fp) self.log.debug('Fingerprint: %s' % fpname) self.log.debug("Uaname: %s" % uaname) #print buff originaldst = getTag(buff) try: dstip = socket.inet_ntoa(pack('!L',int(originaldst[:8],16))) dstport = int(originaldst[8:12],16) except (ValueError,TypeError,socket.error): self.log.debug("original destination could not be decoded: %s" % (originaldst)) dstip,dstport = 'unknown','unknown' resultstr = '%s:%s\t->\t%s:%s\t->\t%s\t->\t%s' % (dstip,dstport,srcip,srcport,uaname,fpname) self.log.info( resultstr ) self.resultip['%s:%s' % (srcip,srcport)] = '%s:%s' % (dstip,dstport) self.resultua['%s:%s' % (srcip,srcport)] = uaname self.resultfp['%s:%s' % (srcip,srcport)] = fpname if self.sessionpath is not None and self.dbsyncs: self.resultip.sync() self.resultua.sync() self.resultfp.sync() else: self.log.info('Packet from %s:%s did not contain a SIP msg'%srcaddr) self.log.debug('Packet: %s' % `buff`)