コード例 #1
0
 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__())
コード例 #2
0
ファイル: svmap.py プロジェクト: z0x010/sipvicious
 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`)
コード例 #3
0
ファイル: svmap.py プロジェクト: MuradHost/sipvicious
 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`)