שְׁאֵלָה:
כיצד לשחזר קובץ שנמחק / ממחיצת הנתונים?
K. Hatake
2019-02-21 14:56:50 UTC
view on stackexchange narkive permalink

איפסתי את מכשיר הטלפון אנדרואיד M השורשי שלי למפעל, אך כעת אני מבין שיש קובץ בספרייה / נתונים .

האם ניתן ליצור תמונה (.img או משהו דומה) של מחיצת / data כדי שאוכל להריץ תוכנת שחזור עבור ext4 על אותה תמונה? יש לי מעט ידע על ADB.

שכפול: https://android.stackexchange.com/q/15869/218526
שכפול: https://android.stackexchange.com/q/25948/218526
שתיים תשובות:
Irfan Latif
2019-02-21 20:06:43 UTC
view on stackexchange narkive permalink

ראשית לבירור שורש ו נתונים:

  • ספריית שורשים / של מכשירי Android היא קריאה -מערכת קבצים פסאודו (זמנית) בלבד ( rootfs ) שחיה בזיכרון RAM ונעלמת כאשר המכשיר כבוי. כאשר המכשיר מופעל, הוא מופק שוב מ- initramfs שחי במחיצת boot יחד עם הליבה.
    במכשירים חדשים יותר עם system-as-root, מחיצת מערכת מותקנת בשורש / .
  • ספריה / data היא נקודת הר, שבה המחיצה הגדולה ביותר , המכונה בדרך כלל userdata . מחיצה זו מכילה את כל אפליקציות המשתמש, הנתונים שלהם (הגדרות, בסיסי נתונים, מטמונים, קבצים זמניים וכו '), נתוני אפליקציות המערכת וכל התצורות האחרות שאנו מבצעים באמצעות הגדרות . / data / media / 0 היא הספרייה שאנו רואים כ- / sdcard או / storage / emulated / 0 דרך emulation.

... היה קובץ בספריית / data שאני זקוק לו. האם ניתן ליצור תמונה (.img או משהו דומה) של ספריית השורש ...

אם קובץ נמחק מ / data , אתה צריך כדי ליצור dump של מחיצת נתונים , ולא של ספריית הבסיס.

אתה יכול לעשות זאת במספר דרכים המתוארות להלן. כולם דורשים גישה לשורש .


אך קודם כל ראה תשובה זו כדי לוודא שהנתונים שלך ניתנים לשחזור.
בקיצור, התאוששות אפשרית פחות או יותר רק אם ( 1) :

  • הנתונים שנמחקו שלך לא עברו TRIM או נשלחed .
  • ולא ביצעת איפוס להגדרות היצרן ב- / data מוצפנים מחיצת .

מה עליך לעשות באופן מיידי:

  • כבה את הטלפון כדי לוודא שהנתונים שנמחקו אינם מוחלפים.
  • אל תתקין אפליקציות לשחזור נתונים במכשיר, זה יכול להזיק יותר מאשר להועיל.
  • הרכיב את מערכת הקבצים (אם נדרש) במצב התאוששות (או במחשב האישי) רק עם אפשרויות ro, nodiscard .

מציאת מכשיר בלוק:

על מנת לגשת למחיצת userdata , עליך למצוא את מכשיר החסימה שלה. אם יש לך גישה לשורש, תוכל לעשות זאת ממחיצות מותקנות:

  ~ # mount | grep 'on / data' / dev / block / mmcblk0p ... on / data type f2fs (rw, nosuid, nodev, ...)  

במכשירי Qualcomm הוא ממוקם ב / dev / block / bootdevice / by-name / userdata (symlink). עבור MediaTek ( MTK ) ו- SoC אחרים, הנתיב שונה במקצת. אתה יכול למצוא את כל התקני החסימה או את הספריה לפי שם באמצעות הפקודה find :

  ~ # find / dev -type b ~ # find / dev -type d -name 'by-name'  

או על ידי פגיעה וניסוי:

~ # ls -d / dev / * / by -name ~ # ls -d / dev / * / * / by-name ~ # ls -d / dev / * / * / * / by-name

הערה:

  • אם למחיצת / data שלך יש הצפנת דיסק מלא (FDE) ואתה לא מצפין אותה בשחזור, DMCrypt תיצור מכשיר חסימה ב- dev / block / dm-0. השתמש בזה במקום userdata .
  • כדי למנוע אובדן נתונים, מומלץ ליצור dump כאשר המחיצה אינה מותקנת כלומר במצב התאוששות.

יצירת מחיצת מחיצה:

  • DISK DUMP ( dd )
    ברגע שמכשיר החסימה ידוע, אתה יכול להשתמש בפקודה dd מ:

    • מעטפת ADB (מערכת הפעלה או התאוששות מותאמת אישית)
    • אפליקציית אמולטור מסוף כמו Termux

    מכיוון שמחיצת userdata היא המחיצה הגדולה ביותר (כל שאר המחיצות כמעט ואינן משתמשות באחסון כולל של 5GB), אינך יכול לזרוק אותה לפנימי שלך זיכרון. יש צורך בכרטיס SD חיצוני עם קיבולת גדולה יותר.

    ליצירת dump:

      ~ # dd if = / dev / block / bootdevice / by-name / userdata of = /path/to/ext_sdcard/data.img
  • ADB
    אם אינך רוצה להשתמש בכרטיס SD חיצוני, תוכל גם לזרוק את המחיצה ישירות למחשב האישי. ראשית אתה זקוק להתקנת adb עובדת, הפועלת כשורש. אז זה יכול לשמש במספר דרכים:

      ~ $ adb exec-out dd if = / dev / block / bootdevice / by-name / userdata > data.img  

    * וודא ש- adb בינארי שלך (ב- Windows או Linux) תומך ב- exec-out.

    אבל אתה עלול בסופו של דבר לקבל נתונים פגומים בעת כתיבת מחיצה בגודל גדול ל STDOUT של המסוף מכיוון שיש בעיות בסוגי מעבר שורה ( CR LF קוד>). כמו כן, ניתן להוסיף לקובץ STDOUT או STDERR מהתוכניות המעורבות אם לא מופנה אל / dev / null . אפילו בתים נפרדים בודדים עשויים להפוך את מערכת הקבצים לבלתי ניתנת להרכבה. ראה שאלה זו להפניה.
    כדי להימנע מתווים לא רצויים, השתמש ב stty raw ו / או dos2unix:

      ~ $ adb shell 'stty raw && dd if = / dev / block / bootdevice / by-name / userdata' > data.img  

    אבל הדרך הכי פשוטה היא:

      ~ $ adb pull / dev / block / bootdevice / by-name / userdata data.img  

    ראה תשובה זו ל פרטים נוספים.

  • STREAM OVER TCP
    כדי למנוע את הסיבוכים הקשורים למסוף שתוארו לעיל או אם מסיבה כלשהי adbd לא ניתן להריץ כשורש, ניתן גם ליצור שרת TCP מינימלי להעברת נתונים. העבר יציאה מהטלפון למחשב והפעל netcat שרת TCP במצב האזנה:

      ~ $ adb הפוך tcp: 1024 tcp: 1024 ~ $ nc -v -l - עמ '1024 < / dev / null | pv -ab >data.img  

    בטלפון:

      ~ # cat / dev / block / bootdevice / by-name / userdata | busybox nc 127.0.0.1 1024  
  • USB TETHERING (RNDIS)
    כדי להימנע משימוש ב- ADB בכלל, ניתן לקשור קשירת USB משמש לספק קישוריות רשת:

      ~ # cd / sys / class / android_usb / android0 ~ # echo -n 0 >enable ~ # echo -n rndis, adb >functions ~ # echo -n 1 >enable  

    * ניתן לשנות קבצים אחרים כמו {iSerial, iProduct, iManufacturer} ו- f_rndis / {ethaddr, יצרן, wceis, rndis_transports, max_pkt_per_xfer} בספרייה לעיל אם נדרש. sup>

    הוסף כתובת IP:

      ~ # כלל עסוק ip הוסף בדיקת עיקרית ~ # כתובת ipbox ip הוסף 192.168.1.1/30 dev rndis0 ~ # ערכת קישור ל- ipboxbox מוגדרת rndis0 למעלה  

    הוסף IP באופן ידני למחשב האישי (אין שרת DHCP):

      ~ $ sudo ip address add 192.168.1.2/ 30 dev usb0 ~ $ nc -v -l -p 1024 < / dev / null | pv -ab >data.img  

    בטלפון:

      ~ #boxbox nc 192.168.1.2 1024 < / dev / block / bootdevice / by-name / userdata  

    באותו אופן ניתן גם להשתמש ב rclone rcat להעברת dump דרך WebDAV או FTP או SFTP. ראה כיצד להזרים גיבוי מוצפן של המכשיר כולו למארח מרוחק?

  • USB MASS STORAGE (UMS) שיטה זו שימושית אם אינך רוצה ליצור מחסן של מחיצה, במקום לגשת למחיצה ישירות במחשב האישי.

    UMS מושבת מושבת כברירת מחדל במכשירי Android חדשים יותר ו רק MTP מופעל. עם זאת ניתן להפעיל זאת במצב התאוששות מותאם אישית:

      ~ # mountpoint / data && umount / data ~ # echo '0' > / sys / class / android_usb / android0 / enable ~ # echo ' / dev / block / bootdevice / by-name / userdata '> / sys / class / android_usb / android0 / f_mass_storage / lun / file ~ # echo' mass_storage '> / sys / class / android_usb / android0 / פונקציות ~ # echo' 1 '> / sys / class / android_usb / android0 / enable  

    * יש לבנות את הליבה עם CONFIG_USB_F_MASS_STORAGE ו- CONFIG_USB_G_ANDROID . למכשירים הבנויים עם ממשק CONFIG_USB_CONFIGFS_MASS_STORAGE / config יש להשתמש במקום / sys .
    * הנתיבים עשויים להשתנות בהתאם למכשיר sup>

    כעת userdata יופיע כמחיצה במחשב לינוקס בדיוק בזמן שאנחנו מחברים כונן USB. אם / dev / sda הוא כונן הדיסק הקשיח, בדרך כלל / dev / sdb תהיה המחיצה userdata . תוכל למצוא זאת באמצעות הפקודה blkid :

      ~ # blkid | grep userdata / dev / sdb: PARTLABEL = "userdata" PARTUUID = "..."  

    באפשרותך להריץ תוכנת שחזור ישירות במכשיר החסימה או לעלות על מערכת הקבצים (אם יש צורך) או אולי גם ליצור dump.

כיצד לשחזר נתונים?

יש בעצם שתי דרכים לשחזר נתונים שנמחקו כאמור ב תשובה זו: שיטת גילוף ודרך מערכת קבצים.

כלי השחזור לרוב אינם זקוקים להרכבת מערכות קבצים, אך אם הדבר נדרש, הדבר צריך להיעשות במחשב לינוקס מכיוון ש- Windows אינו תומך ב- ext4 קוד> או f2fs באופן מקורי, ומכאן שהכלים אינם זמינים בקלות AFAIK.

אם מישהו הצליח ליצור גישה ברמת חסום / יומן בהצלחה מערכת קבצים לינוקס / אנדרואיד לשחזור נתונים ב- Windows דרך Ext3Fsd או כל מנהל התקן אחר, יידע אותי כדי שאוכל לעדכן את התשובה.

מופעל ב- Linux תוכלו להשתמש בכלים כמו extundelete לשחזור נתונים באמצעות יומן מערכת הקבצים:

  ~ # extundelete --restore-all data.img 

או לשחזור נתונים ישירות באמצעות UMS:

  ~ # extundelete --restore-all / dev / sdb  

מכיוון שביצעת איפוס למפעל שמוחק את מערכת הקבצים, שקול שיטת גילוף בעזרת כלים כמו testdisk או scalpel:

  ~ # testdisk data.img  

באותו אופן תוכל להשתמש בכל כלי שחזור נתונים אחר. ראה ArchWiki שחזור קבצים לפרטים נוספים.


קשורים:

פשוט שכחת לספר הר fstype.השתמש בהרכבה עם '-t ext4 -o לולאה, ro, noexec, noload' ובמקום 'adb exec-out' אתה יכול פשוט להשתמש 'adb pull / dev / block / bootdevice / by-name / userdata' או 'adb pull/ dev / block / dm-0` https://digital-forensics.sans.org/blog/2011/06/14/digital-forensics-mounting-dirty-ext4-filesystems
@alecxs אזכור fstype אינו הכרחי;הר בינארי יכול לנחש מספר מערכות קבצים נפוצות.אין `-t` למעשה` -t auto`.ראוי להזכיר 'adb pull'.תודה שציינת.
הר אינו יכול לזהות fstype עבור תושבות לולאה, במיוחד עבור תושבות מלוכלכות (ראה קישור)
@alecxs אתה בטח צודק, אם כי הקישור שציינת מיושן מעט.אבל מעולם לא נתקלתי במצב כזה ש- 'mount' לא יכול היה לנחש את סוג מערכת הקבצים כולל 'ext4', 'f2fs', 'ntfs' ו- 'exfat', לא מקובץ לולאה או ממכשיר חסימה.[mountbox] (https://github.com/yashdsaraf/busybox/blob/1_29_stable/util-linux/volume_id/ext.c#L58) כמו גם [mountboxbox] (https://android.googlesource.com/platform/external/toybox/+/refs/tags/android-9.0.0_r47/toys/other/blkid.c#104) יכול לזהות את סוג מערכת הקבצים.
שניהם צריכים להתמודד עם אובדן קבצי loopback באופן אוטומטי (ראה [זה] (https://github.com/yashdsaraf/busybox/blob/1_29_stable/util-linux/mount.c#L2031) ו- [זה] (https: //android.googlesource.com/platform/external/toybox/+/refs/tags/android-9.0.0_r47/toys/lsb/mount.c#33)).הדבר נכון גם לגבי בינארי מלא 'הר' מ- util-linux.כך שאם מערכת הקבצים אינה פגומה והר בינארי אינו באגי, אני לא חושב ש'-t 'נחוץ.
נבדק בלי -t ועובד!עם זאת, בתסריטים הפליליים שלי קיבלתי לעתים קרובות "ויכוח לא חוקי" כאשר רק-חסר, ועשיתי כמה בדיקות והבנתי שזה קורה עבור הרכבה בלולאה.מצד שני ידעתי כי לולאה אינה הכרחית עבור עסוק בוקס, אלא הכרחית עבור הר בינארי.יתכן שהדברים השתנו בינתיים, או שזה דבר מיוחד של הדביאן הישן שלי
@alecxs אתה צודק.לינוקס 'mount' בינארי יש בעיות בהרכבת קובץ לולאה b / c של ההבדל בין '/ dev / loop * `ו-` / dev / block / loop * `.'mountbox mount' עושה 'mknod' לפני 'LOOP_SET_STATUS' אם מכשיר הלולאה אינו קיים.'הר' של לינוקס תמיד מצפה להתקנים של (64) התקני לולאה.
האם extundelete תואם ל- f2fs?
@alecxs לא.מחיקת EXT מוחקת קריאה של מידע נתונים שנמחק או פגום מתוך היומן של מערכות הקבצים EXT [N] של לינוקס.F2FS אינו יומן אלא מערכת קבצים מובנית ביומן, כלומר בערך אומר שמערכת הקבצים כולה היא יומן.כך שהכלים שפותחו עבור מערכת קבצים אחת כלל לא יזהו את השני מלבד ה- ioctl הנפוצים וכו '.
Gadget Guru
2019-02-21 16:03:29 UTC
view on stackexchange narkive permalink

איפה בדיוק ב- DATA? האם זה נמצא בכרטיס SD המדומה?
אם זה נמצא בכרטיס ה- SD המדומה, אתה יכול להסיר את כרטיס ה- SD החיצוני שלך ולהרכיב את המכשיר במצב USB אחסון המוני ... אתה יכול השתמש בתוכנת שחזור בחינם כמו Recuva ccleaner.com/recuva

עם זאת, אם הקובץ שלך אינו נמצא בכרטיס ה- SD המדומה, יהיה עליך לגבות את מחיצת הנתונים כפי שציינת.

לשם כך, באפשרותך להשתמש במכשיר עצמו להפעלת פקודת DD או CAT כדי לכתוב את הנתונים לקובץ .img בכרטיס ה- SD שלך.

במכשיר
באמצעות אמולטור טרמינל

  • אתר את ספריית המחיצות שלך לפי שם

    getprop ro.frp.pst

(זה יקבל את / dev / block / platform / DEVICE / by-name directory עבור frp - שנה את השם לנתונים)
אתה יכול פשוט להשתמש / data אחרת .

  dd if = / data of = / sdcard / data.img 

If = קובץ קלט - Of = קובץ פלט

אתה יכול גם להשתמש ב- ADB

דרך המחשב

  • התקן ADB (לא כל ה- SDK אלא רק ADB)

שימוש בהנחיות פקודה או מעטפת חשמל

  adb shell dd if = / data of = / sdcard / data. img  

יתכן שתצטרך לאתר את הספרייה הנכונה שלך.

ואז תוכל להרכיב את ה- .img במחשב ולעשות את ההתאוששות .. אני לא בטוח איך כדי להרכיב את קובץ ה- img אם המחיצה היא ext4 אז זה ככל שהתשובה הזו מגיעה.

אתה יכול לחילופין להשתמש באפליקציה בשם Disk Digger .. יש לו את היכולת לסרוק את מחיצת הנתונים באופן חי,. יש צורך בגישת שורש

`אם = / נתונים` לא יעבוד, זה רק נקודת הר, ולא התקן החסימה.'dd' זורק קבצים, לא ספריות.שנית, ניתן להשתמש באחסון המונים מסוג USB גם להרכבה או לזרוק מחיצת 'נתונים' מלאה מההתאוששות המותאמת אישית ישירות למחשב האישי.
אני מצטער, לא הבנתי שאתה משתמש בשחזור בהתאמה אישית ... זה פשוט ביותר, פשוט גבה את זה!.... אני יודע `אם = / נתונים` לא יעבוד, לכן אמרתי למצוא את הספרייה` לפי שם '.
יש לי תפיסה שגיבויים של אנדרואיד (שנוצרו בדרך כלל על ידי 'tar`ring) מכילים רק קבצים / ספריות, ולא את פרטי רמת האינוד של מכשירי החסימה הנדרשים לביטול מחיקה של משהו.
לא אל תשתמש ב- TAR, השתמש ב- DD או Cat כדי ליצור את התמונה.
אתה לא מבין את השמות, dd לא עובד בספריות רק על קבצים, 'לפי שם' הוא קישור סימני לקובץ ולא לספריה.בלינוקס הכל קובץ.if = מייצג קובץ קלט
אה כן ... 'חתול' נכון ו (לפי שם) נותן לך ייצוג קובץ של ה-. Img ... קובץ.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 4.0 עליו הוא מופץ.
Loading...