مالیات پول زوره

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

دو نکته اینجا مهمه.

اول اینکه چرا فقط وقتی زورتون می رسه مالیات سی درصدی می گیرین؟

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

آیا کسانی که میلیاردی پول در میارن هم همینقدر مالیات می‌دن؟ کسانی که ده میلیونی در می یارن چطور؟ با یک پزشک که سه تا مطب کار می کنه و یک بیمارستان سهام داره صحبت می کردم و غر می زد که امسال براش هفتصد تومن مالیات «بریدن». تقریبا یک دوازدهم من. همینطور دوست بازار آهن که تو کار بساز بفروشی هم هست شاکی بود که پارسال پونصد تومن مالیات داده.

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

دوم اینکه بدون نظر من هر کس زور داره خرجش می کنه

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

خلاصه اینکه

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

اگر می خواین پول زور نباشه

نمی دونم چرا ممکنه ولی اگر واقعا دوست دارین مالیاتی که می گیرین پول زور نباشه دو تا قدم اصلی داره:
۱- از همه بر اساس یک معیار برابر و بدون زیرآبی رفتن بگیرین و خودتون هم جزو همه باشین
۲- در یک سیستم دموکراتیک و شفاف خرجش کنین

مصرف کنید: ویدئو کلیپ بچه ننه با صدای محسن لرستانی

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

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

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

نهایت ماجرا؟‌ با پرس و جو از آدم ها بچه ننه رو پیدا می کنه و می خونه «اینو بدان بچه ننه ، پرونده من وزن توئه / من زندگیم رفته به باد ، بچه ننه دارم برات / وقتی ابرو برمی داری ، نازتر می شی از قناری / …» و می ره با کلمات یک زهره چشمی ازش می‌گیره و می‌ره سر قرار با دختره و عکسها رو بهش نشون می ده و به هم می زنه و با یک سیلی نسبتا آروم قهر می کنه می ره سراغ زندگی اش.

بعدش هم تیتراژ است با شماره تلفن شاعر و نویسنده و کارگردان و بازیگرها و غیره و در نهایت حتی تشکر از مدیریت پیتزانانی (علی عرب).

چرا دوستش دارم؟

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

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

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

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

بنا به یکی از کامنت‌این آهنگ عباس ویسی رو هم حتما ببینین

جمعه ها با کاندوم: روز جهانی ایدز و بهانه‌هایی برای کاندوم نپوشیدن

گشتی در اخبار


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

  • احتمالا جالبترین اتفاق تبلیغی توی هلند خواهند افتاد. گروه Stop Aids Now قراره یک کاندوم ۳۵ متری بکشن روی برج مانت در مرکز شهر
  • تحقیقی توی فیلیپین نشون داده که میزان گسترش ایدز در این کشور بالاترین میزان در بیست و پنج سال گذشته بوده. تمرکز تحقیق روی سایت‌های دوست یابی است و چت و می‌گه که یک سوم زنانی که با مردها توی چت آشنا شدن کارشون به سکس رسیده و هفتاد درصدشون هم از کاندوم استفاده نکردن. نتیجه؟ خوشبختانه عقل اونها می رسه که نتیجه شون سانسور و فیلترینگ و شلاق نباشه. اونها با دورکس قرارداد تبلیغی بستن تا با هم در شبکه‌های اجتماعی و چت روم ها برای کاندوم و ایدز تبلیغ کنن
  • می‌دونم شاید غصه بخورین ولی یک گروه فعال علیه ایدز، در حال جمع کردن یک پتیشن است تا از قانونگذارهای لس آنجلس بخواد که قانونی تصویب که بنا به اون همه هنرپیشه‌های فیلم‌های پورنی که در این ایالت تهیه می‌شن مجبور باشن از کاندوم استفاده کنن. اینکار برای اینه که جوون‌هایی که به اشتباه فکر می کنن چیزی که توی فیلم پورن می بینن توی دنیای واقعی هم دقیق همونطور هست، حداقل این جنبه‌اش رو هم ببینن. شاید اگر همه قول بدن جوون‌های خوبی باشن و همیشه از کاندوم استفاده کنن و درک کنن که نسبت فیلم پورنو به سکس تو خونه همون نسبت فیلم جکی چان به یک دعوای توی مدرسه است، شرکت ها قبول کنن که به آزمایش‌های دوره‌ای هنرپیشه‌ها اکتفا کنن
  • پتا انجمن حمایت از حیوانات است و تصویر بالا مربوط به اونها. این حرکت هیچ ربطی به ایدز و غیره نداره اما به آدم ها یادآوری می کنه که اگر نمی خوان بچه‌های حیوونات خونگی‌شون رو نگه دارن، جلوی باردارشدنشون رو بگیرن و این دو نفر هم دارن تبلیغ می کنن که «سگ ها از کاندوم استفاده نمی کنن» و اگر صاحبشون نمی خواد توله‌ها رو نگه داره بهتره از روش های مناسب پیشگیری برای حیوانات استفاده کنه؛‌ مثلا عقیم کردن
  • و در نهایت هم نگاهی به این صفحه بندازین که مصاحبه ای است با دکتری که بزرگترین گالری از پوسترهای ایدز جهان رو داره و اینجا هم، سی تا از بهترین‌هاش رو توی یک گالری می تونین نگاه کنین

سوال

دوست پسر فعلی من قبول نمی کنه کاندوم استفاده کنه. قبلا هم با کسان دیگه چنین مشکلی داشتم. معمولا می گن که ۱) کاندوم باعث می شه راست نمونن ۲) خیلی بزرگه و نمی تونه کاندوم بپوشه ۳) به جنس لاتکس حساسیت داره ۴) ایدز و بیماری دیگه نداره پس کاندوم لازم نداره و ۵) کاندوم حسش رو خراب می کنه. من باید چیکار کنم؟

جواب

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

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

اما در مورد سوال‌هات.. اگر قراره کسی استدلال گوش کنه می‌تونی اینها رو بهش بگی:

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

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

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

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

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

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

منبع اصلی

چرا گنو/لینوکس رو دوست دارم: نقشه استان‌هایی از ایران که رفته‌ایم

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

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

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

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

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

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

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

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

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