Esempio n. 1
0
 def __init__(self,scaniter,selecttime=0.005,compact=False, bindingip='',
              fromname='sipvicious',fromaddr='sip:[email protected]', extension=None,
              sessionpath=None,socktimeout=3,externalip=None,localport=5060,
              printdebug=False,first=None,fpworks=False,ipv6=False):
     self.log = logging.getLogger('DrinkOrSip')
     family = socket.AF_INET
     if ipv6:
         family = socket.AF_INET6
     self.ipv6 = ipv6
     self.bindingip = bindingip
     self.sessionpath = sessionpath
     self.dbsyncs = False
     if self.sessionpath is not  None:
         self.resultip = dbm.open(os.path.join(self.sessionpath,'resultip'),'c')
         self.resultua = dbm.open(os.path.join(self.sessionpath,'resultua'),'c')
         try:
             self.resultip.sync()
             self.dbsyncs = True
             self.log.info("Db does sync")
         except AttributeError:
             self.log.info("Db does not sync")
             pass
     else:
         self.resultip = dict()
         self.resultua = dict()
     # we do UDP
     self.sock = socket.socket(family, socket.SOCK_DGRAM)
     # socket timeout - this is particularly useful when quitting .. to eat
     # up some final packets
     self.sock.settimeout(socktimeout)
     # enable sending to broadcast addresses
     self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
     # read handles
     self.rlist = [self.sock]
     # write handles
     self.wlist = list()
     # error handles
     self.xlist = list()
     self.scaniter = scaniter
     self.selecttime = selecttime
     self.localport = localport
     if externalip is None:
         self.log.debug("external ip was not set")
         if (self.bindingip != '0.0.0.0') and (len(self.bindingip) > 0):
             self.log.debug("but bindingip was set! we'll set it to the binding ip")
             self.externalip = self.bindingip
         else:
             try:
                 self.log.info("trying to get self ip .. might take a while")
                 self.externalip = socket.gethostbyname(socket.gethostname())
             except socket.error:
                 self.externalip = '127.0.0.1'
     else:
         self.log.debug("external ip was set")
         self.externalip = externalip
     self.log.debug("External ip: %s:%s" % (self.externalip,localport) )
     self.compact = compact
     self.log.debug("Compact mode: %s" % self.compact)
     self.fromname = fromname
     self.fromaddr = fromaddr
     self.log.debug("From: %s <%s>" % (self.fromname,self.fromaddr))
     self.nomoretoscan = False
     self.originallocalport = self.localport
     self.nextip = None
     self.extension = extension
     self.fpworks = fpworks
     self.printdebug = printdebug
     self.first = first
     if self.sessionpath is not None:
         self.packetcount = packetcounter(50)
     self.sentpackets = 0
Esempio n. 2
0
 def __init__(self, host='localhost', bindingip='', externalip=None, localport=5060,
              method='REGISTER', guessmode=1, guessargs=None, selecttime=0.005,
              sessionpath=None, compact=False, socktimeout=3, initialcheck=True,
              enableack=False, maxlastrecvtime=15, domain=None, printdebug=False,
              ipv6=False, port=5060):
     self.log = logging.getLogger('TakeASip')
     self.maxlastrecvtime = maxlastrecvtime
     self.sessionpath = sessionpath
     self.dbsyncs = False
     self.enableack = enableack
     if self.sessionpath is not None:
         self.resultauth = dbm.open(os.path.join(
             self.sessionpath, 'resultauth'), 'c')
         try:
             self.resultauth.sync()
             self.dbsyncs = True
             self.log.info("Db does sync")
         except AttributeError:
             self.log.info("Db does not sync")
             pass
     else:
         self.resultauth = dict()
     family = socket.AF_INET
     if ipv6:
         family = socket.AF_INET6
     self.sock = socket.socket(family, socket.SOCK_DGRAM)
     self.sock.settimeout(socktimeout)
     self.bindingip = bindingip
     self.localport = localport
     self.ipv6 = ipv6
     self.originallocalport = localport
     self.rlist = [self.sock]
     self.wlist = list()
     self.xlist = list()
     self.challenges = list()
     self.realm = None
     try:
         if int(port) > 1 and int(port) <= 65535:
             self.dsthost, self.dstport = host, int(port)
     except (ValueError, TypeError):
         self.log.error('port should strictly be an integer between 1 and 65535')
         exit(1)
     self.domain = self.dsthost
     if domain:
         self.domain = domain
     self.guessmode = guessmode
     self.guessargs = guessargs
     if self.guessmode == 1:
         self.usernamegen = numericbrute(*self.guessargs)
     elif guessmode == 2:
         self.usernamegen = dictionaryattack(self.guessargs)
     self.selecttime = selecttime
     self.compact = compact
     self.nomore = False
     self.BADUSER = None
     self.method = method.upper()
     if self.method == 'INVITE':
         self.log.warning(
             'using an INVITE scan on an endpoint (i.e. SIP phone) may cause it to ring and wake up people in the middle of the night')
     if self.sessionpath is not None:
         self.packetcount = packetcounter(50)
     self.initialcheck = initialcheck
     self.lastrecvtime = time.time()
     if externalip is None:
         self.log.debug("external ip was not set")
         if (self.bindingip != '0.0.0.0') and (len(self.bindingip) > 0):
             self.log.debug(
                 "but bindingip was set! we'll set it to the binding ip")
             self.externalip = self.bindingip
         else:
             try:
                 self.log.info(
                     "trying to get self ip .. might take a while")
                 self.externalip = socket.gethostbyname(
                     socket.gethostname())
             except socket.error:
                 self.externalip = '127.0.0.1'
     else:
         self.log.debug("external ip was set")
         self.externalip = externalip
     self.printdebug = printdebug
Esempio n. 3
0
 def __init__(self, host='localhost', bindingip='', localport=5060, port=5060,
              externalip=None,
              username=None, crackmode=1, crackargs=None, realm=None, sessionpath=None,
              selecttime=0.005, compact=False, reusenonce=False, extension=None,
              maxlastrecvtime=10, domain=None, requesturi=None, method='REGISTER', ipv6=False):
     self.log = logging.getLogger('ASipOfRedWine')
     family = socket.AF_INET
     if ipv6:
         family = socket.AF_INET6
     self.ipv6 = ipv6
     self.sock = socket.socket(family, socket.SOCK_DGRAM)
     self.sock.settimeout(10)
     self.sessionpath = sessionpath
     self.maxlastrecvtime = maxlastrecvtime
     self.lastrecvtime = time.time()
     self.dbsyncs = False
     self.method = method
     if self.sessionpath is not None:
         self.resultpasswd = dbm.open(
             os.path.join(self.sessionpath, 'resultpasswd'), 'c')
         try:
             self.resultpasswd.sync()
             self.dbsyncs = True
             self.log.info("Db does sync")
         except AttributeError:
             self.log.info("Db does not sync")
             pass
     else:
         self.resultpasswd = dict()
     self.nomore = False
     self.passwordcracked = False
     self.rlist = [self.sock]
     self.wlist = list()
     self.xlist = list()
     self.challenges = list()
     self.crackmode = crackmode
     self.crackargs = crackargs
     try:
         if int(port) > 1 and int(port) <= 65535:
             self.dsthost, self.dstport = host, int(port)
     except (ValueError, TypeError):
         self.log.error('port should strictly be an integer between 1 and 65535')
         exit(1)
     self.domain = self.dsthost
     if domain:
         self.domain = domain
     if crackmode == 1:
         self.passwdgen = numericbrute(*crackargs)
     elif crackmode == 2:
         self.passwdgen = dictionaryattack(crackargs)
     self.username = username
     self.realm = realm
     self.selecttime = selecttime
     self.dstisproxy = None
     self.ignorenewnonce = True
     self.noauth = False
     self.auth = dict()
     self.previouspassword = str()
     self.compact = compact
     self.reusenonce = reusenonce
     self.staticnonce = None
     self.staticcid = None
     if extension is not None:
         self.extension = extension
     else:
         self.extension = username
     self.bindingip = bindingip
     self.localport = localport
     self.requesturi = requesturi
     self.noncecount = 1
     self.originallocalport = localport
     if self.sessionpath is not None:
         self.packetcount = packetcounter(50)
     if externalip is None:
         self.log.debug("external ip was not set")
         if (self.bindingip != '0.0.0.0') and (len(self.bindingip) > 0):
             self.log.debug(
                 "but bindingip was set! we'll set it to the binding ip")
             self.externalip = self.bindingip
         else:
             try:
                 self.log.info(
                     "trying to get self ip .. might take a while")
                 self.externalip = socket.gethostbyname(
                     socket.gethostname())
             except socket.error:
                 self.externalip = '127.0.0.1'
     else:
         self.log.debug("external ip was set")
         self.externalip = externalip