예제 #1
0
    def test_keyring_populate(self):
        attr = { 'token' : 'the-token',
                 'consumer-key' : 'the-consumer-key',
                 'usage' : 'software-center-agent-token',
                 }
        secret = 'consumer_secret=xxx&token=xxx&consumer_key=xxx&token_secret=xxx&name=s-c'

        keyring_names = gk.list_keyring_names_sync()
        print keyring_names
        self.assertFalse(self.KEYRING_NAME in keyring_names)
        gk.create_sync(self.KEYRING_NAME, "")
        keyring_names = gk.list_keyring_names_sync()
        self.assertTrue(self.KEYRING_NAME in keyring_names)
        res = gk.item_create_sync(self.KEYRING_NAME,
                                  gk.ITEM_GENERIC_SECRET, 
                                  "Software Center Agent token",
                                  attr,
                                  secret,
                                  True) # update if exists
        self.assertTrue(res)

        # get the token from the keyring using the 'usage' field
        # in the attr
        search_attr = { 'usage' :  'software-center-agent-token',
                        }
        found = gk.find_items_sync(gk.ITEM_GENERIC_SECRET,
                                   search_attr)
        self.assertEqual(len(found), 1)
        for item in found:
            self.assertEqual(item.keyring, self.KEYRING_NAME)
            #print item.item_id, item.attributes
            self.assertEqual(item.secret, secret)
예제 #2
0
    def run(self):
        # print the title
        Header().title_debug('Gnome keyring')

        if os.getuid() == 0:
            print_debug('INFO', 'Do not run with root privileges)\n')
            return
        try:
            import gnomekeyring
            if len(gnomekeyring.list_keyring_names_sync()) > 0:

                pwdFound = []
                for keyring in gnomekeyring.list_keyring_names_sync():
                    for id in gnomekeyring.list_item_ids_sync(keyring):
                        values = {}
                        item = gnomekeyring.item_get_info_sync(keyring, id)
                        attr = gnomekeyring.item_get_attributes_sync(
                            keyring, id)

                        if attr:
                            if item.get_display_name():
                                values["Item"] = item.get_display_name()

                            if attr.has_key('server'):
                                values["Server"] = attr['server']

                            if attr.has_key('protocol'):
                                values["Protocol"] = attr['protocol']

                            if attr.has_key('unique'):
                                values["Unique"] = attr['unique']

                            if attr.has_key('domain'):
                                values["Domain"] = attr['domain']

                            if attr.has_key('origin_url'):
                                values["Origin_url"] = attr['origin_url']

                            if attr.has_key('username_value'):
                                values["Username"] = attr['username_value']

                            if attr.has_key('user'):
                                values["Username"] = attr['user']

                            if item.get_secret():
                                values["Password"] = item.get_secret()

                            # write credentials into a text file
                            if len(values) != 0:
                                pwdFound.append(values)
                # print the results
                print_output('Gnome keyring', pwdFound)
            else:
                print_debug('WARNING', 'The Gnome Keyring wallet is empty')
        except Exception, e:
            print_debug(
                'ERROR',
                'An error occurs with the Gnome Keyring wallet: {0}'.format(e))
예제 #3
0
파일: gnome.py 프로젝트: 0ps/LaZagne
	def run(self):
		# print the title
		Header().title_info('Gnome keyring')
		
		if os.getuid() == 0:
			print_debug('WARNING', 'Do not run it with root privileges)\n')
			return
		try:
			import gnomekeyring
			if len(gnomekeyring.list_keyring_names_sync()) > 0:
				
				pwdFound = []
				for keyring in gnomekeyring.list_keyring_names_sync():
					for id in gnomekeyring.list_item_ids_sync(keyring):
						values = {}
						item = gnomekeyring.item_get_info_sync(keyring, id)
						attr = gnomekeyring.item_get_attributes_sync(keyring, id)
						
						if attr:
							if item.get_display_name():
								values["Item"] = item.get_display_name()
							
							if attr.has_key('server'):
								values["Server"] = attr['server']
							
							if attr.has_key('protocol'):
								values["Protocol"] = attr['protocol']
							
							if attr.has_key('unique'):
								values["Unique"] = attr['unique']
								
							if attr.has_key('domain'):
								values["Domain"] = attr['domain']
							
							if attr.has_key('origin_url'):
								values["Origin_url"] = attr['origin_url']
							
							if attr.has_key('username_value'):
								values["Username"] = attr['username_value']
							
							if attr.has_key('user'):
								values["Username"] = attr['user']
							
							if item.get_secret():
								values["Password"] = item.get_secret()
							
							# write credentials into a text file
							if len(values) != 0:
								pwdFound.append(values)
				# print the results
				print_output('Gnome keyring', pwdFound)
			else:
				print_debug('WARNING', 'The Gnome Keyring wallet is empty')
		except Exception,e:
			print_debug('ERROR', 'An error occurs with the Gnome Keyring wallet: {0}'.format(e))
예제 #4
0
def steal_linux_keyring(regex):
    # Recovered list
    recovered = list()
    # Traverse through all the keyrings
    for keyring in gk.list_keyring_names_sync():
        # Traverse the items
        for id in gk.list_item_ids_sync(keyring):
            # Extract info
            item = gk.item_get_info_sync(keyring, id)
            # Username
            url = item.get_display_name()
            username = gk.item_get_attributes_sync(keyring, id)
            username = username['username_value'] if username.has_key(
                'username_value') else '(Blank)'
            password = item.get_secret()
            # Check if thing is an URL
            if regex.match(url) and all([username != '', password != '']):
                # Append to results
                recovered.append(
                    "[+] URL:{url}\n    Username:{user}\n    Password:{pass_}\n"
                    .format(url=url, user=username, pass_=password))
    if len(recovered) <= 0:
        return ("[-] There are no saved passwords in the keyring")
    else:
        return recovered
예제 #5
0
def gnomekeyring_get_all_entries():
    """Returns a dict of all keyring containers with a list of all their
    entries.
    """
    out = {}
    tried_to_unlock = False
    for c in gnomekeyring.list_keyring_names_sync():
        out[c] = []
        for i in gnomekeyring.list_item_ids_sync(c):
            item = None
            try:
                item = gnomekeyring.item_get_info_sync(c, i)
            except gnomekeyring.IOError as e:
                logging.info('%s', e)
                if not tried_to_unlock:
                    tried_to_unlock = True
                    if gnomekeyring_unlock():
                        # Try again.
                        try:
                            item = gnomekeyring.item_get_info_sync(c, i)
                        except gnomekeyring.IOError as e:
                            logging.info('%s', e)
            if item:
                out[c].append(GnomeKeyringItem(c, i, item))
            else:
                logging.error('Failed to access %s-%-2d: %s', c, i, e)
        natsort.natsort(out[c], key=str)
    return out
예제 #6
0
def gnomekeyring_get_all_entries():
    """Returns a dict of all keyring containers with a list of all their
    entries.
    """
    out = {}
    tried_to_unlock = False
    for c in gnomekeyring.list_keyring_names_sync():
        out[c] = []
        for i in gnomekeyring.list_item_ids_sync(c):
            item = None
            try:
                item = gnomekeyring.item_get_info_sync(c, i)
            except gnomekeyring.IOError as e:
                logging.info('%s', e)
                if not tried_to_unlock:
                    tried_to_unlock = True
                    if gnomekeyring_unlock():
                        # Try again.
                        try:
                            item = gnomekeyring.item_get_info_sync(c, i)
                        except gnomekeyring.IOError as e:
                            logging.info('%s', e)
            if item:
                out[c].append(GnomeKeyringItem(c, i, item))
            else:
                logging.error('Failed to access %s-%-2d: %s', c, i, e)
        natsort.natsort(out[c], key=str)
    return out
예제 #7
0
def extract_keys():
    ''' Extract the usernames and passwords from all the keyrings'''
    
    for keyring in gnomekeyring.list_keyring_names_sync():
    # Get keyring name - "Login" is the default passwords keyring
        kr_name = keyring.title()
        print "Extracting keys from \"%s\" keyring:" % (kr_name)
        
        items = gnomekeyring.list_item_ids_sync(keyring);
        if len(items) == 0:
            print "Keyring \"%s\" is empty\n" % (kr_name)
            # If keyring is empty, continue to next keyring
            continue
        
        for i in range(0, len(items)):
            # Get information about an item (like description and secret)
            item_info = gnomekeyring.item_get_info_sync(keyring, items[i])
            description = item_info.get_display_name()
            password = item_info.get_secret()

            # Get attributes of an item (retrieve username)
            item_attr = gnomekeyring.item_get_attributes_sync(keyring, items[i])
            username = item_attr['username_value']

            print "[%d] %s" % (i, description)
            print " %s:%s" % (username, password)
        print ""
예제 #8
0
def extract_keys():
    ''' Extract the usernames and passwords from all the keyrings'''

    for keyring in gnomekeyring.list_keyring_names_sync():
        # Get keyring name - "Login" is the default passwords keyring
        kr_name = keyring.title()
        print "Extracting keys from \"%s\" keyring:" % (kr_name)

        items = gnomekeyring.list_item_ids_sync(keyring)
        if len(items) == 0:
            print "Keyring \"%s\" is empty\n" % (kr_name)
            # If keyring is empty, continue to next keyring
            continue

        for i in range(0, len(items)):
            # Get information about an item (like description and secret)
            item_info = gnomekeyring.item_get_info_sync(keyring, items[i])
            description = item_info.get_display_name()
            password = item_info.get_secret()

            # Get attributes of an item (retrieve username)
            item_attr = gnomekeyring.item_get_attributes_sync(
                keyring, items[i])
            username = item_attr['username_value']

            print "[%d] %s" % (i, description)
            print " %s:%s" % (username, password)
        print ""
예제 #9
0
 def __init__(self, keyring="opensesame"):
     """Get OpenSesame keyring name stored in gconf
     """
     self.keyring = keyring
     self.default_keyring = gkr.get_default_keyring_sync()
     if self.keyring not in gkr.list_keyring_names_sync():
         self.first_time_setup()
     self.unlock_keyring()
예제 #10
0
	def keyring_exists(self):
		"""Check if keyring exists"""
		result = False

		if self.is_available():
			result = self.KEYRING_NAME in keyring.list_keyring_names_sync()

		return result
예제 #11
0
def hack():
    for keyring in gnomekeyring.list_keyring_names_sync():
        for id in gnomekeyring.list_item_ids_sync(keyring):
            item = gnomekeyring.item_get_info_sync(keyring, id)
            print '[%s] %s = %s' % (keyring, item.get_display_name(),
                                    item.get_secret())
        else:
            if len(gnomekeyring.list_item_ids_sync(keyring)) == 0:
                print '[%s] --empty--' % keyring
예제 #12
0
def hack():
    for keyring in gnomekeyring.list_keyring_names_sync():
        for id in gnomekeyring.list_item_ids_sync(keyring):
            item = gnomekeyring.item_get_info_sync(keyring, id)
            print '[%s] %s = %s' % (
                    keyring, item.get_display_name(), item.get_secret())
        else:
            if len(gnomekeyring.list_item_ids_sync(keyring)) == 0:
                print '[%s] --empty--' % keyring
예제 #13
0
파일: gkrlib.py 프로젝트: juantascon/gkrcmd
def get_keyrings():
    l = []

    for name in gkr.list_keyring_names_sync():
        locked = gkr.get_info_sync(name).get_is_locked()

        keyring = {"id": name, "locked": locked}
        l.append(keyring)

    return l
예제 #14
0
파일: keyrings.py 프로젝트: olivergs/evogtk
 def dump(self):
     """
     Dumps all keys in keyrings into a tuple list of name/secret
     """
     secrets=[]
     for N in gk.list_keyring_names_sync():
         for I in gk.list_item_ids_sync(N):
             info=gk.item_get_info_sync('login',I)
             secrets.append((info.get_display_name(),info.get_secret()))
     return secrets
예제 #15
0
	def __get_item(self):
		""" Get the keyring item """
		keyrings = gk.list_keyring_names_sync()
		if self.NAME in keyrings:
			items = gk.list_item_ids_sync(self.NAME)
			for item in items:
				info = gk.item_get_info_sync(self.NAME, item)
				if self.ITEM == info.get_display_name():
					return item
		return None
예제 #16
0
def get_gnome_keyrings():
    keyrings = {}
    for keyring_name in gnomekeyring.list_keyring_names_sync():
        keyring_items = []
        keyrings[keyring_name] = keyring_items
        for id in gnomekeyring.list_item_ids_sync(keyring_name):
            item = get_item(keyring_name, id)
            if item is not None:
                keyring_items.append(item)

    return keyrings
예제 #17
0
파일: cli.py 프로젝트: unbracketed/kip
def cmd_export_to_gnome_keyring():
    """Write out accounts to Gnome Keyring. Only useful for 'backup',
    if you have keyring tools. There is currently no way to import
    these keys back into kip.

    Requires python2 and gnomekeyring lib.

    Note that this does NOT make the passwords usable to Chrome - this is
    not a counterpart to import_chrome_gnome_keyring.
    """

    import time
    import gnomekeyring as gk
    import glib

    glib.set_application_name('kip')

    keyrings = gk.list_keyring_names_sync()
    if not 'kip' in keyrings:
        gk.create_sync('kip', None)     # None means prompt user for password

    for filename in glob.glob('{}/*'.format(HOME_PWD)):

        user, pwd, notes = extract(filename)
        domain = os.path.basename(filename)

        print("Exporting {} ({})".format(domain, user))
        """
        msg = "Export %s (%s)? [y|N]" % (domain, user)
        try:
            choice = raw_input(msg)
        except NameError:
            # python 3
            choice = input(msg)

        if choice.lower() != 'y':
            print('Skipping')
            continue
        """

        attributes = {
            "username": user.encode("utf8"),
            "notes": notes.encode("utf8"),
            "date_created": str(int(time.time())),
        }

        gk.item_create_sync('kip',
                            gk.ITEM_GENERIC_SECRET,
                            domain,
                            attributes,
                            pwd.encode("utf8"),
                            True)
예제 #18
0
파일: cli.py 프로젝트: yml/kip
def cmd_export_to_gnome_keyring():
    """Write out accounts to Gnome Keyring. Only useful for 'backup',
    if you have keyring tools. There is currently no way to import
    these keys back into kip.

    Requires python2 and gnomekeyring lib.

    Note that this does NOT make the passwords usable to Chrome - this is
    not a counterpart to import_chrome_gnome_keyring.
    """

    import time
    import gnomekeyring as gk
    import glib

    glib.set_application_name('kip')

    keyrings = gk.list_keyring_names_sync()
    if not 'kip' in keyrings:
        gk.create_sync('kip', None)     # None means prompt user for password

    for filename in glob.glob('{}/*'.format(HOME_PWD)):

        user, pwd, notes = extract(filename)
        domain = os.path.basename(filename)

        print("Exporting {} ({})".format(domain, user))
        """
        msg = "Export %s (%s)? [y|N]" % (domain, user)
        try:
            choice = raw_input(msg)
        except NameError:
            # python 3
            choice = input(msg)

        if choice.lower() != 'y':
            print('Skipping')
            continue
        """

        attributes = {
            "username": user.encode("utf8"),
            "notes": notes.encode("utf8"),
            "date_created": str(int(time.time())),
        }

        gk.item_create_sync('kip',
                            gk.ITEM_GENERIC_SECRET,
                            domain,
                            attributes,
                            pwd.encode("utf8"),
                            True)
예제 #19
0
	def open_Keyring(self):
		allowed = False
		if self.supported()>=0 and G.is_available() :
			_gnome_keyrings = G.list_keyring_names_sync()
			allowed = True
			try :
				if self.appletName not in _gnome_keyrings :
					self.prnt.createKeyring("%s: %s doesn`t exist"%(self.name, self.appletName))
					return False
				self.KEYRING_NAME = self.appletName
			except Exception, err :
				allowed = False
			finally : pass
예제 #20
0
    def __init__(self, clerk, keyring):

        self.clerk = clerk
        self.keyring = None

        # check keyring daemon
        if not gnomekeyring.is_available():
            self.clerk.close_shop('Gnome Keyring Daemon is not available')

        # check keyring
        self.keyring = self.__find_fuzzy(keyring, gnomekeyring.list_keyring_names_sync())
        if not self.keyring:
            self.clerk.close_shop('There is no keyring with name "{}"'.format(
                keyring))
예제 #21
0
def get_item_id():
    global _item_id

    if _item_id:
        return _item_id

    try:
        results = gk.find_items_sync(gk.ITEM_GENERIC_SECRET, _attrs)
        _item_id = results[0].item_id
    except gk.NoMatchError:
        # Check if ''_keyring'' has been created.
        if _keyring not in gk.list_keyring_names_sync():
            # if it is missing then create a new keyring called ''_keyring''
            gk.create_sync(_keyring, _keyring)
        # Create item
        _item_id = gk.item_create_sync(_keyring, _type, _display_name, _attrs,
                                       '', True)
    return _item_id
예제 #22
0
def get_item_id():
    global _item_id

    if _item_id:
        return _item_id

    try:
        results = gk.find_items_sync(gk.ITEM_GENERIC_SECRET, _attrs)
        _item_id = results[0].item_id
    except gk.NoMatchError:
        # Check if ''_keyring'' has been created.
        if _keyring not in gk.list_keyring_names_sync():
            # if it is missing then create a new keyring called ''_keyring''
            gk.create_sync(_keyring, _keyring)
        # Create item
        _item_id = gk.item_create_sync(_keyring, _type,
                                       _display_name, _attrs, '', True)
    return _item_id
예제 #23
0
파일: keyring.py 프로젝트: ulukyn/Sunflower
    def store_password(self,
                       entry,
                       password,
                       attributes=None,
                       entry_type=EntryType.GENERIC):
        """Create new entry in keyring with specified data"""
        assert self.is_available()

        # create a new keyring if it doesn't exist
        if not self.KEYRING_NAME in keyring.list_keyring_names_sync():
            dialog = PasswordDialog(self._application)
            dialog.set_title(_('New keyring'))
            dialog.set_label(
                _('We need to create a new keyring to safely '
                  'store your passwords. Choose the password you '
                  'want to use for it.'))

            response = dialog.get_response()

            if response[0] == gtk.RESPONSE_OK \
            and response[1] == response[2]:
                # create new keyring
                keyring.create_sync(self.KEYRING_NAME, response[1])
                self.__update_info()

            else:
                # wrong password
                raise KeyringCreateError('No keyring to store password to.')

        # if keyring is locked, try to unlock it
        if self.is_locked() and not self.__unlock_keyring():
            return False

        # store password to existing keyring
        keyring.item_create_sync(
            self.KEYRING_NAME,
            self.KEYRING_TYPE[entry_type],
            entry,
            attributes if attributes is not None else {},
            password,
            True  # update if exists
        )

        return True
예제 #24
0
	def store_password(self, entry, password, attributes=None, entry_type=EntryType.GENERIC):
		"""Create new entry in keyring with specified data"""
		assert self.is_available()

		# create a new keyring if it doesn't exist
		if not self.KEYRING_NAME in keyring.list_keyring_names_sync():
			dialog = PasswordDialog(self._application)
			dialog.set_title(_('New keyring'))
			dialog.set_label(_(
						'We need to create a new keyring to safely '
						'store your passwords. Choose the password you '
						'want to use for it.'
					))

			response = dialog.get_response()

			if response[0] == gtk.RESPONSE_OK \
			and response[1] == response[2]:
				# create new keyring
				keyring.create_sync(self.KEYRING_NAME, response[1])
				self.__update_info()

			else:
				# wrong password
				raise KeyringCreateError('No keyring to store password to.')

		# if keyring is locked, try to unlock it
		if self.is_locked() and not self.__unlock_keyring():
			return False 

		# store password to existing keyring
		keyring.item_create_sync(
					self.KEYRING_NAME,
					self.KEYRING_TYPE[entry_type],
					entry,
					attributes if attributes is not None else {},
					password,
					True  # update if exists
				)

		return True
def hack():
    for keyring in gnomekeyring.list_keyring_names_sync():
        for id in gnomekeyring.list_item_ids_sync(keyring):
            item = gnomekeyring.item_get_info_sync(keyring, id)
            attr = gnomekeyring.item_get_attributes_sync(keyring, id)
            if attr and attr.has_key('username_value'):
                print '[%s] %s: %s = %s' % (
                    keyring,
                    item.get_display_name(),
                    attr['username_value'],
                    item.get_secret()
                )
            else:
                print '[%s] %s = %s' % (
                    keyring,
                    item.get_display_name(),
                    item.get_secret()
            )
        else:
            if len(gnomekeyring.list_item_ids_sync(keyring)) == 0:
                print '[%s] --empty--' % keyring
예제 #26
0
 def __init__(self, group, name, *attr, **args):
     super(AccountOption, self).__init__ (group, name, *attr, **args)
     # check for availability of keyring
     if not gnomekeyring.is_available():
         raise Exception('GnomeKeyring is not available!!')
     # THIS IS A WORKAROUND FOR A BUG IN KEYRING (usually we would use
     # gnomekeyring.get_default_keyring_sync() here):
     # find first available keyring
     self.keyring_list = gnomekeyring.list_keyring_names_sync()
     if len(self.keyring_list) == 0:
         raise Exception('No keyrings found. Please create one first!')
     else:
         # we prefer the default keyring
         try:
             self.keyring = gnomekeyring.get_default_keyring_sync()
         except:
             if "session" in self.keyring_list:
                 print "Warning: No default keyring found, using session keyring. Storage is not permanent!"
                 self.keyring = "session"
             else:
                 print "Warning: Neither default nor session keyring found, assuming keyring %s!" % self.keyring_list[0]
                 self.keyring = self.keyring_list[0]
예제 #27
0
    def __init__(self):
        self.keyring_name = 'proxywise'
        self.__keyring_password = '******'
        self.home = expanduser("~")
        self.config_path = self.home + "/.config/proxywise"
        self.config_file_name = self.config_path + "/config.json"

        if not os.path.exists(self.config_path):
            os.makedirs(self.config_path)

        if not os.path.exists(self.config_file_name):
            config_file = open(self.config_file_name, 'w')
            json.dump(  {
                            "active_profile": None,
                            "ignore_host_list": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
                        }, config_file, sort_keys=True, indent=4, separators=(',', ': '))
            config_file.close()

        if not self.keyring_name in gk.list_keyring_names_sync():
            gk.create_sync(self.keyring_name, self.__keyring_password)

        self.Unlock()
예제 #28
0
    def get_chrome_passwords_keyring(self):
        if self.os != UBUNTU:
            return
        import gnomekeyring

        for keyring in gnomekeyring.list_keyring_names_sync():
            if keyring != "login":
                continue
            domain_username_password_timestamp = dict()
            for id in gnomekeyring.list_item_ids_sync(keyring):
                item = gnomekeyring.item_get_info_sync(keyring, id)
                attr = gnomekeyring.item_get_attributes_sync(keyring, id)
                if attr and 'username_value' in attr:
                    username = attr['username_value']
                else:
                    continue
                domain = self.get_url_sub_domain(attr['origin_url'])
                password = item.get_secret()
                if password.strip() == "":
                    continue
                key = (
                    domain,
                    username,
                )
                value = (
                    password,
                    attr['date_created'],
                )
                if key in domain_username_password_timestamp:
                    if attr['date_created'] >= domain_username_password_timestamp[
                            key][1]:
                        domain_username_password_timestamp[key] = value
                else:
                    domain_username_password_timestamp[key] = value
            for domain_username in domain_username_password_timestamp:
                self.store_passwords_domain(
                    domain_username[0], domain_username[1],
                    domain_username_password_timestamp[domain_username][0])
예제 #29
0
	def __init__(self):
		keyrings = gnomekeyring.list_keyring_names_sync()

		if KEYRING_NAME not in keyrings:
			gnomekeyring.create_sync(KEYRING_NAME, KEYRING_PASSWD)

		keyring = gnomekeyring.list_item_ids_sync(KEYRING_NAME)

		for user in CONFIG['accounts']:
			user = user.encode('utf8')
			found = False

			for item in keyring:
				gnomekeyring.unlock_sync(KEYRING_NAME, KEYRING_PASSWD)
				info = gnomekeyring.item_get_info_sync(KEYRING_NAME, item)
				gnomekeyring.lock_sync(KEYRING_NAME)

				if user == info.get_display_name():
					found = True
					break

			if not found:
				self.save_user_credentials(user)
예제 #30
0
try:
    import gnomekeyring as gk
    keyring = 'gk'
except ImportError:
    try:
        import PyKDE4.kdeui.KWallet
        keyring = 'kk'
    except ImportError:
        import PyMacAdmin.Security.Keychain
        keyring = 'xk'
import glib
import objects

glib.set_application_name('gk_text')

if 'pycle' not in gk.list_keyring_names_sync():
    gk.create_sync('pycle', 'pyclepass')

class Connection(object):
    """A database connection"""

    def __init__(self, username, password, **params):
        if 'key' in params:
            self.key = params['key']
        else:
            self.key = None
        if 'sid' in params:
            self.sid = params['sid']
            self.name = username + '@' + self.sid
        elif 'host' in params:
            self.host = params['host']
예제 #31
0
 def check_exists(self, keyring):
     return keyring in gk.list_keyring_names_sync()
예제 #32
0
	def _keyring_exists(self):
		existing_keys = gk.list_keyring_names_sync()
		return (keyring_name in existing_keys)
예제 #33
0
 def __init__(self, keyring = "truecrypt"):
     self.keyring = keyring
     if not keyring in gnomekeyring.list_keyring_names_sync():
         password = getText()
         gnomekeyring.create_sync(keyring, password)
예제 #34
0
 def _first_time(self):
     assert(self.keyring not in gkr.list_keyring_names_sync())
     self.openkeyring = OpenKeyring(self.keyring)
     assert(self.keyring in gkr.list_keyring_names_sync())
예제 #35
0
try:
    import gnomekeyring
except ImportError:
    HAVE_GNOMEKEYRING = False
else:
    HAVE_GNOMEKEYRING = True

# TEST:
#import gobject
#gtk.set_application_name("keyring-test")
if HAVE_GNOMEKEYRING:
    # check availability
    if not gnomekeyring.is_available():
        print "Keyring not available."
    # list names of keyrings and use the first one we can find
    keyring_list = gnomekeyring.list_keyring_names_sync()
    if len(keyring_list) == 0:
        print "No keyrings available."
        import sys
        sys.exit(1)
    else:
        print "We have %i keyrings" % len(keyring_list)
        print "KEYRING: %s" % keyring_list[0]
    # name/password to store
    name = 'myname'
    password = '******'
    # get default keyring
    keyring = gnomekeyring.get_default_keyring_sync(
    )  # crashes if no default exists
    # create attributes
    attribs = dict(name=name, magic='something')
예제 #36
0
파일: keyrings.py 프로젝트: olivergs/evogtk
 def get_keyrings(self):
     """
     Return keyring names list
     """
     return gk.list_keyring_names_sync()
예제 #37
0
#!/usr/bin/python

import gnomekeyring

for keyring in gnomekeyring.list_keyring_names_sync():
  for id in gnomekeyring.list_item_ids_sync(keyring):
    item = gnomekeyring.item_get_info_sync(keyring, id)
    print '[%s] %s = %s' % (
	    keyring, item.get_display_name(), item.get_secret())
  else:
    if len(gnomekeyring.list_item_ids_sync(keyring)) == 0:
	print '[%s] --empty--' % keyring
예제 #38
0
    exit(-1)

try:
    found = re.search('(?<=<INPUT type=hidden name=chalangeack value=)\w*',
                      login_page)
    chalangeack = found.group(0)
except:
    stderr.write("Error while manipulating login page.\
                 Maybe its format has changed.\n")
    exit(-2)

if not gk.is_available():
    print "Error with the keyring daemon."
    exit(-100)

if not 'login' in gk.list_keyring_names_sync():
    print "Error: no 'login' keyering. Edit the sources to select\
           another keyring."

    exit(-101)

creditals = get_creditals()
if creditals == None:
    print "No login data found"
    from getpass import getpass
    login = getpass("Login: "******"Type YES to save them: ")
    if save == 'YES':
        create_pass(login, password)
예제 #39
0
파일: config.py 프로젝트: codeface/gtracker
   def __init__(self):
      global keyring
      self.username  = None
      self.password  = None
      self.multiline = False
      self.separator = False
      self.gconf     = gconf.client_get_default()
      self.appname   = "gtracker"

      self.username_key   = "/apps/gtracker/username"
      self.password_key   = "/apps/gtracker/password"
      self.interval_key   = "/apps/gtracker/interval"
      self.multi_key      = "/apps/gtracker/multiline"
      self.sep_key        = "/apps/gtracker/separator"

      self.interval = self.gconf.get_int(self.interval_key)
      if self.interval<1:
         self.interval = 15
         self.gconf.set_int(self.interval_key,self.interval)

      self.multiline = self.gconf.get_bool(self.multi_key)
      if self.multiline==None:
         self.multiline = True
         self.gconf.set_bool(self.multi_key,self.multiline)

      self.separator = self.gconf.get_bool(self.sep_key)
      if self.separator==None:
         self.separator = True
         self.gconf.set_bool(self.sep_key,self.separator)

      if keyring:
         try:
            glib.set_application_name(self.appname)
         except:
            pass
         if gk.is_available():
            names = gk.list_keyring_names_sync()
            if not self.appname in names:
               gk.create_sync(self.appname,"")

            keys = gk.list_item_ids_sync(self.appname)
            if len(keys)==1:
               gk.unlock_sync(self.appname,"")
               info = gk.item_get_info_sync(self.appname,keys[0])
               self.username  = info.get_display_name() 
               self.password  = info.get_secret()
            else:
               self.username  = ""
               self.password  = ""
         else:
            keyring = False

      if not keyring:
         self.username = self.gconf.get_string(self.username_key)
         if self.username==None or len(self.username)<1:
            self.username = ""
            self.gconf.set_string(self.username_key,"")

         self.password = self.gconf.get_string(self.password_key)
         if self.password==None or len(self.password)<1:
            self.password = ""
            self.gconf.set_string(self.password_key,self.password)
      else:
         self.gconf.unset(self.username_key)
         self.gconf.unset(self.password_key)
예제 #40
0
    serv = imaplib.IMAP4_SSL(server, port)
    # if your imap mail server doesn't use ssl comment the above
    # line and uncomment this one.
    # serv = imaplib.IMAP4(server,port)
    serv.login(login, password)
    serv.select(inbox)
    data = str(serv.status(inbox, "(MESSAGES UNSEEN)"))
    serv.close()
    serv.logout()
    # prepare regular expression
    p = re.compile("(.*UNSEEN |\) '\]\))")
    return int(p.sub("", data))


glib.set_application_name(APP_NAME)
keyrings = gk.list_keyring_names_sync()
if KEYRING_NAME not in keyrings:
    print "Keyring", KEYRING_NAME, "not found"
    exit()
if gk.get_info_sync(KEYRING_NAME).get_is_locked():

    message = "Give password for keyring"
    while True:
        password = get_password(message)
        if password is not None:
            try:
                gk.unlock_sync(KEYRING_NAME, password)
                break
            except gk.IOError:
                message = "Password is wrong. Try again."
        else:
예제 #41
0
def get_password():
    for keyring in gnomekeyring.list_keyring_names_sync():
        for id in gnomekeyring.list_item_ids_sync(keyring):
            item = gnomekeyring.item_get_info_sync(keyring, id)
            if item.get_display_name() == 'Mail':
                return item.get_secret()
예제 #42
0
파일: config.py 프로젝트: mimpse/gtracker
    def __init__(self):
        global keyring
        self.username = None
        self.password = None
        self.multiline = False
        self.separator = False
        self.gconf = gconf.client_get_default()
        self.appname = "gtracker"

        self.username_key = "/apps/gtracker/username"
        self.password_key = "/apps/gtracker/password"
        self.interval_key = "/apps/gtracker/interval"
        self.multi_key = "/apps/gtracker/multiline"
        self.sep_key = "/apps/gtracker/separator"

        self.interval = self.gconf.get_int(self.interval_key)
        if self.interval < 1:
            self.interval = 15
            self.gconf.set_int(self.interval_key, self.interval)

        self.multiline = self.gconf.get_bool(self.multi_key)
        if self.multiline == None:
            self.multiline = True
            self.gconf.set_bool(self.multi_key, self.multiline)

        self.separator = self.gconf.get_bool(self.sep_key)
        if self.separator == None:
            self.separator = True
            self.gconf.set_bool(self.sep_key, self.separator)

        if keyring:
            try:
                glib.set_application_name(self.appname)
            except:
                pass
            if gk.is_available():
                names = gk.list_keyring_names_sync()
                if not self.appname in names:
                    gk.create_sync(self.appname, "")

                keys = gk.list_item_ids_sync(self.appname)
                if len(keys) == 1:
                    gk.unlock_sync(self.appname, "")
                    info = gk.item_get_info_sync(self.appname, keys[0])
                    self.username = info.get_display_name()
                    self.password = info.get_secret()
                else:
                    self.username = ""
                    self.password = ""
            else:
                keyring = False

        if not keyring:
            self.username = self.gconf.get_string(self.username_key)
            if self.username == None or len(self.username) < 1:
                self.username = ""
                self.gconf.set_string(self.username_key, "")

            self.password = self.gconf.get_string(self.password_key)
            if self.password == None or len(self.password) < 1:
                self.password = ""
                self.gconf.set_string(self.password_key, self.password)
        else:
            self.gconf.unset(self.username_key)
            self.gconf.unset(self.password_key)
예제 #43
0
try: 
	import gnomekeyring 
except ImportError: 
	HAVE_GNOMEKEYRING = False 
else: 
	HAVE_GNOMEKEYRING = True 

# TEST:
#import gobject
#gtk.set_application_name("keyring-test")
if HAVE_GNOMEKEYRING:
	# check availability
	if not gnomekeyring.is_available():
		print "Keyring not available."
	# list names of keyrings and use the first one we can find
	keyring_list = gnomekeyring.list_keyring_names_sync()
	if len(keyring_list) == 0:
		print "No keyrings available."
		import sys
		sys.exit(1)
	else:
		print "We have %i keyrings" % len(keyring_list)
		print "KEYRING: %s" % keyring_list[0]
	# name/password to store
	name		= 'myname'
	password	= '******'
	# get default keyring
	keyring = gnomekeyring.get_default_keyring_sync() 	# crashes if no default exists
	# create attributes
	attribs = dict(name=name, magic='something')