איפסתי את מכשיר הטלפון אנדרואיד M השורשי שלי למפעל, אך כעת אני מבין שיש קובץ בספרייה / נתונים .
האם ניתן ליצור תמונה (.img או משהו דומה) של מחיצת / data כדי שאוכל להריץ תוכנת שחזור עבור ext4 על אותה תמונה? יש לי מעט ידע על ADB.
איפסתי את מכשיר הטלפון אנדרואיד M השורשי שלי למפעל, אך כעת אני מבין שיש קובץ בספרייה / נתונים .
האם ניתן ליצור תמונה (.img או משהו דומה) של מחיצת / data כדי שאוכל להריץ תוכנת שחזור עבור ext4 על אותה תמונה? יש לי מעט ידע על ADB.
ראשית לבירור שורש
ו נתונים
:
/
של מכשירי Android היא קריאה -מערכת קבצים פסאודו (זמנית) בלבד ( rootfs
) שחיה בזיכרון RAM ונעלמת כאשר המכשיר כבוי. כאשר המכשיר מופעל, הוא מופק שוב מ- initramfs
שחי במחיצת boot
יחד עם הליבה. מערכת
מותקנת בשורש /
. / 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
. DISK DUMP ( dd
)
ברגע שמכשיר החסימה ידוע, אתה יכול להשתמש בפקודה dd
מ:
מכיוון שמחיצת 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 שחזור קבצים לפרטים נוספים.
קשורים:
איפה בדיוק ב- 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 shell dd if = / data of = / sdcard / data. img
יתכן שתצטרך לאתר את הספרייה הנכונה שלך.
ואז תוכל להרכיב את ה- .img במחשב ולעשות את ההתאוששות .. אני לא בטוח איך כדי להרכיב את קובץ ה- img אם המחיצה היא ext4 אז זה ככל שהתשובה הזו מגיעה.
אתה יכול לחילופין להשתמש באפליקציה בשם Disk Digger .. יש לו את היכולת לסרוק את מחיצת הנתונים באופן חי,. יש צורך בגישת שורש