تشریح و نمایش فنی باگ و حمله‌های استک اورفلو و بافر اورفلو

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

این دو وئدیو کمی سطح بالاتر هستن و اگر دیدین و همه اش رو متوجه نشدین، می تونن راهنمایی باشن برای اینکه چه چیزهایی رو دنبال کنین و بخونین.

ویدئوی اول حمله استک اورفلو در یوتوب و آپارات و ویدئوی دوم هم در یوتوب و آپارات.

پروژه یکساعته برای یاد گرفتن کلی لینوکس و شبکه: راه اندازی وب سرور از خانه

این کاری بود که وقتی من کردم کلی ذوق داشتم. با اولین ADSLی که گرفتیم: روی یه لینوکس وب سرور راه انداختم و بعد با تنظیمات روتر و دینامیک دی ان اس کاری کردم که وب سرور من از همه دنیا قابل دیدن باشه. تقریبا ۳ سال قبل یکی ازم خواست این رو توضیح بدم و … الان بالاخره به قدیمی ترین ایمیل اینباکسم پاسخ میدم و اگر براتون جالبه و نکردین، پیشنهاد می کنم شما هم سراغش برین که کلی هیجان داره (:

سرگرم این روزها؟ این چهار گنو/لینوکس‌ سبک برای کامپیوترهای قدیمی رو تست کنین

اگر دوست داشتین این مطلب رو به شکل ویدئویی توی آپارات ببینین.

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

در صورتی که می خواین سراغ این مساله برین دو تا چیز لازم دارین: یه کامپیوتر نسبتا قدیمی که داره خاک می خوره و یه لینوکس جدید ولی جمع و جور و بامزه. اولی از شما و این هم پیشنهادهای من برای دومی ها:

لوبونتو

همینکه از «یه لینوکس سبک برای یه کامپیوتر قدیمی» حرف بزنین، خیلی ها به لوبونتو اشاره می کنن. لینوکسی مشابه اوبونتو ولی با میز کاری بسیار سبک تر. اما در واقع لوبونتو برای کارکرد خوب نیاز به حدود ۱ گیگ رم و یه سی پی یوی بهتر از پنتیوم ۲ داره که شاید بالاتر از سطح کامپیوتر قدیمی شما باشه. اما در عوض با لوبونتو به یه لینوکس کامل می‌رسین، در واقع برای من لوبونتو یکی از گزینه های روزمره است و چیز فان خاصی نیست. فقط نسبت به اوبونتو کمی سبکتره.

پورتئوس

دلیل حضور پورتئوس در اینجا به طور خاص اینه که مبتنی بر گنو/لینوکس اسلکور است و تجربه متفاوتی به شما می ده و چیزهای جدیدی یاد مگیرین. پورتئوس می تونه از روی رم اجرا بشه و طراحی شده که کاملا پرتابل باشه و از روی یو اس بی ران بشه. این گنو/لینوکس ۳۰۰ مگی به شما اجازه می ده بین سینامون و ماته و خیلی چیزهای دیگه انتخاب کنین. نکته باحالتر اینه که یه نسخه مخصوص کیوسک هم داره که باهاش می تونین دسکتاپ هایی رو بسازین که مثلا توی یه فروشگاه هر کسی می تونه باهاش تعامل کنه یا چیزهایی که می خواین رو نشون بده بدون اینکه درگیر امن کردنش بشین.

پاپی لینوکس

حالا که داریم کوچیکتر و سبکتر می شیم، وقتشه از پاپی لینوکس بگیم. یه گنو لینوکس که از ۲۰۰۳ با ماست و توی ۳۰۰ مگ یا کمتر اجازه می ده هر کار مرسومی رو بکنیم. با دسکتاپ قشنگ و بسیار آسون و امکان ریمستر کردن راحت. پاپی مدعی است که بر اساس نیازها و ابزارهای خودش ساخته شده و یک توزیع مثل بقیه توزیع ها نیست بلکه یه ایده و ترکیب است که می تونه رو بقیه توزیع ها پیاده بشه. در نتیجه شما می تونین پاپی لینوکسی بر اساس مثلا ابوونتو یا اسلکور یا رزبین داشته باشین و از پکیج های اون توزیع ها استفاده کنین. همچنین می تونین بر اساس یه پاپی، ریمستر بسازین و توزیع خودتون رو داشته باشین. ایده ای که خیلی ها دوستش دارن. راستش رو ب خواین پاپی همیشه از توزیع های مورد علاقه و مورد تست و حتی خیلی وقت ها مورد استفاده من بوده [و هست!].

تاینی کور لینوکس

از اسمش هم معلومه که اولا کوچیه و ثانیا فقط کور. شما توی تاینی کور با یه توزیع گنو/لینوکس مرسوم روبرو نیستین بلکه با یه حداقل ۱۱ مگی روبرو هستین که می تونین خودتون چیزهای دیگه رو بهش اضافه کنین. یا اگر بخواین جلوتر شروع کنین، با یه کورپلاس ۱۰۶ مگی که کارت شبکه وایرلس شما رو هم می شناسه و گزینه‌هایی برای مدیر پنجره و غیره هم داره. همونطور که گفتم یاد گرفتن تاینی کور کمی متفاوت است. هم به خاطر کوچیکی هم به خاطر فلسفه خاصش که خودش رو روی رم لود می کنه و بعد اپلکیشن ها رو از دیسک می خونه و تو رم لود می کنه و اصولا ایده اش به نصب شدن نیست. از اینجا بیشتر ور برین


البته جا داره از چیزهایی مثل DSL هم یاد کنیم که متاسفانه مدت‌ها است توسعه فعال نداره یا از LFS که بیشتر برای یاد گرفتن اسفاده می شه. اما دلیل انتخاب ۴ توزیع بالا این بوده که در سطوح مختلف می تونن واقعا یه کامپیوتر سال ها خاموش رو نه فقط روشن که به یه ابزار مورد استفاده تبدیل کنن.

هکاتون در آرماگدون: تلاش برای عملیاتی کردن یک دستگاه تنفس مصنوعی آزاد

یکی از آدم‌های مشهور دنیای ربات‌سازی به نام Gui Cavalcanti تماسی از یه متخصص پزشکی دریافت کرده؛ با یک سوال واضح: آیا می تونیم تجهیزات پزشکی مورد نیاز وضعیت کرونایی رو به شکل آزاد طراحی و اجرا کنیم؟

مساله اینه که ما با یکی از واگیری‌های بزرگ و سریع روبرو هستیم و تقریبا هر ۲ یا ۳ روز، میزان مبتلایان دوبرابر می‌شن. با این روند در چند ماه اکثر جمعیت کره زمین درگیر خواهند بود و طبق آمار بین ۱۵ تا ۲۰ درصد کسانی که مبتلا می‌شن نیازمند کمک‌های بیمارستانی شامل سیستم‌های تنفس مصنوعی هستن و اگر گسترش با همین سرعت ادامه پیدا کنه، ما خیلی زود تجهیزات بیمارستانی و بخصوص دستگاه‌های تنفسی کم خواهیم آورد. درخواست و هدف این گروه اینه که متخصصین نرم افزار، سخت افزار، پرینت سه بعدی،‌ پزشک‌ها و هکرها و سازنده‌ها رو دور هم جمع کنه تا نمونه‌های آزادی از دستگاه‌های مورد نیاز طراحی کنن، نمونه‌هایی با ایده نرم افزار آزاد که نتیجه اش طرح‌هایی بشه که به هر کس، هر شرکت و هر کشور و سازمانی اجازه بده با حداقل امکانات دستگاه‌ها رو تولید کنه.

یکی از اهداف اصلی رسیدن به یک دستگاه تنفس مصنوعی است. دستگاهی هوا رو مرطوب کنه، با اکسیژن مخلوط کنه و بعد اونو با فشار مناسب به ریه‌های بیمار پمپ کنه. در صورتی که نقشه آزاد این سیستم ایجاد بشه، می‌شه اونو به کارخونه ها و کارگاهی مختلف داد تا شروع به ساختش کنن. حتی اگر کارخونه‌ها سراغش نرن، افراد داوطلب می‌تونن با استفاده از تجهیزاتی که هر جایی پیدا می شه (مثلا آردوینو) اونو بسازن و استفاده کنن.

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

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

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

اینترنتی بهتر در زمان کرونا، ممکن و لازم

اصلی‌ترین روش کنترل کرونا در کشورهایی که تونستن کنترلش کنن، حداقل کردن رفت و آمد و تجمع و قرنطینه بود و هنوزم اصلی‌ترین توصیه عمومی «حفظ فاصله اجتماعی» یا چنین چیزی است. یعنی تو خونه بشینیم و تماس ها رو حداقل کنیم؛ احتمالا اگر از همون اول اصطلاح شکستن زنجیره انتقال تبلیغ و اجرا می‌شد، الان یکی از بدترین کشورها از نظر کرونا نبودیم.
بخشی از این فاصله گرفتن اجتماعی به «کار در خانه» و home office یا همون دورکاری است و لازمه این تو خونه نشستن و دورکاری، داشتن اینترنت. هر کسی که توی خونه می‌شینه برای اتصال دائمش به شرکت و کار کردن نیاز به انواع ارتباط داره. از VPNی که کار می کنه تا پهنای باند کافی برای تماس تصویری و انتقال فایل و غیره. تازه احتمالا بخش بزرگی از زمانی که کار نمی کنیم رو هم به دیدن فیلم و آموزش و انواع استریم‌ها اختصاص داده‌ایم. چه از داخلی‌ها چه از خارجی های سانسور شده.

این وضعیت مخصوص ایران هم نیست. تقریبا همه دنیای فنی همین شده و دائما می‌بینیم که شرکتها دارن پهنای باند رو داوطلبانه افزایش می‌دن یا محدودیت حجم رو بر می‌دارن. مثلا کامکست گفته پهنای باند سرویس‌های بسیار ارزونش رو اونقدر بالا برده که جزو اینترنت باندپهن حساب می شه (در مقیاس جهانی، نه این اصطلاح پرسرعت مسخره ما) یا ورزیون گفته ۵۰۰ میلیون دلار در شبکه ۵جی سرمایه اضافه می‌کنه تا آماده افزایش درخواست باشه. نمونه‌های دیگه هم هستن از جمله هند که فایبرنت بدون هیچ هزینه اضافه، سرعت همه رو به ۳۰۰ مگ افزایش داده. در ایران هم گفته شده می تونیم ۱۰۰گیگ اینترنت بگیریم که البته عجایب و پیچیدگی‌هاش رو در خیلی سرویس دهنده ها داره و برای کاربرهای حرفه ای بیشتر ضرر است چون سرعت ها خیلی کمتر شدن.

دلیل اینها از یکطرف فشار دولت ها و سازمان های جهانی به کار کردن در خانه است و از اونطرف وابسته به اینکه شرکت های اینرتنتی نمی خوان با محدود کردن استفاده از اینترنت در شرایط بحران یا افزایش هزینه آدمها، بدنام بشن. اتفاقی که قبلا یه بار برای وریزون افتاد.

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

انتشار دوره کامل بلاکچین و بیت کوین فارسی بر اساس سرفصل‌های پرینستون

پارسال اعلام کردم که به مناسب سیل، یه دوره کامل بلاکچین و بیت کوین بر اساس دوره ای که توی پرینستون تدریس می شه برگزار می کنم و از دوستان خواستم ۱۰ میلیون تومن به مناسبتش کمک مالی کنن که صد در صدش برسه به سیل زده‌ها. کمک دوستان و شرکت های مختلف به ۱۴ میلیون رسید و صد در صدش رو دادیم به سیل زده ها و دوره لایو استریم و همزمان ضبط شد که در نهایت به حدود ۵۵۰ دقیقه ویدئوی خالص رسیدیم.

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

الان می تونین کل دوره بلاکچین و رمزارزها و بیت کوین رو روی آپارات و همچینن یوتوب ببینین و کامنت بذارین یا هر کار دیگه (:

ویدئوها آزاد هستن و هر جور بازنشرشون با ذکر منبع کاملا آزاده و تشویق شده (: همچنین یک نسخه آزاد از کتاب Bitcoin and Cryptocurrency Technologies از اینجا قابل دانلود است و اسلایدهای استفاده شده در درس هم اینجاست و معلومه که استفاده از اینها هم آزاد است، با ذکر منبع.

امیدوارم به درد بخوره و خوش باشین و خندون و همیشه در حال یاد گرفتن.

مرتبط

ما و کرونا، از هکرها تا دیتاست روی کگل

کرونا همه رو به تکاپو انداخته، از هکرهای خوبی که ۵۳۵۲ مقاله علمی مرتبط با کرونا رو به شکل پابلیک در اختیار عموم گذاشتن تا هکرهایی که ترس مردم از کرونا رو تبدیل کردن به کمپین‌های بدافزار و فیشینگ و سوء استفاده از موقعیت.

اما دیتاساینسی ها هم بیکار نیستن و اتفاقا ممکنه با داشتن دیتای زیاد، حداقل الگوهایی کشف بشه که به درد بقیه هم بخوره. فعلا قدم اول انتشار این دیتاست بوده روی سایت کگل. اگر در این حوزه هستین و کگل رو نمی شناسین، وقتشه که نه فقط به این دیتاست که به کل ماجرا هم نگاه دقیق داشته باشین. کگل که شامل تایم سریز روی یکسری از موارد است شامل:

  • شماره سریال
  • تاریخ مشاهده
  • استان
  • کشور
  • آخرین آپدیت
  • تعداد تایید شده ابتلا
  • تعداد تایید شده مرگ
  • تعداد تایید شده بهبودی

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

۵

تحلیلی بر وضعیت کار و زندگی برنامه نویس ها و مدیرسیستم‌های ایران در سالی که گذشت، نمودار و آمار

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

بهداد امسال نتایج نظر سنجی پارسال رو تحلیل کرده و چیزهای جالبی ازش در آورده که می تونین توی وبلاگش کاملش رو ببینین ولی من هم اینجا چند تا از نمودارهای جالبش رو میارم:

شرکت کنندگان در حال افزایش است. بد نیست ولی باید نمونه خوب هم حفظ بشه. اگر شما هنوز توی نظرسنجی سال ۹۸ شرکت نکردین، پیشنهاد می کنم همین الان برین و فرم بررسی وضعیت زندگی و شغل برنامه نویس و مدیر سیستم های ایران رو پر کنین.

در مورد درآمد این رو داریم

که نشون می ده هنوزم درآمد کلی خیلی پایینه. اکثریت زیر سه و نیم میلیون درمیارن (هرچند که باید بخش هایی که تمام وقت کار نمی کنن یا دانش آموز / دانشجو هستن از این حذف بشه) اما در کل درآمد اونطوری که فکر می کردیم بالا نیست.

بحث در مورد زبان ها هم همیشه جالبه. این نمودار نشون می ده که کاتلین که جدید اومده و بعد از اون پایتون شدیدا در استفاده رشد داشته و جاوا و روبی و پی اچ پی نزولی بودن.

نوع شرکت ها رو هم در این دو تا می تونین ببینین. شرکت های خارجی که منطقا بیشترین حقوق های بالا رو دارن و بعد از اونها شرکت های سرویس دهنده هستن. کمترین درآمد مربوط به کسانی است که توی شرکت هایی که محصول مستقل تولید می کنن دارن و استارتاپ‌ها هم اون وسط ها هستن.

در مورد ربط درآمد و زبان و تکنولوژی هم بحث مشابه است. کسانی که تکنولوژی های گسترده تر بلدن درآمد بیشتری دارن و همچنین چیزهایی مثل ارلنگ، اسکالا، کلوژر و … با خاص بودنشون درآمد رو هم بالا میارن.

تحصیلات و درآمد هم ربط واضحی دارن. هر چقدر بچه ها هنوز در حال تحصیل در دبیرستان، کاردانی و لیسانس هستن درآمد کمتری دارن که معقوله. و کسانی که دکترا دارن، حقوقشون از سه و نیم به بالا است. منطقی هم هست دیگه.

و همین اتفاق با سن هم می افته. معمولا بالا رفتن سن باعث درآمد بیشتر می شه که احتمالا به عوامل دیگه مثل تجربه و تکنولوژی هم ربط داره.

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

البته خود بهداد نمودارهای خیلی بیشتری داره که می تونین در وبلاگش ببینین اما منم به شکل پی دی اف اینجا می ذارمشون تا در آینده هم بدونم که قابل دسترسی هستن بدون تغییر لینک (:

از نظرسنجی جادی چه چیزهای فهمیدم – بلاگ بهداد

از نظرسنجی جادی چه چیزهای فهمیدم بخش درآمد – بلاگ بهداد

از نظرسنجی جادی چه چیزهای فهمیدم بخش جنسیت – بلاگ بهداد

و در نهایت هم حواستون باشه که این دیتا کاملا آزاد است و برای همه پس خیلی خوبه اگر امسال هم چند دقیقه ای وقت بذارین و با رفتن به http://bit.ly/irprogrammers یا لینک کاملش https://docs.google.com/forms/d/e/1FAIpQLSdntC_H6ySUvW9iQwn-cFmQCEb6vdX0e0MgIr7XscHeZXA31Q/viewform به سوال ها جواب بدین تا ببینیم با خودمون چند چندیم. احتمالا ترکیب نتایج با سال گذشته می تونه ایده خوبی به اکثر آدم ها بده سر حقوق باید چجوری چونه بزنن و چه تکنولوژی هایی رو باید یاد بگیرن.