首页> 中国专利> iOS设备账号密码导入方法及系统

iOS设备账号密码导入方法及系统

摘要

本发明属于iOS设备信息导入技术领域,具体涉及iOS设备账号密码导入方法及系统。其中方法包括解密出保存账号密码的keychain.plist文件;提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后keychain.plist文件中;备份还原添加了新节点项的keychain.plist文件到iOS设备,能将账号密码安全地批量添加到需要导入的设备,无需人们手动添加,从而杜绝因手动添加账号密码所带来的一系列麻烦。

著录项

  • 公开/公告号CN112241524A

    专利类型发明专利

  • 公开/公告日2021-01-19

    原文格式PDF

  • 申请/专利权人 深圳软牛科技有限公司;

    申请/专利号CN201910641023.3

  • 发明设计人 朱志强;李盛;

    申请日2019-07-16

  • 分类号G06F21/45(20130101);

  • 代理机构44653 深圳市特讯知识产权代理事务所(普通合伙);

  • 代理人何明生

  • 地址 518000 广东省深圳市宝安区新安街道海旺社区N26区宝兴路21号万骏经贸大厦916-919

  • 入库时间 2023-06-19 09:35:27

说明书

技术领域

本发明属于iOS设备信息导入技术领域,具体涉及iOS设备账号密码导入方法及系统。

背景技术

每个用户拥有多个网站、App、WiFi、银行卡账号密码,很多情况下只能熟记常用的账号密码,或者好记心不如烂笔头,把它记到纸上,但在使用的过程中带来了诸多不便。

随着iOS系统的升级,也加入密码自动填充功能、自动记住WiFi密码以及银行卡的账号密码填充。使用密码自动填充功能可以在浏览器、App中自动填充对应的账号密码,为用户登录App和浏览器提供了极大的方便;自动记住WiFi密码,可以在你下一次登陆密码时无需输入;银行卡的账号密码填充原理和密码自动填充功能功能类似;但享受这些功能带来便捷的同时也面临一个问题,需要预先添加常用的账号密码。

目前PC设备上有密码管理工具,例如1Password、Chrome浏览器密码管理、DashLane、LastPass等。这些常用的软件可以将用户的账号密码批量导出。但由于iOS系统的封闭性,没有能将导出的账号密码批量导入到密码自动填充功能的接口,只能通过手动一个个进行添加;对于拥有大量账号密码的用户来说,手动添加不仅繁琐、效率低,而且经常会遇到特殊字符,需要重复输入核对甚至带来一些不必要的麻烦,例如账号封锁,需重置密码等。

虽然目前有技术利用iOS系统的漏洞能实现账号密码的批量导入,但是该技术存在以下缺陷:

1、需要越狱,越狱难度大,而且越狱工具对iPhone、iPad设备型号和iOS系统版本都有要求,局限性高;

2、随着iOS系统的升级,漏洞被修复的情况下,这种方法也就同时失效,不能兼容新系统;

3、一旦设备越狱之后,iOS系统不安全,用户不会愿意为了密码批量导入而冒险。

综上所述,本文提出的iOS设备账号密码导入方法能够解决无需越狱实现账号密码批量导入iOS设备,兼容最新iOS系统,支持设备原本的设置。

发明内容

本发明要解决的技术问题在于如何如何在不越狱的情况下将账号密码批量导入到iOS设备,并兼容最新iOS系统,支持设备原本的设置。

为此,根据第一方面,本发明实施例公开了一种iOS设备账号密码导入方法,包括:

解密出保存账号密码的keychain.plist文件;提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后的keychain.plist文件中;备份还原添加了新节点项的keychain.plist文件到iOS设备,完成账号密码的批量添加。

可选地,接入所述iOS设备,检测通讯满足要求后开启备份服务;获取/设置所述iOS设备的备份密码;备份含有所述keychain.plist文件的第一备份,所述第一备份还包含Manifest.plist文件和加密Manifest.db数据库,所述Manifest.plist文件含有加密密钥合集包。

可选地,所述步骤A还包括:解密出所述密钥合集包,所述密钥合集包含有密钥key{key1,key2,…,keyn}以及与所述密钥对应的Class ID{Class1,Class2,…,Classn};结合所述密钥合集包解密出所述Manifest.db数据库,所述包含加密keychain.plist文件的加密属性包;利用所述备份密码和对应算法解密出属性包,再结合所述密钥合集包解密出所述keychain.plist文件。

可选地,创建一个只包含添加了新节点项的keychain.plist文件相关信息的新Manifest.db数据库;配合使用Manifest.plist文件构造出第二备份;指定第二备份还原路径,将第二备份还原到所述iOS设备。

可选地,提取所述Manifest.plist文件中的Class1关联密钥合集包中的key1;通过key1和对应算法解密出加密Manifest.db数据库的第一随机数,在通过第一随机数和对应算法解密出Manifest.db数据库。可选地,提取所述属性包中的Class2关联密钥合集包中的key2;

通过key2和对应算法解密出加密keychain.plist文件的第二随机数,再通过第二随机数和对应算法解密出keychain.plist文件。

可选地,提取所述keychain.plist文件中存有账号密码的所述原节点项,所述原节点项中包括加密第一编码数据及加密信息;利用所述加密信息中的Class 3对应所述密钥合集包中的key3和对应算法解密出第三随机数,通过所述第三随机数和对应算法解密出第一编码数据,所述提取密钥合集包对应ClassID的key为key3。

可选地,编码所述预导入的账号密码数据生成第二编码数据;通过第四随机数和对应算法加密所述第二编码数据,利用所述key3和对应算法加密所述第四随机数,形成新节点项。

可选地,所述预导入的账号密码数据字段有App&Website、Account、Password、Creation date、Modification date。

根据第二方面,本发明实施例提供了一种iOS设备账号密码导入系统,包括:

解密模块,解密出保存账号密码的keychain.plist文件;

添加模块,提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后的keychain.plist文件中;

备份还原模块,备份还原添加了新节点项的keychain.plist文件到iOS设备,完成账号密码的批量添加。

本发明的有益效果在于:

本发明实施例公开的一种iOS设备账号密码导入方法及系统,相对于现有技术中越狱后利用iOS系统的漏洞进行账号密码的批量导入的方法,本发明实施例公开的方案在通过解密keychain.plist文件;提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后keychain.plist文件中;备份还原添加了新节点项的keychain.plist文件到iOS设备,能在不越狱的条件下将账号密码安全地批量添加需要导入的设备,无需人们手动添加,从而杜绝因手动添加账号密码所带来的一系列麻烦的同时,兼容最新iOS系统,支持设备原本的设置。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例iOS设备账号密码导入方法的流程图;

图2为本发明实施例iOS设备账号密码导入系统的原理图;

图3为本发明优选实施例iOS设备账号密码导入方法的操作流程图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开的方案在通过解密keychain.plist文件;提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后keychain.plist文件中;备份还原添加了新节点项的keychain.plist文件到iOS设备。能在不越狱的条件下将账号密码安全地批量添加需要导入的设备,无需人们手动添加,从而杜绝因手动添加账号密码所带来的一系列麻烦的同时,兼容最新iOS系统,支持设备原本的设置。

本发明实施例还提供了相应的系统,以下分别进行详细的说明。

图1示出了本发明实施例提供的iOS设备账号密码导入方法的流程图。

参阅图1,所述iOS设备账号密码导入方法包括:

S11,解密出保存账号密码的keychain.plist文件。这是因为存放的账号密码文件只存放在keychain.plist中,所以如果要往keychain.plist中批量加入账号和密码,必须先将加密keychain.plist文件解密。那么,问题来了,为什么keychain.plist文件是加密的呢?这是因为iOS系统的保护机制,keychain.plist包括重要的账号密码信息,不设置备份密码的普通备份文件是不包括keychian.plist文件的,所以必须设置备份密码,才能把保存了账号密码信息的keychain.plist文件以加密形式备份出来。好在keychain.plist文件很小,仅有几百KB,解密过程很快。

因此,在解密之前,需要获取到加密的keychain.plist文件:首先判断识别当前系统下否有iOS驱动程序,没有则安装最新版本的驱动程序,为iOS硬件识别以及通信做准备;然后接入设备后判断设备是否解锁、信任,未解锁信任,引导用户进行解锁锁屏密码,并进行信任授权,以便于识别iOS设备为后续开启备份服务做准备。

做好开启备份服务的准备后,为保证能将keychain.plist文件以加密形式备份出来,先检测iOS设备是否设置有备份密码;有提示用户输入备份密码,没有的话则为用户设置一个默认的备份密码,并记录密码状态;接着开启备份服务,获取到第一备份,所述第一备份还包含Manifest.plist文件和加密Manifest.db数据库,所述Manifest.plist文件含有加密密钥合集包。

了解了为什么要解密并获取到加密keychain.plist文件后,再来看看如何解密出keychain.plist文件:

首先由于设置了备份密码,备份出来的密钥合集包是加密的,因此要先解密出密钥合集包。加密密钥合集包从备份文件Manifest.plist中的BackupKeyBag项数据解析出来后,通过读取BackupKeyBag中的SALT(数据保护盐值)、ITER(iterations的缩写,轮循值,即循环次数)、DPSL(Data Protection)值以及备份密码,配合对应算法解密出密钥合集包;对应算法为PBKDF2算法、AESUnwrap算法,PBKDF2算法优选PKCS5_PBKDF2_HMAC_SHA256和PKCS5_PBKDF2_HMAC_SHA1。所述密钥合集包含有密钥key{key1,key2,…,keyn}以及与所述密钥对应的Class ID{Class1,Class2,…,Classn}。解密时,数值不为空则密码正确,解密后将密钥存放到与ClassID对应的key中,用于后续解密被加密过的密钥(该密钥指的是因备份被加密的随机数)。

其中Class ID代表ClassKey中的ID编号,因为密钥包合集包有多组密钥包,所以按照类别给不同组密钥包加上不同ID编号,然后外部使用了哪组密钥包就会记录下它的ID值,就用来关联。

然后结合所述密钥合集包解密出所述Manifest.db数据库。所述包含加密keychain.plist文件的加密属性包;具体地,通过提取所述Manifest.plist文件中的Class1关联密钥合集包中的key1,所述Class1存在Manifest.plist文件中的MainfestKey值;通过key1和对应算法解密出加密Manifest.db数据库的第一随机数,解锁第一随机数的算法为AESUnwrap;再通过第一随机数和对应算法解密出Manifest.db数据库,解锁Manifest.db数据库的算法为AESdecryptCBC。

接着利用所述备份密码和对应算法解密出属性包,具体地,通过base64解密并使用备份密码,经过SHA1、AES_cbc_encrypt算法解密出加密属性包;再结合所述密钥合集包解密出所述keychain.plist文件,具体地,提取所述属性包中的Class2关联密钥合集包中的key2;通过key2和对应算法解密出加密keychain.plist文件的第二随机数,解锁第二随机数的算法为AESUnwrap;再通过第二随机数和对应算法解密出keychain.plist文件,解锁keychain.plist文件的算法为AESdecryptCBC。

执行完S11步骤之后,需要将预导入的账号密码信息构造成新节点项添加到keychain.plist文件中,该步骤为整个方案的核心步骤。

S12、提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后的keychain.plist文件中。

S12步骤中,在提取密钥合集包对应ClassID的key前包括:提取所述keychain.plist文件中存有账号密码的所述原节点项,所述原节点项根据功能分别保存在inet项(自动填充密码)和genp项(自动记住WiFi密码、邮箱银行卡信息自动填充)中。所述原节点项中包括加密第一编码数据及加密信息(加密版本号,密钥对应ClassID,密钥长度);利用所述加密信息中的Class 3对应所述密钥合集包中的key3和对应算法解密出第三随机数,key3对应算法为AESUnwrap;通过所述第三随机数和对应算法解密出第一编码数据,第三随机数对应算法为gcm_decrypt;所述key3即所述提取密钥合集包对应ClassID的key。解密出的第一编码数据通过DEREncode解码后得到账号和密码、密码创建时间、修改时间,以及对应网站或APP的域名内容。

进一步地,过该key3和对应算法将包含预导入的账号密码数据编码加密形成新节点项具体包括:编码所述预导入的账号密码数据生成第二编码数据,这里采用DEREncode进行编码;通过第四随机数和对应算法加密所述第二编码数据,加密第二编码数据的算法为gcm_encrypt算法;利用所述key3和对应算法加密所述第四随机数,加密第四随机数的算法为AESwrap算法;形成新节点项,所述新节点项包括加密的第二编码数据,加密版本号、对应ClassID、加密的第四随机数值长度、加密第四随机数以及加密所述第二编码数据产生的数据,形成的新节点项对应添加到keychain.plist文件的inet项或genp项中。

执行完S12步骤后,进一步地:

S13、备份还原添加了新节点项的keychain.plist文件到iOS设备,完成账号密码的批量添加。创建一个只包含添加了新节点项的keychain.plist文件相关信息的新Manifest.db数据库;配合使用Manifest.plist文件构造出第二备份;指定第二备份还原路径,将第二备份还原到所述iOS设备。还原之后,可以看到新添加的账号密码出现在iOS设备的自动填充功能和自动记住WiFi密码、邮箱银行卡信息自动填充中,在这里还会还原iOS设备的原有设置,通过检测密码状态,有状态的,则清空所述备份密码;没有状态的则引导用户输入备份密码从而结束整个流程。

其中上述所有的预导入的账号密码一般是从一些工具管理工具中导出的,在编码前将导出的账号密码模解码后的第一编码数据,按照App&Website、Account、Password、Creation date、Modification date几个字段进行归类,然后在进一步编码加密等。

参阅图2,为本发明实施例一种iOS设备账号密码导入方法的操作流程图,与上述内容重复的内容不再赘述。

S21,识别接入设备。

S22,接入后,先检测设备是否设置了备份密码,若设置了执行S23步骤,未设置执行S24步骤。

S23,检测到设置了备份密码,提示用户输入备份密码。

S24,未检测到备份密码,默认设置一个备份密码并记录密码状态。

S25,获取到备份密码后,开启备份服务,备份设备数据,第一备份。

S26,备份完成后,依次解密密钥合集包、Manifest.db数据库。

S27,完成S26步骤的解密工作后,进一步利用解密出来的信息解密keychain.plist文件。

S28,对解密出来的keychain.plist文件中的节点项进行加密解码,并提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后的keychain.plist文件中;

S29,获得添加了新节点项的keychain.plist文件后,构造要替换的keychain.plist的备份包,及第二备份。

S30,构造完第二备份之后,将备份包文件还原到设备更新数据,实现账号密码批量添加到iOS设备中。

S31,检测密码初始状态,有状态执行S32,没有状态执行S33。

S32,有状态,则清空该备份密码后结束。

S33,没有状态引导用户输入备份密码后结束。

本发明通过解密keychain.plist文件,进而提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后的keychain.plist文件中;并备份还原添加了新节点项的keychain.plist文件到iOS设备,完成账号密码的批量添加。采用本发明方案完成账号密码的批量添加,现有技术相比较有一下优势:

1、无需越狱,无需用户手动添加;

2、兼容最新iOS系统,适用范围广;

3、账号密码导入后支持iOS设备原有设置;

4、同时支持不同密码管理工具导出的账号密码数据导入,例如1Password,Chrome浏览器密码管理,DashLane,LastPass的密码管理工具导出的账号密码数据的导入。

应理解,在上述实施例中,各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

图3示出了本发明实施例提供的Apple ID账号移除系统的原理图,为了便于说明,仅示出了与本发明实施例相关的部分。

在本发明实施例中,所述系统用于实现上述图1实施例中所述的iOS设备账号密码导入方法,可以是内置于计算机、服务器的软件单元、硬件单元或者软硬件结合的单元。

参阅图3,所述系统包括:

解密模块41,解密出保存账号密码的keychain.plist文件;

添加模块42,提取密钥合集包对应ClassID的key,通过该key和对应算法将包含预导入的账号密码数据编码加密形成新节点项,添加到解密后的keychain.plist文件中;

备份还原模块43,备份还原添加了新节点项的keychain.plist文件到iOS设备,完成账号密码的批量添加。

需要说明的是,本发明实施例中的装置可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实例中的相关描述,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号