بایگانی برچسب: s

ایستر-اِگ برنامه‌نویسی در سیلیکون ولی سیزن سه، قسمت یک

رسم خوبی در دنیای قدیم نرم‌افزار بود که طبق اون برنامه‌نویس‌ها ایستر-اِگ توی برنامه‌ها می‌ذاشتن: قطعاتی که وقتی کار خاصی می‌کردین، کار خاصی می‌کردن. مثلا ممکن بود یک برنامه حسابداری همیشه طبیعی کار کنه ولی اگر ترکیبی از پنج کلید رو پشت هم بزنین، یک بازی کوچیک توش ظاهر بشه. یا مثلا این روزها اگر عبارت do a barrel roll رو درگوگل سرچ کنین…

این ایستر-اِگ های جذاب، به دلایل مختلف در دنیای نرم‌افزار در حال محو شدن هستن ولی هنوز حضوری پر رنگ توی سینما و فیلم دارن. دیشب به شکل اتفاقی با یکیشون روبرو شدم.

اگر با سریال سیلیکون ولی آشنا باشین می‌دونین که سریالی است با فضای کمدی که به فراز و نشیب‌های یک استارتاپ فشرده سازی دیتا می‌پردازه. خود سریال نکات بسیار خنده داری داره ولی در کل روند داستانی‌اش خیلی قابل پیش بینی و سینوسی است و تکراری. اما من وقتی تو خونه هستم، معمولا سریالی، فیلمی چیزی می‌ذارم پخش بشه و دیشب نوبت به سیلیکون ولی رسید و سیزن ۳. در همون ابتداش گیلفویل و دینش سعی می‌کنن از کد ریچارد سر در بیارن. کد اینه:

و وقتی سعی می‌کنین بخونین خیلی راحت نیست. حتی مثلا می‌تونین دقیق‌تر نگاه کنین که تابع main وسط خط گذاشته شده تا به راحتی نبینین که عملا یک تابع داریم که ۱۷ بار صدا زده می‌شه که توش یک کد هگز شیفت داده شده … خوندنش سخته.. پس تایپش می کنیم:


➜ /tmp cat sv.c
typedef void enc_cfg_t;
typedef int enc_cfg2_t;
typedef __int128_t dcf_t;
enc_cfg_t _ctx_iface(dcf_t s, enc_cfg2_t i){
int c = (((s & ((dcf_t)0x1FULL << i * 5)) >> i * 5) + 65);
printf("%c", c); }
enc_cfg2_t main() {
for (int i=0; i<17; i++){
_ctx_iface(0x79481E6BBCC01223 + ((dcf_t)0x1222DC << 64), i);
}
}

و واقعا کمپایل می‌شه:

➜  /tmp gcc sv.c
sv.c:7:5: warning: implicitly declaring library function 'printf' with type
      'int (const char *, ...)' [-Wimplicit-function-declaration]
    printf("%c", c); }
    ^
sv.c:7:5: note: include the header  or explicitly provide a declaration for
      'printf'
1 warning generated.

و اجرا:

➜  /tmp ./a.out
DREAM_ON_ASSHOLES

و سریال با این کد مخفی شده توش، بامزه‌تر می‌شه. این در واقع پیامی است که برنامه نویس قبلی برای این دوستان گذاشته ولی احتمالا کمتر از یک هزارم بینندگان ممکنه روزی ببیننش و بخندن. درست مثل کار اپل که اسم سازندگان اولیه رو «توی» بدنه دستگاه حک کرده بود.

در یک سرچ سریع دیدم که افراد دیگه‌ هم اینو تست کردن و خندیدن (: البته هنوزم بامزه‌ترین موجود این سریال اریک باخمن است و نبودنش بدترین تصمیم سازنده‌ها.

در مورد باگ های اسپکتر و ملت‌داون مطالب دست اول بخونین

این چند وقت بحث باگ های امنیتی سی پی یوها اینقدر عظیم بود که حتی روزنامه های زرد هم دارن درباره‌اش می‌نویسن. اما به نظرم فرصت خیلی خوبیه که اگر به مبحث امنیت علاقمند هستین، در این مورد سعی کنین مقاله های اصلی رو بخونین. چون تشریحی که وبلاگ گوگل از ماجرا منتشر کرده اینقدر خوب نوشته شده که احتمالا با کمی تلاش و جستجوی موازی در مورد مباحث، برای اکثر ما تا حدود خوبی قابل فهمه.

خلاصه باگ های اسپکتر و ملت داون در این سه شکل قابل طبقه بندی است:

  • شکل یک: دور زدن بررسی محدوده (CVE-2017-5753)
  • شکل دو: تزریق شاخه مقصد (CVE-2017-5715)
  • شکل سه: گول زدن کش کننده دیتا (CVE-2017-5754)

در مقاله گوگل این سه روش تشریح شدن و در نهایت به سه نمونه ثابت کننده مفاهیم مطرح شده (ترجمه PoC چی می‌شه؟) رسیدن. مثلا محققین تونستن از داخل یک ماشین مجازی، حافظه هاست رو بخونن یا با یک یوزر معمولی، به حافظه کرنل دسترسی پیدا کنن.

از اونجایی که این باگ ها مربوط به سخت افزارهای سی پی یو هستن، عملا فیکس کردنشون نیازمند انواع بررسی و چک در کرنل ها است و نتیجه اش کند شدن و پیچیده تر شدن کرنل ها! اتفاقی که در حال حاضر داره می افته و مطمئن هستیم جایزه پاونی امسال که به حادترین باگ ها داده می شه، از حالا متعلق به این باگ خواهد بود. تنها کاری هم که خواهیم تونست بکنیم، آپدیت کردن کرنل هامون است به محدود کردن دائمی حالت های بیشتری از این باگ‌ها.

راستی.. کل ماجرا رو گفتم که بگم مقاله گوگل خواندنی است و قابل درک؛ با حوصله و سرچ های جانبی و حالا که خودمونی شدیم این بحث بامزه رو هم بگم که اول گوگل این باگ رو کشف می کنه و به اینتل گزارش می ده، و مدیر عامل اینتل چیکار می کنه؟ تمام سهامی اینتلی که داشت و می تونست بفروشه رو می فروشه! (:

شِت کد: قبرستان کدهای داغون

البته قبرستان رو که از خودم در آوردم (: این سایت شت کد کلکسیونی است از کدهای بد که خب می تونن هم تمرینی مقدماتی برای کد خوندن باشن هم خنده ای بعد از خوندن کد (: چند تاش واقعا بامزه بودن و حیفم اومد شما هم نبینین.

سه ویدئوی جدید از درک برنامه نویسی: یه جوری باشه بتونیم بگیم کار با API بلدیم

در ویدئویهای قبلی درک برنامه نویسی، از پایه در حد متغیر و شرط و حلقه شروع کردیم و پیش اومدیم تا استفاده از APIها مثلا برای خبردار شدن از قیمت خوب بیت کوین و اسمس گرفتن در این مورد. اما از اونجایی که ای پی آی ها واقعا مهمن و چیزی که حتما تو برنامه نویسی حرفه ای باهاش برخورد می کنین، اجازه بدین یک کم دیگه هم روش بایستیم. در این سه قسمت سراغ جایی مثل بکتوری می ریم و با استفاده از سرویس اونها یکسری ریکوئست رست به ای پی آی هاشون می زنیم. در این سه قسمت پایه های یک برنامه رو می سازیم که توش هر کس بتونه رو تخته سیاه یک چیزی بنویسه و دیگران بتونن اونو بخونن – البته تا وقتی که کسی چیز دیگه ای ننوشته.

با ما باشین که حتی از OAauth هم کمی سر دربیاریم.

درک برنامه نویسی قسمت ۰۲۰ تا ۰۲۳ – ای پی آی ها

در سری درک برنامه نویسی چهار قسمت جدید داریم؛ چهار قسمت مهم! اگر مفهوم ای پی آی براتون مبهم بوده، الان وقتشه با اون ابهام خداحافظی کنین!

در قسمت های بعدی، چند ای پی آل در کامند لاین کال می کنیم و بعد می ریم سراغ برنامه نویسی و در نهایت برنامه ای می نویسیم که توش اگر قیمت بیت کوین از قیمت مورد نظر ما کمتر شد، یک اسمس بهمون بده و خبر بده!

آپدیت: در حین ضبط این ویدئوکست بیت کوین هی گرون و گرونتر شد.. الان بیت کوین ۶۱۰۰ دلاره! «الان یا الان؟»

درک برنامه نویسی، API ها در چهار قسمت؛ در یوتوب: ۱، ۲، ۳، ۴ و در آپارات: : ۱، ۲، ۳، ۴

بیست و دو:

https://www.aparat.com/v/XY3AP

بیست و سه:

https://www.aparat.com/v/7BUTz

بستون ۳۵ – امکان ادیت خرج ها و درآمدهای قدیمی

یادتونه یه پروژه بود که توش قدم به قدم همه کارهای یک استارتاپ مرسوم رو می کردیم و فیلم میگرفتیم؟ دارم ادامه اش می دم برای اضافه شدن چند فیچر اصلی. این پروژه قراره بتونه دخل و خرج شما رو نگه داره و بهتون یک دیدی روش بده. یکی از چیزهای مهم برای قابل استفاده شدن این پروژه این است که بتونیم دخل و خرج هایی که قبلا ذخیره کرده ایم رو ادیت کنیم. حالا اگر یک درآمد یا خرج قدیمی رو به کنار بکشین، دگمه های ادیت و حذف ظاهر میشن، فعلا فقط ادیت کار می کنه.

متاسفانه تیکه ای که روی کلاینت کار می کردم درست ضبط نشد. یعنی اینقدر طولانی شد که قطع کردم و بعد دیگه ادامه ندادم. اگر کسی هست که تخصص خوبی در آیونیک داره و علاقمنده کلاینت رو پیش ببره، بهم خبر بده لطفا ((: