उपयोगकर्ताडटा विभाजन से हटाई गई सामग्री पुनर्प्राप्त करें?


23

तो यह पता चला, कि अमांडा ने एक गोरा पल बिताया और गलती से एसएमएस ऐप में अपने सभी धागे हटा दिए। हाँ, "सभी थ्रेड हटाएं" संभवत: आह्वान करने के लिए इतना आसान नहीं होना चाहिए।

फोन का ZTE ब्लेड, इसके सभी उपयोगकर्ता डेटा के साथ असुविधाजनक रूप से एक YAFFS2 फाइल सिस्टम पर संग्रहीत है।

मेरे पास एक पुराना बैकअप है, लेकिन मुझे जो एसएमएस ठीक करना है, वह तब से है। सिम कार्ड पर शायद कुछ हैं, इसलिए मैंने एक सिम रीडर का ऑर्डर दिया है। मुझे संदेह है कि बीस या तो यह ज्यादातर नेटवर्क ऑपरेटर स्पैम है, वैसे भी।

तो, मैं अपने अप्रभावी बैकअप योजना को अभिशाप देता हूं और भविष्य में जीएमआईएल को एसएमएस का समर्थन करने की कसम खाता हूं।

इस बीच, मैं mmssms.db को पुनर्प्राप्त करने का संकल्प करता हूं, या इसके बारे में क्या बचा है।

सबसे पहले, मैं adb कनेक्ट करता हूं और mounts की जांच करता हूं, फिर एसडी कार्ड पर एक छवि को ब्लॉक कॉपी करने का प्रयास करता हूं:

dd if=/dev/block/mtdblock6 of=/sdcard/data.img 

ऐसा भाग्य नहीं। मेरा कारण है कि जबरन अलग करना एक बुरा विचार होगा, और शायद किसी भी मामले में काम नहीं करेगा।

इसलिए, मैं व्यस्त कार्ड की एक स्टैटिकली लिंक्ड एसडी कार्ड पर अपलोड करता हूं और कन्टेंट = नोयरर विकल्प का उपयोग करता हूं।

मैंने जो समाप्त किया वह एक फाइल थी जो एसडी कार्ड के भरे जाने तक आकार में बढ़ती रही।

मैं क्या गलत कर रहा हूं? क्या ClockworkMod सही अर्थों में एक छवि लेता है या यह सिर्फ फाइलों को वापस करता है और उन्हें एक छवि में पैक करता है? वहाँ एक YAFFS2 वसूली कार्यक्रम है? (मैंने जो दो पेपर पढ़े हैं वे संभव प्रतीत होते हैं लेकिन मैंने PoC कोड भी नहीं देखा है)

किसी भी सुराग कृतज्ञता प्राप्त /

संपादित करें: फोन निहित है। बहुत जड़ दिया :)

आगे संपादित करें:

अधिकांश संदेश mmssms.db-wal में पाए गए:

ls -al /data/data/com.android.providers.telephony/databases
drwxrwx--x    1 radio    radio         2048 Jul 17 20:16 .
drwxr-xr-x    1 radio    radio         2048 Oct 26  2011 ..
-rw-rw----    1 root     root         60416 Jul 17 20:16 mmssms.db
-rw-rw----    1 radio    radio        32768 Jul 17 16:18 mmssms.db-shm
-rw-rw----    1 radio    radio       628832 Jun 30 19:23 mmssms.db-wal
-rw-rw-rw-    1 root     root         60416 Jul 17 20:16 mmssms.db.xxx
-rw-rw----    1 radio    radio       132096 Jun 18 13:25 telephony.db
-rw-rw----    1 radio    radio        32768 Jul 16 22:14 telephony.db-shm
-rw-rw----    1 radio    radio       106928 Jul 16 22:14 telephony.db-wal

किसी भी भाग्य के साथ, एसएमएस बैकअप और पुनर्स्थापना एक मर्ज की अनुमति देगा।


क्या आपका ब्लेड जड़ है?
t0mm13b

@ मिंडी: आपके अन्य प्रश्न के बारे में: Yaffs2 एक फ्लैश फाइल सिस्टम है जिसमें अंतर्निहित फ्लैश स्टोरेज के लिए लेवलिंग प्रोटेक्शन है (इसमें एक लॉग स्ट्रक्चर्ड डेटा मॉडल है जहां राइट्स जगह में नहीं हैं, लेकिन इसके बजाय हमेशा "लॉग" की पूंछ पर जाएं। और पुराने अप्रयुक्त स्थान को सिर से पुनः प्राप्त किया जाता है। बहुत सरलता से समझाया गया है)। यदि आपने बहुत अधिक नहीं लिखा है तो आप शायद फ़ाइलों के पुराने उदाहरण पा सकते हैं। हटाए जाने से ठीक पहले पूंछ के भाग की अनदेखी करके आप भाग्यशाली हो सकते हैं। YAFFS2 के लिए अब तक फ़ाइल की नक्काशी नहीं की गई है।
CE4

जवाबों:


19

Sms डेटाबेस स्टोर किया जाता है /data/data/com.android.providers.telephony/databases/mmssms.dbजिसमें आप क्या करना चाहते हैं।

सबसे अच्छी बात, यह है, अभी तक यूएसबी केबल में प्लग न करें:

  1. ClockWorkmod रिकवरी में रिबूट।
  2. Mounts और Storage में जाएं
  3. चुनते हैं mount /data
  4. USB में प्लग करें
  5. विंडोज़ कमांड शेल या टर्मिनल से, adb shell
  6. चूंकि आप क्लॉकवर्कमॉड रिकवरी में हैं, आप डिफ़ॉल्ट रूप से रूट हैं, अब यह करें cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. इसमें adb shellटाइप करके बाहर निकलें :exit
  8. अब आपका डेटाबेस SD-Card पर कॉपी हो गया है।
  9. वापस घड़ी की कल वसूली और सिर्फ रिबूट से, वसूली unmount /dataआप के लिए होगा ।

इस स्तर पर अब आपके डेटाबेस की नकल की जाती है। और SqliteMan जैसे कुछ का उपयोग करके सुरक्षित रूप से निकाला जा सकता है । HTH।

संपादित करें: ओपी यह जानने के लिए इच्छुक था कि एक डंप कैसे किया जा सकता है। - पढ़ते रहिये :)

जब आप इसे लागू करते हैं (USB प्लग के साथ और उसके भीतर adb shell)

sh-4.1# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00500000 00020000 "recovery"
mtd1: 00500000 00020000 "boot"
mtd2: 00120000 00020000 "splash"
mtd3: 00080000 00020000 "misc"
mtd4: 02580000 00020000 "cache"
mtd5: 0d700000 00020000 "system"
mtd6: 0cb80000 00020000 "userdata"
mtd7: 00020000 00020000 "oem"
mtd8: 00180000 00020000 "persist"

यह जानते हुए कि जो विभाजन की कुंजी है .. तो मेरी ब्लेड से उदाहरण के लिए, मैं देख सकता हूँ कि userdata विभाजन पर है mtd6, जिसमें वास्तविक विभाजन जानकारी में पाया जा सकता /dev/mtd/mtdXइसलिए का उपयोग कर ऐसा करने की अपनी बात cat:

cat /dev/mtd/mtd6 > /sdcard/myuserdata.dump

और वहां से, /sdcard/myuserdata.dumpउस विभाजन पर उपयोग की जाने वाली फाइल सिस्टम के आधार पर, इसे लूप-बैक के माध्यम से माउंट किया जा सकता है। माइलेज अलग-अलग होगा, निश्चित रूप से, चिकन और अंडे की स्थिति, उस सब को करने के लिए, हैंडसेट को रूट करना होगा।


हटाए गए एसएमएस के सभी सहायक (या कम से कम अधिकांश) mmssms.db-wal में थे: उपयोगी सूचक के लिए बहुत धन्यवाद!
मैंडी

मेरा सवाल खड़ा है, हालांकि - क्या यह एक छवि को डंप करना संभव है अगर स्थिति ने इसकी मांग की?
मैंडी

हां, मैं उत्तर में संशोधन करूंगा ... :)
t0mm13b

@ t0mm13b अब यह एक शानदार जवाब है :) +1
ज़ूल

1
आप, श्रीमान, '# @!% Sir कमाल के हैं। खुद को मारने के लिए नहीं ढूंढने के लिए -iname और grep के साथ, लेकिन घबराहट आप के लिए है। इसके अलावा, मैंने एक उचित ईजीट को अपने सभी एसएमएस को स्ट्रिंग्स में पाइप करने और उन्हें पढ़ने के लिए कम देखा है, इसलिए धन्यवाद।)
मैंडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.