IOS 本地Cookies 读取方法
2017-03-22 20:04
337 查看
Safari浏览器和iOS应用程序将持久性Cookie存储在Cookies.binarycookies文件中。 这与其他桌面浏览器不同。 例如,Internet Explorer将持久Cookie存储在临时Internet文件夹下的文本文件中。 类似地,Firefox和Chrome浏览器将Cookie存储在Sqlite数据库文件中。 读取存储在文本文件和Sqlite数据库文件中的cookie非常容易。 但是没有可用的工具来从Cookies.binarycookies二进制文件中读取cookies。 所以我写了一个python脚本(BinaryCookieReader.py),当执行时将一个Cookie.binarycookies文件作为输入,并转储该文件中的所有cookie。
BinaryCookieReader的使用
1.下载并安装Python。
2.将python安装文件夹添加到系统PATH。
3.下载BinaryCookieReader.py
4.打开命令提示符并运行以下命令。 它从Cookies.binarycookies文件中转储所有Cookie。
在iPhone上,Safari浏览器和第三方iOS应用程序将cookie存储在位于以下路径的Cookies.binarycookies文件中。仅在未来到期日期(持久性Cookie)创建的Cookie存储在二进制Cookie.binarycookies文件中。
大多数iOS应用程序会创建会话Cookie,并且将来的到期日期不会提示用户每次登录。通常这些cookie永远不会过期,除非用户从应用程序注销。此外,在iTunes备份期间,将Cookies.binarycookies文件复制到备份文件夹。因此,如果有人可以访问您的iPhone备份文件夹(Metasploit:Apple iOS备份提取模块),还可以通过从Cookies.binarycookies文件读取cookies来访问您的电子邮件帐户和社交网站。
Cookies.binarycookies格式:
Cookies.binarycookies文件由几页组成,每页可以有一个或多个Cookie。完整的文件格式如下:
文件格式:
文件以4字节的魔术字符串开头:cook。它用于标识文件类型。
接下来的四个字节是一个整数,指定文件中的页数。
之后,每页的4字节整数表示页面大小。
此外,该文件包含实际的页面内容。每个页面的长度对应于页面大小。页面格式如下。
该文件以8个字节的值结尾,它可能是文件校验和。
页面格式:
每个页面都以4字节的页头开头:0x00000100。
接下来的四个字节是一个整数,指定页面中的Cookie数。
3.之后,每个cookie的4字节整数表示cookie偏移量。偏移量从页面开始指定以字节开头的cookie的开始。
旁边,该页面包含实际的cookie内容。每个Cookie的长度可变。 Cookie格式如下。
页面以4字节值结束,始终为0x00000000。
Cookie格式:
cookie中的前4个字节是cookie的大小。
接下来的4个字节是未知的(可能与cookies标志有关)。
接下来的四个字节是cookie标志。这是一个整数值(1 = Secure,4 = HttpOnly,5 = Secure + HttpOnly)。
接下来的4个字节是未知数。
接下来的4个字节是一个整数,指定从cookie记录的开头开始的url字段的开始字节。
接下来的4个字节是一个整数,它指定从cookie记录开始的名称字段的开始字节(以字节为单位)。
接下来的4个字节是一个整数,指定从cookie记录的开头开始的路径字段(以字节为单位)。
接下来的4个字节是一个整数,指定从cookie记录开头的值字段开始的字节数。
接下来的8个字节表示cookie的结尾,它总是0x0000000000000000。
接下来的8个字节是cookie过期日期。日期是Mac时代格式(Mac绝对时间)。 Mac时代格式从2001年1月开始。
接下来的8个字节是创建cookie的日期。
在此之后,该cookie包含实际的cookie域,名称,路径和值。订单不具体,可以按任何顺序出现。
BinaryCookieReader的使用
1.下载并安装Python。
2.将python安装文件夹添加到系统PATH。
3.下载BinaryCookieReader.py
4.打开命令提示符并运行以下命令。 它从Cookies.binarycookies文件中转储所有Cookie。
大多数iOS应用程序会创建会话Cookie,并且将来的到期日期不会提示用户每次登录。通常这些cookie永远不会过期,除非用户从应用程序注销。此外,在iTunes备份期间,将Cookies.binarycookies文件复制到备份文件夹。因此,如果有人可以访问您的iPhone备份文件夹(Metasploit:Apple iOS备份提取模块),还可以通过从Cookies.binarycookies文件读取cookies来访问您的电子邮件帐户和社交网站。
Cookies.binarycookies格式:
Cookies.binarycookies文件由几页组成,每页可以有一个或多个Cookie。完整的文件格式如下:
文件格式:
文件以4字节的魔术字符串开头:cook。它用于标识文件类型。
接下来的四个字节是一个整数,指定文件中的页数。
之后,每页的4字节整数表示页面大小。
此外,该文件包含实际的页面内容。每个页面的长度对应于页面大小。页面格式如下。
该文件以8个字节的值结尾,它可能是文件校验和。
页面格式:
每个页面都以4字节的页头开头:0x00000100。
接下来的四个字节是一个整数,指定页面中的Cookie数。
3.之后,每个cookie的4字节整数表示cookie偏移量。偏移量从页面开始指定以字节开头的cookie的开始。
旁边,该页面包含实际的cookie内容。每个Cookie的长度可变。 Cookie格式如下。
页面以4字节值结束,始终为0x00000000。
Cookie格式:
cookie中的前4个字节是cookie的大小。
接下来的4个字节是未知的(可能与cookies标志有关)。
接下来的四个字节是cookie标志。这是一个整数值(1 = Secure,4 = HttpOnly,5 = Secure + HttpOnly)。
接下来的4个字节是未知数。
接下来的4个字节是一个整数,指定从cookie记录的开头开始的url字段的开始字节。
接下来的4个字节是一个整数,它指定从cookie记录开始的名称字段的开始字节(以字节为单位)。
接下来的4个字节是一个整数,指定从cookie记录的开头开始的路径字段(以字节为单位)。
接下来的4个字节是一个整数,指定从cookie记录开头的值字段开始的字节数。
接下来的8个字节表示cookie的结尾,它总是0x0000000000000000。
接下来的8个字节是cookie过期日期。日期是Mac时代格式(Mac绝对时间)。 Mac时代格式从2001年1月开始。
接下来的8个字节是创建cookie的日期。
在此之后,该cookie包含实际的cookie域,名称,路径和值。订单不具体,可以按任何顺序出现。
相关文章推荐
- iOS读取本地txt文件为乱码的解决方法
- iOS Swift读取本地json文件报错的解决方法
- j2me读取本地文件的方法
- php读取文件:PHP读取COOKIES的实现方法
- JEditorPane 本地图像不能读取解决方法
- .Net/C# 应用程序直接读取本地 Cookies 文件 (由于 WinXP SP2 调用 API: InternetGetCookie 无果)
- Android以最省内存的方式读取本地资源的方法
- Net/C# 应用程序直接读取本地 Cookies 文件
- iOS中添加/删除本地通知(闹钟)的方法
- android读取本地或网络图片方法
- windows 8 metro app 读取本地json的方法
- .Net/C# 应用程序直接读取本地 Cookies 文件 (由于 WinXP SP2 调用 API: InternetGetCookie 无果)
- Flex结合JavaScript读取本地路径的方法
- asp.net本地和全局资料文件的读取方法
- iOS实现本地通知(local notification)的方法
- IOS 本地推送通知方法
- 在javascript中写cookies,在.net中读取(反之毅然) 出现乱码的解决方法
- JS读取本地文件及目录的方法
- IOS开发基础之──读取本地HTML文档
- 在 iOS 或者 Mac OS X 中将 NSDictionary 映射为本地对象的方法