چرا گنو/لینوکس رو دوست دارم: بررسی تغییرات اخیر فایلها برای یک کلمه خاص

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

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

گنو/لینوکس یک ابزار عالی است با کلی خرت و پرت که می شه بهم جوششون داد. ما اول چی می‌خوایم ؟ پیدا کردن تمام فایل‌هایی که در ده دقیقه گذشته عوض شده‌اند. می‌دونم که دستور find مال این تیپ کارها است و راهنمای هر دستوری هم توی man پیدا می‌شه. پس می‌زنم man find و توش می‌بینم که:

-mmin n
              File's data was last modified n minutes ago

خلاص! پس فایند یک سوییچ داره که کل فایل‌هایی که در n دقیقه قبل عوض شدن رو نشون می‌ده. کافیه بزنم:

bash-4.1$ find /home -nmin -10
.
./gedit.jadi.2767816239
./plugtmp
./orbit-jadi
./orbit-jadi/linc-5b12-0-2c85f1f5cb706
./orbit-jadi/linc-60d9-0-436786093cc42
./orbit-jadi/linc-5ff8-0-6af67eaaaf2db
./orbit-jadi/linc-58be-0-373ce140b83c4
./1.txt

من که کیف می‌کنم (: حالا فهرستی دارم از تمام فایل‌هایی که در ده دقیقه قبل تغییر کردن. حالا کافیه روشون جستجو کنیم. می دونم که توی find یک سوییچ هم داریم به اسم exec که جلوش هر دستوری بزنیم روی خروجی ها اجرا می شه. برای گفتن به exec که دستورات تموم شده باید یک ;\ بذاریم و جلوی exec هم اگر {} بذاریم یعنی اسم فایلی که پیدا کرده رو اینجا بنویسه. راستی!‌ اینها رو من بار بار اول و دوم و سوم و چهارم و پنجم و ششم توی man find نگاه کردم ولی الان دیگه حفظ شدم. بذارین تست کنیم:

bash-4.1$ sudo find /home -mmin -10 -exec echo \{\} \;
.
./gedit.jadi.2767816239
./plugtmp
./orbit-jadi
./orbit-jadi/linc-5b12-0-2c85f1f5cb706
./orbit-jadi/linc-60d9-0-436786093cc42
./orbit-jadi/linc-5ff8-0-6af67eaaaf2db
./orbit-jadi/linc-58be-0-373ce140b83c4
./1.txt

درسته پس. الان قسمت اول فایند، فایل های تغییر کرده در ده دقیقه رو پیدا می کنه و قسمت exec اسم اون فایل رو جلوی یک echo می ذاره که دستور را چاپ می کنه. پس می رم قدم بعدی که grep کردن است. grep توی یک فایل دنبال یک عبارت می گرده و اگر بود، اون قسمت رو می نویسه. من یک سوییچ H هم اضافه می کنم تا اسم فایل رو هم بنویسه. پس در کل دارم:

bash-4.1$ sudo find /home -mmin -10 -exec grep hacked {} \;
grep: ./gedit.jadi.2767816239: No such device or address
grep: ./orbit-jadi/linc-5b12-0-2c85f1f5cb706: No such device or address
grep: ./orbit-jadi/linc-60d9-0-436786093cc42: No such device or address
grep: ./orbit-jadi/linc-5ff8-0-6af67eaaaf2db: No such device or address
grep: ./orbit-jadi/linc-58be-0-373ce140b83c4: No such device or address
this hacked my

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

چیکار کنیم؟ اضافه کردن H که آسونه! برای ارور هم ما یک «دستگاه» جذاب توی لینوکس داریم به عنوان null که مثل بقیه ابزارها توی دایرکتوری dev است و هر چیزی روش نوشته بشه می ره به ناکجا آباد و غیب می شه پس کافیه من خروجی ارور رو به جای خروجی معمولی که روی صفحه است، بریزم روی این دستگاه تا از شرش راحت بشم! خروجی ارور رو با این عبارت می شه کنترل کرد <2 پس در نهایت خواهم داشت:

bash-4.1$ sudo find /home -mmin -10 -exec grep -H hacked {} 2> /dev/null \;
./1.txt:this hacked my

عالی! (: نتیجه دلخواه دوستم کاملا آزاد و شاد همین دستوره:

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

مصرف کنید: زن زمستان

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

آپدیت: یکی ایمیل زد که گاهی اول ویدئو یک تبلیغ بیست ثانیه ای پخش می شه (: اون مربوط به رادیو تلویزیون من نیست (:

آپدیت دو: ظاهرا می گن ویدئوی تبلیغی ارتش آمریکا هم توی تبلیغات هست. امپریالیسم؟ وبلاگ من؟ ((: هاه.. لعنت بر دیکتاتور و امپریالیسم هر دو (: فعلا کلا ویدئو رو برداشتم تا ببینم به کجا می شه لینک داد که از این ام الخبائث راحت باشیم

آپدیت سه با رمز «درود بر انسانیت» از سایت خودم فایل رو دانلود کنید. . مهرنوش: زن زمستون. ۳۶ مگ ((((:

هکر ماهیانه – شماره ۱۰

چگونه شرکت جدیدتان را به هکر نیوز برسانید

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

درک رفتار روح‌های پک من

بازی مشهور پک من یادتون هست؟ اونی که توی یک مارپیچ یک چیزهایی می خوردیم و جلو می رفتیم و یکسری روح هم دنبالمون می کردن؟ می خواین بدونین روح ها طبق چه منطقی حرکت می کردن؟ این مقاله کاملا توضیحش می ده.

چگونه یک برنامه نویس پیمانکار باشیم؟

فرض کنید شغلی دارید که در آن مردمی که نمی شناسید به شما ایمیل می زنند تا بخشی از یک نرم افزار را بنویسید یا بهبود دهید و پیشاپیش پول را هم پرداخت می کنید. البته لازم نیست فرض کنید. این آدم شغلش این است و درباره اش با شما صحبت می کند

امولاتورها چطور نوشته می‌شوند؟

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

کرک کردن برنامه‌های اپل با یک شل

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

جوری کد بنویسید که انگار تازه برنامه نویسی یاد گرفته‌اید

از اینجا اومده که یک نفر پروژه‌های موفق رو بررسی کرده و به این نتیجه رسیده که اکثر کسانی که تونستن پروژه رو با موفقیت تجاری کنن کسانی بودن که قبلا برنامه نویسی بلد نبودن. اما چطور ممکنه؟.

چگونه یک سیستم عامل ساده بنویسیم

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

هکر مانتلی، نسخه ۱۰، مارس ۲۰۱۱

مصرف کنید: بخش جدید کیبردآزاد

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

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

همنوایی – درسی برای جدی نگرفتن آدم ها

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

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

سانسور ابلهانه: سایت گنو/لینوکس پارسیکس

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

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

اپت گت کند است؟ اپت فست را امتحان کنید

apt-get برنامه اصلی کم و زیاد کردن بسته‌های روی لینوکس‌های دبیانی (از جمله اوبونتو و پارسیکس و آریوس) است. مثلا اگر من بخوام برنامه اکسل رو نصب کنم، کافیه بزنم

sudo apt-get install axel

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

# !/bin/sh
# apt-fast v0.03 by Matt Parnell http://www.mattparnell.com, this thing is fully open-source
# if you do anything cool with it, let me know so I can publish or host it for you
# contact me at admin@mattparnell.com

# Special thanks
# Travis/travisn000 - support for complex apt-get commands
# Allan Hoffmeister - aria2c support
# Abhishek Sharma - aria2c with proxy support
# Richard Klien - Autocompletion, Download Size Checking (made for on ubuntu, untested on other distros)
# Patrick Kramer Ruiz - suggestions - see Suggestions.txt
# Sergio Silva - test to see if axel is installed, root detection/sudo autorun

# Use this just like apt-get for faster package downloading.

# Check for proper priveliges
[ "`whoami`" = root ] || exec sudo "$0" "$@"

# Test if the axel is installed
if [ ! -x /usr/bin/axel ]
then echo "axel is not installed, perform this?(y/n)"
    read ops
    case $ops in
         y) if apt-get install axel -y --force-yes
               then echo "axel installed"
            else echo "unable to install the axel. you are using sudo?" ; exit
            fi ;;
         n) echo "not possible usage apt-fast" ; exit ;;
    esac
fi

# If the user entered arguments contain upgrade, install, or dist-upgrade
if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
  echo "Working...";

  # Go into the directory apt-get normally puts downloaded packages
  cd /var/cache/apt/archives/;

  # Have apt-get print the information, including the URI's to the packages
  # Strip out the URI's, and download the packages with Axel for speediness
  # I found this regex elsewhere, showing how to manually strip package URI's you may need...thanks to whoever wrote it
  apt-get -y --print-uris $@ | egrep -o -e "(ht|f)tp://[^\']+" > apt-fast.list && cat apt-fast.list | xargs -l1 axel -a

  # Perform the user's requested action via apt-get
  apt-get $@;

  echo -e "\nDone! Verify that all packages were installed successfully. If errors are found, run apt-get clean as root and try again using apt-get directly.\n";

else
   apt-get $@;
fi

اسم فایل من هست apt-fast و توی bin/~ ذخیره شده که جزو path است. حالا کافیه بهش دسترسی اجرایی بدهید (مثلا با chmod 755 apt-fast) و بعد از مطمئن شدن از نصب بودن axel، درست همونطور که قبلا از apt استفاده می‌کردین، از این استفاده کنین ولی سرعت چند برابر شده باشه. مثلا

apt-fast install nexuiz

و بعد از نصب ۸۰۰ مگ، بازی رو شروع می کنیم:

ISP رایگان هلندی برای شهروندان لیبی (و جهان)

XS4ALL یک آی اس پی هکر-دوست در هلند است که برای حمایت از مردم لیبی که دولت دیکتاتورشان اینترنت را هنگام احساس خطر قطع کرده، تمام خط‌های مودمی‌اش را به رایگان در اختیار آن‌ها گذاشته. هر کسی در لیبی (و هر کجای دنیا) می‌تواند با گرفتن شماره 31205350535+ و استفاده از یوزر و پسورد xs4all از طریق این سرویس دهنده به اینترنت متصل شود. خودشان هم قبول دارند که هزینه تماس تلفنی بین المللی بسیار بالا خواهد بود اما می‌گویند «شاید این کار در لحظه اضطرار به یک نفر کمک کند.»

این جهانی است که من دوستش دارم (: حتی اگر سانسور چی کشورم با پول نفت و مالیاتم www.xs4all.nl را هم مشمول فیلتر کرده باشد (: