zoukankan      html  css  js  c++  java
  • [转]获取iPhone通话记录(需越狱)

    转自:http://www.cnblogs.com/ydhliphonedev/archive/2011/10/13/2210435.html

    获取iPhone通话记录(需越狱)

    越狱后的手机的数据库文件可以自由访问,通话记录通常保存在call_History.db这个文件中.只要读取这个文件,我们就能知道目前手机的通话记录了

    下面这段代码检测手机是否能读取到Call_History.db

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/"];
    NSString *nextItem = [NSString string];
    while( (nextItem = [dirnum nextObject])) {
    if ([[nextItem pathExtension] isEqualToString: @"db"] ||
    [[nextItem pathExtension] isEqualToString: @"sqlitedb"]) {
    if ([fileManager isReadableFileAtPath:nextItem]) {
    NSLog(@"%@", nextItem);
    }
    }
    }

    通常发现的文件位置为var/wireless/Library/CallHistory/call_history.db,ios3和4可能不同,具体看上面代码打印的结果.

    下面这段代码可以读出数据库中的内容,具体怎样显示自己定制把.

    - (void)readCallLogs
    {
    if (_dataArray == nil) {
    _dataArray = [[NSMutableArray alloc] init];
    }
    [_dataArray removeAllObjects];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *callHisoryDatabasePath = @"var/wireless/Library/CallHistory/call_history.db";
    BOOL callHistoryFileExist = FALSE;
    callHistoryFileExist = [fileManager fileExistsAtPath:callHisoryDatabasePath];
    [fileManager release];
    //NSMutableArray *callHistory = [[NSMutableArray alloc] init];

    if(callHistoryFileExist) {
    if ([fileManager isReadableFileAtPath:callHisoryDatabasePath]) {
    sqlite3 *database;
    if(sqlite3_open([callHisoryDatabasePath UTF8String], &database) == SQLITE_OK) {
    sqlite3_stmt *compiledStatement;
    NSString *sqlStatement = [NSString stringWithString:@"SELECT * FROM call;"];

    int errorCode = sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1,
    &compiledStatement, NULL);
    if( errorCode == SQLITE_OK) {
    int count = 1;

    while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
    // Read the data from the result row
    NSMutableDictionary *callHistoryItem = [[NSMutableDictionary alloc] init];
    int numberOfColumns = sqlite3_column_count(compiledStatement);
    NSString *data;
    NSString *columnName;

    for (int i = 0; i < numberOfColumns; i++) {
    columnName = [[NSString alloc] initWithUTF8String:
    (char *)sqlite3_column_name(compiledStatement, i)];

    data = [[NSString alloc] initWithUTF8String:
    (char *)sqlite3_column_text(compiledStatement, i)];


    }
    [callHistoryItem setObject:data forKey:columnName];

    [columnName release];
    [data release];
    }
    [_dataArray addObject:callHistoryItem];
    [callHistoryItem release];
    count++;
    }
    }
    else {
    NSLog(@"Failed to retrieve table");
    NSLog(@"Error Code: %d", errorCode);
    }
    sqlite3_finalize(compiledStatement);
    }
    }
    }
    NSLog(@"%@",_dataArray);
    }

    到此,你就可以读出所有的通话记录了.

    by MAC-z

  • 相关阅读:
    配置 dovecat 的 PAM
    通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃
    路由器漏洞复现分析第二弹:CNVD-2018-01084
    路由器漏洞复现分析第三弹:DVRF INTRO题目分析
    重新认识被人遗忘的HTTP头注入
    [转载]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析
    HOOK大法实现不修改程序代码给程序添加功能
    老树开新花:DLL劫持漏洞新玩法
    分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace
    网易云音乐PC客户端加密API逆向解析
  • 原文地址:https://www.cnblogs.com/cklxmu/p/2399462.html
Copyright © 2011-2022 走看看