Ces*_*reu 5 objective-c cfnetwork ios ios6
我希望能够以编程方式查看TLS握手信息,并能够执行以下操作:
NSLog(@"Client Hello");
//...
NSLog(@"Server Hello");
Run Code Online (Sandbox Code Playgroud)
有一篇很好的博客文章更详细地显示了握手信息(或参见下面的wireshark捕获图片).
我已经在使用ASIHTTPRequest,因此下面的代码示例来自该代码库.但是,如果可以使用它来记录TLS握手信息,我会认真考虑切换到更现代的AFNetworking库.我相信AFNetworking使用不同的对象(即NSURLConnection,NSURLCredential).
我正在向流添加SecIdentityRef(查看更多代码上下文).
CFReadStreamSetProperty((CFReadStreamRef)[self readStream], kCFStreamPropertySSLSettings, sslProperties);
Run Code Online (Sandbox Code Playgroud)
我列出了以下网络事件:
static const CFOptionFlags kNetworkEvents = kCFStreamEventOpenCompleted | kCFStreamEventCanAcceptBytes | kCFStreamEventHasBytesAvailable | kCFStreamEventEndEncountered | kCFStreamEventErrorOccurred;
Run Code Online (Sandbox Code Playgroud)
此事件在文档的CFStream部分中描述.
这是流的打开方式(查看更多代码上下文):
CFStreamClientContext ctxt = {0, self, NULL, NULL, NULL};
if (CFReadStreamSetClient((CFReadStreamRef)[self readStream], kNetworkEvents, ReadStreamClientCallBack, &ctxt)) {
if (CFReadStreamOpen((CFReadStreamRef)[self readStream])) {
streamSuccessfullyOpened = YES;
}
}
Run Code Online (Sandbox Code Playgroud)
调用callback(ReadStreamClientCallBack)来处理事件时使用switch语句:
switch (type) {
case kCFStreamEventHasBytesAvailable:
//...
break;
case kCFStreamEventEndEncountered:
//...
break;
//other events here...
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
我相信握手发生在:kCFStreamEventOpenCompleted和kCFStreamEventHasBytesAvailable.
按照这里的说明,我能够使用Wireshark捕获和分析来自/到iPhone和服务器的数据包.

有没有我可以调用的API或我可以使用的库来获取设备上的类似信息?
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |