Ejemplo n.º 1
0
 def __init__(self, app):
     '''The Base User is initiated with the app objects, the socket setup and some general options.'''
     self.app = app
     self.state = self.reg_state = None
     self.register = None
     self.reg_result = self.reg_reason = None
     # socket setup
     if rfc2396_IPv6.isIPv6(app.options.to.uri.host):  # Unstable
         print bcolors.FAIL + "ALERT! You are using IPv6 unstable/not tested feature." + bcolors.ENDC
         if app.options.int_ip == '0.0.0.0': app.options.int_ip = '::1'
         sock = socket.socket(
             socket.AF_INET6, socket.SOCK_DGRAM
             if app.options.transport == self.UDP else socket.SOCK_STREAM)
     else:
         sock = socket.socket(type=socket.SOCK_DGRAM if app.options.
                              transport == self.UDP else socket.SOCK_STREAM)
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     sock.bind(
         (app.options.int_ip,
          (app.options.port +
           1) if app.options.transport == self.TLS else app.options.port))
     self.sock = sock
     # socket options
     self.max_size = app.options.max_size
     self.interval = app.options.interval
     # REGISTER options
     self.register_interval = app.options.register_interval
     self.reg_refresh = app.options.reg_refresh
     # SIP options
     self.username = app.options.username
     self.reg_username = app.options.reg_username
     self.password = app.options.password
     self.registrarAddr = rfc2396_IPv6.Address(
         str('<sip:' + self.reg_username + '@' +
             (app.options.registrar_ip if rfc2396_IPv6.
              isIPv4(app.options.registrar_ip) else
              ('[' + app.options.registrar_ip + ']')) + '>'))
     # Generators
     self._listenerGen = self._registerGen = None
     # create a SIP stack instance
     self.transport = rfc3261_IPv6.TransportInfo(
         self.sock, secure=(app.options.transport == self.TLS))
     self._stack = rfc3261_IPv6.Stack(self, self.transport, fix_nat=None)
     # create a SIP stack instance
     self.localParty = app.options.fromAddr.dup()
     self.remoteParty = app.options.to.dup()
     self.remoteTarget = app.options.to.dup()
     # create a SIP user agent instance
     self._ua = None
Ejemplo n.º 2
0
	def __init__(self, app):
		'''The Base User is initiated with the app objects, the socket setup and some general options.'''
		self.app = app
		self.state = self.reg_state = None
		self.register = None
		self.reg_result = self.reg_reason = None
		# socket setup
		if rfc2396_IPv6.isIPv6(app.options.to.uri.host): # Unstable
			print bcolors.FAIL+"ALERT! You are using IPv6 unstable/not tested feature."+bcolors.ENDC
			if app.options.int_ip == '0.0.0.0': app.options.int_ip= '::1'
			sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM if app.options.transport == self.UDP else socket.SOCK_STREAM)
		else:
			sock = socket.socket(type=socket.SOCK_DGRAM if app.options.transport == self.UDP else socket.SOCK_STREAM)
		sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
		sock.bind((app.options.int_ip, (app.options.port+1) if app.options.transport == self.TLS else app.options.port))
		self.sock = sock
		# socket options
		self.max_size = app.options.max_size
		self.interval = app.options.interval
		# REGISTER options
		self.register_interval = app.options.register_interval
		self.reg_refresh = app.options.reg_refresh
		# SIP options
		self.username = app.options.username
		self.reg_username = app.options.reg_username
		self.password = app.options.password 
		self.registrarAddr = rfc2396_IPv6.Address(str('<sip:'+self.reg_username+'@'+(app.options.registrar_ip if rfc2396_IPv6.isIPv4(app.options.registrar_ip) else ('['+app.options.registrar_ip+']'))+'>'))
		# Generators
		self._listenerGen = self._registerGen = None
		# create a SIP stack instance
		self.transport = rfc3261_IPv6.TransportInfo(self.sock, secure=(app.options.transport == self.TLS))
		self._stack = rfc3261_IPv6.Stack(self, self.transport, fix_nat=None)
		# create a SIP stack instance
		self.localParty = app.options.fromAddr.dup()
		self.remoteParty = app.options.to.dup()
		self.remoteTarget = app.options.to.dup()
		# create a SIP user agent instance
		self._ua = None
Ejemplo n.º 3
0
		def _send(self, data, addr): # generator version
			if self._snifferGen:
				# Reconfig socket needed because of scapy -------------------
				if rfc2396_IPv6.isIPv6(self.remoteTarget): # Unstable
					if self.app.options.int_ip == '0.0.0.0': self.app.options.int_ip= '::1'
					sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM if self.app.options.transport == self.UDP else socket.SOCK_STREAM)
				else:
					sock = socket.socket(type=socket.SOCK_DGRAM if self.app.options.transport == self.UDP else socket.SOCK_STREAM)
				sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
				sock.bind((self.app.options.int_ip, (self.app.options.port+1) if self.app.options.transport == self.TLS else self.app.options.port))
				self.sock = sock
			#------------------------------------------------------------
			try:
				logger.debug('sending[%d] to %s\n%s'%(len(data), addr, data))
				if self.sock:
					if self.sock.type == socket.SOCK_STREAM:
						try: 
							remote = self.sock.getpeername()
							if remote != addr:
								logger.debug('connected to wrong addr', remote, 'but sending to', addr)
						except socket.error: # not connected, try connecting
							try:
								self.sock.connect(addr)
							except socket.error:
								logger.debug('failed to connect to', addr)
						try:
							yield self.sock.send(data)
						except socket.error:
							logger.debug('socket error in send')
					elif self.sock.type == socket.SOCK_DGRAM:
						try:
							yield self.sock.sendto(data, addr)
						except socket.error:
							logger.debug('socket error in sendto' )
					else:
						logger.debug('invalid socket type', self.sock.type)
			except AttributeError: pass