יום שבת, אוגוסט 06, 2016

פוסט ביקורת עמיתים - הכנת תשתית הקוד לביצוע מחקר

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

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

כלים דרושים:

מערכת דביאן סיד , הפעולות בוצעו ע"י משתמש בשם user הקבצים הורדו לתיקיות pikud ו tmp.


apktool
unzip
grep
גישה לאינטרנט.

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

ניתן להשתמש ב apkpure.com או apk-dl כל מערכת אחרת שמאפשרת הורדת אפצליקציות שלא מהסטור עצמו. ראויי לציין כי מכיוון שאנו מורידים מצד שלישי קוד המקור יכול להיות שעבר שינוי.
מסיבה זו אני מפרסם את ההאשים שקיבלתי (דרך שתי האתרים האלה הם היו זהים).


ההאשים של הAPK שלי הם :

user@laptop:~/pikud$ sha512sum Home%20Front%20Command_1.2_apk-dl.com.apk
28da60bf0e2941d632a65fe\
76960f45a715835d0567f0a\
3840eded45de7c63cef41d45\
817b5853d496b005d81b5e70\
713559957cf842daaaa0656ceb9ab6d075  Home%20Front%20Command_1.2_apk-dl.com.apk 
 
 
user@laptop:~/pikud$ md5sum Home%20Front%20Command_1.2_apk-dl.com.apk
81282187c7395e0cf1c72cabeeaa8b87  Home%20Front%20Command_1.2_apk-dl.com.apk

פריסת נתונים:

ביצוע פריסת הקבצים ופיענוח התוכן בוצעה ע"י apktool

Apktool v2.1.1-dirty - a tool for reengineering Android apk files
with smali v2.1.3-dev and baksmali v2.1.3-dev
Copyright 2014 Ryszard Wiśniewski 
Updated by Connor Tumbleson 
הותקן ע"י חבילה סטנדרטית :
apt-cache policy apktool 
apktool:
  Installed: 2.1.1+dfsg-3
  Candidate: 2.1.1+dfsg-3
  Version table:  

ביצוע הפריסה התבצע ע"י

user@laptop:~/pikud/$apktool d Home%20Front%20Command_1.2_apk-dl.com.apk 
I: Using Apktool 2.1.1-dirty on Home%20Front%20Command_1.2_apk-dl.com.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/user/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

לאחר הפעולה תתקבל תיקייה Home%20Front%20Command_1.2_apk-dl.com מציאת הכתובת בוצעה ע"י :
user@laptop:~/pikud$ grep mailto -rn *
js/appObjs/globalMethods.js:60: 
 window.location = "mailto:itayg@elad.co.il?subject=Ioref%20Bug%20Report&body="+mailBoady;
js/controllers/contactUsController.js:51:                                                                       window.plugins.inAppBrowswer.open('mailto:info-oref@idf.gov.il?subject=Something to share with you...','_system');
grep .co.il -rn *

AndroidManifest.xml:20:        <meta-data android:name="server_url" 
android:value="https://ioref.co.il">
AndroidManifest.xml:21:        <meta-data android:name="dr_server_url" 
android:value="https://dr.ioref.co.il">

assets/www/js/appObjs/globalMethods.js:60: 
 window.location = "mailto:itayg@elad.co.il?subject=Ioref%20Bug%20Report&body="+mailBoady;

grep .org.il -rn *
assets/www/js/controllers/contactUsController.js:41:                                                                    window.plugins.inAppBrowswer.open('http://www.oref.org.il','_system');
assets/www/js/controllers/contactUsController.js:45:                                                                    window.location = "http://www.oref.org.il";


לאחר ביצוע הפיענוח הראשוני מתקבלים קבצי .smali שהם המקבילה (?) של קבצי אסמבלי לbytecode בעולם האנדרויד.

אימות הממצאים בוצע ע"י בידקה מתוצרי ה jadx.

פריסה ופיענוח באמצעות jadx

  • שימוש שימוש באתרים שמבצעים jadx , לשם שימוש מעלים את קובץ הapk שהורד קודם לאתר והוא מבצע המרת החבילה לקוד java שהוא קריא טיפה יותר מקבצי smali.

  • ביצוע פריסת jadx עצמאית
ככל קבצי הapk הם לא הרבה יותר מאשר ארכיב מסוג zip שמכיל מבנה קבצים מיוחד.
נשמור את הקובץ בתת תיקיה (בשביל להקל בדיקות לאחר מכן).

 הפיכת קובץ ה APK ל zip וביצוע פריסה שלו:
user@laptop:~/pikud/zip$ mv Home\ Front\ Command_v1.2.apk Home\ Front\ Command_v1.2.apk.zip

ביצוע פריסה שלו (השתמשתי בתוכנת ה unzip שמגיעה מחבילת unzip בדביאן):

user@laptop:~/pikud/zip$ unzip -x Home\ Front\ Command_v1.2.apk.zip 
Archive:  Home Front Command_v1.2.apk.zip
 extracting: assets/www/css/images/ajax-loader.gif  
  inflating: assets/www/css/idangerous.swiper.css  
  inflating: assets/www/css/index.css  
  inflating: assets/www/css/jquery.mobile-1.4.2.min.css  
  inflating: assets/www/css/toggle-switch.css  
 extracting: assets/www/img/A_minus.png  
 extracting: assets/www/img/A_plus.png  
 extracting: assets/www/img/AntennaRed.png  
 extracting: assets/www/img/Locate.png  
 extracting: assets/www/img/antenna.png  
 extracting: assets/www/img/arrow1.png  
 extracting: assets/www/img/arrow1Right.png  
 extracting: assets/www/img/arrowDown.png  
 extracting: assets/www/img/arrowLeft.png  
 extracting: assets/www/img/arrowRight.png  
 extracting: assets/www/img/back.png  
 extracting: assets/www/img/background.png  
 extracting: assets/www/img/call.png  
 extracting: assets/www/img/call2.png  
 extracting: assets/www/img/cellBlue.png  
 extracting: assets/www/img/cellOrange.png  
 extracting: assets/www/img/cellRed.png  
 extracting: assets/www/img/cellyellow.png  
 extracting: assets/www/img/checkBox1Off.png  
 extracting: assets/www/img/checkBox1On.png  
 extracting: assets/www/img/choosingShelter.jpg  
 extracting: assets/www/img/close.png  
 extracting: assets/www/img/earthquake.jpg  
 extracting: assets/www/img/emergencyBag.jpg  
 extracting: assets/www/img/facebook.png  
 extracting: assets/www/img/familyReadiness.jpg  
 extracting: assets/www/img/filterBar.png  
 extracting: assets/www/img/forbiddenMaterials.jpg  
 extracting: assets/www/img/home.png  
 extracting: assets/www/img/info.png  
 extracting: assets/www/img/key1.png  
 extracting: assets/www/img/location2.png  
 extracting: assets/www/img/locationIcon.png  
 extracting: assets/www/img/logo.png  
 extracting: assets/www/img/mail.png  
 extracting: assets/www/img/menu.png  
 extracting: assets/www/img/navBar.png  
 extracting: assets/www/img/news_icon_Yellow.png  
 extracting: assets/www/img/onAlarm.jpg  
 extracting: assets/www/img/progressBig0.png  
 extracting: assets/www/img/progressBig100.png  
 extracting: assets/www/img/progressBig20.png  
 extracting: assets/www/img/progressBig40.png  
 extracting: assets/www/img/progressBig60.png  
 extracting: assets/www/img/progressBig80.png  
 extracting: assets/www/img/progressSmall0.png  
 extracting: assets/www/img/progressSmall100.png  
 extracting: assets/www/img/progressSmall20.png  
 extracting: assets/www/img/progressSmall40.png  
 extracting: assets/www/img/progressSmall60.png  
 extracting: assets/www/img/progressSmall80.png  
 extracting: assets/www/img/protectiveZonesMap.jpg  
 extracting: assets/www/img/radio.png  
 extracting: assets/www/img/radio2.png  
 extracting: assets/www/img/ready.png  
 extracting: assets/www/img/settings.png  
 extracting: assets/www/img/situation.png  
 extracting: assets/www/img/textBox2.png  
 extracting: assets/www/img/textBox3.png  
 extracting: assets/www/img/time2.png  
 extracting: assets/www/img/timeIcon.png  
 extracting: assets/www/img/twitter.png  
 extracting: assets/www/img/update.png  
 extracting: assets/www/img/web.png  
 extracting: assets/www/img/youtube.png  
  inflating: assets/www/js/appObjs/appMenu.js  
 extracting: assets/www/js/appObjs/appMessages.js  
  inflating: assets/www/js/appObjs/contentLoader.js  
  inflating: assets/www/js/appObjs/errorsManager.js  
  inflating: assets/www/js/appObjs/globalMethods.js  
  inflating: assets/www/js/appObjs/globalVariables.js  
  inflating: assets/www/js/appObjs/languageManager.js  
  inflating: assets/www/js/appObjs/locationManager.js  
  inflating: assets/www/js/appObjs/navigationManager.js  
  inflating: assets/www/js/appObjs/requireConfig.js  
  inflating: assets/www/js/controllers/appLobbyController.js  
  inflating: assets/www/js/controllers/contactUsController.js  
  inflating: assets/www/js/controllers/messageDetailsController.js  
  inflating: assets/www/js/controllers/readinessController.js  
  inflating: assets/www/js/controllers/readinessDetailsController.js  
  inflating: assets/www/js/controllers/settingsController.js  
  inflating: assets/www/js/controllers/situationRoomController.js  
  inflating: assets/www/js/controllers/wizard_chooseLocationController.js  
  inflating: assets/www/js/controllers/wizard_choosingShelterController.js  
  inflating: assets/www/js/controllers/wizard_earthquakeReadinessController.js  
  inflating: assets/www/js/controllers/wizard_emergencyBagController.js  
  inflating: assets/www/js/controllers/wizard_progressStateController.js  
  inflating: assets/www/js/lib/idangerous.swiper.js  
  inflating: assets/www/js/lib/idangerous.swiper.min.js  
  inflating: assets/www/js/lib/jquery-1.7.1.min.js  
  inflating: assets/www/js/lib/jquery.blockUI.js  
  inflating: assets/www/js/lib/jquery.js  
  inflating: assets/www/js/lib/jquery.mobile-1.4.2.js  
  inflating: assets/www/js/lib/jquery.mobile-1.4.2.min.js  
  inflating: assets/www/js/lib/jquery.scrollTo.js  
  inflating: assets/www/js/lib/jquery.touchSwipe.min.js  
  inflating: assets/www/js/lib/require.js  
  inflating: assets/www/js/lib/rtl.jquery.mobile-1.2.0.min.js  
  inflating: assets/www/js/lib/rtl.jquery.mobile-1.4.0.js  
  inflating: assets/www/js/lib/text.js  
  inflating: assets/www/js/lib/underscore.js  
  inflating: assets/www/js/localization/ar/offlineContent/appTerms.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_about.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_choosingShelter.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_earthquakeReadiness.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_emergencyBag.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_familyReadiness.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_forbiddenMaterials.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_onAlarmBehavior.html  
  inflating: assets/www/js/localization/ar/offlineContent/offlineContent_protectiveZonesMap.html  
  inflating: assets/www/js/localization/ar/arabic.js  
  inflating: assets/www/js/localization/ar/cities_ar_EG  
  inflating: assets/www/js/localization/ar/situationRoomMessagesAR.js  
  inflating: assets/www/js/localization/en/offlineContent/appTerms.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_about.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_choosingShelter.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_earthquakeReadiness.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_emergencyBag.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_familyReadiness.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_forbiddenMaterials.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_onAlarmBehavior.html  
  inflating: assets/www/js/localization/en/offlineContent/offlineContent_protectiveZonesMap.html  
  inflating: assets/www/js/localization/en/cities_en_US  
  inflating: assets/www/js/localization/en/english.js  
  inflating: assets/www/js/localization/en/situationRoomMessagesEN.js  
  inflating: assets/www/js/localization/he/offlineContent/appTerms.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_about.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_choosingShelter.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_earthquakeReadiness.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_emergencyBag.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_familyReadiness.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_forbiddenMaterials.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_onAlarmBehavior.html  
  inflating: assets/www/js/localization/he/offlineContent/offlineContent_protectiveZonesMap.html  
  inflating: assets/www/js/localization/he/cities_iw_IL  
  inflating: assets/www/js/localization/he/hebrew.js  
  inflating: assets/www/js/localization/he/situationRoomMessagesHE.js  
  inflating: assets/www/js/localization/ru/offlineContent/appTerms.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_about.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_choosingShelter.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_earthquakeReadiness.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_emergencyBag.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_familyReadiness.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_forbiddenMaterials.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_onAlarmBehavior.html  
  inflating: assets/www/js/localization/ru/offlineContent/offlineContent_protectiveZonesMap.html  
  inflating: assets/www/js/localization/ru/cities_ru_RU  
  inflating: assets/www/js/localization/ru/russian.js  
  inflating: assets/www/js/localization/ru/situationRoomMessagesRU.js  
  inflating: assets/www/js/models/getCityName.js  
  inflating: assets/www/js/app.js    
  inflating: assets/www/plugins/org.apache.cordova.dialogs/www/android/notification.js  
  inflating: assets/www/plugins/org.apache.cordova.dialogs/www/notification.js  
  inflating: assets/www/plugins/appSettings.js  
  inflating: assets/www/plugins/appStorage.js  
  inflating: assets/www/plugins/debuggerPlugin.js  
  inflating: assets/www/plugins/errorsManagerPlugin.js  
  inflating: assets/www/plugins/geoLocation.js  
  inflating: assets/www/plugins/getAboutInfo.js  
  inflating: assets/www/plugins/getMessages.js  
  inflating: assets/www/plugins/getSegments.js  
  inflating: assets/www/plugins/getShelterEstimateTime.js  
  inflating: assets/www/plugins/inappbrowser.js  
  inflating: assets/www/plugins/login.js  
  inflating: assets/www/plugins/softKeyBoard.js  
  inflating: assets/www/plugins/updateServer.js  
  inflating: assets/www/plugins/updateStatistics.js  
  inflating: assets/www/plugins/video.js  
  inflating: assets/www/templates/pages/appLobbyTemplate.html  
  inflating: assets/www/templates/pages/chooseLocationTemplate.html  
  inflating: assets/www/templates/pages/choosingShelterTemplate.html  
  inflating: assets/www/templates/pages/contactUsTemplate.html  
  inflating: assets/www/templates/pages/earthquakeReadinessTemplate.html  
  inflating: assets/www/templates/pages/emergencyBagTemplate.html  
  inflating: assets/www/templates/pages/messageDetailsTemplate.html  
  inflating: assets/www/templates/pages/progressStateTemplate.html  
  inflating: assets/www/templates/pages/readinessDetailsTemplate.html  
  inflating: assets/www/templates/pages/readinessTemplate.html  
  inflating: assets/www/templates/pages/settingsTemplate.html  
  inflating: assets/www/templates/pages/situationRoomTemplate.html  
  inflating: assets/www/templates/emergencyBagItem.html  
  inflating: assets/www/templates/menuTemplate.html  
  inflating: assets/www/templates/readinessItem.html  
  inflating: assets/www/templates/situationRoomMessage.html  
 extracting: assets/www/config.xml   
  inflating: assets/www/cordova.js   
  inflating: assets/www/cordova_plugins.js  
  inflating: assets/www/index.html   
 extracting: assets/alert.mp3        
 extracting: assets/info.mp3         
  inflating: res/color/common_signin_btn_text_dark.xml  
  inflating: res/color/common_signin_btn_text_light.xml  
 extracting: res/drawable/alert_icon.png  
  inflating: res/drawable/button_border.xml  
  inflating: res/drawable/common_signin_btn_icon_dark.xml  
  inflating: res/drawable/common_signin_btn_icon_light.xml  
  inflating: res/drawable/common_signin_btn_text_dark.xml  
  inflating: res/drawable/common_signin_btn_text_light.xml  
  inflating: res/drawable/dialog_border.xml  
  inflating: res/drawable/dialog_header_border.xml  
 extracting: res/drawable/ic_notification.png  
 extracting: res/drawable/icon.png   
 extracting: res/drawable/info_circle.png  
 extracting: res/drawable/ioref_logo.png  
 extracting: res/drawable/splash.png  
  inflating: res/drawable/toast_border.xml  
  inflating: res/layout/dialog_push_message.xml  
  inflating: res/layout/splash.xml   
  inflating: res/layout/toast.xml    
  inflating: res/raw/smart_trust_store.bks  
  inflating: res/xml/config.xml      
  inflating: AndroidManifest.xml     
 extracting: resources.arsc          
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_disabled_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_disabled_focus_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_disabled_focus_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_disabled_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_focus_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_focus_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_normal_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_normal_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_pressed_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_icon_pressed_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_disabled_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_disabled_focus_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_disabled_focus_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_disabled_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_focus_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_focus_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_normal_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_normal_light.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_pressed_dark.9.png  
 extracting: res/drawable-hdpi-v4/common_signin_btn_text_pressed_light.9.png  
 extracting: res/drawable-hdpi-v4/ic_plusone_medium_off_client.png  
 extracting: res/drawable-hdpi-v4/ic_plusone_small_off_client.png  
 extracting: res/drawable-hdpi-v4/ic_plusone_standard_off_client.png  
 extracting: res/drawable-hdpi-v4/ic_plusone_tall_off_client.png  
 extracting: res/drawable-hdpi-v4/icon.png  
 extracting: res/drawable-hdpi-v4/splash.png  
 extracting: res/drawable-ldpi-v4/icon.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_disabled_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_disabled_focus_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_disabled_focus_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_disabled_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_focus_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_focus_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_normal_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_normal_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_pressed_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_icon_pressed_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_disabled_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_disabled_focus_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_disabled_focus_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_disabled_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_focus_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_focus_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_normal_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_normal_light.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_pressed_dark.9.png  
 extracting: res/drawable-mdpi-v4/common_signin_btn_text_pressed_light.9.png  
 extracting: res/drawable-mdpi-v4/ic_plusone_medium_off_client.png  
 extracting: res/drawable-mdpi-v4/ic_plusone_small_off_client.png  
 extracting: res/drawable-mdpi-v4/ic_plusone_standard_off_client.png  
 extracting: res/drawable-mdpi-v4/ic_plusone_tall_off_client.png  
 extracting: res/drawable-mdpi-v4/icon.png  
 extracting: res/drawable-mdpi-v4/splash.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_disabled_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_disabled_focus_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_disabled_focus_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_disabled_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_focus_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_focus_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_normal_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_normal_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_pressed_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_icon_pressed_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_disabled_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_disabled_focus_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_disabled_focus_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_disabled_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_focus_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_focus_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_normal_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_normal_light.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_pressed_dark.9.png  
 extracting: res/drawable-xhdpi-v4/common_signin_btn_text_pressed_light.9.png  
 extracting: res/drawable-xhdpi-v4/ic_plusone_medium_off_client.png  
 extracting: res/drawable-xhdpi-v4/ic_plusone_small_off_client.png  
 extracting: res/drawable-xhdpi-v4/ic_plusone_standard_off_client.png  
 extracting: res/drawable-xhdpi-v4/ic_plusone_tall_off_client.png  
 extracting: res/drawable-xhdpi-v4/icon.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_disabled_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_disabled_focus_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_disabled_focus_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_disabled_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_focus_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_focus_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_normal_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_normal_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_pressed_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_icon_pressed_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_disabled_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_disabled_focus_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_disabled_focus_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_disabled_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_focus_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_focus_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_normal_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_normal_light.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_pressed_dark.9.png  
 extracting: res/drawable-xxhdpi-v4/common_signin_btn_text_pressed_light.9.png  
 extracting: res/drawable-xxhdpi-v4/ic_plusone_medium_off_client.png  
 extracting: res/drawable-xxhdpi-v4/ic_plusone_small_off_client.png  
 extracting: res/drawable-xxhdpi-v4/ic_plusone_standard_off_client.png  
 extracting: res/drawable-xxhdpi-v4/ic_plusone_tall_off_client.png  
  inflating: classes.dex             
  inflating: org/apache/http/entity/mime/version.properties  
  inflating: META-INF/MANIFEST.MF    
  inflating: META-INF/CERT.SF     

בשונה מקבצי smali את קבצי ה dex נאלץ להמיר לקוד קריא יותר כך :
jadx -d out classes.dex

יום רביעי, יולי 06, 2016

לראות ולחייך

איזה תענוג לראות את הדבר הבא כאשר מדברים על בנייה של מוצר -
Linux
  • Python v2.7
  • make
  • A proper C/C++11 compiler tool chain, for example GCC
  • native-keymap needs libx11-dev.
    • On Debian-based Linux: sudo apt-get install libx11-dev
    • On Red Hat-based Linux: sudo yum install libx11-devel.x86_64 # or .i686.
  • Building deb and rpm packages requires fakeroot and rpm, run: sudo apt-get install fakeroot rpm
After you have these tools installed, run the following commands to check out Code and install dependencies:

Windows
git clone https://github.com/microsoft/vscode
cd vscode
scripts\npm install


למה זה מגניב ? כי מדובר על מוצר Visual Studio Code, שזה סביבת פיתוח מבית מייקרוספט ובה משתמשים במוצרי קוד פתוח כמשהוא מקובל ומשומש (לא שזה חדש לראות את זה , פשוט מחמם את הלב לראות שזה הפך להיות כל כך מיינסטרים).

יום חמישי, מאי 19, 2016

זה הכל עניין של עוצמה

היום במפגש  יצא לי לדון לגבי השפעה של קרינה אלקטרומגנטית של ציוד תקני בתדרי ה 2.4Ghz וההשפעה (החוסר שלה)

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

לצערי אמרתי טעות ואמרתי שה FCC מאשר מספר וואטים בודדים אבל לפי בדיקה נוספת מדובר על וואט אחד בלבד .


עבור מיליוואט :
P(dbm) = 10 * log_10 (P(mW) / 1mW)

מכאן כן לראות שעבור וואט אחד מדובר על 30dbm:
10 * log_10 (1000 mW / 1 mW) = 10 * 3 = 30dbm

תוסיפו לזה שעוצמת השדה יורדת בהתאם למרחק (ריבוע).

האם קרינה לא מיננת אינה גורמת נזק ? ממש לא ! המיקרוגל הביתי אינו מיינן אבל הוא הורס רקמות מצויין (טיגון) .

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

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

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

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

 
These findings appear to support the International
Agency for Research on Cancer (IARC) conclusions regarding the possible carcinogenic
potential of Radiofrequency radiation (RFR) .


הבדיקה נעשתה ע"י חשיפה לקרינה במשך כ9 שעות בעוצמות של 1.5 וואט לקילוגרם ' בתדרים 900 ו 1900 (לא מדובר על התדרים של וי-פי ואם זכרוני אינו מטעה אותי הם לא בשימוש ).

מדובר על קבוצה קטנה (90 יחידות) אבל מדובר במחקר (שלדעתי) פורץ דרך בגלל שמודבר על מקרה ראשון שמציג תוצאות כאלה.

יום שלישי, מאי 10, 2016

windows subsystem for linux

אם כבר עברתי לצד האפל , חשבתי לעצמי אולי הבעיות בהן נתקלתי (חוסר תמיכה) יפתרו על ידי שימוש ב windows subsytem for linux.

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

בשביל ההתקנה  יש לעבור ל developer mode ולהוריד preview (אני הלכתי על 14332) ,את ההורדה ביצעתי  באמצעות wget על וינדוס אבל אפשר גם דרך דפדפן.

בשביל להתקין תצטרכו לאשר את windows subsystem for linux תחת windows features בתוך programs and features.

לאחר איתחול הפעילו cmd ומתוכו הריצו bash וצרו משתמש (זאת כמובן אם אתם מסכימים לתנאי השימוש של ubuntu :) )




ההתקנה הולכת לתוך  %localAppData%\lxss אצלי היא לקחה 630 מ"ב .
מתחתיה התיקיות cache data home mnt root ו rootfs באופן מתפיע יש אפילו grub מותקן (רק שאני מאמין שאינו עוזר בשיט.

בשביל להסיר : lxrun.exe /uninistall

כמה דברים בסיסים להתחלה :

user@DELL-E6540:/proc$ uname -a
Linux DELL-E6540 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

user@DELL-E6540:/mnt/c$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"

user@DELL-E6540:/mnt/c$ mount
rootfs on / type rootfs (ro,relatime)
tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,mode=755)
devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,seclabel,relatime)
user@DELL-E6540:/mnt/c$ sudo df -h
df: cannot read table of mounted file systems: No such file or directory


לצערי בגלל הבעיה של proc דברים אחרים חשובים אינם עובדים כמו lsusb ו lsmod (מה שמונע שימוש בדברים כמו wvdial למשל) .

התחלתי לוודא אילו כלים שהיום עובדים לי בwindows יעבוד מתוך ה subsystem.

netcat עובד.
telnet עובד.
git-svn אינו עובד (נתקע).
nmap אינו עובד (Problem binding to interface).
ping אינו עובד (icmp open socket: socket type not supported)

מה אני אגיד לכם שימוש ב msysgit ו gnuwin נותן יכולות טובות יותר נכון לעכשיו.

יום ראשון, מאי 08, 2016

המפלצת היומית (כי מרי שלו לא נתנה לה שם)

על טעויות משלמים ומשלמים טוב, אם הקורא החביב צריך את המחשב לעבודה תעשה לעצמך טובה ואל תתקין Win10.

כפי שהזכרתי כבר מספר פעמים עברתי ל windows 10 ומאז כשאני רוצה לקלל אני פשוט אומר win10.

אחת התופעות היותר מדהימות שמצאתי היתה בעייה בדריברים הקשורים למודם;מה שמונע חיבור לאינטרנט באמצעות nokia pc suite / nokia pc internet access.

הפתרון הראשוני שלי היה לנסות לדלות את הדריברים שיש במודם/טלפון ע"י שינוי מצב המודם על לינוקס (שינוי DisableSwitching ל 1 בתוך /etc/usb_modeswitch.conf) ואז העתקת הקבצים לוינדוס בשביל להתקין. אמנם הצלחתי לקבל גישה לקבצים ולהתקין אולם זה לא עזר. תשאלו למה צריך לשלוף בצורה ידנית דרך לינוקס ? כי תוכנת ההתקנה עובדת מאחורי הגב ותכשיל פעולה עם גרסאות הדריבר לא מתאימות (וזו בדיוק הבעיה שצריך לפתור) ולא מצאתי דרך להעביר מודם למצב cdrom בוינדוס ללא התקנת תוכנה חיצונית.

הפעולה גרמה לזיהוי של שני רכיבים ע"י windows שנקראו CDC Comms interface ו Generic Phone ( אך ככאלה להם אין דריבר ), שימוש ב scan for devices (מה שאומר להפעיל שרשת פעולות שתתקין דריברים דרך וינדוס ) לא עבדה גם לא הפעלה check for updates  מה שבתורו הוביל אותי לבעיית ה Preparing to install updates 0% (למרות שזה זיהיה שיש עידכונים לבצע רק נשאר ב 0% במשך כחצי שעה המחשב אותחל והמשכתי הלאה).

לאחר מכאן המשכתי לשימוש ב Nokia PC suite  ו Nokia Suite. בנקודה מסויימת כבר חזרה לי היכולת לראות את תוכן הקבצים ולקבל גישת SMS (צפיתי בSMSים במכשיר)



הפתרון הנאיבי שלי לאחר שהגעתי למצב בו יכלתי לצפות ב SMS היה יצרת התקן באמצעות dialup connection  שמחייג ל  *99***1# עם התוספת במאפייני החיבור/מודם.

+CGDCONT=1,"IP","internet.isp.tld" 

נכשל עם 628 (ניתוק בגלל המערכת המחייגת).

כשניסיתי להשתמש בconnect to internet של suite ושל Nokia PC internet Access (כאומר המכשיר זוהה) - חיכה לאין סוף ונכשל.

כשניסיתי עם Nokia PC Suite היה נכשל שוב. גלשתי לי למאפיינים של המודם אבל גם כשערכתי את המאפיינים המתקדמים של הדריבר (modems->drivername->advanced->extra initlialization commands) הוא היה מחליף ל
+CGDCONT=,,"internet.isp.tld"

סך כל הניסינות שלי הסתכמו בכ 3 שעות עבודה מרביתם חיפוש בגוגל של גרסאות להתקין ואיתחולים מאוד מאוד מאוד מאוד ארוכים (בין איתחול למשנהוא למדתי לצפות במסך הכחול עם DRIVER_POWER_STATE_FAILURE שמודיע על איסוף נתונים ובעייה בדריבר) .

לא קיבלתי שום אזהרה בשידרוג מ 7 ל 10 על חוסר התמיכה , ואף בהתחלה זה עבד (מספר ימים).

מצאתי workaround  חופשי למחצה העברת רכיב ה USB לתוך המכונה הוירטואלית והסתמכות על הקרנל של המכונה הוריטואלית בשביל לתמוך בגלישה.

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

מה שעשיתי היה להתקין VM של virtual box ובתוכו להרים debian.

בתוך הדביאן התקנתי מראש wvdial וקינפגתי :
[Dialer hack]
Phone = *99***1#
Username = user
Password = pass
Stupid Mode = 1
Dial Command = ATDT
Modem = /dev/ttyACM0
ISDN = 0
Baud = 460800

Modem Type = USB Modem
Init1 =ATZ
Init2 =AT+CGDCONT=1,"IP","internet.isp.tld";

הגדרתי עבור ה VM שכל רכיבי ה USB יעברו פנימה (אפשר להגביל רק פר רכיב בודד) ,
ואז מתוך ה VM הפעלתי wvdial hack מה שנתן לי חיבור לרשת מתוך ה VM דרך רכיב הרשת המחובר כ USB למחשב המארח שמריץ win10.

זה עקום כמו פתרון מיפוי ב 2015 הבנוי על בסיס  silverlight אבל זה עובד בנתיים.

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

להפעיל את המחשב מחדש (כאשר המודם בחוץ) , להתקין suite ישן (אני התקנתי מ 2011) ולא לעשות windows update להפעיל מחדש את המחשב, לחבר את מודם ולהתקין את הקבצים שחילצנו בהתחלה (להתקין את ה Nokia PC Internet access ) עכשיו להסיר suite ולהפעיל מחדש.

נפלאות דרכי ה win10

כפי שאתם זוכרים עברתי לצד האפל והתקנתי win10, או כמה דברים מדהימים גיליתי על הדרך.

בשבוע שעבר נחשפתי לפטיצ'ר פשוט מדהים:

בערך רבע עד חצי שעה לפני הצגה שהייתי צריך לעשות מכונות ה Win10 שלי החליטה שהיא לא מזהה יותר את כרטיס האלחוט שלי, גם העברה ממצב on  ל off ובחזרה ל on לא החזירה את הרכיב (שימוש ב scan for changes תחת devices לא תרמה מאומה).

בוינדוס כשהייתי לוחץ על האייקון של ה Wireless קיבלתי את ההודעה המשמחת no wireless devices found (יכול להיות שהמלל היה טיפה שונה).

ע"פ מייקרוסופט אם יש לך VPN  התכונן לבעיות :

After you upgrade a computer that has virtual private network (VPN) software installed from Windows 8.1 to Windows 10, no wireless networks are listed as available.

This is true even when the wireless network adapter seems to function correctly. If you restart the computer or you try to reinstall the wireless network adapter driver, this does not fix the problem.

This problem may also prevent wired Ethernet connections from functioning correctly. This affects connections that are made through either a built-in Ethernet adapter or a USB Ethernet adapter.
צריך לבצע את הפעולה הבאה בממשק המשתמש הטקסטואלי :

reg delete HKCR\CLSID\{988248f3-a1ad-49bf-9170-676cbbc36ba3} /va /f

המקרה שלי זה לא VPN (כי לפי גוגל זה בדר"כ קורה למי שיש לו VPN של Cisco).

טוב , בגלל שזו לא הפעם הראשונה שזה קורה לי ב win10 , הפעלתי את ה nokia pc internet connection בשביל לנסות לעבוד.

נחשו מה רבה היתה ההפתעה שלי שעכשיו גם המודם שלי לא מזוהה - התוכנה לא מזהה חיבור , לפי ה  Network Connections המודם נמצא במצב disconnected ולא עובר למצב מחובר ללא תלות בשום שינוי דבר שאני עושה : הכנסה / הוצאה של ה USB או אפילו שינוי המאפיינים במכשיר.

ה workaround שלי היה להחליף מחשב, ולחכות לטוב. לאחר מספר שעות לאחר שהפעלתי שוב את המחשב פוף הWiFi חזר (בלי שום התקנות חדשות ובלי שום שינוי נוסף שעשיתי) אבל ה Nokia PC interenet access עדיין לא עבד.

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

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

ניסיון באיתור הדריבר (לחיצה על scan for new devices) הובילה לתקיעה ו restart הוביל ל DRIVER_POWER_STATE_FAILURE

מכירים את זה שבין שינוי לשינוי צריך לאתחל ? אז תחת ה win10 האיתחול לוקח מעל דקה (ממצב מופעל למצב מופעל) אפילו במחשב נייד מ 2006 (שיש לי לידו) שרץ עליו systemd וKDE זה הרבה יותר מהיר.


נ.ב. בלינוקס זה לא קורה והמודם עובד מצויין דרך wvdial.

 win10 %%#%%#.