Maintaining huge amounts of data

I have around 50 external hard drives, 20 internal ones (form old PCs since 1994 and until today), floppy disks, CDs, DVDs and thumb drives. After purchasing the best NAS I could find – Synology Diskstation 2415+

I started looking for NAS (Red) hard drives to fill it up. I purchased 12 x 6TB ones but recently began replacing them with 10TB each (having the potential storage size of 120TB !

NAS - snapshot

Synology offers Hybrid RAID, which allows the safety of having the data backed up in several places in case of a failure. The “price” for that is 1/3 of the storage space which is used to provide the necessary tolerance to faults and loss of data. Each drive of the 12 is part of a group of 3 (“Volume”) and you can take out and throw away one drive of the three, and yet the data will be preserved.

That doesn’t come instead of backing up the entire data, which wasn’t an easy task due to the huge amount of data to back up. Typical Cloud services allow up to 1TB (for example: Dropbox). More professional services such as Amazon allows unlimited data to be backed up for a quite expensive monthly cost per each MB.

Speaking of Dropbox, one of the advantages of using a NAS is that it can entirely replace services such as Dropbox, Google Docs, etc. You have your own cloud. You can give access to specific documents or folders, run your in-house Chat service (instead of using WhatsApp), host web sites, create your own Emailing system, FTP, etc.

Costs:

NAS                                                       $1,313.71

12 x 10TB Drives                                  $4,775.88

Total (before Tax)                               $6,089.59

You can then organize your files based on subjects, themes, types and dates.

For example, organizing all photos (or videos) by year and then by month.

Photos-Haephrati.png

Since Synology gives you the ability to create your own Cloud and avoid using external Cloud services, it is quite easy to back up all photos from your cellphone automatically. You can of course insert external USB drives and purge their data to the NAS.

I travel a lot and since my wife is a photographer, there are many camera files to back up. I carry a 4TB external drives when I travel and first backup the memory cards to the drive. Then, I upload the contents of the drive to my NAS remotely from anywhere.

Add to that tools to keep your PCs backed up, access the NAS from an iPhone and so on.

Finding data is also an important consideration. Synology provides a quite fast mechanism for finding files, including from the iPhone App. Searching for files based on a criteria can take hours, especially in my case where I have millions of files. For example, an open query for all .doc files (Word) can take 1 hour to run (found already  310,000 files and still searching…).

2018-04-27 (8).png

 

One of the advantages of Synology NAS is the ability to remotely connect to surveillance cameras, but in addition there are many possible add-on’s to use.

For example, the Video Station scans all videos stored and provide easy access from a Smart TV. Please note that there are many issues with Samsung Start TV which we own. This TV is very impressing with the curve style but has many connectivity issues. Our Surface Pro‘s can’t be projected to the TV. Other streamers such as Roku have similar issues, some of which have been resolved since. In many cases we had problems with service providers such as Netflix, HBO, CBS, NBC, etc. and in most cases they were specific to our Samsung… However when it comes to projecting videos form the NAS to our TV, that works excellent.

2018-04-27 (7).png

As for protecting your NAS from outside hacking, here are some guidelines:

  • Use SSL (I purchased an SSL certificate for my NAS)
  • Use Two Factor Authentication – its impossible to log in (even if the password is known) without operating an hardware device which generate a one-time code. Banks use it (in the US) and it can be applied to other accounts such as NAS, Gmail, Facebook, etc.
  • Other security measures such as an internal Firewall running on the NAS (which has its own OS), blocking certain ports and protocols, etc.
Advertisements

האקרים טורקים הפילו 50 אתרים ישראלים

קבוצת האקרים טורקיים הפילה לאחרונה 50 אתרים ישראלים.

הם כתבו על כך בדף הפייסבוק שלהם

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

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

האתר הפרוץ הוביל לדף בודד ובו התוכן והתמונות הבאות:

ברור ש-50 האתרים נפרצו בהעדר אמצעי אבטחה מינימליים.

לאחר הפריצה, הקשיחה חברת נט ויזיון את הכניסה לשרת, וכך הפך כל נסיון לסייע לקשה יותר. על מנת להכנס לשרת נדרש ממני לתת את כתובת ה-IP שלי, לקבל אישור לכניסה מכתובת זו, ורק אז להכנס. למה חושבים על זה רק אחרי שאתרים נפרצים? (על זה נאמר: too little. Too late). הגבלה כזו הייתה מונעת את הפריצה, ולאחר הפריצה האטה את הסרת דברי הנאצה.

הסעודים שיתפו פעולה

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

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

וכך נראה האתר אחרי ההסרה:

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

איך להגן על אתר בפני פריצה

1. להשתמש בסיסמאות חזקות לממשק עריכת האתר, העלאת תכנים באמצעות FTP (סיסמה נפרדת), התחברות מרחוק לשרת (Remote Desktop) – גם כאן, סיסמה נפרדת.

2. החליפו את הסיסמאות אחת לחודש.

3. השתמשו בסטנדרטי קידוד שימנעו ככל האפשר פריצה באמצעות SQL Injection

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

5. בצעו גיבוי על בסיס קבוע והשתמשו בשירותי אכסון הכוללים גיבוי יומי של השרת.

6. הפעילו Firewall ו-Antivirus על השרת, ובצעו עדכונים באופן קבוע (Windows Update).

כיצד להפוך קובץ אודיו לרינגטון

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

במאמר זה אסביר כיצד בכל זאת כל אלה ניתנים לביצוע ובחינם:

המצרכים הדרושים

התהליך כולו מצריך מכשיר אייפון, כבל USB, תוכנת ITunes וכמובן מחשב. הלחנתי קטע מוסיקלי קצר אותו ניתן לשמוע כאן, והפכתי אותו לרינגטון שלי. שם הקטע במקור הוא “סוף סוף”.

הכנת הקטע הקולי

בשלב ראשון יש להכין או לבחור את הקטע הקולי, שאורכו עד 40 שניות, אשר ישמש בתור רינגטון. ניתן לבחון קובץ mp3 כלשהו. ניתן להקליט כל דבר, ובמידה והקובץ אינו נשמר בפורמט זה, אלא בפורמט .wav קיימת תוכנה אינטרנטית חינמית לביצוע ההמרה.

שם התוכנה Media.IO

מעבר להמרה עצמה, לעיתים נדרשת עריכה של הקטע. הוספת fade in ו-fade out, חיתוך וחיבור קטעים, וכיו”ב. כל אלה ניתנים לביצוע בכלי עריכת אודיו, ואינם מצריכים אפליקציית יצירת רינגטון ייעודית. כלים חינמיים לא חסרים – לדוגמה הכלי הבא. במקרה שלי, התוצר הסופי הוא קובץ בשם סוף סוף .mp3

המרת הפורמט

השלב הבא מצריך את תוכנת ITunes.

1. הוספת הקובץ לספריה

מוסיפים את קובץ הmp3 המעובד לספריית המוסיקה. ניתן לגרור או לבחור בתפריט Add File to Library

2. איתור הקובץ בספריה

עכשיו בוחרים את הוקבץ מתוך רשימת השירים ועם קליק ימני בוחרים בGet Info

או אז יופיע המסך הבא (יש לעבור לתצוגת Options):

בשלב זה יש להגביל את אורך הקטע ל-40 שניות. הדבר נעשה בכתיבת הערך 0:40 מימין ל”Stop Time”.

לוחצים על OK ונחים קצת..

3. המרה לפורמט AAC

שוב בוחרים את הקובץ ברשימת השירים ובקליק ימני בוחרים בתפריט Create AAC Version

4. איתור הקובץ המומר

עכשיו יש לאתר את הקובץ שנוצר, דרך הExplorer או הFinder (אם אתם עובדים עם מק). הקובץ יהיה בתיקיית השירים של ITunes. ניתן לחפשו לפי השם שלו.

כפי שתראו, הקובץ שאותר הנו סוף סוף.m4a (זו הסיומת של קבצי AAC).

יש לשנות את שם הקובץ לm4r. 

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

ספריה זו נקראת Tunes והיא מופיעה אך ורק באם קיים לפחות רינגטון אחד.

עכשיו צריך לסנכרן ספריה זו עם ספריית הרינגטונים של המכשיר.

סינכרון בין ITunes למכשיר הIPhone

על מנת שכל מה שתואר כאן יעבוד, יש להגדיר סינכרון בין משכיר האייפון לתוכנת ITunes. כאשר מחברים את המכשיר בכבל USB, הוא יופיע בצד שמאל. לחיצה עליו תאפשר ביצוע Sync, כאשר ניתן להגדיר מה יסונכרן ומה לא, לרבות תמונות, וידאו, אנשי קשר, ובין השאר גם “Tones” קרי: רינגטונים. לאחר שינוי הסיומת של הקובץ, הוא הופך לרינגטון ומכאן הדרך פשוטה.

מדוע מאגר לשכת עורכי הדין פרוץ לכל

מאת: מיכאל האפרתי

ספר עורכי הדין

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

אם לדוגמה, אחפש את עורכי הדין ששם משפחתם “לוי”, חלון החיפוש ייראה כך:

ולאחר לחיצה על “חיפוש” תופיע ההודעה הבאה:

גולש/ת יקר/ה,

“ספר עורכי הדין” (להלן: “המאגר”) אליו הינך נכנס/ת, הוא רכושה הבלעדי של הלשכה ומיועד לשימוש פרטי בלבד.

מבלי לגרוע מאיזה מתנאי השימוש באתר זה, באשרך הודעה זו הינך מתחייב/ת שלא לעשות כל שימוש אחר במאגר או בכל חלק ממנו.

לחיצה על “אשר” מהווה אישור המשתמש לאמור בהודעה.

או אז מופיעות תוצאות החיפוש.

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

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

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

התשובה היא לצערי – כן.

כתובת הדף אליו הגענו בסופו של דבר היא: http://www.israelbar.org.il/lawyer_list_inner.asp?id=16214

מה שאומר שאם נכניס מספר כלשהו אחרי ה”id” נוכל להגיע לכל עורך דין ועורך דין.

בדיקה העלתה שהרשומות מתחילות ממספר 2, ורצות עד כ-40,000.

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

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

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

הגבלת שאילתות

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

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

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

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

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

לא על כל מאגר מידע צריך להגן

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

אודות bhavin189

bhavin189 (שם בדוי) הוא מתכנת הודי מהעיר Surat שבהודו, המציע את שירותיו באתרים רבים, לרבות עצות בYouTube כיצד לבצע טריק כזה או אחר.  bhavin189  אינו האקר, ומעולם לא פרץ לאתר כלשהו. הוא מתמחה בתחומים הבאים:

Form-fillers – SERPS – Adwords automation – Spiders – Crawlers – Extractors  – Google automation – Account-creators – Bots – Craigslist tools – twitter tools – SEO tools – social networking tools – facebook, orkut, bebo etc.
C#, VB.Net, VB6, VC++, MSXML, SQL, and VBScript.
PHP, javascript, HTML, XML, MySQL, SQLLite
Win32 APIs, Windows hooking, Localization, i18n, and multi-lingual solutions.

bhavin189 התבקש (באותו תסריט דמיוני) לבצע פרויקט במסגרתו יישלף המאגר. לא נדרש כאן האקר (ואין צורך או סיבה לפרוץ לאתר), שכן המידע חשוף וגלוי לכל. צריך רק לקחת. bhavin189  התבקש לפתח תוכנה בvb.net אשר תרוץ על כל הדפים האפשריים החל מhttp://www.israelbar.org.il/lawyer_list_inner.asp?id=2  ועד http://www.israelbar.org.il/lawyer_list_inner.asp?id=40000 . הוא פיתח את התוכנה בשעתיים, זאת מבלי שהוא מבין מילה אחת בעברית. הרצת התוכנה ארכה כיומיים, והניבה קובץ csv.

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

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

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

ואז לקבל מאגר מידע מנותק מהאתר ממנו הוא הגיע:

לבסוף נותרה בעיה קטנה: שמות המכילים מרכאות (“) שיבשו את הייבוא, ומאחר ואני פרפקציוניסט היה לי חשוב לוודא שגם לבעיה זו יש פתרון, ואכן הפתרון נמצא: יצירת קובץ בו כל שדה מופרד בתו “טאב” (tab) במקום מופרד בפסיקים…

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

 

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

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

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

עדכון 5.7.2012

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

 


לצורך הכנת הכתבה בוצעה התייעצות עם מתכנת מהודו, נכתבה תוכנה קטנה ונשלפו כ-100 רשומות ויובאו לתוכנת אקסל, אולם די בכך כדי להוות (POC (Proof of concept של הבעיה. 

מיכאל האפרתי

* לקריאה נוספת על טיוב נתונים, אני ממליץ על מאמר של ברוך עינב (מהתקופה בה היה מנהל מערכות המידע של אנשים ומחשבים) אודות תוכנת DataTune פרי פיתוחי (2001-2003)

כתבה על תוכנת DataTune

קוד המקור של תוכנת טרגט איי (מאמר באנגלית)

Introduction

Auto Update mechanism doesn’t have to be based on the actual version number (kept in the Version String), but can also base on the Last Modified Date Stamp of the newer version compared to the old one. Target Eye Monitoring System, developed starting of 2000, had such mechanism.

Background

Target Eye Monitoring System, which I have developed 12 years ago, was one of the first surveillance and monitoring tools for capturing activity of remote computers. The following description is taken from the original Business Plan of this venture:
Target Eye Monitogin System 
Target Eye is a start-up company whose mission is to develop integrated software solutions for real-time monitoring of
remote PCs, which are based on the company’s patent pending technologies (60/204,084 and 60/203,832). Our major product, Target Eye Monitoring System, is a software product that can continuously track, record, playback, analyze
and report any activity performed on one or multiple remote PCs, in a way which is undetectable by their users. The software relies on a stream of rapidly captured, compressed full-screen images and continuous keystroke capturing to
provide a comprehensive and accurate account of user activities, including local activities which do not generate any network traffic. In this way, the software can track and record activities, which are undetectable by systems
relying on network traffic analysis. A smart agent module running on the monitored PCs uses a rule base to send alerts to the monitoring location(s) or perform pre-defined local operations. Monitoring can be performed from multiple
locations. Major markets are law-enforcement.
Target Eye Monitoring System was developed with an auto update mechanism. This mechanism allows smooth and silent (un-attendant) execution of the new version instead of the current one.
An historical image: The first version of Target Eye (Apr 2000) 
A more recent version (Target Eye 2007) 
This article focuses only in one aspect of this product, which is the Auto Update mechanism.
Creating and Marking Incremental Versions In order to be able to determine a newer version over the current one, there must be a mechanism to mark the various versions, to increment the version number, and to examine the version of a given executable.
The most common way of doing so is using the “Version String” resource, and to use a prebuild automated tool to promote this string each time the application is built.
I used another method which is based on the list modification date of the executable file. This method has its pros and cons, but can be useful for most cases, since it will allow your end users to get any version of your application that
was built after the one that is currently installed.
Before I explain, it is important to mention 2 global variables which are used to build at start:
strRegularLocation
The location and full path of the
application when it runs normally (i.e. c:\program files\your app name\your
app.exe),
and…
strTemporaryLocation
Another full path to be used for the
temporary version downloaded when there is an update.
The reason for doing so it because since the
application downloads it’s new version, the new version can’t be downloaded to
its current location, and can’t replace itself because while a file is used (or
an application is running) the file is locked and can’t be moved, deleted or
renamed.
char strRegularLocation[256];
char strTemporaryLocation[256];
Filling
strRegularLocation and strTemporaryLocation with real values
strRegularLocation
is taken simply from __argv[0], provided that we are sure that we aren’t
running already from the temporary location. We ensure that by using a
parameter named “INSTALL” which will be explained later.
strTemporaryLocaiton
is built using a common folder and a temporary name combined. We use
GetSpecialFolder() to find the path name of this folder in any computer running
the application.
Getting
the date stamp of current version
To
do so, TEGetVersion(), the first building block, is used and returns a CString containing the last modification date of a given file.

//

TEGetVersion returns the last modification date / time of a given file

CString TEGetVersion (CString FileName)  {

Time1; if( CFile::Ge

CFileStatus status1; CTime tStatus( FileName, status1) ) {

return (Time1.Format(“%d%m%M%S”)

Time1 = status1.m_mtime;  ); }  // Failed  return ((CString)””); }

//

When my application starts, I store the date / time stamp of it somewhere.
TE_Options.Version=TEGetVersion((CString)__argv[0]);
// here we keep the date/time stamp of the current version
Now we need to get the date / time stamp of the file online, preferably, without having to download it first, so we only download when we need to update to a newer version.
HINTERNET FileHandle=NULL;
ND_DATA ftpFileData;  //find

WIN32_F Ithe file on the ftp server

ndle, FTP_NEWVERSION, &ftpFileData, INTERNET_FLAG_RELOAD, 0 ); if( NULL

FileHandle= FtpFindFirstFile( m_ftpH a!= FileHandle ) { // get the write time of the ftp file

FileTimeToSystemTime( &ftpFileData.ftL

SYSTEMTIME ftpFileWriteTime, stUTC1; FILETIME ftp; astWriteTime, &stUTC1 ); SystemTimeToTzSpecificLocalTime( NULL, &stUTC1, &ftpFileWriteTime );

}

We need to define how old should be the current
version in order to update it. Again, this approach can be very useful in some
cases and less useful in other. For example, if your application involves a
database, you might be interested to ensure that the database is always most
recent and never older than 3 days.
#define UPDATEEVERY 60*24*7 // 7 days
#define APP_EXE_NAME “TargetEyeTest.exe”

#define FTP_NEWVERSION “NewVersion.exe”

\”

#define APP_REGULAR_FOLDER “\\TargetEye \

The next step is to compare the date / time
stamp of each file.
CFileStatus

statusOld;

ld; if( CFile:

CTime Time

O:GetStatus( FileHandle, statusOld ) )

{ CTime ct,OldTime;

d.m_mtime; hFindFile.GetLastWr

OldTime=statusO liteTime(ct); LONG Diff;

Y %H:%M %Z”); oldver=OldTime.FormatGmt

ver=ct.FormatGmt(“%d %m %(“%d %m %Y %H:%M %Z”);

-OldTime)).GetTotalMinutes(); hFindFile.Close();

Diff = ((CTimeSpan)(c tif (Diff>UPDATEEVERY || resultSpecific) {

// download the newer version }

}

Downloading the new version

Downloading the newer version is performed using TE_DownladLoad() which is listed here. We make several attempts in case there is a temporary block or communication problem.
#define FTPRETRIES 5 // number of retries
BOOL TE_DownloadLoad(char *FtpFileName,char *LocalFileName)

{ int DoTry=FTPRETRIES;  int result;

t = MyConnection

TryAgain:;  try  { resu l.m_FtpConn->GetFile(FtpFileName, LocalFileName, FALSE); }

4];  pEx->GetErrorMessage(sz

catch (CInternetException* pEx) { TCHAR sz[10 2,1024); WriteToLog(“Error %s\n”, sz);

6 – TE_Load”,MB_OK); pEx->Delete();  } if (!resul

if(TE_DEBUG) MessageBox(NULL,sz,”Error t) { if(DoTry– >0) goto TryAgain; return(FALSE); } else {

return (TRUE); }

}

Now we are ready to switch between the currently running version (the
old one) with the newer one.

Executing the newer version

BOOL ExecuteNewVersion(char *ExeName,char *Param)

{ STARTUPINFO sinfo;

pinfo; ZeroMemory(&sinfo, s

PROCESS_INFORMATION izeof(sinfo)); sinfo.cb = sizeof(sinfo);

info.dwFlags=STARTF_USESHOWWINDOW ;

sinfo.lpDesktop= “WinSta0\\Default”; ssinfo.wShowWindow=SW_SHOW;

(char*)(LPCTSTR)((CString)(ExeName)+(CString)” “+(CString)(Param)

if(!CreateProcess(NULL ,), NULL, NULL,FALSE,NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL, &sinfo, &pinfo))

);

{ char s[256]; sprintf(s,”Can’t execute program: %s params %s”,ExeName,Para m // ERROR LOG TELog.LogError(“Execute New Version”,s,0); return FALSE; }

else { return TRUE; }

}

So if we put all the code together we get:
CFileStatus statusOld;

CTime TimeOld;

atus( FileHandle, statusOld ) ) { CTime c

if(CFile::GetS tt,OldTime; OldTime=statusOld.m_mtime;

NG Diff; ver=ct.FormatGmt(“%d %

hFindFile.GetLastWriteTime(ct); L Om %Y %H:%M %Z”); oldver=OldTime.FormatGmt(“%d %m %Y %H:%M %Z”);

e.Close(); if (Diff>UPDATEEVERY || resultSp

Diff = ((CTimeSpan)(ct-OldTime)).GetTotalMinutes(); hFindFi lecific) { // downloading the newer version

MPPLACE)) { // We have successfully downloade

if(TE_DownLoad((resultGeneric)?NEWEXESTR:NEWEXE,T Ed the newer version if(ExecuteNewVersion(TEMPPLACE,”INSTALL”)) {

rent version can now quit }

// We have successfully executed the // newer version. Cu r else // Failed to execute new version } else {

TELog.LogError(“New Ftp version found”,”Can’t download”,0); } }

}

The TE_Init() function

TE_Init() is used to determine the parameters
used when application was executed (Unlike the full version of Target Eye
Monitoring System, which is much more complex, in our example, there is one
optional parameter – “INSTALL”).
if(__argc>1)

{

if(strcmp(__argv[1],”INSTALL”)==0)

{

// TE_FirstTime(); -> here you can place code you wish to

//be executed only during the first run  } } else

xists at the tem

// No parameters { // Delete a temporary version if eporary location

}

Replacing old with new

In order to quit in a normal fashion, without missing anything we wish
to do before quitting, the main even loop contains a check for the value of
NeedToQuit, which would normally be FALSE.
BOOL NeedToQuit=FALSE;
When NeedToQuit becomes TRUE, the application will perform any routine
required before quitting (for example, saving unsaved work). For example:
if(NeedToQuit)

{

if(TE_DEBUG)
MessageBox(NULL,”Terminating Targe Eye”,

“Target Eye Monitoring System”,NULL);

return FALSE;

}

Further, the application expects to be executed either with the
“INSTALL” parameter as part of the command line, or without it. The
following scheme illustrates the flow of an installation of a newer version to
a temporary location (the Desktop folder, in our example), up to the moment the
temporary file used for it is deleted. This requires several stages:
The Target Eye Cycle
Stage
Ran
with Parameter
Ran
from location
Description
1
None
Regular
The
current (old) version is running before the newer version is available
2
The
newer version checks if there is a temporary copy of itself at the temporary
location, but there isn’t any
3
A
newer version is found
4
Newer
version is downloaded to a temporary location
5
Newer
version runs from the temporary location with the “INSTALL”
parameter.
6
Current
version quits
7
INSTALL
Temporary
The
newer application ran from the temporary location copies itself to the
regular location, replacing the old version which quitted (5)
8
The
newer version runs the copy located in the regular location and quits.
9
None
Regular
The
newer version checks if there is a temporary copy of itself at the temporary
location, and deletes it.

Choosing an FTP server for this demo

In order to use the source code that attached to this article, there are
predefined settings of a public Secured FTP server available to the public by Chilkat Software, Inc.
The details of this server are:
Secure FTP Server
Details
Type FileZilla
Address ftp.secureftp-test.com
Login Test
Password Test
There is a file there named hamlet.xml which can be used for testing a
remote file date stamp.

Internationalization

To comply with scenarios in which there
are users worldwide, and yet we wish to release a version to be available at
the same moment to all of them regardless of their local time, we use
FormatGmt
GMT is an absolute time reference and doesn’t
change regardless of the season or the location. FormatGmt is used like that:
CTime t( 1999, 3, 19, 22, 15, 0 );

// 10:15 PM March 19, 1999

%B %d, %Y” ); ATLASSERT( s == “Friday, M

CString s = t.Format( “%A,

arch 19, 1999″ );

Limiting to a single instance

The mechanism described in this article can only work if we limit our application to run only once at any given moment.
To do so, several methods can be used, such as CreateMutex().
Target Eye Monitoring System uses a different and a bit “brutal” approach, which will be explain in details over another article. Basically, Target Eye Monitoring System searches
for other instances currently running in memory, and when found, does one of the two following options:
  1. If the instance found is newer, the current running instance quits.
  2. If the instance found is older, the current running instance kills it.
To explain, let’s consider the following
scenario. An end user had his current copy of software updated to a newer one.
A day after, this end user runs the original CD of the software. The version
that resides on the original CD, will search for new updates at the FTP server,
which is unnecessary. Further, if the application runs constantly (like a
monitoring application should), then probably when the CD version is ran, there
is also another newer version already running. To address such scenario and other
scenarios, we should take the necessary measures to ensure that an application
will always be up to date.

משלוח סמסים ללא תלות בספק סלולר

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

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

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

הדרך לצרוך שירות כזה הוא באמצעות התממשקות. זה יכול להיות אתר אינטרנט שמציע שירות הכולל משלוח SMS, או תוכנה (Desktop Applition), כאשר הדרכים להתממשק למערכת הנן:

  1. המרת מייל לסמס. שיטת Mail2SMS.
  2. פנייה לשרת HTTP באמצעות פקודת GET.
הטכנולוגיות הנתמכות על ידי החברה הן:
SMPP 3.3 ו-3.4
CIMD2
OIS
שפות התכנות הנתמכות כוללות: Soap, XML, Java, Visual Basic, PHP ו-Pearl.
שפת ++C אינה נתמכת ישירות. פניתי לחברה וקיבלתי תשובה שאין להם תמיכה או דוגמאות קוד לשפה זו, שכנראה הולכת ונעלמת מן העולם. למרות זאת, כתבתי בעצמי תוכנה קטנה שעושה שימוש בשפה זו ובMFC אשר שולחת SMS לכל יעד בארץ ובעולם, ואף נידבתי את קוד התוכנה (עכשיו יש להם תמיכה ב++C … ).
התוכנה נראית כך:
והקסם מאחוריה הוא בהתממשקות שנעשית באופן הבא:
כל משתמש (כולל משתמש Trial כמו במקרה שלי), מקבל שם משתמש וסיסמה אשר הופכים לחלק מקוד התוכנה.
התוכנה שלי עושה שימוש בClass קוד פתוח בשם WinHTTPClient אשר חיבר תוכניתן סיני בשם Sheng Chi.
כתבתי רוטינה בשם SendSMS אשר משמשת ה”מנוע” של התוכנה.
כפי שתראו יש צורך לקבוע פרמטר בשם DC עם ערך “4” ולקדד את ההודעה כHexadecimal, זאת על מנת שתתמוך בתווים בעברית (ובשפות נוספות), ולצורך כך כתבתי פונקציה נוספת בשם ConvertHex:
שם השולח יכול להיות מספר טלפון, או שם (באותיות לטיניות בלבד, וללא רווחים).
כתובת הנמען כוללת קידומת מדינה, ומספר טלפון (ללא ה”0″ בהתחלה).
והעלות, כאמור, חינם לתקופת נסיון ולאחר מכן 0.006 יורו (כ-2 אגורות) להודעה.
יש גם גרסת אייפון

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

יום עבודה רגיל שכלל הטסת מטוס LearJet…


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

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

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

ולסיום, הדבר הכי קרוב לחוויה עצמה…

 

אפשר גם וגם

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

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

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

יש לתת את הדעת לכך שאופרטיבית אין דרך טובה יותר ממספר תעודת הזהות לזהות משתמש או לקוח. מספר הזהות מלווה כל אזרח בכל מקום ובכל חנות או אתר, בעוד שלפי השינוי המוצע, כל אדם יצטרך להחזיק במספר רב של “מספרי לקוח”, לכל אתר ואתר. לעומת זאת אם היו כל אתרי ה e-commerse מתאגדים ומנפיקים מספר לקוח אחיד, אזי הבעיה של מספרי הזהות הייתה צצה מחדש שכן האקרים היו מתלבשים על מספר הלקוח הגלובאלי בהיותו מספר בעל ערך ומשמעות כמעט זהה לזו של מספר הזהות…

הפתרון המוצע

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

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

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

כיצד יתבצע זיהוי של לקוח חוזר

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

האם הHash לא יהפוך למזהה הייחודי החדש?

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

ומה קורה למספר תעודת הזהות בכל התהליך

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

אפשר לגבות (וגם לגנוב) סמסים בקלות

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

מי שמשתמש בITunes ומחזיק במכשיר IPhone אולי יופתע לגלות עד כמה קל לשלוף את תוכן הודעות הסמס מהמחשב שלו.

אחרי חיבור המכשיר למחשב, מתבצע סינכרון, ולמרות שאין כל חיווי לכך בתוכנת ITunes שלכאורה מסנכרנת רק קבצי מדיה, הרי שמאותו רגע המידע הרגיש שמור כבר בתיקיה הבאה:

c:\users\שם המשתמש שלך\appdata\roaming\apple computer\Mobilesync\backup\תיקיה זמנית

עכשיו נסביר מה זה מה:

“שם המשתמש שלך”, השם דרכו עשית לוג אין לWindows.

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

אם תפתחו תיקיה זו תראו קבצים מוזרים למראה…

Image

אולם הקובץ בו נשמרות כל תכתובות הסמס, הנו קובץ ייחודי בעל שם אחיד לכולם.

שם הקובץ: 3d0d7e5fb2ce288813306e4d4636395e047a3d28 .

כן. פשוט וקליט…

נפתח את הקובץ ונראה משהו כזה:

Image

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

רק לדוגמה, ניתן לטעון קובץ זה לאתר הבא, ולהמיר אותו לפורמט קריא כמו PDF או אקסל.

גם המרה לפורמט HTML אפשרית בקלות. לדוגמה:

<html><head><meta http-equiv=”content-type” content=”text/html; charset=UTF-8″></head><body>
<table border=’0′><tr style=’font-weight: bold’><td>Date</td><td>Number</td><td>Sent</td><td>Text</td></tr>
<tr><td>’2011-09-12 03:03:00′</td><td>’07777′</td><td></td><td>’בהתאם להחלטת משרד התקשורת, חסימת זיהוי מספר הפלאפון (קבועה או חד פעמית) אינה חלה בעת התקשרות לשירותי חירום ציבוריים'</td></tr>
<tr><td>’2011-09-12
אשר יוצג כך:
כמה פשוט…
ואין מדובר בתצוגת ההודעות כפי שהיא מופיעה בטלפון הנייד שלכם (רק ההודעות האחרונות) אלא כל ההודעות מיומו הראשון של המכשיר.
והרי לכם סיבה נוספת להגן על המחשב שלכם.

מערכת ההצפנה שגם הFBI לא יכול לפרוץ

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

אבני היסוד של אמצעי אבטחת המידע הנמצאים בשימוש כיום עדיין מבטיחים בחלק מהמקרים הגנה בלתי ניתנת לפריצה לבמקרים אחרים הגנה שידרשו שנות אדם רבות על מנת לפרוץ, בוודאי שלא משאבים שמצויים ברשותו של 0xomar וחבורתו, גם אם יתאגדו וירתמו אלפי מחשבים לטובת פריצה אחת. גם אז, הצפנה אסימטרית מבוססת RSA עם מפתח מספיק גדול או הצפנה סימטרית מבוססת AES256 לא תיפרץ.

וכאן אני רוצה להציג כלי פשוט וחופשי. TrueCrypt הנה תוכנה הניתנת להורדת באתר: TrueCrypt.org.

הרעיון הוא כזה: נניח שיש לכם תיקיה ובה קבצים אותם אינכם רוצים שאיש יראה. ניתן ליצור קובץ שלמעשה יכיל בתוכו כונן וירטואלי מוצפן. כונן זה יכול להשמר על פני מחיצה שלמה (מה שפחות מומלץ) או בקובץ. הסיבה לכך שעדיף לשמור את הכונן הוירטואלי בקובץ ולא בpartition היא שקל יותר להעביר כונן וירטואלי כזה ממקום למקום, לעומת הצפנת partition שלא ניתנת להעתקה בקלות והיא נשארת מוצמדת להתקן עליו היא נוצרה, בין אם זה disk on key או כונן / דיסק אחר. אם יוכנס דיסק כזה למחשב, תופיע הודעה שיש לפרמט את ההתקן, מה שעלול לגרום בטעות לפירמוט ולאבדן המידע. לעומת זאת, יצירת כונן וירטואלי בתוך קובץ טומנת בחובה אפשרויות רבות. הדוגמה הפשוטה ביותר היא לתת לקובץ שם שלא יסגיר את היותו מוצפן. לדוגמה: letter100.doc. מסמך זה ניתן לצירוף להודעות מייל, העלאה לשרת אכסון קבצים, וכל פעולה אחרת, אולם כל עוד לא חשפתם את היותו כונן וירטואלי מוצפן של True Crypt, וכל עוד לא חשפתם לאיש את הסיסמה, לא ניתן יהיה לפתוח אותו ואת תכולתו. לגבי התכולה, התכולה יכולה להיות כל מה שנשמר בכונן או התקן, קרי: קבצים מכל סוג שהוא, תמונות, מסמכים, תוכנות, תיקיות. הכל נשמר והכל מוצפן בקובץ אחד. לשם כך, בוחרים באופציה: Create Volume

או אז מופיע הWizard הבא:

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

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

לצורך המאמר, יצרתי ציור שנראה כך:

ושמרתי אותו תחת השם : SecretDrawing.jpg.

עכשיו יצרתי מסמך טקסט בשם SecretText.txt שמכיל שורה אחת והיא:

“זהו הסוד שלי”

עכשיו, יצרתי כונן וירטואלי שכדי לפתוח אותו יש להכניס את הסיסמה הבאה: 1234567890abcdefghi

לא סיסמה גאונית, אבל זו כאמור הדגמה בלבד. למעשה, TrueCrypt עצמו יתריע על היות הסיסמה קצרה מדי:

הכונן שמור בקובץ ששמו: letter100.doc.

אם נפתח את הקובץ, נראה דבר כזה:

אולם אם אגרור קובץ זה אל חלון TrueCrypt

אז אבחר באופציה Mount, יופיע המסך הבא:

עכשיו אכניס את הסיסמה, והכונן הוירטואלי ייפתח.

וב”מחשב שלי” יופיע כונן חדש – N.

בתוך הכונן, ראו זה פלא, שני הקבצים…

עכשיו, שימו לב, תוכנת TrueCrypt היא פרוייקט קוד פתוח. כל האקר יכול לאתר את קוד המקור המלא, ועדיין, כשזוכרים שלא מספיק להצפין, ולא מספיק לבחור סיסמה חזקה, צריך גם לעשות זאת נכון (לדוגמה: לא לשמור את הסיסמה בגוף הקובץ המוצפן, ולא להשאיר “דלתות אחוריות” באפליקציות הצפנה, או בכלל לא לשמור כלום hard coded), וזו רק דוגמה לאיך לעשות זאת נכון במינימום השקעה ומינימום ידע.

בכתבה הבאה מתואר נסיון של הFBI  לפתוח הצפנה של דיסק שהוצפן בTrueCrypt ללא הצלחה. הסיבה, הדרך היחידה לפרוץ הצפנה מבוססת AES הנה “לנחש” את הסיסמה וככל שסיסמה זו ארוכה דיו, יהיה צורך באלפי שנים על מנת לנסות את כל הקומבינציות עד לאיתור הסיסמה הנכונה. דרך אחרת לפריצה מבוססת על סיסמאות נפוצות, מילים מהמילון וצירופים כאלה ואחרים, ושיטה זו (Dictionary) נוסתה על ידי צוות הFBI במהלך 5 חודשים אולם ללא הצלחה, זאת משום שאם הסיסמה הנה צירוף חסר משמעות של אותיות וסימנים מיוחדים, גם לשיטה זו אין סיכוי. ניתן לקרוא על בחירת סיסמאות במאמר הבא בו המלצתי למשל לעשות שימוש בתווים בלתי קריאים כחלק מהסיסמה.

להורדת הקובץ המוצפן: www.haephrati.com/letter100.doc