egy nagyon egyszerű módja annak, hogy megértsük, mi az adatbázisfájl, ha egy olyan mappára gondolunk, amely egy csomó excel-szerű táblát tartalmaz. Ugyanúgy, mint a nagyobb vagy vállalati szintű adatbázisok, az adatbázis adatait különféle módon lehet összekapcsolni.
A Python és a pandák
ebben a bemutatóban, én használ Python és a csodálatos pandák modul csatlakozni az adatbázishoz, vizsgálja meg a táblázatok és az adatok azt tartja, majd olvassa el az adatokat a megfelelő táblázatok.,
fent csatlakozunk az adatbázishoz, és megvizsgáljuk, hogy milyen táblák vannak benne. Megállapítottam, hogy van néhány tábla az adatbázisban, köztük egy hívott üzenet, mások nevek chat, kezelni, mellékletet. Fedezzük fel az üzenettáblázatot, mert ez az, amely a legígéretesebbnek tűnik az iMessages megtartására. Ezt úgy teszem, hogy a táblát egy pandas dataframe-be továbbítom, egy olyan típusú fájlba, amelyet sokkal könnyebb felfedezni és manipulálni az adatelemzési projektekhez.
# get the 10 entries of the message table using pandas
messages = pd.read_sql_query("select * from message limit 10", conn)
az üzenet szövege és telefonszáma
eltaláltuk a bingót!, Úgy tűnik, hogy az üzenettábla valóban megtartja az összes mentett iMessage-t. Van benne egy szövegmező, a ténylegesen elküldött vagy fogadott üzenettel, egy Dátummező (erről bővebben alább) és egy fogantyú azonosító. Egy kis feltárás után azt tapasztaltam, hogy a handle_id egy kód minden telefonszámhoz vagy Apple-id-hez, amellyel beszélgetett. Annak érdekében, hogy a handle_id-et vissza tudjuk térképezni az Apple-id-re, használhatunk egy táblázatot az adatbázisban (megfelelően), a handle_id-en.
csevegési azonosító hozzáadása
Hasonlóképpen, az üzenettáblázat tartalmaz egy chat_id-et is, amely minden üzenetet visszaad az egyedi csevegéshez., Ez akkor lehet hasznos, ha több emberrel folytatott Csevegések elemzését végzi. Az egyes üzenetek chat_id-jét úgy kaphatjuk meg, hogy csatlakozunk az üzenettáblához A (ismét megfelelő nevű) chat_message_join táblához a message_id-en.
Ismerkedés a dátum
Az üzenet táblázat is tartalmaz egy dátum oszlop, és ez egy kicsit trükkös számomra, hogy dekódolni, mivel ez nem pontosan olyan formában, hogy széles körben használják az iparban. Sőt, az oszlop rögzítésének módja kissé különbözik a Mac OS X újabb verziójától, mint a régebbiek.,
jóváírja ezt a stackoverflow oldalt, amely segített kitalálni ezt.
Mac OS X verziókban a High Sierra előtt (amely a 10.13-as verzió, amelyet 2017 szeptemberében adtak ki), a dátum oszlop egy korszak típusú, de ellentétben az 1970-01-01-es másodpercek számlálásának szabványával, a 2001-01-01-es másodperceket számolja., Annak érdekében, hogy ezt a típust adatmezővé alakítsuk, valójában megérthetjük, hogy használhatunk egy parancsot, miközben lekérdezzük az üzenettáblát egy új mező létrehozásához (ezt date_utc-nek nevezzük, mivel ennek eredményeként UTC időzónát ad) a dátum mező alapján.
A Mac OS X High Sierra vagy újabb verziójában ugyanaz, de a dátum formátuma most sokkal szemcsésebb: nano-második szinten van. Tehát most meg kell osztanunk a 1,000,000,000
– val, mielőtt ugyanazt a kódrészletet alkalmaznánk, amelyet fent alkalmaztunk.,
mindent összerakva
itt megtalálja a notebookot az összes kóddal, hogy az iMessage-eket kinyerje a laptopjáról, és elkezdje elemezni!
Ez csak egy pár percig, aztán a végére kellett volna egy alapvető történelem, az iMessage adatokat tartalmaz, a telefonszámát (vagy e-mail), a szöveg, egyedi chat minden egyedi csoportnak volt egy chat, illetve az időbélyeg (UTC-ben időzóna) az egyes elküldött üzenet.
az adatbázisban több adat is megtalálható, mint például a részletek, Ha az üzenetet kézbesítették és olvasták, valamint a mellékletek., Nem érintem ezeket a tulajdonságokat ezen a poszton.