از عجایب کلاهبرداری

امروز با پرستار بچه راجع به هزینه‌های سرویس‌های اشتراکی که گاهی ندونسته روی قبض‌های موبایل می‌آد صحبت شد. اولا فهمیدم که تلفن ثابت منزل هم چنین امکانی داره. توی خونه اونا، بچه‌های مستأجر قبلی دوست داشتن با باب اسفنجی حرف بزنن! و عضو یه سری سرویس‌ها شده بودن که حتی بعد از ترک اون خونه روی قبض اضافه می‌شده. در حد ۸۵ هزار تومان و اینا که توی لیست مکالماتی که از مخابرات گرفتن معلوم شده.
در ادامه توضیح دادم که یه سری پیام‌ها می‌آد به گوشی مامانم یا خواهرم که می‌گه شما در فلان قرعه‌کشی برنده شدید و فلان مبلغ رو بریزید یا فلان عدد رو بزنید تا در قرعه‌کشی بزرگ‌تر شرکت کنید یا عضو سرویس بشید. این جا بود که زهره خانم داستانی برام تعریف کرد که با هر کلمه‌ش شاخ‌م درازتر شد. گفت یه زمانی توی یه شرکتی استخدام شده که البته بیست روز بیشتر دوام نیاورده و حقوق نگرفته ازش در اومده. می‌گفت اون شرکت پر از افرادی مثل من بوده که پای تلفن می‌نشستن و باید شماره‌هایی که به‌شون داده شده بوده رو می‌گرفتن و حرف‌هایی که کامل و با جزئیات روی کاغذ نوشته شده بوده رو با لحنی بازگو می‌کردن که طرف رو مجاب کنند. ۷۰۰ هزار تومان حقوق ثابت می‌گرفتن و به ازای جذب هر نفر پورسانت. بعضی‌ها تا یک میلیون و دویست هم در می‌آورند. نقشه این بوده که با آدم‌های ساکن شهرهای دور که دسترسی چندانی به تهران نداشتند، مثل بوشهر، مشهد، ایلام، یزد، و …، تماس بگیرند و بگند که شما در قرعه‌کشی برنده یک دستگاه تبلت و سرویس چندپارچه شدید. آدرس بدهید که این‌ها برای‌تان ارسال شود. ولی یک قرعه‌کشی بزرگ‌تر هم داریم که به نفر اول پراید، نفر دوم یادم نیست، و به نفر سوم یک عدد سکه تعلق می‌گیرد. برای این که در این قرعه‌کشی شرکت داده بشوید باید ۳۵۰ هزار تومان واریز کنید. می‌گفت یزدی‌ها بیشتر سؤال می‌کردند، کم‌تر پول رو می‌دادن، و بعدتر بیشتر زنگ می‌زدند برای پیگیری. اما شهرهای دیگه نه. می‌گفت کل کسایی که اون جا کار می‌کردند (متأسفانه همه دخترخانم‌های جوان مجرد که پول قر و فر و آرایشگاه‌شان از این طریق در می‌آمده) یک لیست کامل از سؤال‌های احتمالی و جوابی که باید می‌دادند در اختیار داشتند. مثلاً اگه فرد تماس می‌گرفته که چرا بسته‌ای برای من نیامد، به‌ش می‌گفتن باید با پشتیبانی صحبت کنید. پشتیبانی کی بوده؟ اپراتور بغلی. وصل می‌کردن اون می‌گفته با من هماهنگ نشده، بعدن تماس بگیرید. یا دیر تماس گرفتید ساعت کاری‌شون تمام شده. یا مثلاً به فرد گفته بودند در فلان تاریخ در میدان فلان در سالن اجتماعات شهرداری مراسم قرعه‌کشی برگزار می‌شود. بعد فرد زنگ می‌زده که پس چرا نیامدید؟ جواب می‌شنیده که شهردار منطقه اجازه برگزاری مراسم را نداد، ما در محلی دیگر به صورت خصوصی برگزار کردیم و شما برنده نشدید. و تمام این‌ها دروغ‌های از پیش‌تعریف‌شده‌ای بوده که تمام افرادی که اون جا کار می‌کردند در جریان بودند و برای‌شان مهم نبوده.
می‌گفت یک بار یک مادری زنگ زد که من که می‌دانم شما تبلت را قرار نیست بفرستید، اما خواستم به‌تان بگم که من یک بچه معلول دارم و خوشحال شدم که می‌توانم این تبلت را به او بدهم و بچه‌م کلی منتظر بود و بدونید که من اون ۳۵۰ را هم قرض گرفتم تا دل بچه‌م شاد شود. زهره خانم کلی متأثر شده بود که من خودم بچه دارم و چطور دلم راضی شود که بچه‌م چشم به در بماند! و این نانی نیست که من بخوام به بچه‌هام بدم. می‌گفت وقتی به افرادی که اونجا کار می‌کردن اینا رو می‌گفتم، می‌گفتن به ما چه! مدیر شرکت داره دروغ می‌گه، گناه‌ش گردن اونه!
تازه می‌گفت این قدر کارشون گرفته بوده که غیر از دفتر جمهوری، قرار بوده یک دفتر جدید هم در جنت‌آباد بگیرند.
حالا شما حساب کنید حال من را !!! که هر چه هم آدم از دزدی می‌شنود وقتی با چنین پدیده‌ای از فاصله کمی نزدیک‌تر روبرو می‌شوی باز هم از حجم وقاحت و پلیدی آن شگفت‌زده می‌شوی و حال‌ت بد می‌شود.
حالا شما قضاوت کنید که مقصر کیست! مدیر شرکت؟ کارکنان؟ مردمی که باور می‌کنند؟ سیستم آموزشی؟ سیستم نظارتی؟ یا سیستم اقتصادی؟

مملکت شترمرغ‌دزدپرور

مختصر بگم یا مفصل

بگم یا نگم اصلا

فایده داره بگم یا اصلا بهتره نگم

هی ذهنم به نوشتن میاد و هی دستم به نوشتن نمی‌ره

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

موندم برم کلانتری پیگیری کنم یا نرم.

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

استفاده از Perl برای تفسیر RegEx در اسکریپ‌نویسی

زیاد پیش میاد موقع نوشتن یه اسکریپت سر و کارمون میافته به عبارات منظم یا همون Regular Excoriationها. و البته گاهی پیش میاد که لازم باشه یه عبارت را از یه فایل استخراج کنید.

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

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

zcat Backup.sql.gz|perl -ne ‘if (m/^INSERT INTO\s.(?<SS>.{1,40}).\s/){ print “$+{SS}\n”; }’|uniq -c

با اینکار به راحتی لیست همه جدول‌ها با تعداد سطرهایی که توی جدول درج شدند به دست اومد.

فیلتر ابلهانه

می‌دونستید نشانی:
http://ftp.debian.org/debian/pool/main/f/freexl/libfreexl1_1.0.2-2_amd64.deb
هم فیلتره؟
فقط به خاطر بسته freexl

در مورد FreeXL:
FreeXL is an open source library to extract valid data from within an Excel (.xls) spreadsheet.

راه‌اندازی extensionهای gnome در کروم!

اولین قدم اینه که اکستنشن مربوطه را از chrome store نصب کنید!
نشونیش اینه: GNOME Shell integration در Chrome Store
بعد که این را نصب کردید هنوز کار نمی‌کنه. اگه بتونید بسته chrome-gnome-extension را نصب کنید (برای دبیان در sid) مشکل حله و با یه reset محیط gnome می‌تونید از extensions.gnome.org لذت ببرید. مگرنه لازمه که سورسش را از مخزن گیتش به نشانی git://git.gnome.org/chrome-gnome-shell بگیرید و کامپایل کنید. برای اینکار دستورات زیر را استفاده کنید:

git clone git://git.gnome.org/chrome-gnome-shell

بعد برین داخل فولدر chrome-gnome-shell و یه فولدر build بسازید.
برین داخلش و این دستور را بنویسید تا تنظیمات محیط کامپایل آماده بشه:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXTENSION=OFF ../

فراموش نکنید بسته jq که یه json parser است را هم نیاز دارید. توی debian با دستور apt install jq دو سوته نصب می‌شه.
بعد که کانفیگ انجام شد، باید کامپایل و نصبش کنید:

sudo make install

همه کارها را براتون انجام می‌ده.
با alt-F2 و بعد r محیط گنوم‌شل را ریست کنید و از extensions.gnome.org در chrome لذت ببرید! اگه به اشکالی هم برخورد کردین از نشانی https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation می‌تونید ببینید مشکل کجاست و اون را حل کنید.

شناخته نشدن USB Deviceها در VirtualBox

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

من قبل‌تر برای تست رفته بودم و phpvirtualbox نصب کرده بودم ولی تنظیم‌هاش توی /etc/defaults/virtualbox/ مونده بود. همین باعث شده بود که root نصب تغییر کنه و ابزارهای شناسایی درگاه USB به جای نادرستی اشاره کنند.
این ابزار به صورت پیش‌فرض توی /usr/lib/virtualbox/ قرار دارند و فراخوانی‌شون با استفاده از udev و فایل‌های تنظیمی است که در مسیر /etc/udev/rules.d/60-vboxdrv.rules/ قرارداره فراخوانی می‌شه.

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

فایل تنظیم درست udev برای virtualbox هم به صورت زیر است:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600"
KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="root", MODE="0666"
KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="root", MODE="0600"
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

اگه این فایل را پاک کنید و Virtual Box را مجدد نصب کنید این فایل ساخته می‌شه. (پیشنهاد من اینه که اول کامل پاک کنید و بعد مجدد نصب کنید)

البته فراموش نشه قبل از هر کاری کاربر شما به گروه vboxusers اضافه شده باشه. بدون اضافه شدن شما به این گروه امکان استفاده از usb در ماشین‌های مجازی را ندارید! همینطور Oracle VM VirtualBox Extension Pack را هم حتما نصب کنید 🙂

با apt-get خراب چه کنیم؟

امروز با مشکل عجیبی برخورد کردم.
اومدم بسته ntp را نصب کنم که پیام داد به دلیل یه Dependency امکانش نیست. تعجب کردم. گفتم لابد سری قبل توی update، یکی از مخازن دانلود نشده یا خراب شده. پس رفتم سراغ apt-get update.
با اجرای دستور apt-get update ماجرا عجیب‌تر شد. تعدادی خطای Not found 404 برای بخشی از مخازن اصلی Debian روبرو شدم.
بررسی فایل sources.list و تغییر آن‌ها هم تغییری در نتیجه ایجاد نمی‌کرد.

تنظیمات ترتیب انتخاب نوع فشرده‌سازی فایل‌های Package هم راه بجایی نبرد.

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

اگه نمی‌دونید بدونید که فایل‌های package توی دبیان/ابونتو در مسیر /var/lib/apt/lists/ ذخیره می‌شوند و کنار کش فایل‌های deb نیستند.

بعد با دستور

find -type f ! -name lock -delete 

همه فایل‌های پکیج مونده توی سیستم پاک کردم.

بعد دستور apt-get update را اجرا کردم. به سادگی بدون مشکل اجرا شد و مشکل حل!

شاید بد نباشه هرازگاهی (بخصوص بعد از آپدگرید نسخه مثلا از Wheezy به Jessie یا تغییر mirror مورد استفاده) این پاکسازی را انجام بدین. پیش اومده که این فایل را که پاک کردم و دوباره apt-update زدم یه تعدادی فایل که از قبل مونده بوده و آپدیت نمی‌شده به لیست آپدیت‌ها اضافه شده.

تردیدها کشنده‌اند

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

راه‌اندازی IPv6 در شبکه محلی

توجه این نوشته کامل نیست و هنوز ویراستاری نشده است.

  • پیش‌نیازها:
    شما نیاز به یک IP ثابت از نوع IPv4 دارید که دسترسی به آن از سرورهای HE مجاز باشد.
    تست مجاز بودن دسترسی را می‌توانید از داخل پنل کاربری Tunnle Broker انجام دهید.
  • درخواست IPv6 برای سرور Debian از HE
    به نشانی https://tunnelbroker.net بروید، ثبت نام کنید. تونل بروکر اجازه ایجاد ۵ تونل به صورت رایگان به شما می‌دهد.
    بعد از ثبت IP ثابت شما هنگام خارج شدن از فیلد نشانی IP آدرس شما چک می‌شود و در صورت عدم دسترسی اعلام می‌کند.
    در صورتی که دسترسی مشکلی نداشته باشد باید سروری که تونل از آن ساخته می‌شود را انتخاب کنید. توجه داشته باشید سرورهایی را انتخاب کنید که زبان آن‌ها انگلیسی باشد وگرنه در هنگام کار کردن با اینترنت نسخه ۶ ممکن است سایت‌ها به صورت پیش‌فرض سایت محلی با زبانی غیر از انگلیسی به شما نمایش دهند.

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

  • راه‌اندازی تونل
    تنظیم‌های مناسب را از صفحه Example پیدا کنید. و روی سیستم خود اعمال کنید.
    برای اینکه دسترسی به DNS سرور با پشتیبانی از IPv6 داشته باشید می‌توانید از Cache DNS Server پیشنهادی HE استفاده کنید.
    آدرس شما با ::۲ تمام می‌شود.

تست کارکردن IPv6 روی سرور
برای تست از دستور ping6 google.com -n استفاده کنید. باید بتوانید این آدرس را Resolve و پینگ کند.
IPv6 گوگل ۲a00:1450:4005:80a::200e است. در صورتی که آدرس پیدا نشد پینگ آدرس را امتحان کنید.
در صورت عدم پینگ بجای ::۲ انتهای آدرس نسخه ۶ خود ::۱ بگذارید و امتحان کنید. در صورت عدم کارکرد تنظیم‌ها را بررسی کنید و مطمئن شوید از/به IP نسخه ۴ سرور تونل دسترسی به IP ثابت شما وجود دارد. همچنین دقت کنید تنظیمات را اشتباه وارد نکرده باشید.

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

درخواست /۴۸ از تونل بروکر:
برای هر تونل می‌توانید یک محدوده /۴۸ برای شبکه داخلی خود درخواست کنید. این محدوده به صورت پیش‌فرض فعال نیست.

تتنظیم IP روتر /۴۸ روی کارت شبکه شبکه داخلی
با اینکه شما به کل محدوده /۴۸ دسترسی دارید اما هر شکبه نهایی فقط می‌تواند از /۶۸ استفاده کند.
ابتدا نشانی ::۱/۶۸ را روی کارت شبکه‌‌ای از سرور اینترنت که به شبکه محلی متصل است تنظیم کنید. باید بتوانید از خارج از شبکه خود (مثلا ابزارهای آنلاین یا یک شبکه دیگر که دارای دسترسی به IPv6 است) بتوانید این نشانی جدید را پینگ کنید.
یک سری ابزار عیب‌یابی IPv6 در نشانی http://lg.he.net در دسترس است.

نصب radvd با توجه به /۶۴ بودن ساب‌نت انتخابی
با دستور apt-get install radvd ابزار توزیع IPv6 در شبکه محلی را نصب کنید.
فایل تنظیم‌ در نشانی /etc/radvd.conf قرار دارد. کافی است که ساب‌نت /۶۸ انتخابی را داخل آن تعریف کنید و سرویس را restart کنید.

سرویس networking یکی از دستگاه‌های داخل شبکه محلی را ریست کنید. در زمانی کوتاه باید نشانی IP نسخه ۶ را در محدوده انحصاری شما ببینید.
از این ایستگاه باید بتوانید از ping6 نشانی‌های نسخه ۶ سایت‌ها را ببینیند. تنظیم DNS سرور را فراموش نکنید.

نکته بسیار مهم: فراموش نکنید با راه‌اندازی IPv6 روی شبکه محلی همه دستگاه‌ها از خارج از شبکه محلی شما قابل مشاهده هستند. تنظیم فایروال ( ip6table ) را فراموش نکنید.