BinaryVision

Tag: Firmware

WDTV HD Media Player

by on ספט.18, 2009, under כללי

מבוא

WDTV ליד כונן 2.5 אינצ'

WDTV ליד כונן 2.5 אינצ'

לאחרונה אולי שמתם לב, אולי לא, אני נמשך יותר לחומרה והאקינג שלה.
בין אם זה OpenMoko, או הנתב של Edimax, או במקרה הזה נגן המדיה של Western Digital.
כן כן, של Western Digital, יצרנית כוננים קשיחים…

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

אפשרויות חומרה

  • מחשב HTPC שאני מרכיב בעצמי

אפשר להרכיב מחשב במארז קטן שנראה כמו מארז של מכשיר Media Center כזה, ולהרכיב אותו ככה שיוכל לנגן HD.
מבדיקה שאני עשיתי מחשב כזה עולה בסביבות ה1600-2000 שקל מינימום, והוא עם מאווררים על המארז, ולא בטוח עד כמה הוא מסוגל לנגן HD מלא באמת.

  • XBox 360

מסוגל לנגן HD, תומך בהרבה פורמטים, יש לו ממשק מוכן למדיה סנטר, עולה גם אותו דבר כמו המחשב.. בערך 1600 שקל.
וגם מקבלים את הערך המוסף של משחקים על הטלוויזיה.
החסרון הוא כל הנעילות שמיקרוסופט עשו לו, ולך תדע מתי הם יחסמו אותך אם תשתמש במשחקים פרוצים.

  • PS3

כמו XBox עולה קצת יותר (1800 ש"ח), וכרגע לא נראה לי שיש פריצה בשביל המשחקים שלו, אז משחקים מקוריים עולים הרבה.
לפי מה שקראתי הדבר הזה מפלצתי ומתחממם מהר, אבל מה, יש לו כונן Blu Ray, זה טוב לסרטים.

  • WDTV HD Media Player

כשראיתי את הדבר הזה לא האמנתי שהוא מנגן HD, אבל מסתבר שהוא כן.
הוא ממש קטן, ללא מאוורר, מעוצב בצורה טובה, וממלא את המטרה היחידה שלו בחיים, לנגן HD מתוך USB Mass Storage Device.
הדבר הזה פותח עולמות חדשים, עולם של להביא את הנגן שלך לחברים שלך יחד עם סרטים.
אתה לא תסחב עם מחשב או XBox או PS3, אבל את הדבר הזה יותר פשוט לקחת מכונן קשיח חיצוני 3.5 אינצ', הוא יותר קטן ממנו.

למה WDTV

WDTV

WDTV


הוא זול, 650 ש"ח ויש לך את הדבר הזה מוכן ומזומן להריץ לשדר דברים מעל HDMI.
יש לו יציאת Composite למקרה ולמישהו אין HDMI.
יש לו יציאה אופטית לAudio, מה שפותח את האפשרויות של קולנוע ביתי.
הוא מריץ לינוקס, על מעבד שעובד על MIPS.

עולם האפשרויות

הפעם אני לא הראשון שעושה לזה האקינג, וכל העולם כבר כותב לזה Modים וFirmware משודרג.
אפשר למצוא הרבה מאד דברים כאן: http://www.wdtvforum.com
עכשיו שאמרנו שזה מריץ לינוקס בואו נעבור על כמה רעיונות שאפשר לעשות איתו.

  • לחבר כרטיס רשת לUSB

ניגון מכונן רישתי, סטרימינג מהמחשב, הורדת דברים ישירות אליו, Youtube, Trailers, Bittorrent, וכו'

  • לחבר כרטיס רשת אלחוטי

אומנם יותר בעייתי לעשות סטרימינג מעל אלחוטי, אבל לשלוט עליו ולהעביר אליו דברים מהמחשב בצורה פסיבית, זה מצויין.

  • לחבר USB Hub

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

  • מקלדת עכבר וDebian

מי שלא יודע יש Debian על כל חבילותיו לMIPSEL, אז אפשר כנראה להתקין את זה עליו ופשוט יש לך מחשב חזק עם לינוקס שמסוגל לנגן HD.
תחבר אליו מקלדת אלחוטית, עכבר אלחוטי, ויש לך מחשב סלוני עם מסך ענק. 🙂

לסיום

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

14 Comments :, , , , more...

Reversing, והכוח של זה

by on אפר.08, 2009, under כללי

בהמשך לפרק הקודם, היום אני הולך להראות לכם מה מצאתי במערכת הקבצים של הFirmware הבינארי שהורדתי מהאינטרנט.
דבר ראשון נתחיל מהאתר וקבצי הASP שלו, שאני יכול לגלוש אליהם כמובן דרך ממשק הניהול.

ממשק הWeb

רשימת קבצים

רשימת קבצים

רשימת הקבצים שמצאתי נמצאת כאן בתמונה.

דברים מעניינים שקופצים ישר לעין:

  • x.asp

נראה כאילו הוא אמור להציג סיסמה כלשהיא, ננסה להכנס לדף ישירות דרך הנתב:
http://192.168.2.1/x.asp
ומקבלים לא רק את הסיסמה שלי להתחברות לנתב, אלא גם את הסיסמה של איזשהו משתמש super.
מה?! אתם בטח צוחקים עלי….

x.asp

x.asp

ניסיתי להתחבר לממשק עם המשתמש super, והסיסמה שיש שם, אבל זה לא נתן לי להתחבר, צריך עוד לראות איפה משתמשים בזה.
(ד"א הסיסמה מצונזרת בכוונה)

  • test.asp

לא נראה מעניין יתר מדי,
נראה כמו חלק מהממשק הוספת שיתוף בNAS.

  • users

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

 User1
 User2
 user3
 user4
 user5
 user6
 user7
 user8
 user9

האל יודע למה, בינתיים לא מצאתי לזה שימוש או הגיון.

  • flash.asp

נראה כאילו זה הדף שדרכו אחרי זה עושים flash לחומרה, לפחות כאן אני יכול לראות מה הגרסת Firmware שלי.
שזה 2.15, קצת יותר ישן מהכי חדש שהורדתי מהאינטרנט (2.21), ז"א לפני שאני משחק עם זה בהתבסס על 2.21 צריך לעדכן את הנתב שלי.

  • getflash.asp

מביא קצת יותר פרטים, נותן את הMacים והRegulation Domain (מישהו יודע מה זה?)
אצלי זה עומד על ETST 1-13(Europe)

  • debug.asp

נראה ממש מעניין, מכיל טופס של פקודה command וכפתור apply.
משחקים עם הטופס לא הניבו כלום, הוא כל פעם כותב Invalid value of command.
מה שעוד יותר מוזר זה שאני לא רואה בסורס של debug.asp איפה כל הלוגיקה של מה שקורה אחרי שעושים Submit.
מבדיקה של הטופס עולה כי הוא שולח את זה למקום לא ברור, וגם לא קיים פיזית:

<form action=/goform/formDebug method=POST name="debug">
.
.
</form>

מה זה goform?? מאיפה זה בא?
http://home.postech.ac.kr/~sion/cs499a/webserver/web/over/goforms.htm
מצוין, זה אומר שהטופס הזה מקומפל בתור קוד C לתוך השרת web שלנו.
מצד אחד זה טוב, קוד C בדרך כלל לא כלכך אמין.
מצד שני זה רע, אני אצטרך לעשות Reversing לשרת כדי לראות מה הולך מאחורי כל סקריפט.

Reversing webs

formDebug

formDebug

טוב, אז ניקח את הבינארי של השרת Web, ונראה מה אנחנו יכולים לשלוף ממנו.
לפי מה שהבנתי מהתיעוד, כדי לרשום טופס חדש צריך לקרוא לwebFormDefine.
בואו נראה אם אנחנו יכולים לראות מי קורא לזה ועם איזה פרמטרים.
כמובן שזה מקומפל בלי Symbols, אז זה לא יהיה כזה פשוט, אפשר לנסות לגשת מצד אחר,
כדי לרשום טופס צריך להביא את השם שלו בתור מחרוזת, ז"א אם נוציא את השם של הטופס מתוך debug.asp
אז נוכל למצוא את המקום בקוד שרושם אותו.
השם של הטופס זה formDebug.
מגיעים לפונקצייה שהוא רושם, מסמנים אותה כפוקנצייה שמטפלת בformDebug, ומסתכלים מה היא עושה.
נראה כאילו הפונקצייה בודקת שהפקודה זה "report.txt", ואז מייצרת לוג של הרבה מאד פקודות מערכת, ונותנת אותו להורדה.
כמובן ה"נראה כאילו" לקח כמה זמן להבין, אני לא הולך להציג כאן את כל הקוד, זה פשוט הרבה אסמבלי.
בכל מקרה בדיקה של התיאוריה מול הנתב באמת אישרה את זה, רשמתי בפקודה report.txt, וקיבלתי קובץ להורדה עם מלא מידע.
כל ההגדרות רשת, ההגדרות נתב, כל המידע השותף שמשתנה בזמן הניהול, הוא זרק לי אותו בRaw Text.
נקודה מעניינת שראיתי, שהוא קורא הרבה ל_system בקוד שלו.

המשך עבודה

  • מה הוא עושה עם הסיסמא של super?
  • למצוא עוד דברים מעניינים בממשק Web.
  • למצוא קריאה ל_system שמקבלת מחרוזת שמורכבת מפרמטרים שאני מביא בקלט של הטפסים, כדי לאפשר לי הרצת פקודות ע"י שרשור פקודות לינוקס לפרמטרים בממשק Web.
  • מי שרוצה מוזמן להוריד את דפי הASP והבינארי של שרת הWEB מכאן: http://www.filesonic.com/file/2125608961/Edimax.Web.2.21.zip

אשמח לתגובות, רעיונות או כל דבר אחר שיש לכם להגיד…

11 Comments :, , , , , , , more...

מסע אל בטן הנתב

by on מרץ.22, 2009, under כללי

יש התקדמות!
אני אשתדל לקצר כי יש ממש הרבה דברים שעשיתי, ואני מקווה שהקיצור לא יפגע בעניין והבנה של אנשים,
אם יש שאלות תמיד אפשר לשאות בתגובות, או בערוץ IRC.
בחרתי להשתמש בSlax 6.0.9 כדי לקמפל את הFirmware.

קימפול הסורס מהאתר של Edimax

הוראות פשוטות, פותחים את הtgz, נכנסים פנימה, לתוך תיקיית toolchain, ופותחים את הtgz שם לתוך "/" כך שישתלב במערכת.
מוחקים את build.tmp מהתיקיית מקור, ומריצים את NAS-BUILD.
כמובן ששום דבר לא פועל ישר בלינוקס, וצריך להתעסק עם כל החרא הזה.
אז נתחיל…
דבר ראשון אחרי הסתכלות בNAS-BUILD הבנתי שהוא עושה סוג של Clean וConfigure אם הוא לא מוצא את build.tmp.
עד כאן טוב ויפה חוץ מהעובדה שאפילו בזה הוא נכשל…
הוא נופל לי על זה שהוא לא מוצא את הפקודה rcsclean, ששייכת לחבילת ניהול קוד או משהו כזה.
טוב לא נורא, מורידים את slackpkg מתוך הRepository של Slackware, ומתקינים עם pkgtool שכבר יש בSlax.
אחרי הגדרת slackpkg שכלל בחירת Mirror, והורדה והתקנה של gnupg, ועדכון המפתח gpg שלו, אפשר להתקין את מה שאנחנו צריכים.

slackpkg update
slackpkg install gnupg
slackpkg update gpg
slackpkg install rcs

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

  • busybox-1.00-pre2 לא מתקמפל

צריך להכנס לתיקייה שלו בתוך AP ולערוך את .config ולשנות את CONFIG_LFS=y לCONFIG_LFS=n.

  • busybox-1.1.0 לא מתקמפל

אותו דבר כמו הקודם, רק הפעם צריך להפוך לn גם את FDISK_SUPPORT_LARGE_DISKS.

  • dosfstools-2.11 לא מתקמפל

צריך לערוך את Makefile בתיקייה שלו בתוך AP/dosfstools-2.11 ולהוריד את התוספת של OFFSET_BITS=64 (כל הערך החל מ-D)

  • libpcap-0.7.2 לא מתקמפל

צריך להתקין את bison ואת flex בעזרת slackpkg

  • ppp-2.4.1 לא מתקמפל, צועק על pcap_parse

צריך ללכת לתיקייה של AP/libpcap-0.7.2 לערוך את הMakefile כך שהשורות שמכילות את lex ואת yacc יכלו את הערכים הבאים:

LEX = lex -Ppcap_
YACC = yacc -p pcap_
  • vsftpd-2.0.4 לא מתקמפל

צריך לערוך את הקוד מקוד שנמצא בAP/vsftpd-2.0.4/sysutil.c
ולעשות Comment-Out לקוד שמגדיר את הDefines בקבוצה של OFFSET_BITS=64…

יש! זה התקמפל!!!! (אצלי לפחות)
ובנה את הImage שיושב בimage/NAS_Router/NAS-1.21.bin.
רגע…… 1.21??? הבינארי מהאינטרנט מהאתר של Edimax שזה 2.21, והוא גם יותר גדול.
כלבים, המקור לא מעודכן,
עד כאן!!

Reversing של הBinary של הFirmware

אחרי מעבר על כל NAS-BUILD וכל הסקריפטים שהוא משתמש בהם,
הבנתי שהFirmware מורכב מKernel ומהRoot File System שמחוברים יחד באיזה פורמט לא ברור שמיוצר ע"י קובץ בינארי. (cvimg)
בואו נראה לאיפה נכנס הקרנל שייצרנו בעצמו לתוך הimg שהצלחנו ליצור.
אפשר לראות שכל הקרנל (bzImage) בשלמותו יושב בתוך הimg הסופי ומתחיל באיזה כותרת, שמכילה את הגודל שלו, ומסתיים בעוד תוספת של 4 בתים כחלק מהגודל שכתוב בגודל.
ז"א את הקרנל אנחנו יודעים איך להוציא, ניגש לעניין.
פותחים את הimg הבינארי מהאתר עם עורך Hex ושולפים מתוכו את הKernel אחרי הכותרת, ועד האורך שמצויין פחות 4 בתים.
האורך שכתוב לנו זה 00120C18.
עכשיו צריך לראות איך שולפים את המערכת קבצים, לפי הסקריפטים שמייצרים את הimg שאנחנו הצלחנו ליצור,
הוא מייצר את המערכת קבצים בתור קובץ Image שמכיל מערכת קבצים ext2, אחרכך מכווץ אותו עם lzma ופשוט מחבר אותו לסוף הFirmware.
אז בואו נוציא את המערכת קבצים מהבינארי של Edimax.
הולכים למקום אחרי הKernel ומתחילים להעתיק משם עד סוף הקובץ החוצה עם עורך Hex, ושומרים את זה כקובץ נפרד.
מעבירים אותו ללינוקס, פותחים את הכיווץ בעזרת אותו lzma (פרמטר d) ומקבלים קובץ בגודל 11 מגה בערך.
משמעותית יותר גדול ממה שהיה לנו (8 פתוח, 1.5 מכווץ)
עכשיו אפשר למפות את הקובץ בתור כונן בלינוקס וסופסוף לראות מה יש שם.

mkdir /mnt/rootfs
mount -o loop extracted_rootfs.img /mnt/rootfs

בואו נכנס ונראה מה יש שם.
כמה דברים שקופצים ישר לעין:

  • יש תקייה ב/ שקוראים להweb שמכילה את כל המקור של האתר! 🙂
  • תיקייה /bin מלאה בסקריפטים לשימוש בחומרה והחלת הגדרות וכו'
  • תיקייה /etc גם מכילה דברים מעניינים יותר ממה שהיה לנו.

האפשרויות שעומדות בפני

  • יש לי את המקור ASP של האתר! אני יכול לחפש באגים בסקריפטים ולנסות להריץ Shell Commands.
  • יש לי את המערכת קבצים העדכנית, וקומפילר שמסוגל לקמפל למעבד שיש שם (RDC 3210), להוסיף תוכנות לא אמורה להיות בעיה גדולה מדי.
  • אולי אני אתקין עליו Python? 🙂
  • ראיתי שיש שם כבר Busybox עם telnetd שאפשר להריץ ברגע שיהיה לי Shell Command Execution.
  • עדיף לי בינתיים למצוא איך לשבור אותו בלי להתקין Firmware חדש כדי לא להסתכן בBricking של המכשיר, אז פוסט הבא יהיה כנראה על באגים בממשק Web של Edimax…

שאלות? תגובות?

10 Comments :, , , , , , , more...

פרוייקט פריצת נתב

by on מרץ.20, 2009, under כללי

מבוא

עכשיו שיצא לי ללמוד קצת יותר לעומק על לינוקס, הקרנל שלו, ואיך כל הדברים עובדים,
הגיע הזמן לקחת את הנתב שקניתי שהוא גם NAS, שמו בישראל Edimax BR-6215SRg, ולפרוץ אותו.
זה הולך להיות בשלבים, ואני אעדכן אותכם כל פעם שתיהיה התקדמות משמעותית…

מטרות

  • השגת גישה של SSH לרואטר שלי

שבירת הממשק Web
שידרוג הFirmware למשהו שאני אבנה

  • קימפול דברים חדשים למכשיר

BitTorrent
aMule

  • לראות אם אפשר להתקין ממשק נורמלי לראוטר

OpenWRT
DD-WRT

ביצוע

מה כבר יש באינטרנט?

יש כבר Firmware קיים לכל מיני נתבים שמאפשר להחליף את הFirmware למשהו OpenSource ופתוח.

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

האם אפשר לדפוק את הממשק Web

חשבתי לנסות לפרוץ אליו דרך הממשק Web ולהשיג הרצת קוד.
אחרי שחרשתי על הממשק Web, ראיתי שאין כלכך איפה לתת פקודות.
אז בדקתי איזה שרת Web הוא מריץ וחשבתי לנסות לפרוץ אותו עם איזה Remote Code Execution.
ואז הבנתי, זה לא x86, אין לי מושג איך אני מריץ שם קוד, איזה קוד, יש שם בכלל מחסנית?!
במציאות הוא רץ על מעבד RDC 3210.

מה עם קוד מקור למערכת

למזלי, המערכת מריצה לינוקס לכן חלקים נכבדים שם בקוד פתוח,
אז יש הורדה מהאתר של Edimax של הקוד מקור של המערכת.
http://www.edimax.com/images/Image/OpenSourceCode/Wireless/Router/BR-6215SRg/NAS-GPL-BR-6215SRg.tar.gz
עכשיו צריך לשחק איתו ולראות אם אני מצליח למצוא שם איך לפרוץ אותו,
או איך לקמפל את כל הסיפור הזה מחדש עם השינויים שאני רוצה להכניס.

בפעם הבאה

  • נראה אם אני מצליח לקמפל את כל המערכת ממצב של קוד מקור למצב של Firmware Image שאפשר לעשות איתו Upgrade.
  • אם כן, אני צריך למצוא איפה הוא מרכיב את הRoot Filesystem, להוסיף לשם שרת SSH אם אין
  • לערוך סקריפטי עלייה ולהוסיף שם הפעלה של שרת SSH
  • לוודא שבiptables יש לי גישה לפורט 22
4 Comments :, , , , , , more...

מחפש משהו?

תשתמש בטופס למטה כדי לחפש באתר: