קיבלתם הודעה ובה נקודה שחורה שלחיצה עליה תוקעת את פעילות היישומון, או את הטלפון כולו? זה לא גורם נזק של ממש, והנה ההסבר כיצד זה קורה
בימים האחרונים הרשת סוערת סביב הודעה הנשלחת בוואטסאפ ואפליקציות מסרים אחרות, ו"תוקעת" את היישומים בלחיצה עליה.
ההודעה נראית תמימה למראה, ומכילה אימוג'י של "נקודה שחורה" <⚫> והבטחה שלחיצה על אותה נקודה תתקע את האפליקציה. ואכן, מיד בלחיצה על אותה נקודה, האפליקציה (ובמקרים מסויימים הטלפון כולו) מפסיקים להגיב ומחייבים הפעלה מחדש. גרסאות שונות של ההודעה קיימות עבור מערכות הפעלה של אנדרואיד ומערכת IOS המותקנת במכשירי אפל.
במקרה זה, לא מדובר ב"וירוס" או בהשתלטות זדונית על הטלפון, ולמעט ה"שעשוע" שבתקיעת המכשיר אין לכך שום השפעה. למעשה, גם לנקודה השחורה אין כל משמעות. הסוד נמצא ב"תווים בלתי נראים" בתוך ההודעה.
כיום, מערכות הפעלה בטלפונים ניידים ובדפדפני אינטרנט, צריכות לתת מענה להצגת טקסט בשלל שפות, אך בתחילת עידן המִחשוב מערכות ההפעלה נתנו מענה רק להקלדה באלפבית הלטיני. לכל תו ניתן קוד בינארי המקודד אות, ספרה או סימן לרצף של 0 ו-1. התקו הראשון שהיה בשימוש נרחב היה תקן ASCII, שקודד 52 אותיות (גדולות וקטנות), עשר ספרות, ועוד סימני פיסוק ותוים מיוחדים כגון &*!?}{=. קוד ASCII היה מורכב משבע סיביות, ונתן מענה ל-128 תווים שונים. בנוסף לאותיות ולסימנים, חלק מה"מקומות" בקוד הוקצו ל"תווי בקרה" שסייעו לתוכנה המציגה את הפלט להציג את התווים כהלכה.
בהמשך, דוברי שפות אחרות שאינן משתמשות באלפבית הלטיני מצאו פתרונות שונים כדי לקודד טקסט בשפות אלו, וכל עוד השימוש היה מקומי במעבדי תמלילים ייעודיים לשפה זו, לא הייתה כל בעיה. אך עם התפתחות האינטרנט, העניינים הפכו מסובכים יותר. בעברית למשל, בתחילת הדרך השתמשו בוני האתרים בגופן "לטיני" לעברית, כך שהאותיות העבריות מחליפות את אלו הלטיניות בקוד ASCII, וכיוון הכתיבה הוא משמאל לימין. לשם כך היה צורך להפוך את כיוון הכתיבה לפני העלאתו לרשת. בצורה כזו: "תשרל ותאלעה ינפל הביתכה ןוויכ תא ךופהל ךרוצ היה ךכ םשל". כתיבה מסוג זה עדיין קיימת באתרים עבריים ישנים. פתרונות מקומיים דומים נוצרו גם לשפות אחרות כגון גרמנית וצרפתית (שבהן יש שימוש באקסנטים), רוסית וכו'.
כיום, רוב מערכות ההפעלה משתמשות בקידוד "יוניקוד" (UNICODE), שהוא מערכת אחידה לקידוד כלל השפות בעולם. הגרסה הבסיסית של יוניקוד משתמשת ב-16 סיביות, ויכולה לקודד עד 65536 תווים (216). מערכת זו מכילה את כל תווי האלפבית בשפות השונות, סימני פיסוק ותווים נוספים. גם כאן, חלק נכבד מהתווים הם "תווי בקרה" שאינם מוצגים לקורא, אלא נועדו להורות לתוכנה כיצד להציג את התו העוקב. כמו לדוגמא במקרה של הניקוד העברי – ְ הוא סימן השְווא, וכשהוא נכתב אחרי אות קיימת, הוא אינו תופס רוחב אלא מופיע "עליה". נסיון לכתוב אותו באופן עצמאי יוסיף רווח מיותר. השימוש הנרחב בתקן יוניקוד מאפשר לכתוב אתרים בשפות שונות, בלי לפגוע בדרך הצגתם במכשירים שונים ומערכות הפעלה שונות.
בתוכנות מיקרוסופט אפשר להציג כל אחד מהסימנים הללו על ידי הקלדת קוד בן ארבע או חמש ספרות הקסדצימליות (בבסיס ספירה 16 הכולל ספרות מ-0 עד F) והקשה על AltGr+x. למשל 1F4A9 ,0950, או 0469.
זו לא הנקודה, אלא אלפי תווים נסתרים שיוצרים עומס על המערכת | צילום מסך של ההודעה
הכיוון הסמוי מהעין
אחד הסימנים החשובים הוא זה הקובע את כיוון הטקסט, והוא חיוני כדי להציג טקסט דו-כיווני, כמו למשל שילוב של עברית Hebrew ואנגלי English , או אפילו עברית ומספרים 613,248.365. לפני החלפת הכיוון מופיע "תו בקרה" המחייב את התוכנה להציג את התו הבא בכיוון הנדרש. גם תו זה סמוי ואינו תופס רוחב.
ההודעה המדוברת מכילה כמה אלפי חזרות על תווים כאלו, ומחליפה את כיוון הטקסט ימינה ושמאלה לסירוגין. כיוון שהסימנים חסרי רוחב, כולם כתובים "מעל" אותה הנקודה השחורה. כשהמשתמש מנסה ללחוץ על הנקודה, מערכת ההפעלה נאלצת לקרוא את כל אותם אלפי תווים נסתרים, ובתוך כך מחליפה את כיוון הקריאה בכל פעם, מה שיוצר עומס יתר וגורם ליישומון להיתקע.
הודעות כגון אלו מכונות "פצצות טקסט", והן מנצלות פרצות וחורים שונים במערכות ההפעלה, ברוב המקרים לשם שעשוע ולא על כדי לחולל נזק. בפעם האחרונה הודעה דומה ניצלה חוסר תאימות במערכת ההפעלה של אפל בשפת הטלוגו (המדוברת במרכז הודו). זה כתב הברתי המכונה "אָבּוּגִידָה", וכל תו מכיל בתוכו גם את הניקוד. כדי להקליד אות כזו מקלידים כמה תוים נפרדים, ומערכת ההפעלה מחברת ביניהם. במקרה של התו:" జ్ఞా" מערכת ההפעלה של אפל לא הצליחה לחבר את המרכיבים השונים, וקרסה.
גם במקרה הנוכחי, נראה שמערכות ההפעלה השונות יפתרו הבעיה בזמן הקרוב, וימנעו שימוש כזה בתווי הבקרה. אך בינתיים, אפשר להמשיך ולהשתעשע בשליחת הודעות כאלו...