我被许多不幸的iPhone用户请求帮助他们从iTunes备份中恢复数据.这些在未加密时很容易,但不是在加密时,无论密码是否已知.
因此,我试图找出加密时mddata和mdinfo文件上使用的加密方案.否则,我没有读取这些文件的问题,并且已经构建了一些强大的C#库.(如果你能够提供帮助,我不在乎你使用哪种语言.这是我在这之后的原则!)
Apple"iPhone OS企业部署指南"指出"通过在iTunes的设备摘要窗格中选择加密iPhone备份选项,可以以加密格式存储设备备份.文件使用带有256位密钥的AES128进行加密.关键是安全地存放在iPhone钥匙串中."
这是一个非常好的线索,这里有关于iPhone AES/Rijndael互操作性的 Stackoverflow的一些很好的信息,表明可以使用128和CBC模式的密钥.
除了任何其他混淆之外,还需要密钥和初始化向量(IV)/盐.
人们可能会认为关键是操纵"备份密码",用户被提示通过iTunes输入并传递给" AppleMobileBackup.exe ",以CBC规定的方式填充.但是,考虑到对iPhone钥匙串的引用,我想知道"备份密码"是否可能不会用作X509证书或对称私钥的密码,并且证书或私钥本身可能会被用作密钥.(AES和iTunes加密/解密过程是对称的.)
IV是另一回事,它可能是一些事情.也许它是硬编码到iTunes或设备本身的密钥之一.
虽然Apple上面的评论表明该设备的钥匙链上有钥匙,但我认为这并不重要.可以将加密的备份恢复到不同的设备,这表明与解密相关的所有信息都存在于备份和iTunes配置中,并且仅在设备上的任何内容都是无关紧要的,并且在此上下文中可以替换.所以关键在哪里?
我在Windows机器上列出了下面的路径,但无论我们使用哪种操作系统,它都非常多.
"\ appdata\Roaming\Apple Computer\iTunes\itunesprefs.xml"包含一个带有"Keychain"dict条目的PList."\ programdata\apple\Lockdown\09037027da8f4bdefdea97d706703ca034c88bab.plist"包含带有"DeviceCertificate","HostCertificate"和"RootCertificate"的PList,所有这些看起来都是有效的X509证书.同一个文件似乎也包含非对称密钥"RootPrivateKey"和"HostPrivateKey"(我的阅读建议这些可能是PKCS#7-enveloped).此外,在每个备份中,Manifest.plist文件中都有"AuthSignature"和"AuthData"值,尽管这些值似乎在每个文件逐步备份时轮换,表明它们不是一个有用的键,除非确实有什么相关的工作正在进行中.
有很多误导性的东西表明从加密备份中获取数据很容易.它不是,据我所知,它还没有完成.绕过或禁用备份加密完全是另一回事,而不是我想做的事情.
这不是关于黑客攻击iPhone或类似的东西.我在这里的所有内容都是从加密的iTunes备份中提取数据(照片,联系人等)的方法,因为我可以解密.我已经尝试了各种各样的排列信息,我已经在上面提到了这些信息,但却无处可去.我很欣赏我可能错过的任何想法或技巧.
任何人都可以帮助我,我正在尝试备份位于localhost\SQLEXPRESS上的数据库,但我不断收到以下错误:
Backup failed for Server 'localhost\SqlExpress'. (Microsoft.SqlServer.SmoExtended)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.2531.0+((Katmai_PCU_Main).090329-1045+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Backup+Server&LinkId=20476
ADDITIONAL INFORMATION:
System.Data.SqlClient.SqlError: Cannot open backup device 'C:\backup.bak'. Operating system error 5(failed to retrieve text for this error. Reason: 15105). (Microsoft.SqlServer.Smo)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.2531.0+((Katmai_PCU_Main).090329-1045+)&LinkId=20476
Run Code Online (Sandbox Code Playgroud)
谁能解释我在这里做错了什么?
谢谢
我有一个数据库,[我的数据库],它有以下信息:
SQL Server 2008
MDF大小:30 GB
LDF大小:67 GB
我想尽可能地缩小日志文件,所以我开始寻找如何做到这一点.警告:我不是一名DBA(甚至是接近DBA)并且一直在通过这个任务感受到进步.
首先,我刚进入SSMS,数据库属性,文件,并将初始大小(MB)值编辑为10.这将日志文件减少到62 GB(不完全是我输入的10 MB).所以,我附加了SQL Profiler,看到正在调用DBCC SHRINKFILE.然后我将该命令输入查询编辑器,这是结果.
DBCC SHRINKFILE (N'My DB_Log' , 10)
Run Code Online (Sandbox Code Playgroud)
输出是:
Cannot shrink log file 2 (My DB_Log) because the logical log file located at the end of the file is in use.
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
8 2 8044104 12800 8044104 12800
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Run Code Online (Sandbox Code Playgroud)
然后我做了一些研究,发现了这个:
http://support.microsoft.com/kb/907511
这说我需要在收缩文件之前备份日志文件,以便释放虚拟日志文件并且收缩文件可以完成它的工作 - …
当我开始时,我使用pg_dump默认的普通格式.我没有受到启发.
研究向我展示了时间和文件大小的改进pg_dump -Fc | gzip -9 -c > dumpfile.gz.我开悟了.
到了重新创建数据库的时候了,
# create tablespace dbname location '/SAN/dbname';
# create database dbname tablespace dbname;
# alter database dbname set temp_tablespaces = dbname;
% gunzip dumpfile.gz # to evaluate restore time without a piped uncompression
% pg_restore -d dbname dumpfile # into a new, empty database defined above
Run Code Online (Sandbox Code Playgroud)
我觉得自己没有启发:恢复需要12个小时来创建数据库,这只是它的一小部分:
# select pg_size_pretty(pg_database_size('dbname'));
47 GB
Run Code Online (Sandbox Code Playgroud)
因为有预测这个数据库将是几TB,我现在需要考虑提高性能.
拜托,赐教.
我正在寻找一些建议或最佳实践来备份S3存储桶.
从S3备份数据的目的是为了防止数据丢失,原因如下:
经过一番调查后,我看到以下选项:
我应该选择什么选项以及仅在S3上存储数据的安全性如何?想听听你的意见.
一些有用的链接:
我有一个托管我的Subversion代码库的服务器.该服务器当前是Windows Server 2003,我的IT管理员希望将其更新到Windows Server 2008.
这意味着我将需要在服务器构建时移动我的Subversion存储库,并且想知道将存储库移动到新服务器的最佳实践是什么.
看来,在网上看,推荐的方法是使用:
svnadmin dump /path/to/repository > repository-name.dmp
Run Code Online (Sandbox Code Playgroud)
然后使用:
svnadmin create repository-name
svnadmin load repository-name< repository-name.dmp
Run Code Online (Sandbox Code Playgroud)
要导入存储库.
上述方法看起来是最好的方法吗?
我正在使用SQL server express(2005)作为后端运行一个小型Web应用程序.我可以使用SQL脚本创建备份,但是,我想每天安排这个.作为额外的选项(应该)我只想保留最后的X备份(显然是出于节省空间的原因)任何指针?
[编辑] SQL Server代理在SQL Server express中不可用...
标题是自我解释的.有没有办法直接进行这种导入?
虽然做一个MySQL转储很容易,但我有一个实时专用的MySQL服务器,我想设置复制.为此,我需要转储数据库以导入到我的复制从站.
问题发生在我进行转储时,MySQL会全力以赴,并将资源绑定到连接它的站点.我想知道是否有办法将转储查询限制为低优先级状态,优先级为实时连接?这个想法是来自外部站点的负载不受MySQL进行完全转储的努力的影响......
backup ×10
sql-server ×3
mysql ×2
restore ×2
amazon-s3 ×1
android ×1
database ×1
dbcc ×1
encryption ×1
iphone ×1
itunes ×1
migration ×1
mysqldump ×1
performance ×1
postgresql ×1
replication ×1
sd-card ×1
svn ×1