我被许多不幸的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备份中提取数据(照片,联系人等)的方法,因为我可以解密.我已经尝试了各种各样的排列信息,我已经在上面提到了这些信息,但却无处可去.我很欣赏我可能错过的任何想法或技巧.
我想知道如何在X个字符后添加换行符(即/n或<br>).
例如,假设我有一个perl变量$ message ="aaaaabbbbbcccccdd".我想在每5个字符后添加一个换行符到这个变量.因此,当我在html中打印变量时,它将显示:
aaaaa
bbbbb
ccccc
dd
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?有人告诉我使用substr或count函数,但我不知道如何去做.任何帮助将不胜感激.谢谢!
是否可以分析webpart正在使用的页面?
我想从我的sharepoint服务器中删除一些webparts,但我不知道正在使用什么以及哪些没有使用?
有解决方案吗?
我目前正在使用moss2007
我想使用一个计算位列,如果表中的另一列不为null,则该列将为true.这是什么正确的公式?
HasLabel = computed column (bit)
Label = varchar NULL
Run Code Online (Sandbox Code Playgroud)
以下公式未验证. - 我错过了什么?
HasLabel的公式=Label IS NOT NULL
我有一个集成项目的数据库模式,我需要能够在其中查询已更改的记录,但仅基于该记录中的给定字段集.
所以,例如,这是一个示例表:
顾客
我需要查询以获取其名称,电话或传真字段已更改的记录.但是,不应考虑其他字段,即如果只有Balance字段更改,我的查询不应该拉入该记录(因此,每当修改记录时,自动更新的时间戳字段不起作用).
此外,这必须在许多不同的数据库和平台上运行,因此除非它们在MySQL,PostgreSQL,SQL Server和SQLLite上运行,否则TRIGGERS或类似的东西不是真正的选择.
这些字段由我无法修改的第三方应用程序修改,因此我不能只添加标志并让第三方应用程序在修改相关字段时将标志设置为TRUE.
我最初的解决方案是计算相关字段的HASH并将其存储在新字段"LastHash"中.然后,我可以计算当前记录中数据的相关字段的哈希值,如果它与存储的LastHash不匹配,我知道它已被更改.
这看起来很混乱......但似乎它会起作用.有没有更好的办法?如果没有,是否有一种很好的方法来实现该哈希,以便提取那些已更改的记录是有效的,而不是太耗时?
编辑
一些说明:我的应用程序和其他应用程序都更新并插入到这些表中.我可以让我的应用程序计算初始哈希值.我不能让其他应用程序计算它.
每当记录更改都可以自动更新的时间戳列,这些列很容易在使用不同列类型或非常简单的触发器的所有数据库系统中进行复制.
其他问题
如果哈希是要走的路......有没有任何有效的哈希算法,不会永远计算所有这些记录?MD5或SHA1可能会起作用,但它们看起来像是sllloowwww.
您好,是否可以有一个 ListView -> ListView.View -> GridView -> GridViewColumn 每行“两行”。
例如。
第 1 栏 | 第 2
列第 1 行等等 | 数据
废话
ROW 2 等 | 更多的
我尝试使用单元格模板失败,但手动调整其包含列的大小时,模板内的项目不会调整大小。
代码:
<ListView Height="238" DockPanel.Dock="Top" ItemsSource="{Binding Blah}"
SelectedItem="{Binding Path=Selectedblah, UpdateSourceTrigger=PropertyChanged}">
<ListView.View>
<GridView>
<GridViewColumn Header="No." DisplayMemberBinding="{Binding Path=Id}" Width="25" />
<GridViewColumn Header="Job Type" DisplayMemberBinding="{Binding Path=Something}" Width="165" />
<GridViewColumn Header="Assigned To" DisplayMemberBinding="{Binding Path=SomethingElse}" Width="90" />
<GridViewColumn Header="Created" DisplayMemberBinding="{Binding Path=DateCreated, Converter={StaticResource dateTimeFormat}, ConverterParameter='dd/MM/yy HH:mm'}" Width="65" />
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="/Streetcar.UI.Modules.FleetTracker;component/Resources/Images/tick.png" Visibility="{Binding IsCompleted, Converter={StaticResource boolToVis}}" />
</DataTemplate> …Run Code Online (Sandbox Code Playgroud) 我需要设置结算周期和处理付款.因此,例如,我将立即处理付款,然后将下一个付款设置为从那时起一个月.
所以,如果我得到DateTime.Now有没有快速的方法只添加一个月?一年怎么样?或者我需要将其解析为MM,YYYY,DD,然后添加到MM,如果MM == 12增量年份等等,然后将它重新组合在一起,以便我的字符串提交给这个paypal插件?
这是所需的最终格式:
"YYYY-MM-DDTHH:MM:SS.MSZ".
This is explained in more detail below:
YYYY Four-digit year, e.g. "2005"
MM Two-digit month.
DD Two-digit day.
T Indicates time follows the date.
HH Hours in military time (24-hour format).
MM Minutes
SS Seconds
MS Milliseconds
Z 1-character (US military) representation of the time zone, "A" - "M" are negative offsets -1 to -12, with "J" not being used. "N" - "Y" are positive offsets 1 to 12, and "Z" indicates GMT/UTC (no …Run Code Online (Sandbox Code Playgroud) 我正在编写一个数学和几何密集的图形应用程序.通常,我发现虽然我尽可能地评论我的代码,但是在应用应用程序的其他部分之后,当我再次访问它时(通常用于调试),之前的注释变得难以理解.我开始认为有些情况下文本注释不会做,并且图表是必需的 - 很多都是.
我怀疑这个问题并不新鲜,我想知道其他有经验的开发人员/团队使用的技术.我发现我的许多方法可能需要至少2页的注释和图表来描述.例如,我昨天调试的一种方法处理一条线可以与三角形边相交的五种不同方式.我尽可能地评论了这个方法,但是我担心在我必须调试方法的4个月里,我精心设计的评论是没有意义的.
谢谢,
Olumide
嘿伙计们,我有一个定义了许多ObjC-2.0属性的协议,如下所示:
@protocol Repeatable <NSCoding>
@required
@property (nonatomic, retain) Date *startDate;
@property (nonatomic, retain) Date *endDate;
@end
Run Code Online (Sandbox Code Playgroud)
我有另一个实现协议的类:
@interface AbstractRepeatable : NSObject <Repeatable>
Run Code Online (Sandbox Code Playgroud)
最后,在AbstractRepeatable中,我正在实现一个由协议定义的方法:
- (BOOL)isEqualToRepeatable:(Repeatable *)r {
if (r.startDate != startDate) // Compiler error here
return NO;
return YES;
}
Run Code Online (Sandbox Code Playgroud)
例如,排除了比特和碎片,但是在编译时,我会在上面提到的行上收到熟悉的"成员'startDate'请求,而不是结构或联合".AbstractRepeatable显然包含Repeatable标头,否则协议将不可见,所以我不知道我缺少哪个部分.
我正在使用Visual Studio 2008,C#.我尝试使用编辑并继续(在调试时编辑代码),并获得此异常:
"不允许对64位应用程序进行更改"
这是为什么?有解决方法吗?