Menggunakan pengurus sqlite untuk bekerja dengan pangkalan data sqlite. Apa yang boleh anda lakukan dengan sistem menggunakan hak akar dalam SqLite

Rangka kerja MV menyokong DBMS MySQL dan SQLite. Di bawah ialah teknologi untuk bekerja dengan pangkalan data Data SQLite, yang padat dan cepat mudah alih dari satu pelayan ke pelayan yang lain, sambil mempunyai semua keupayaan yang diperlukan untuk DBMS moden.

MV berfungsi dengan SQLite menggunakan perpustakaan PDO. Pada kebanyakan pelayan ia didayakan, tetapi jika pangkalan data tidak dimulakan kerana kekurangan pemandu, maka anda boleh membaca tentang menyediakannya. SQLite menyimpan semua maklumat dalam satu fail "userfiles/database/sqlite/database.sqlite".

Untuk membuka fail pangkalan data untuk berfungsi dengan jadual, anda mesti memasang alat tambah pelayar Mozilla Firefox dipanggil Pengurus SQLite. Alat tambah membolehkan anda bekerja dengan pangkalan data dengan cara yang sama seperti phpMyAdmin untuk MySQL. https://addons.mozilla.org/ru/firefox/addon/sqlite-manager/

Apabila alat tambah dipasang, anda perlu melancarkan Pengurus SQLite dan pilih fail asas yang diperlukan data "userfiles/database/sqlite/database.sqlite". Selepas menyambungkan fail pangkalan data kepada Pengurus SQLite, senarai jadual akan muncul di lajur kiri.

Untuk mencipta meja baru anda perlu klik pada menu teratas“Jadual -> Buat jadual”, selepas itu tetingkap akan dibuka untuk memasukkan medan jadual.

Untuk pergi ke jadual yang telah dibuat, cuma klik pada nama jadual di lajur kiri. Di bahagian atas tab anda boleh melihat struktur jadual dan senarai rekod jadual.

Apabila anda mengklik dua kali pada rekod dalam jadual, tetingkap akan dibuka untuk mengedit medan rekod.

Secara umum, bekerja dalam Pengurus SQLite tidak jauh berbeza daripada bekerja dalam phpMyAdmin untuk MySQL. Anda juga boleh mengurus jadual dan indeks, melakukan pertanyaan langsung dan mencipta pencetus. Semua kerja berlaku dengan hanya satu fail, yang kemudiannya disalin dari pelayan tempatan ke yang berfungsi. Pada masa yang sama, adalah penting untuk tidak lupa untuk menetapkan kebenaran menulis untuk fail pangkalan data dan folder di mana ia berada. Bergantung pada konfigurasi pelayan, haknya mungkin: 777, 770, 775 dan lain-lain.

Menyediakan PDO SQLite

Jika pemacu PDO untuk SQLite disambungkan, maka apabila anda memanggil fungsi phpinfo(), anda boleh melihat maklumat tentang versi pemacu. Jika maklumat ini tidak tersedia, ini bermakna pemacu tidak disambungkan dan mesti didayakan dalam tetapan PHP.

Folder perpustakaan PHP (sambungan) harus mengandungi fail php_pdo_sqlite.dll dan php_sqlite3.dll.

Dalam fail php.ini, anda perlu menyahkomen baris untuk menyambungkan perpustakaan ini, selepas itu anda perlu memulakan semula pelayan web.

Selepas memulakan semula pelayan, maklumat tentang menyambungkan pemacu PDO untuk SQLite akan muncul dalam phpinfo(), seperti dalam tangkapan skrin di atas.

SQLite ialah pangkalan data yang agak serupa dengan MySQL. Perbezaan asas SQLite daripada pangkalan data lain ialah keseluruhan pangkalan data adalah satu fail. Jika dalam pangkalan data MySQL disimpan di suatu tempat di belantara pelayan dan tidak tersedia untuk pemindahan, maka dalam SQLite semuanya sangat mudah: satu fail - satu pangkalan data.

Sudah tentu, pelayan mesti menyokong pemacu SQLite (sama seperti pangkalan data lain), tetapi sebagai peraturan tidak ada masalah dengan ini sekarang.

SQLite membolehkan anda bekerja dengan pangkalan data menggunakan SQL seperti biasa, mencipta jadual, medan, dsb. Secara umum, kita boleh mengatakan bahawa SQLite sama sekali tidak kalah dengan MySQL biasa, dengan pengecualian, mungkin, lebih banyak lagi. kerja lambat dengan pertanyaan SQL "berat" untuk mengemas kini data (masukkan dan kemas kini). Tetapi, sekali lagi, ini adalah untuk tapak muatan tinggi.

Kelebihan besar SQLite ialah kemudahan mudah alihnya. Salin fail - apa yang lebih mudah? Anda tidak perlu risau tentang sandaran, seperti dalam MySQL, anda tidak perlu mencipta pengguna dengan kata laluan pada pelayan, anda tidak perlu mencipta pangkalan data itu sendiri. Dengan SQLite, kami hanya mengambil dan menggunakannya.

Untuk bekerja dengan pangkalan data dalam PHP lebih baik gunakan PDO - Objek Data PHP - inilah yang dipanggil. abstraksi yang menawarkan antara muka tunggal untuk bekerja dengan pangkalan data yang berbeza. Secara teori, menggunakan PDO, anda boleh bertukar kepada mana-mana pangkalan data tanpa menukar pertanyaan SQL, contohnya dari MySQL ke SQLite. Hanya parameter sambungan yang berubah.

Dengan cara ini SQLite akan menyambung melalui PDO. Tiada apa-apa yang diperlukan untuk ini, kerana PDO sendiri sudah disertakan dalam PHP, dan pemacu SQLite biasanya disertakan pada pelayan juga.

Tetapi, sebelum anda memulakan pengaturcaraan, anda perlu mencipta pangkalan itu sendiri. Sebagai contoh, untuk MySQL terdapat phpMyAdmin, di mana anda boleh melaksanakan pelbagai operasi. Terdapat juga perkembangan serupa untuk SQLite, tetapi saya akan menunjukkan bagaimana ini boleh dilakukan melalui pelayar Firefox. Untuk melakukan ini, anda hanya perlu memasang alat tambah.

Untuk menambah alat tambah ini kepada yang utama Menu FireFox(“hamburger”), klik Edit dan seret ikon ke menu.

Ini dipasang dan anda boleh menggunakannya.

Mula-mula, mari buat pangkalan baru data. Dalam SQLite ini fail berasingan, yang akan mempunyai sambungan .sqlite . Pengurus SQLite akan menggesa anda untuk menentukan direktori tempat fail ini akan disimpan. Pilih atau buat katalog baru. Ini tidak begitu penting kepada kami lagi. Akibatnya, fail sqlite dengan pangkalan data baharu akan dibuat.

Fail ini boleh dialihkan (dan dinamakan semula) di mana-mana, dan kemudian dibuka dengan arahan menu Pangkalan data - Sambungkan pangkalan data.

Sekarang anda perlu mencipta jadual (atau jadual) dalam pangkalan data.

Pengurus SQLite mencipta jadual perkhidmatan secara automatik sqlite_XXX. Kami tidak menyentuh mereka dan mereka tidak mengganggu kami.

Jadual dalam pangkalan data adalah di mana maklumat berstruktur. Jadual mesti mempunyai satu set medan dengan sifat yang ditentukan. Sebagai contoh, medan boleh menjadi integer - untuk integer, atau teks - untuk teks. Bilangan medan boleh sewenang-wenangnya dan hanya ditentukan oleh tugas juruweb.

Biarkan, sebagai contoh, kita mempunyai halaman jadual dengan medan

  • ID - nombor unik(autoincrement)
  • slug- pautan
  • teks- teks Percuma
  • hits- bilangan tontonan

Selepas jadual dibuat, perhatikan blok "pernyataan SQL yang mencipta objek ini". Ia akan mengandungi pertanyaan SQL yang boleh digunakan untuk membuat jadual. Ia boleh berguna jika anda perlu membuat jadual dalam pangkalan data melalui PHP.

Tab Lihat dan Carian membolehkan anda mengedit jadual. Sebagai contoh, mari kita buat dua baris di mana medan slug akan berada di rumah dan menghubungi . Ini akan menjadi dua halaman: rumah Dan laman web/hubungan.

Padang hits akan mengandungi kaunter paparan halaman. Teks boleh jadi apa sahaja.

Itu sahaja, asas sudah siap, kini anda boleh menggunakannya.

Mari kita tetapkan tugas. Marilah kita mempunyai laman web mudah yang akan dipaparkan pautan pendek(slug) teks yang sepadan dan bilangan paparan.

Jika kita melakukan ini pada pelayan tempatan, kemudian biarkan tapak berada dalam direktori sqlite. Terdapat subdirektori di dalamnya db, di mana kami akan menyalin kami pages.sqlite.

Kita boleh melakukan penghalaan seperti yang diterangkan dalam artikel sebelumnya. File.htaccess

AddDefaultCharset UTF-8 Options -Indeks RewriteEngine pada RewriteBase /sqlite/ RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule (.*) /sqlite/index.php?$1

DALAM index.php Penghalaan itu sendiri akan diterangkan dalam satu baris:

$halaman = ($p = kunci($_GET)) ? $p: "rumah";

  • menyambung pangkalan
  • kami membuat pilihan di dalamnya dengan $page
  • memaparkan data yang diterima
Saya sengaja memudahkan algoritma supaya tidak merumitkan kod PHP.

Terdapat dua pilihan untuk bekerja dengan pangkalan data. Yang pertama ialah kod PHP asli. Ia tidak begitu rumit, tetapi banyaknya parameter agak menjengkelkan. Oleh itu, pilihan kedua ialah menggunakan perpustakaan pembungkus tambahan. Dengan mereka, kod menjadi lebih ringkas.

Saya akan memberikan kod index.php dalam versi pertama:

setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $sql ="SELECT * FROM pages WHERE slug=:page LIMIT 1"; $sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute(array(":page" => $page)); $rows = $sth->fetchAll(); print_r($baris); // data keluaran di sini ) tangkap(Pengecualian $e) ( echo $e->getMessage(); ) # akhir fail

Untuk pilihan kedua, saya menggunakan perpustakaan php dari tapak labaka.ru, yang saya letakkan dalam subdirektori lib.

kod index.php:

Contoh ini akan memaparkan teks yang berbeza untuk alamat yang berbeza dan kaunter pandangan akan berfungsi. Jika anda perlu menambah halaman baharu, maka anda hanya perlu menciptanya dalam pangkalan data. Untuk kemudahan, dalam Pengurus SQLite anda boleh menyambungkan pangkalan data terus dari direktori tapak.

Terdapat beberapa perkara penting yang perlu diperhatikan di sini.

Pertama sekali, semua kerja dengan PDO harus terkandung dalam try..catch block. Mesej ralat ditangkap dengan cara ini.

Data yang dihantar ke pertanyaan sql mesti melalui pengesahan. Dalam PDO, apabila penyediaan data digunakan (PDO::prepare), pelarian parameter dipaksa. Ini membolehkan anda melindungi daripada kemungkinan suntikan SQL.

Apabila pangkalan data SQLite disambungkan, jika tiada fail pangkalan data, ia akan dibuat secara automatik. Ini adalah asas untuk mencipta pangkalan data sejurus selepas menyambungkannya dan mencipta jadual yang diperlukan dengan pertanyaan sql pertama (yang saya tulis di atas).

Satu lagi nota tentang SQLite. Memandangkan pangkalan data ialah fail, ia boleh dimuat turun dari URL terus melalui pelayar. Oleh itu, adalah lebih baik untuk melindungi direktori dengan fail SQLite melalui .htaccess dengan Deny dari semua baris. Atau letakkannya lebih tinggi daripada direktori www utama.

SQLite boleh berguna untuk tugas kecil yang memerlukan pangkalan data kecil: kaunter, undian, metadata halaman, dsb.

Anda boleh rujuk artikel ini.

Pada hari yang lain saya perlu mencari pengurus pangkalan data SQLite yang kecil tetapi berfungsi untuk Windows. Terdapat banyak tawaran di Internet, daripada program penyemak imbas pangkalan data percuma yang ringkas kepada utiliti yang canggih dengan banyak loceng dan wisel yang perlu dan tidak berguna. Hasilnya ialah ulasan ini. Saya membuat pilihan terakhir saya berdasarkan keperluan berikut untuk program:

  1. Kefungsian. Keupayaan untuk mencipta jadual, pencetus, indeks, dsb.
  2. Berfungsi dengan betul dengan pengekodan UTF-8
  3. harga. Adalah wajar, sudah tentu, bahawa harga menjadi sifar, tetapi dalam alasan anda boleh membayar sedikit.
  4. Ketersediaan antara muka Rusia. Ia tidak penting, tetapi masih lebih mudah untuk bekerja dengan program dalam bahasa ibunda anda.
  5. Keselesaan. Saya tidak mahu menghabiskan masa yang lama membelek-belek antara muka mencari fungsi yang diperlukan.

Memandangkan adalah mustahil untuk memahami keluasannya (saya bercakap tentang bilangan tawaran di pasaran perisian), saya memilih beberapa program yang berbeza dalam keupayaannya dan memasukkannya dalam ulasan ini.

Pelayar Pangkalan Data SQLite

Harga: secara percuma

Mudah untuk menggunakan pelayar pangkalan data SQLite. Memandangkan tujuan utama program ini adalah untuk melihat data, fungsinya adalah terhad.

Menggunakan "Pelayar Pangkalan Data SQLite" anda boleh:

  1. melihat struktur pangkalan data
  2. buat jadual baharu menggunakan wizard
  3. mencipta indeks
  4. lihat data dalam jadual dan laksanakan pertanyaan SQL asas (program digantung sepenuhnya apabila melaksanakan pertanyaan seperti “CREATE TRIGGER...”).

Pelayar Pangkalan Data SQLite memahami UTF-8 dan, jika perlu, membenarkan anda menukar pengekodan. Tiada antara muka Rusia.

Pengurus SQLite3 LITE

Tapak web pengilang: http://www.pool-magic.net/sqlite-manager.htm

Harga: Versi Lite adalah percuma .

Berbanding dengan program sebelumnya, "SQLite3 manager LITE" kelihatan lebih berfungsi. Selain hanya melihat data dalam jadual, anda juga boleh melihat dan mencipta pencetus, indeks, paparan, dsb. Selain itu, anda boleh mengeksport semua metadata pangkalan data. Dalam kes ini, anda boleh mencipta fail data untuk mengeksport jadual ke Paradox dan Interbase.

Program ini juga cuba mencipta sesuatu seperti wizard pertanyaan visual yang serupa dengan MS Access, tetapi, pada pendapat saya, percubaan itu tidak berjaya.

Versi percuma mempunyai satu kelemahan - ia tidak memahami data yang dikodkan dalam UTF-8. Sudah tentu, mungkin untuk menentukan pengekodan pangkalan data semasa membuka fail, tetapi UTF-8 tidak termasuk dalam senarai pengekodan. Saya tidak pernah melihat bagaimana versi Penuh program berfungsi, kerana... di laman web pengeluar syaitan mematahkan kakinya. Terdapat beberapa jenis javascript yang tidak dapat difahami tergantung, memaparkan maklumat yang tidak dapat difahami. Secara umum, tanggapannya ialah projek itu telah berjaya terhenti.

Pentadbir SQLite

Harga: secara percuma

Program yang agak mudah digunakan dan berfungsi. Keseluruhan struktur pangkalan data dibentangkan dalam bentuk pokok objek, yang boleh disesuaikan bergantung pada pilihan anda. Nampaknya Pentadbir SQLite ditulis menggunakan . Antara fungsi tambahan program ini ialah penjanaan kod Delphi daripada serpihan SQL yang dipilih. Untuk membuat jadual, pencetus, dsb. ahli sihir yang mudah digunakan. Apabila menggunakan program ini, saya sangat kecewa dengan kekurangan keupayaan untuk bekerja secara normal dengan UTF-8 dan, sedikit, tetapi masih agak merosakkan kesan antara muka Rusia - beberapa inskripsi tidak sesuai dengan ruang yang diperuntukkan kepada mereka. Jadi semasa menguji saya menggunakan bahasa Inggeris lalai.

Jika menggunakan UTF-8 tidak penting untuk anda, muat turun Pentadbir SQLite - awak tidak akan menyesal.

SQLiteManager

Harga: Versi demo $49 tersedia

SQLiteManager seperti program sebelumnya, ia mempunyai antara muka yang agak mesra pengguna, memahami UTF-8 dengan sempurna dan, bersama-sama dengan ini, mempunyai beberapa "helah" sendiri. Antaranya:

  1. Penganalisis Pertanyaan SQL
  2. Menyemak Integriti Pangkalan Data
  3. Pengoptimuman pangkalan data
  4. Keupayaan untuk menggunakan skrip anda sendiri dalam program (pada pendapat saya, VBScript) untuk meningkatkan kebolehgunaan.

Fungsi tambahan program ini termasuk keupayaan untuk menjana laporan pada pangkalan data. Versi tunjuk cara mempunyai sekatan ketatnya sendiri pada pertanyaan, contohnya, hanya 20 rekod pertama daripada set disertakan dalam keputusan SELECT. Dari segi kemudahan penggunaan, kesan itu sangat dimanjakan oleh kelipan ketika melukis semula tingkap. Komputer saya tidak begitu lama, tetapi walaupun dengan 512 Mb tetingkap video berkelip dengan ketara.

SQLite Maestro

Harga: daripada $79 terdapat versi Percubaan selama 30 hari .

Secara umum, barisan produk dari SQL Maestro mempunyai sejumlah besar produk untuk mentadbir pelbagai jenis pangkalan data, termasuk SQLite. Tanggapan pertama program ini adalah mainan yang dibuat dengan baik untuk renungan dari luar. ya SQLite Maestro mempunyai semua fungsi yang saya perlukan, pokok objek pangkalan data yang mudah, keupayaan untuk mencipta pelbagai objek pangkalan data dengan cepat, dan lain-lain, tetapi selepas itu ia agak mudah digunakan Pentadbir SQLite kemunculan menu mengelirukan berbilang peringkat dengan sekumpulan pilihan berbeza yang, secara umumnya, tidak diperlukan pada dasarnya, entah bagaimana ia menjadi menyeramkan untuk bekerja dengan program ini. Atas sebab ini, ia telah ditetapkan kepada 1 untuk kemudahan. Harganya juga tidak begitu memuaskan - $79. Bagi saya, adalah lebih baik jika mereka memudahkan antara muka dan menurunkan tanda harga kepada sekurang-kurangnya $50, kemudian saya boleh berfikir untuk membelinya.

Pakar SQLite

Harga: Versi peribadi - percuma, versi Profesional - daripada $38

Secara umum, untuk diri saya tidak terlalu banyak perbezaan antara versi Peribadi daripada Profesional . Untuk menyiapkan kerja Pakar SQLite ia mengambil masa tidak lebih daripada lima minit. Program ini mempunyai keseluruhan set fungsi yang saya perlukan. Suka Pakar SQLiteManager boleh menyemak integriti pangkalan data, mengeksport data ke CSV atau format pangkalan data lain, mempunyai editor SQL yang mudah, ahli sihir untuk mencipta jadual, indeks, pencetus, dll. Akses kepada fungsi program agak lebih sukar daripada Pentadbir SQLite , tetapi tidak setakat menakutkan anda hanya dengan penampilan anda :). Secara umum, saya memilih Peribadi Pakar SQLite .

Program inilah yang pada peringkat kerja saya dengan SQLite ini menunjukkan hasil terbaik dari segi kualiti dan kemudahan penggunaan, dan dari segi set semua fungsi yang diperlukan. Sayang sekali, sudah tentu, Pentadbir percuma tidak tahu apa itu UTF-8 - mungkin mereka akan memperbaikinya dalam versi baharu, maka mungkin saya akan mempertimbangkan semula pilihan saya.

Rak buku

Nama: Pangkalan Data dan Delphi. Teori dan amalan

Penerangan Buku ini berdasarkan bahan daripada kuliah dan latihan praktikal yang dibangunkan oleh pengarang, dan menggabungkan asas teori dan aspek praktikal untuk membangunkan pangkalan data hubungan.

Beli pada liter383 gosok.
Pengarang: Anatoly Khomonenko, Vladimir Gofman
Nama: Bekerja dengan pangkalan data dalam Delphi
Penerangan: Membincangkan penggunaan alat Delphi untuk membangunkan aplikasi pangkalan data. Konsep pangkalan data diberikan, elemen dicirikan dan peringkat mereka bentuk pangkalan data hubungan diterangkan, teknologi untuk membangunkan sistem maklumat digariskan, teknik untuk bekerja dengan data, mencipta jadual dan aplikasi pangkalan data, dan menyediakan laporan diliputi.
Beli pada liter151 gosok.

SQLite ialah penyelesaian storan data yang sangat popular, dan sistem pengendalian Android tidak terkecuali. Sistem itu sendiri dan banyak program menggunakan pangkalan data—fail dengan sambungan db—untuk menyimpan maklumat. Apakah jenis data yang terkandung dalam pangkalan data, cara melihatnya, apa yang boleh dilakukan dengannya, dan bagaimana ini mengancam peranti dengan hak superuser - Saya akan bercakap tentang semua ini dalam artikel.

AMARAN

Pengarang artikel itu bukan pakar pangkalan data, dan juga bukan pakar SQLite; dia memahami bahawa sesetengah tindakan boleh dilakukan dengan lebih mudah, dan tidak bertanggungjawab terhadap sebarang paranoia yang mungkin timbul selepas membaca artikel ini. Ia juga amat disyorkan bahawa sebelum sebarang manipulasi anda membuat sandaran pangkalan data yang anda edit.

Bekerja dengan pangkalan data

Untuk bekerja dengan pangkalan data, terdapat banyak perisian yang berbeza untuk kedua-dua komputer dan peranti Android. Pangkalan data aplikasi biasanya terletak di sepanjang laluan /data/data/NAME PAKEJ APLIKASI/pangkalan data. Anda boleh mengetahui nama pakej aplikasi yang anda minati dengan pergi ke "Tetapan -> Aplikasi -> Semua" dan memilih yang dikehendaki (tab "Mengenai aplikasi" akan dibuka), atau dalam bar alamat penyemak imbas pada halaman aplikasi dalam Play Market.

Untuk masuk ke dalam direktori /data/data itu sendiri, anda memerlukan hak superuser, dan Root Explorer akan melakukan tugas yang sangat baik untuk melihat kandungan. Untuk kerja yang lebih mudah, serta untuk mengedit pangkalan data, anda boleh menggunakan, sebagai contoh, SQLite Debugger pada peranti, dan Pelayar DB untuk SQLite pada komputer. Untuk bekerja dengan pangkalan data, anda juga memerlukan BusyBox dipasang dengan applet sqlite3. Semua manipulasi dalam artikel dijalankan pada Nexus 5 dengan perisian tegar 5.1. Pangkalan data yang tersedia untuk dilihat dan diedit, dibahagikan kepada program yang sepadan, boleh dilihat pada peranti dalam program SQLite Debugger yang sama dengan mengklik menu Apl pada skrin utama. Jadi bagaimana pangkalan data boleh berguna kepada anda pada mulanya dan apakah yang boleh dicuri oleh penyerang? Mari cuba fikirkan.

INFO

Terima kasih banyak kepada demosfenus untuk bantuan dalam menulis pertanyaan SQL.

akaun.db

Terletak dalam /data/system/ atau /data/system/users/0 bergantung pada versi perisian tegar dan mengandungi data tentang semua akaun yang didaftarkan pada peranti. Seperti yang anda boleh lihat dalam tangkapan skrin "Struktur Akaun.db" dalam jadual akaun, lima belas akaun pelbagai program dikaitkan dengan peranti saya. Log masuk ditunjukkan untuk hampir kesemuanya; untuk sesetengahnya terdapat kata laluan (bahagian itu telah dialih keluar dalam rajah) dalam bentuk yang disulitkan.


Jadual autokens mengandungi token kebenaran daripada aplikasi, semua perkhidmatan Google, GMS dan aplikasi lain. Pada tab tambahan - kunci dan nilai tambahan, seperti GoogleUserId dan senarai aplikasi/perkhidmatan yang disambungkan. Saya mempunyai kira-kira lima puluh daripadanya, termasuk Talk, YouTube, URL shortener, Wallet dan lain-lain.


Saya tidak akan menyatakan sama ada penyerang boleh menyahsulit kata laluan daripada pangkalan data, tetapi anda boleh mendapatkan akses kepada perkhidmatan dengan hanya memindahkan pangkalan data ke peranti lain. Mari kita cuba menjalankan eksperimen sedemikian. Mari kita ambil asas daripada telefon pintar Nexus 5 dan tablet Nexus 7 dengan sistem yang bersih (5.1 yang baru dipasang melalui flash-all.bat dengan kekunci -w, kemudian akar). Selepas memuatkan sistem yang bersih, klik "Langkau" apabila diminta untuk menambah akaun, kemudian pasang semua perisian yang dinyatakan dalam accounts.db (WhatsApp tidak menyokong kerja pada tablet secara rasmi, jadi muat turun APK daripada Vareznik atau 1mobile.com). Seterusnya, kami mengalih keluar pangkalan data daripada telefon pintar, meletakkannya dalam direktori /data/system/users/0 pada tablet dan but semula.

Selepas memuatkan, kami melihat bahawa akaun Google kami muncul pada tab "Tetapan -> Akaun" dan memberi kami akses penuh kepada semua program yang berkaitan. Mel, yang dengannya anda boleh menukar kata laluan akaun anda, semua kenalan dengan nombor telefon, Google+, foto, fail Google Drive, nota, keizinan yang disimpan dalam Chrome mudah alih dan sebagainya. Satu-satunya saat yang tidak menyenangkan ialah Play Market yang tidak berfungsi, yang memaparkan: "Ralat berlaku semasa menerima data daripada pelayan rpc:s-7:aec-7." Dengan melayari teks ralat, anda boleh menghidupkannya semula dengan mudah.

Aplikasi lain berkelakuan berbeza:

Kesimpulan: tiga program terakhir mudah diakses jika anda mengalih keluar data daripada accounts.db atau pangkalan data itu sendiri.

mmssms.db

Dan inilah keseluruhan surat-menyurat SMS kami. Ia terletak di sepanjang laluan /data/data/com.android.providers.telephony/databases/. Mari cuba ubah sesuatu. Sebagai contoh, mari ambil SMS dari nombor 900 - ini adalah pemberi maklumat Sberbank. Dalam tangkapan skrin "SMS daripada Sberbank sebelum dan selepas campur tangan dalam mmssms.db" di sebelah kiri, mesej terakhir: "ECMC6844 05/02/15 12:49 pembelian 450 rubel 210009 KARI Baki: 3281.16 rubel." Mari tukar kepada mesej yang lebih menarik yang ditunjukkan di sebelah kanan. Untuk melakukan ini, buka pangkalan data pada peranti dalam SQLite Debugger. Kami berminat dengan meja sms. Mari pilih medan yang diperlukan dengan permintaan:

> PILIH _id, thread_id, alamat, tarikh, badan DARI sms WHERE alamat = 900

Program ini mempunyai antara muka berorientasikan sentuhan, dan arahan itu sendiri tidak perlu ditulis secara manual. Ia dimasukkan secara automatik selepas memanggil menu dengan ketik panjang pada nilai atau selepas mengklik pada perkataan yang sepadan di baris atas. Arahan ditunjukkan untuk kemudahan penggunaan pada masa hadapan (contohnya, apabila bekerja dengan konsol atau memanggil skrip dengan Tasker).


Jadi, dengan mengklik pada PILIH dan menyemak medan yang diperlukan, kami mendapat jadual yang mengandungi nombor rekod, nombor utas perbualan, nombor penghantar, tarikh dalam masa UNIX dan teks sebenar SMS (lihat tangkapan skrin "Menukar nilai dalam mmssms .db pangkalan data”). Ketik lama pada entri terakhir. Program ini menawarkan pilihan tindakan. Pilih Kemas kini nilai. Masukkan teks yang kami perlukan. Sebagai analogi dengan SMS sebelum ini, kami akan memindahkan wang melalui ATM. Mari tukar teks kepada "ECMC6844 05.05.15 10:18 mengkreditkan 1000000r ATM 367700 Baki: 1003731.16r." Permintaan itu sendiri akan kelihatan seperti ini:

> KEMASKINI badan SET sms = "ECMC6844 05.05.15 10:18 mengkreditkan 1000000r ATM 367700 Baki: 1003731.16r" DI MANA _id = 196

Dengan mengklik pada segi tiga di sudut kanan atas, kami akan membuat perubahan pada garisan. Mari laraskan masa daripada teks SMS (05/05/15 10:18) ke dalam medan tarikh. Anda boleh menggunakan mana-mana penukar masa UNIX, contohnya Kalkulator cap masa unix dalam talian. Tarikh yang sepadan ialah 1430810300. Tambahkan tiga digit sewenang-wenangnya untuk milisaat ke penghujung dan tampal nilai yang terhasil ke dalam medan tarikh.

> KEMASKINI sms SET tarikh = 1430810300000 DI MANA _id = 196

Dua arahan boleh digabungkan menjadi satu dengan memasukkan medan data boleh diedit yang dipisahkan dengan koma. Klik butang Komit di sudut kanan bawah dan buat perubahan pada pangkalan data. Mari lihat apa yang berlaku. Dalam tangkapan skrin yang sama "SMS daripada Sberbank sebelum dan selepas campur tangan dalam mmssms.db" di sebelah kanan anda dapat melihat bahawa sekarang kami adalah orang kaya dan mempunyai lebih daripada satu juta dalam akaun kami. Kadangkala anda perlu mengosongkan data aplikasi yang memproses SMS untuk perubahan berkuat kuasa.


Mari cuba tambah SMS baharu pada pangkalan data. Untuk melakukan ini, kita memerlukan dua jadual dalam pangkalan data: benang, yang menyimpan nombor urutan dan tajuk (mesej terakhir) perbualan/benang, dan sms, yang menyimpan semua maklumat yang tinggal. Terdapat dua kemungkinan acara di sini.

Pilihan 1: tambahkan SMS pada perbualan sedia ada. Untuk melakukan ini, kami melihat dalam jadual sms untuk nombor utas perbualan - thread_id, sepadan dengan nombor pengirim. Seperti yang anda lihat dalam tangkapan skrin "Menukar nilai dalam pangkalan data mmssms.db," untuk pemberi maklumat Sberbank ini adalah nombor 7. Mari tambahkan baris baharu pada perbualan yang ditunjukkan dalam tangkapan skrin sebelumnya. Isikan medan berikut: thread_id - thread/conversation thread; alamat - nombor penghantar; orang - jika pengirim berada dalam senarai kenalan; tarikh - masa ketibaan SMS; baca - 1 untuk mesej dibaca, 0 untuk mesej belum dibaca; jenis - 1 masuk, 2 keluar (terdapat juga 0 - dihantar dan 4 - draf); badan - teks mesej. Untuk menambah baris baharu pada jadual, anda perlu menjalankan arahan berikut:

INSERT IN TO sms (threadid, address, date, read, type, body) NILAI (7, 900, strftime("%s", "now")*1000, 1, 1, "Message text")

Nilai strftime("%s", "now")*1000 digunakan untuk memasukkan masa semasa. Untuk memasukkan tarikh dan masa tertentu, anda mesti menggunakan masa UNIX dengan tiga belas digit. Hasilnya boleh dilihat dalam tangkapan skrin "Tambahkan SMS baharu pada perbualan sedia ada."


Pilihan 2: tambahkan SMS baharu dan buat urutan perbualan baharu. Jika, dengan analogi, anda menambah baris dengan nombor baharu +7123456789, yang tiada dalam buku alamat dan tidak ada surat-menyurat sebelum ini, maka pengirim akan menunjukkan "Penghantar tidak diketahui" tanpa menunjukkan nombornya (lihat tangkapan skrin " Tambah SMS baharu dan buat urutan baharu” di sebelah kiri ). Untuk mengelakkan ini, anda juga perlu memautkan urutan dan jadual canonical_addresses. Pertama, kami menambah baris dengan nombor ke canonical_addresses, pada masa yang sama menyemak kehadiran nombor ini dalam jadual:

Kesinambungan hanya tersedia kepada pelanggan

Pilihan 1. Langgan Hacker untuk membaca semua bahan di tapak

Langganan akan membolehkan anda membaca SEMUA bahan berbayar di tapak dalam tempoh yang ditetapkan. Kami menerima pembayaran melalui kad bank, wang elektronik dan pindahan daripada akaun pengendali mudah alih.