اصل اول جادی: در مسابقه ای که شرکت نکرده‌اید، برنده نمی شین

دوستی ایمیل کناری رو به همین شکل عکس دریافت کرده و برای من فوروارد کرده و پرسیده که به نظرش این جریان فیک (fake یا تقلبی) است و نظر من چیه.

نظر من که معلومه… می دونم که نظر شما هم معلومه ولی می خوام یک راهنمایی کوچیک بکنم که بتونین راحت همه اینها رو تشخیص بدین.

ذهن توانایی قوی ای داره توی دروغ گفتن به خودش و گول زدن خودش. اما یک روش هست که جلوی اینکار رو می گیره: تکرار شفاف فاکت ها. فاکت چیزی است که بهش اطمینان داریم… حینی که ذهن داره می گه شاید واقعا شما ۸۰۰۰۰۰ پوند برنده شده باشین و زندگیتون عوض شده باشه و غیره یک لحظه توقف کنین و واقعیت هایی که ازشون اطمینان دارین رو تکرار کنین. اینکار معمولا می تونه جلوی هر گول خوردنی رو بگیره. من این واقعیت ها رو می بینم:

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

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

به اصل اول مقابله با دروغ های اینترنتی رجوع کن: محاله کسی در مسابقه ای که شرکت نکرده، برنده بشه.

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

اما چرا؟

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

و اگر فکر می کنین همین که چهار هزار تا رو ریختین اینها غیب می شن اشتباه می کنین! بعد از ریختن چهار هزار تا یکی دو روز ازشون خبری نمی شه و بعد می گن «اوه! حساب منتقل شده اما بلاک است چون شما برای انتقال از حساب دیگه ای استفاده کردین و اون چهار هزار تا هم بلاک شده. لطف کنین هشت هزار تای دیگه از همین حسابی که دریافت کننده پول است منتقل کنین تا ما بتونیم همه پول که الان در حساب شما است ولی بلاک شده رو آزاد کنیم»

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

گوگل هیچ وقت به شما ایمیل نمی‌زند که جایی لاگین کنید؛ مواظب فیشینگ باشید

الان یک ایمیل دیگه گرفتم از طرف ظاهرا گوگل که بهم می گه دیتابیس‌هاشون رو تغییر دادن و من باید دوباره لاگین کنم تا اکانتم بسته نشه. چون دفعه پیش یکی از دوستان خوب تو تله‌اش افتاده بود گفتم اسکرین شات بگیرم و بنویسم. من یک ایمیل گرفتم به این مضمون:

در بخش ۱ می بینین که می گه «اخطار! روی فلان کلیک کنید دو باره به سیستم ارد بشین تا اطلاعاتتون رو در دیتابیس سال ۲۰۱۲ گوگل نگه داریم». بخش دو هم که می گه ایمیل از بخش هشداردهی گوگل اومده.

اینکه باید چیکار کنم با یک قانون ساده حل می شه: گوگل هیچ وقت به کسی ایمیل نمی زنه که لطفا بیا فلان جا لاگین کن (: گوگل مطلقا دیتابیس هاش رو سر هر سال آپدیت نمی کنه. اکانت هیچ کس بدون اطلاع رسانی درست در تمام گوگل اکسپایر نمی شه و غیره و غیره. پس من نباید اینجا لاگین کنم و باید ایمیل رو بدون شک پاک کنم. وانمود کردن اینکه ایمیل از کس دیگه می یاد کار بسیار راحتی است (برای مثال نگاه کنید به مطلب « نکته امنیتی : به فرستنده ایمیل اعتماد نکنید)

ولی بذارین ببینیم با کی طرفیم. توی ایمیل یک لینک کوچولو هست (۳). من ماوسم رو روش نگه داشتم و نقطه چهار می بینم که این لینک به کجا می ره. ساده است دیدن اینکه این لینک به گوگل نیست. اون لینک رو کپی پیست می کنم توی براوزر (به عنوان یک نکته امنیتی روش کلیک نمی کنم بلکه کپی پیست می کنم تا مطمئن باشم می رم همونجا) و می رسم به این صفحه:

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

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

پ.ن. اینکار هک نیست (: دزدی است. هک به معنی استفاده هوشمندانه از یک ابزار یا کشف جزییات عمیق یک چیز است (:

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

نکته امنیتی: به فرستنده ایمیل اعتماد نکنید

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

یک ایمیل است ظاهرا از طرف من برای یکسری از دوستان که می گه یک فایل اجرایی رو از سرور یک دانشگاه توی کانادا (که احتمالا ادمین از دسترسی هاش برای این آماتور بازی ها سوء استفاده می کنه) دانلود کنند و اجرا.

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

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

آپدیت ۳ زانویه: اگر دوست دارین یک کرکر ببینین، کامنت ها رو هم بخونین (:

چرا به گنو/لینوکس عشق می ورزم: خاطرات یک هکر

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

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

راه حل ساده است و مجموعه ای از اسکریپت نویسی جذاب (اینبار پایتون) و ترکیب کردن دستورات خط فرمان گنو/لینوکس. جریان چیه؟‌ اینها سیصد هزار شماره تلفن و پسورد دارند که مال یک سیستم خاص است. پسوردها هش شده‌اند. یعنی چنین چیزی:

9370333**** ea9bf866d98db73eb0909fa9c1cc1b11
9370050**** fcbfab2f4cda26061ed9e3ee96a4fd61
9370750**** 6a130f1dc6f0c829f874e92e5458dced
9370001**** 9ad97add7f3d9f29cd262159d4540c96

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

خب حالا راه حل ما چیه؟ یک راه که بهش «بروت فورث» می‌گن اینه که یکی یکی هر چیز ممکن رو هش کنیم. یعنی اول ۱ رو هش کنیم ببنیم به اون چیزی که اونجا هست می‌رسیم یا نه. بعد ۲ رو هش کنیم. بعد ۱۲ رو بعد ۱۱ رو و خلاصه هر چیز ممکن رو. اینکار یک نیروی کور است و بسیار وقت گیر. اما یک راه هوشمندانه تر هم داریم که بهش می‌گن رنگین کمان / rainbow. تکنیک رنگین کمان اینه که تمام کارهای بالا رو بکنیم (یعنی مثلا اگر اکثر افراد در موبایل از پسوردهای عددی استفاده می کنن از ۰ تا ۹۹۹۹۹ رو هش کنیم و رمز و هش اون رو بریزیم توی یک دیتابیس) و بعد یکی یکی هش ها رو توی دیتابیس سرچ کنیم و پسورد رو نشون بدیم… خب آماده‌اید؟

برای ایجاد همه پسوردهای ۰۰۰۰۰ تا ۹۹۹۹۹ و هش کردن اونها این برنامه پایتون رو نوشتم. مطمئنا می‌تونه بهتر هم نوشته بشه ولی این کار من رو راه انداخت:

#!/usr/bin/python

import MySQLdb

db = MySQLdb.connect("localhost","jadi","password","break" )

# prepare a cursor object using cursor() method
cursor = db.cursor()


for i in range(0, 10000):
    pre = '';
    if i < 10:
        pre += '0';
    if i < 100:
        pre += '0';
    if i < 1000:
        pre += '0';
    num = "%s%s" % (pre, i);
    print num;
    # execute SQL query using execute() method.
    cursor.execute("insert into rainbox values ('%s', md5('%s'));"%(num,num));

# Fetch a single row using fetchone() method.
#data = cursor.fetchone()

# disconnect from server
db.close()

همین برنامه رو برای پسوردهای ۰۰۰۰۰ تا ۹۹۹۹۹ و ۰۰۰ تا ۹۹۹ و ۰۰ تا ۹۹ و ۰ تا ۹ هم کم و زیاد کردم و رنگین کمانی شامل ۱۱۱۱۱۰ پسورد و هش اون ساختم:

mysql> select count(*) from rainbox;
+----------+
| count(*) |
+----------+
|   111110 |
+----------+
1 row in set (0.07 sec)

بعد کلیدی روی هش تعریف کردم که سرچ سریعتر بشه:

mysql> ALTER TABLE rainbox ADD primary index (hash);

حالا وقت شکستن رمزها است. فایلی دارم به اسم users.csv که این شکلی است (چهار رقم آخر تلفن ها رو ستاره کردم که پرایوسی آدم‌ها حفظ بشه):

9370333**** ea9bf866d98db73eb0909fa9c1cc1b11
9370050**** fcbfab2f4cda26061ed9e3ee96a4fd61
9370750**** 6a130f1dc6f0c829f874e92e5458dced
9370001**** 9ad97add7f3d9f29cd262159d4540c96

کافیه این رو با لایبری csv پایتون بخونم، و بعد هش هر خط رو از دیتابیسم کوئری بزنم و اگر جواب داشت توی خروجی تلفن و هش و پسورد شکسته شده رو بنویسم و اگر هم جواب این هش توی دیتابیس من نبود، جلوش بنویسم later تا بعدا از یک جای دیگه پیداش کنم.

#!/usr/bin/python

import MySQLdb
import csv

db = MySQLdb.connect("localhost","jadi","password","break" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

spamReader = csv.reader(open('users.csv', 'rb'), delimiter=' ', quotechar='|')
for row in spamReader:
    tofind = row[1];
    try:
        cursor.execute("select pass from rainbox where hash = '%s'"%tofind);
        data = cursor.fetchone()[0];
        print row[0], tofind, data;
    except: #this hash was not in db
        print row[0], tofind, "later" 

# disconnect from server
db.close()

برنامه بالا رو اجرا می‌کنم و زمان می‌گیرم:

jadi@jubun:~/w$ wc -l users.csv && time python break.py > out.txt
316590 users.csv

real    0m57.226s
user    0m25.362s
sys 0m4.856s

واو! سیصد و شونزده هزار پسورد رو توی کمتر از یک دقیقه شکستیم (: یک نگاه به فایل آوت.تکست می‌گه:

jadi@jubun:~/w$ head out.txt 
93703334*** ea9bf866d98db73eb0909fa9c1cc1b11 7523
93700508*** fcbfab2f4cda26061ed9e3ee96a4fd61 8510
93707500*** 6a130f1dc6f0c829f874e92e5458dced 7496
93700013*** 9ad97add7f3d9f29cd262159d4540c96 9538
93700177*** c902514ac30b6e23dbb0c3dc80ec7d4a later
93700858*** ee676ed9ce5bd51b4452ddfbdf962ef7 later
93707848*** 8c249675aea6c3cbd91661bbae767ff1 1986

ظاهرا پسوردهای چهار رقمی مد هستن (: ظاهرا تعداد later ها هم کم نیست. بذارین یک نگاه هم به اونها بندازیم:

jadi@jubun:~/w$ grep later out.txt | wc -l 
1558

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

jadi@jubun:~/w$ grep later out.txt  > later.txt && \
                                cut later.txt -f2 -d' ' | uniq -u | wc -l 
5536

نتیجه طبیعی نیست... یعنی از شش هزار نفر فقط پونصد ششصد نفر پسورد تکراری داشتن؟ هر کسی که یک مقاله در مورد رفتار پسوردی آدم‌ها خونده باشه می دونه که این عدد غیر واقعی است.. مشکل! قبل از استفاده از دستور یونیک، باید داده‌ها رو مرتب کرد. پس یک سورت بین دستور اضافه می کنم:

jadi@jubun:~/w$ cut later.txt -f2 -d' ' | sort | uniq -u | wc -l 
767

هها! نگفته بودم؟ کل این شش هزار نفر باقیمونده، فقط از ۷۶۷ پسورد استفاده کردن. این ۷۶۷ پسورد رو می‌ریزیم توی یک فایل مجزا برای کشف کردنشون در پست بعدی.

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

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

Found: md5("zaka") = 00a3b206c4ad2cae515e28745423093a

و zaka رو یک جایی ذخیره کنه. کافیه این کار رو برای همه هش‌هایی که هنوز کشف نشدن ادامه بدیم. مشخصه که هنوز یکسری کشف نشده خواهند موند ولی بذارین ببینیم به چی می رسیم. این مرحله به خاطر فرستادن درخواست به اینترنت کندتر است و یک راه حل خوبه اینه که فایل hard.txt و برنامه رو روی یک سرور وی پی اس آپلود کنیم و اونجا اجراش کنیم. همین کار رو می کنم و برنامه پایتون رو هم اینجوری می‌نویسم که یکی یکی هش ها رو برداره، به اون سایت بفرسته و توی خروجی اچ تی ام ال که بر می گرده، خطی که پسورد رو نشون می ده رو جدا کنه. اگر این هش اونجا هم نبود می نویسیم too difficult و از خیرش می گذریم (: بریم ببینیم چی می شه:

#!/usr/bin/python

import urllib
import csv
import re

spamReader = csv.reader(open('hard.txt', 'rb'), delimiter=' ', quotechar='|')
for row in spamReader:
    try:
        # This is here for copy/pasters....
        # Originally by Jadi at jadi.net
        params = urllib.urlencode({'term':row[0], 'crackbtn': 'Crack that hash baby!'})
        f = urllib.urlopen("http://md5crack.com/crackmd5.php", params)
        page = f.read()
        password = re.search('Found: md5\("(.*)"\) = %s' % row[0], page)
        print row[0], password.group(1)
    except: 
        print "too difficult"

و برای اجرا می‌زنیم:

user@remotehost:/tmp$nohup python onlinebreak.py > easy.txt & 

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

jadi@jubun:~/w$ time python break.py > out.txt &&  grep later out.txt | wc -l 

real    0m58.863s
user    0m27.706s
sys 0m5.756s
1558

عالی (: حالا دیگه فقط ۱۵۵۸ نفر داریم که پسوردشون کشف نشده. از سیصد هزار نفری که اول داشتیم، پیشرفت عالیی است (: این هزار و پونصد نفر که پسوردهای غیرمعمول گذاشتن هم می‌تونن زنگ بزنن به پشتیبانی و بگن از امروز پسوردشون کار نمی کنه و اونها براشون ریست می کنن (:

نتیجه: از سیصد و خورده‌ای هزار نفر، فقط ۱۵۵۸ نفر پسوردهایی دارن که جزو پسوردهای استانداردی که هر هکری چک می کنه نیست. در پسوردهاتون عدد و حروف کوچیک و بزرگ بذارین و پسوردتون از هشت حرف هم بیشتر باشه. اصلا بذارن این یک دستور دیگه هم بدیم: فایل خروجی رو نشون بده، ستون سومش (پسورد) رو جدا کن (ستون‌ها رو اسپیس از هم جدا می کنه) بعد خروجی رو مرتب کن (پسوردها مرتب می شن) بعد بشمر هر پسوردی چند بار تکرار شده و خروجی و مرتب کن به شکل عددی معکوس و اسپیس های اول خط رو هم بیخیال شو و بعد ده خط اول رو نشون بده.

jadi@jubun:~/w$ cut out.txt -f3 -d' ' | sort | uniq -c | sort -b -n -r | head
 192019 1234
  11780 2222
  10532 123
   9734 1111
   7547 5555
   5293 12345
   4512 4444
   4473 0000
   2568 3333
   2192 444

و این شما و این پر استفاده‌ترین پسوردهای این سیصد هزار نفر. جالبه که ۶۰٪ از کاربران پسوردشون رو گذاشتن ۱۲۳۴۵. فوق العاده نیست؟

نقص امنیتی فروشگاه: هر کسی می‌تواند خودروی دیگران را زیر نظر بگیرد

دلخوشی‌ها

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

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

این سیستم با استفاده از چنین دوربین‌هایی ممکن شده:

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

دل نگرانگی‌ها

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

و کمی کار بیشتر نشان می‌دهد که کلا یک درخواست JSON به آن آدرس فرستاده می‌شود و اطلاعات برمی‌گردد. مثلا چنین درخواستی می‌تواند نشان بدهد که وضعیت خودرو با پلاک abc123 چیست:

http://120.151.59.193/v2/bays.json?visit.plate.text=abc123~0.3&is_occupied=true&limit=4&order=-similarity

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

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

در این مورد هم فروشگاه و هم سازنده دستگاه اقدامات لازم برای جلوگیری از این شنود ناخواسته افراد بر همدیگر را انجام دادند ولی فکر می‌کنید چند تا از دوربین‌هایی که دور و بر ما هستند، چنین مشکلاتی دارند؟

منبع اصلی با اطلاعات بیشتر

سورس کسپراسکای کسپرسکی ۲۰۰۹ روی اینترنت

هاهاهووهه… ظاهرا سورس برنامه کسپراسکای کسپرسکی ۲۰۰۹ به اینترنت راه پیدا کرده. دارک کودر از سایت آن‌ریموت می‌گه که به کد نگاهی کرده و کد به نظر معتبر می‌رسه. برای کمپایلش ویژوال استودیو سی پلاس پلاس ۲۰۰۸ بهترین گزینه است.

کل سورس تقریبا ۱ گیگابایت است و بدون شک نگاه کردن بهش برای خیلی‌ها جالب. سورس زیپ شده تقریبا ۳۰۰ مگ. سورس کسپراسکای کسپرسکی رو دانلود کنین و خوش بگذرونین.

توضیح: لینک به سورس رو برداشته ام چون اون لینک دیگه کار نمی کرد. اگر کسی واقعا علاقمنده، خودش می تونه لینک رو پیدا کنه

امنیت در نیجریه

نیجریه کشور خطرناکی است. بدون شک. هم از نظر اجتماعی فقیر است (در آمد سرانه در حد ۲۰۰ دلار) و هم از نظر سلامت (۳.۱٪ جمعیت بالغ، مبتلا به ایدز هستند)، هم از نظر سیاسی قابل اتکا نیست و هم دولت فاسدی دارد. اینها را جمع کنید با جنگ داخلی و سازمان‌هایی مثل سازمان رهایی بخش دلتای نیجر یا باندهای مسلح دزدی و آدم ربایی تا موضوع ترسناک تر شود (:

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

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

اما مشکل چیه؟ احساس من چیزی است که توی یک کتاب ازش به «زیست توده» تعبیر کرده بودن. BioMass. خیابان‌هایی پر از ازدحام. آدم‌های بیکار. جمعیت بزرگی که کنار خیابون نشستن و من رو توی ماشین نگاه می‌کنم. این آدم‌ها کار دیگه‌ای ندارن. فقط نشستن ببینن امروز چی می‌شه و این کار رو ترسناک می‌کنه. احساس می‌کنم اگر پیاده بشم و مثلا بخوام برم «کارت شارژ موبایل» بخرم، این آدم‌ها بیکار همه دورم جمع خواهند شد. شاید هم اینطور نباشه ولی خب من احساس امنیت نمی‌کنم. در عین حال مشکلات بهداشتی هم واقعا بالا است. در این کشور میلیون‌ها نفر در سال مالاریا می‌گیرن و مالاریا به سادگی نیش زدن یک پشه منقل می‌شه و احتمال اینکه در این مناطق پشه به مالاریا آلوده باشه مطمئنا بسیار بیشتر از منطقه من است.

بذارین چند تا عکس بذارم… شاید براتون عجیب باشه ولی واقعا شهر اینطوریه:

اکثر شهر بسیار مسطحه و در یک نمای عادی چیزی به جز چند تا مغازه در کنار خیابون نمی‌بینین اما اگر از نمای بالاتر نگاه کنین:


(این پلی است که جزیره ویکتوریا رو به لاگوس وصل می‌کنه)

و البته جاهای شیک و امن شهر چیزی است شبیه اینجا (جزیره ویکتوریا):

در این شهر عجیب، برای خریدن چیزی مثل شارژ موبایل باید از چنین دکه‌ای خرید کرد:

و مغازه‌ها یا بانک‌ها در این حد هستند:

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

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

نترسید نترسید!

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

راه حل دوم، خصوصی شدن امنیت است: اگر پول دارید می توانید امنیت بخرید. ساختمان‌های «مهم» پول خودشان را می‌دهند و نگهبان خودشان را دارند یا اگر بخواهند بیشتر خرج کنند با یک شرکت امنیت خصوصی قرار داد می‌بندند و مثلا مجتمع ما را می‌دهند دست شرکت «هالوژن». هالوژن یک تابلو می‌زنه جلوی دروازه مجتمع که روش نوشته «امنیت این مجتمع توسط موسسه هالوژن تامین می‌شود» و این یعنی دزدها و قاتل‌ها و آدم دزدها و … حساب کار دستشون باشه که شوخی نداریم. به نظر من خصوصی شدن امنیت مایه خجالت‌ترین چیزی است که یک دولت می‌تونه ببینه.

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

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

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

تهیه پشتیبان با دستور dd

dd یک دستور بیش از حد قوی، بیش از حد ساده، بیش از حد کارا و بیش از حد خطرناک است. دستور dd این قابلیت‌ را دارد که فایل‌ها را کپی کند و فرمت آن‌ها را تغییر دهد. همین! آنهم به این شکل:

dd if=INPUT of=OUTPUT

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

می‌دانیم که در لینوکس دیسک‌های سخت، با اسامی‌ای مثل sda و sdb شناخته می‌شوند. پارتیشن‌های روی آن ها هم با اسم‌هایی مثل sda0 و sda1 و … و همه این سخت‌افرازها، مثل بقیه سخت‌افزارها در شاخه dev/ قرار دارند.

حالا هر چیزی که برای بک‌آپ گرفتن از لینوکستان را لازم دارید، بلدید. برای گرفته یک کپی برابر اصل از هاردی که همین الان به کامپیوترتان وصل است (که می‌شود dev/sda/) روی هارد اکسترنالی که همین الان به کامپیوتر وصل کرده‌اید (یعنی dev/sdb/)، کافی است بزنید:

dd if=/dev/sda of=/dev/sdb

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

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

dd if=/dev/sda of=./backup_10mordad.img

جذاب نیست؟ هر وقت هم خواستید آن را برگردانید می‌زنید:

dd if=./backup_10mordad.img if=/dev/sda

dd if=./backup_10mordad.img of=/dev/sda

و آن بک‌آپ روی هارد برگردانده می‌شود.

به راحتی حدس می‌نید (و درست هم هست) که برای کلون کردن فقط یک پارتیشن کافی است بزنید:

dd if=/dev/sda5 of=./mydisk_partition5.img

جذاب نیست؟ (:‌ به همین سادگی. البته به شرطی که این چند نکته را هم رعایت کنید:

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