All Projects → rusq → osx-callhistory-decryptor

rusq / osx-callhistory-decryptor

Licence: GPL-3.0 license
macOS (incl big sur) call history decryptor/converter to CSV format.

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to osx-callhistory-decryptor

Hyde
Call of Duty XAsset compiler that transforms raw assets into digestible data.
Stars: ✭ 15 (-21.05%)
Mutual labels:  converter, csv
Rosbag to csv
Converter from ros bag to csv
Stars: ✭ 128 (+573.68%)
Mutual labels:  converter, csv
csv-to-sqlite
A desktop app to convert CSV files to SQLite databases!
Stars: ✭ 68 (+257.89%)
Mutual labels:  converter, csv
Nano Sql
Universal database layer for the client, server & mobile devices. It's like Lego for databases.
Stars: ✭ 717 (+3673.68%)
Mutual labels:  csv, history
WebCrypto.swift
A small collection of cryptographic functions based on the JavaScript WebCrypto API.
Stars: ✭ 16 (-15.79%)
Mutual labels:  aes, decryption
Qtcsv
Library for reading and writing csv-files in Qt.
Stars: ✭ 156 (+721.05%)
Mutual labels:  csv, osx
Sqlitebiter
A CLI tool to convert CSV / Excel / HTML / JSON / Jupyter Notebook / LDJSON / LTSV / Markdown / SQLite / SSV / TSV / Google-Sheets to a SQLite database file.
Stars: ✭ 601 (+3063.16%)
Mutual labels:  converter, csv
Aescipher Ios
AES encryption working between Objective-C and Java.
Stars: ✭ 198 (+942.11%)
Mutual labels:  aes, decryption
cryptocli
The ultimate tool for data transfer, manipulation and proxy.
Stars: ✭ 16 (-15.79%)
Mutual labels:  aes, decryption
cryptopocket
🔐 Encrypt anything, then Decrypt by providing a required key.
Stars: ✭ 22 (+15.79%)
Mutual labels:  aes, decryption
Csvkeychain
Import/export between Apple Keychain.app and plain CSV file.
Stars: ✭ 281 (+1378.95%)
Mutual labels:  csv, keychain
mdtable2csv
convert tables in .md to .csv
Stars: ✭ 91 (+378.95%)
Mutual labels:  converter, csv
Laravel Database Encryption
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Stars: ✭ 238 (+1152.63%)
Mutual labels:  aes, decryption
csv2keepassxml
Convert CSV files into KeePass 2 XML files.
Stars: ✭ 31 (+63.16%)
Mutual labels:  converter, csv
Jsrsasign
The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES JSON Web Signature/Token in pure JavaScript.
Stars: ✭ 2,760 (+14426.32%)
Mutual labels:  aes, decryption
Sqawk
Like Awk but with SQL and table joins
Stars: ✭ 263 (+1284.21%)
Mutual labels:  converter, csv
Cross Platform Aes
Simple cross-platform encryption and decryption using AES
Stars: ✭ 127 (+568.42%)
Mutual labels:  aes, decryption
Padding Oracle Attacker
🔓 CLI tool and library to execute padding oracle attacks easily, with support for concurrent network requests and an elegant UI.
Stars: ✭ 136 (+615.79%)
Mutual labels:  aes, decryption
bank2ynab
Easily convert and import your bank's statements into YNAB. This project consolidates other conversion efforts into one universal tool.
Stars: ✭ 197 (+936.84%)
Mutual labels:  converter, transactions
cryptorious
CLI Password Manager
Stars: ✭ 15 (-21.05%)
Mutual labels:  aes, decryption

MacOS X Call history decryptor/converter to CSV

Build Status

Converts the MacOS X call history to CSV file format.

This is the Golang implementation of the n0fates' Call History Decryptor, and is based on n0fate's presentation descibing the internals of the database: https://papers.put.as/papers/macosx/2014/Forensic-artifacts-for-Yosemite-call-history-and-sms-anlaysis-ENG.pdf

Motivation for this implementation was:

  • to improve the usability by having just one binary executable;
  • increase the execution speed by using the standard library functions;
  • provide the convenient output format (CSV); and
  • describe the usage to make it more accessible to those who require getting the call history from MacOS X for any reason, but lacking the time or the technical knowledge required to set up the Python interpreter and packages needed for the ogirinal implementation.

All credit for the decryption logic goes to n0fate.

Purpose

Decrypt and save the macOS call history to a CSV file.

Download

Downloads are available on the Releases page.

How this works

The program creates a copy of the original database in a temporary directory and operates on that copy. After the Call History has been printed out, the temporary file is deleted.

The original database is not changed during the execution.

For reference: macOS stores the Call History data in the following location:

"$HOME/Library/Application Support/CallHistoryDB/CallHistory.storedata"

Usage

Start the program with -h command line flag to see the usage help.

Simple usage:

$ ./osx-callhistory-decryptor [flags] [database_file]

Where database_file is optional os macOS (on Windows you'd have to provide the filename).

macOS

Open the Terminal.app. (How?)

  1. Start the call history decryptor:

     $ ./osx-callhistory-decryptor
    

    It will try to locate the default call history file, make a temporary copy and open it.

    If you get the "Operation not permitted" on latest MacOSes:

    1. Go into "System Preferences";
    2. Choose "Security and Privacy";
    3. Go to "Privacy" tab, select "Full Disk Access" item;
    4. Add the Utilities/Terminal.app — or whatever you're using — to the list.
  2. You will be prompted for your user's logon password - this allows the program to fetch the callhistory encryption key from the OS X keychain. You can also provide the call history encryption key manually using the -k command line flag. Example:

     $ ./osx-callhistory-decryptor -k YSBzZWNyZXQga2V5IDEyCg==
    
  3. The output will be printed onto the terminal by default. You can specify an output file by providing the -o command line flag:

     $ ./osx-callhistory-decryptor -o output.csv
    

Opening a database from a non-default location

If, for any reason, you wish to open a different file than the default, the first command line parameter should contain the filename location:

$ ./osx-callhistory-decryptor -o output.csv Calls.db

Specifying the custom time format

By default the time format is RFC3339 without the "T" time/date separator ("2006-01-02 15:04:05Z07:00"). Optionally, one can change that behaviour with the -time-format flag by passing a different format. For example, if is is required to have just a date and time, invoke program like so:

$ ./osx-callhistory-decryptor -time-format="2006-01-02 15:04"

The formatting is described in depth in the Go time package documentation.

Linux, Windows, etc.

You will need to obtain the database and the encryption key from the original macOS system.

  1. Get the copy of the CallHistory.storedata from source OS X machine. The file is stored in this location:

     $HOME/Library/Application Support/CallHistoryDB/CallHistory.storedata
    

    with $HOME being the user's home directory.

    Copy it to the same directory where you've unpacked the 'callhistory'

  2. Get the key from the source macOS X keychain:

    1. search the macOS X keychain for the Call History User Data Key
    2. double-click the entry, and put the checkmark opposite the "show password" field.
    3. Enter your user's account password and copy the key value to the clipboard.
  3. Open the terminal or cmd.exe prompt on Windows (How?). Start the callhistory decryptor on your machine:

     C:>osx-callhistory-decryptor.exe -k <key value from step 2> <filename from step 1>
    
  4. The output will be printed onto the terminal by default. You can specify an output file by providing the -o command line flag:

     C:>osx-callhistory-decryptor.exe -o your_ex_callhistory_lol.csv <filename from step 1>
    

Licence

OS X Call history decryptor

Copyright (C) 2016 n0fate (GPL2 license)

Copyright (C) 2018-2021 rusq (golang implementation, GPL3)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].