هر آنچه به شما نمی‌آموزند...

BusyBox چیست؟

بیزی‌باکس ابزاری است قابل اجرا بر روی سیستم‌عامل‌های شبه-یونیکس نظیر خانواده گنو/لینوکس، اندروید و FreeBSD که بطور ویژه برای سیستم‌های با منابع کم طراحی گردیده است. سازندگانش به آن لقب «چاقوی سوئیسی لینوکس توکار» داده‌اند (به استفاده از سیستم‌عامل گنو/لینوکس در گوشی‌ها، تلویزیون‌های هوشمند و... لینوکسِ توکار یا Embedded Linux گفته میشه)، چراکه فایل باینری آن به تنهایی میتواند بیش از ۳۰۰ دستور یونیکسی متداول را برای ما فراهم آورد. این برنامه تحت اجازه‌نامه GPL منتشر میگردد.

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

ادامه مطلب...
۲۳ شهریور ۹۵ ، ۱۷:۴۰ ۲۳ نظر موافقین ۲ مخالفین ۰

چند نکته امنیتی اشتباه

سالیان سال است که هزینه زیادی صرف امنیت شبکه‌های کامپیوتری و کاربران آن میشود، اما همچنان در سال ۲۰۱۶ شاهد این هستیم که هیچ پیشرفتی در قسمت دفاعی نداشته‌ایم. بنظر من عوامل زیادی دست در دست هم باعث بروز این وضعیت شده است که یکی از آنها «نکته‌های امنیتی» است.

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

در این پست به بررسی چندین نکته امنیتی که کاربران به اشتباه آنها را قبول دارند و به آن تکیه میکنند میپردازیم.

 

ادامه مطلب...
۲۴ مرداد ۹۵ ، ۰۱:۴۷ ۲ نظر موافقین ۲ مخالفین ۰

آیا WiFi رمزنگاری نشده خطرناکتر از شبکه WPA2/PSK است؟

هر وقت از متخصصان امنیت بخواهید ۵ توصیه مهم در مورد امنیت اطلاعات در شبکه‌های کامپیوتری به افراد عادی بدهند، یکی از آن موارد همیشه چیزی شبیه این جمله‌هاست: «از WiFiهای رمزنگاری نشده (Open) استفاده نکنید»، «همیشه وقتی از شبکه‌های WiFi رمزنگاری نشده استفاده میکنید از VPN استفاده کنید» یا «از انجام عملیات حساس مانند عملیات بانکی هنگامی که از یک شبکه WiFi رمزنگاری نشده استفاده میکنید اجتناب کنید» و... .

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

ادامه مطلب...
۱۵ مرداد ۹۵ ، ۲۱:۴۰ ۳ نظر موافقین ۲ مخالفین ۰

آردوینو چیست؟

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

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

ادامه مطلب...
۲۰ تیر ۹۵ ، ۰۱:۴۸ ۵ نظر موافقین ۲ مخالفین ۰

رمزگشایی پکت‌های WPA PSK

Pre-Shared Key که بطور اختصار PSK خوانده میشود یکی از دو متد موجود برای اعتبارسنجی شبکه‌های WPA و WPA2 است. این متد با استفاده از یک رمز عبور که میتواند تا 133 کاراکتر انگلیسی طول داشته باشد، برای هر کلاینت، کلید رمزنگاری یکتایی را تولید میکند.

مدتی بود که میخواستم در مورد امنیت شبکه‌های وایرلس مطلب بنویسیم که بالاخره امروز همت کردم و بعد از پیاده‌سازی سرویس آنلاین WPA PSK ساز روی آیس کت، شروع به نوشتن این مطلب کردم.

در این مطلب به آموزش رمزگشایی پکت‌های WPA/WPA2 با استفاده از ساخت PSK مربوط به اون شبکه میپردازیم. این موضوع بسیار ساده بوده و به شما در درک مقاله‌های آینده ما در مورد امنیت شبکه‌های وایرلس کمک خواهد کرد؛ پس در بدون وقت تلف کردن به مراحل انجام اینکار میپردازیم.

ادامه مطلب...
۲۷ خرداد ۹۵ ، ۱۶:۴۰ ۵ نظر موافقین ۲ مخالفین ۰

تفاوت میکروپروسسور و میکروکنترلر

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

اگر راه را بدانید، برای شما به عنوان یک برنامه نویس، تحقق این تصورات بسیار ساده خواهد بود.

همونطور که قبلاً گفته بودم، قصد داریم در آیس کت علاوه بر مسائل کامپیوتری، به مسائل الکترونیکی نیز بپردازیم و برای اولین پست قصد داریم شما را با میکروکنترلرها و میکروپروسسورها آشنا کنیم.

ادامه مطلب...
۱۳ خرداد ۹۵ ، ۰۱:۰۰ ۵ نظر موافقین ۳ مخالفین ۰

چگونه مجریان قانون قادر به ردیابی گوشی ما هستند؟

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

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

ادامه مطلب...
۰۳ خرداد ۹۵ ، ۱۵:۰۵ ۱ نظر موافقین ۳ مخالفین ۰

اشتباه رایج در مقداردهی اولیه توسط کانستراکتور

یکی از مهمترین ویژگی‌های ++C کارایی و سرعت آن است، اما این امر بخوبی میسر نخواهد شد مگر آنکه ما نیز به عنوان برنامه‌نویس نقش خود را به درستی ایفا کنیم.

امروز میخواهیم یکی از رایج‌ترین اشتباهات برنامه‌نویسان ++C (بخصوص برنامه‌نویسانی که از زبان دیگری به این زبان روی آورده‌اند) را به هنگام ایجاد کانستراکتور یک کلاس تشریح کنیم. فرض کنید کلاسی به نام شخص (Person) داریم که Member Variableهای آن عبارتند از: نام(firstname)، نام خانوادگی (lastname) و سن (age).

این کلاس را به صورت زیر مینویسیم:

class Person
{
private:
std::string firstname;
std::string lastname;
int age;
public:
Person (std::string pFirstname, std::string pLastname, int pAge)
{
firstname = pFirstname;
lastname = pLastname;
age = pAge;
}
};

شما کد را کامپیایل و اجرا میکنید، هیچ خطا یا هشداری داده نمیشود و کد هم به درستی و بدون کوچکترین مشکلی اجرا میشود. اما اگر این نمونه کد را به یک برنامه‌نویس خبره در زبان ++C نشان دهید به شما خواهد گفت این کد درست نیست.

اون موقع هست که از خودتون میپرسید وقتی کد داره به درستی اجرا میشه مشکل من کجاست؟

ادامه مطلب...
۲۴ ارديبهشت ۹۵ ، ۲۳:۴۴ ۰ نظر موافقین ۲ مخالفین ۰

محاسبه ظرفیت واقعی پاوربانک

شاید برای شما پیش اومده باشه که پاوربانک مثلاً 10.000 میلی آمپری خریدید و انتظار دارید باتری گوشی 1500 میلی آمپری شما رو رو حداقل 6 بار بطور کامل از صفر تا 100 پر کنه، اما چیزی که در عمل مشاهده میکنید رقمی پایین تر از حد انتظار شماست.

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

ادامه مطلب...
۱۶ ارديبهشت ۹۵ ، ۱۰:۰۰ ۷۸ نظر موافقین ۲ مخالفین ۰

چرا کتابخانه استاندارد iostream در ++C بدرستی خطاها را نمایش نمیدهد؟

یکی از مواردی که برنامه‌نویسان ++C بخصوص برنامه‌نویسانی که تازه به این زبان روی آورده‌اند با آن مواجه هستند این است که به هنگام کار کردن با کتابخانه iostream نمیتوانند به درستی خطاها (Exception) را پوشش دهند. بطور مثال در کد زیر قصد داریم فایلی که وجود ندارد را باز کنیم و با استفاده از بلاک Try...Catch خطاهای احتمالی را پوشش دهیم:

#include <iostream>
#include <fstream>
using namespace std;

int main() {
ifstream file;
try {
file.open("IceCat.ir");
while (!file.eof()) {
cout << file.get();
}
}
catch (...) {
cout << "Error openning file..." << endl;
return 1;
}
file.close();
return 0;
}

اما با اجرای کد بالا با اینکه از بلاک Try...Catch برای هندل کردن Exceptionهای احتمالی استفاده کرده‌ایم،  مشاهده میکنیم که در صورت بوجود آمدن خطا (مانند وجود نداشتن فایل) بطور پی در پی عدد 1- در کنسول چاپ خواهد شد.

در این پست به علت بروز این امر و نحوه حل آن خواهیم پرداخت.

ادامه مطلب...
۰۶ ارديبهشت ۹۵ ، ۲۳:۴۰ ۲ نظر موافقین ۲ مخالفین ۰