کرم های کامپیوتر





قالب وبلاگ در حال ویرایش شدن!

ممکن است اشکالاتی در قالب پیش بیاید
بنابراین پیشاپیش متاسفیم!

کرم های کامپیوتر

من و دوستم دو تا کرمیم که داریم تو سیستم ها وُل می خوریم و بعضی وقت ها براتون چیزایی که تو این وُل خوردن ها یاد گرفتیم رو می نویسیم!!!!!

تبلیغات

لاگ بندرعباس راه افتاد!

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

شما می توانید در قالب نویسنده در کنار ما باشید و در این وبلاگ فعالیت کنید

ربات تلگرامی ما
نویسندگان
آخرین نظرات
  • ۱۴ تیر ۹۸، ۱۵:۴۶ - فرهاد حسن پور
    ali boood.

۱۳ مطلب با کلمه‌ی کلیدی «یونیکس» ثبت شده است

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

  • تغییر کد
  • کپی آن به بریده‌دان(clipboard) سیستم پنجره‌ی اکس
  • وارد شدن به apaste.info با مرورگر وب
  • وارد کردن کد و گرفتن پیوند کد
  • فرستادن کد به کانال
برای همین رفتم دنبال اینکه این فرآیند را کوتاه‌تر و خوش‌آیندتر کنم. برای اینکار از curl استفاده کردم. با اینکه کرل برای اکثر سیستم‌عامل‌ها از جمله داس، ویندوز، مک، شبه‌یونیکس‌ها و ... وجود دارد اما همچین چیزی بیشتر بدرد کاربرانی میخورد که با خط فرمان زیاد کار میکنند و این کاربران در ویندوز بدلیل عدم وجود یک خط فرمان قوی، کمتر دیده میشوند.
  • فاروق کریمی زاده
اگر بخواهید مکان فیزیکی یک IP را پیدا کنید، ابزار های آنلاینی برای اینکار وجود دارند اما شاید مثل من پیرو راه بزرگ یونیکس باشید و  خط‌فرمان سریغ‌تر و کم‌هزینه‌تر هم هست.
اینجا دو روش را معرفی میکنم که از طریق خط‌فرمان بتوانید مکان جغرافیایی یک IP را پیدا کنید. روش اول از یک برنامه استفاده میکند که بر اساس یک پایگاه داده و بصورت آفلاین کار میکند و برای شبه یونیکس‌ها شامل گنو/لینوکس،بی‌اس‌دی ها و ... در دسترس هست. روش دوم که از curl و یک API استفاده میکند، نیازمند دسترسی به اینترنت هست و روی اکثر سیستم‌عامل ها قابل استفاده در دسترس هست.
  • فاروق کریمی زاده
look [-bdf] [-t termchar] string [file]
look [-f] string [file]

این برنامه که ریشه‌اش BSD هست، تمام خطوط پرونده‌ی file را که با رشته‌ی string شروع میشوند،به خروجی میفرستد.

  • فاروق کریمی زاده
برای ویندوز های ۳۲ و ۶۴ بیتی


حجم: 107 کیلوبایت

  • فاروق کریمی زاده

اگر بخوایم کوتاه و ساده در مورد سیگنال‌ها صحبت کنیم،علامت هایی هستند که به پروسه‌ها فرستاده میشوند و پروسه مقصد واکنشی نشان میدهد.بعضی از سیگنال‌ها میتوانند توسط پروسه‌ها نادیده گرفته شوند و بعضی نه. طریقه‌ی handle کردن سیگنال‌ها نیز با توجه به زبانی که استفاده میکنید میتواند متفاوت باشد. در پایتون اینکار از طریق ماژول signal انجام میشود و در سی از طریق پرونده‌ی سرآمد signal.h و تابع signal.جدول زیر فهرستی از سیگنال‌های متداول را نشان میدهد، برای دیدن فهرستی کامل از آنها باید kill -l را ببینید.

  • فاروق کریمی زاده

چند وقتی بود که این مخزن رو توی گیت‌هاب به لیست علاقه‌مندی ها اضافه کرده بودم، این دستورات برای راه اندازی یک وب سرور ساده‌ی HTTP برای محتویات ایستا هستند(یعنی CGI و PHP و اینا پر!). این سرور ها همه به پورت ۸۰۰۰ گوش میدهند.

  • پایتون ۳
python3 -m http.server 8000
  • پایتون ۲
python -m SimpleHTTPServer 8000
  • روبی
ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd).start'
  • روبی ۱.۹.۲ و بالاتر
ruby -run -ehttpd . -p8000
  • پی اچ پی
php -S 127.0.0.1:8000
  • بیزی‌باکس
busybox httpd -p 8000
  • پاورشل
$Hso=New-Object Net.HttpListener;$Hso.Prefixes.Add("http://+:8000/");$Hso.Start();While ($Hso.IsListening){$HC=$Hso.GetContext();$HRes=$HC.Response;$HRes.Headers.Add("Content-Type","text/plain");$Buf=[Text.Encoding]::UTF8.GetBytes((GC (Join-Path $Pwd ($HC.Request).RawUrl)));$HRes.ContentLength64=$Buf.Length;$HRes.OutputStream.Write($Buf,0,$Buf.Length);$HRes.Close()};$Hso.Stop()

یا اگر خواستید با Command Prompt اجراش بکنید:

PowerShell.exe -nop -enc JABIAHMAbwA9AE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAEgAdAB0AHAATABpAHMAdABlAG4AZQByADsAJABIAHMAbwAuAFAAcgBlAGYAaQB4AGUAcwAuAEEAZABkACgAIgBoAHQAdABwADoALwAvACsAOgA4ADAAMAAwAC8AIgApADsAJABIAHMAbwAuAFMAdABhAHIAdAAoACkAOwBXAGgAaQBsAGUAIAAoACQASABzAG8ALgBJAHMATABpAHMAdABlAG4AaQBuAGcAKQB7ACQASABDAD0AJABIAHMAbwAuAEcAZQB0AEMAbwBuAHQAZQB4AHQAKAApADsAJABIAFIAZQBzAD0AJABIAEMALgBSAGUAcwBwAG8AbgBzAGUAOwAkAEgAUgBlAHMALgBIAGUAYQBkAGUAcgBzAC4AQQBkAGQAKAAiAEMAbwBuAHQAZQBuAHQALQBUAHkAcABlACIALAAiAHQAZQB4AHQALwBwAGwAYQBpAG4AIgApADsAJABCAHUAZgA9AFsAVABlAHgAdAAuAEUAbgBjAG8AZABpAG4AZwBdADoAOgBVAFQARgA4AC4ARwBlAHQAQgB5AHQAZQBzACgAKABHAEMAIAAoAEoAbwBpAG4ALQBQAGEAdABoACAAJABQAHcAZAAgACgAJABIAEMALgBSAGUAcQB1AGUAcwB0ACkALgBSAGEAdwBVAHIAbAApACkAKQA7ACQASABSAGUAcwAuAEMAbwBuAHQAZQBuAHQATABlAG4AZwB0AGgANgA0AD0AJABCAHUAZgAuAEwAZQBuAGcAdABoADsAJABIAFIAZQBzAC4ATwB1AHQAcAB1AHQAUwB0AHIAZQBhAG0ALgBXAHIAaQB0AGUAKAAkAEIAdQBmACwAMAAsACQAQgB1AGYALgBMAGUAbgBnAHQAaAApADsAJABIAFIAZQBzAC4AQwBsAG8AcwBlACgAKQB9ADsAJABIAHMAbwAuAFMAdABvAHAAKAApAA==
  • شل
while true ; do nc -l 8000 < test.html ; done

نسخه پاورشل را خودم امتحان نکرده ام.

منبع و همچنین دستورات بیشتر برای اجرای وب سرور در گیت‌هاب گیست

  • فاروق کریمی زاده

nload یک برنامه‌ی ساده و کم حجم تحت خط‌فرمان برای لینوکس، مک، فری بی اس دی، سولاریس و سایر (شبه) یونیکس ها هست که ترافیک شبکه را برای هر کارت شبکه مانیتور میکند، با کلید ها جهت دار میتوانید بین کارت شبکه ها جابجا بشوید.

  • فاروق کریمی زاده

با sshfs میتونید یک دایرکتوری در سرور رو روی یک دایرکتوری در رایانه محلی تون سوار بکنید(mount) و از این طریق به فایل های روی سرور دسترسی داشته باشید.

sshfs [user@]host:[dir] mountpoint [options]

از همون نام کاربری و رمز عبوری که برای ssh استفاده میکنید، برای sshfs نیز استفاده بکنید.بعد از سوار شدن میتوانید به فایل ها همانند فایل های محلی روی رایانه محلی، دسترسی داشته باشید.برای unmount کردن هم:

fusermount -u mountpoint
  • فاروق کریمی زاده

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

نکته: فکر نمیکنم لازم به ذکر باشه که باید دسترسی ریشه داشته باشید.

نکته: با توجه به اینکه من از اوبونتو ۱۶.۰۴ استفاده میکنم شاید نیاز باشه تا بعضی دستورات را با توجه به توزیع خود تغییر دهید.

نکته:‌ اگر کمی باهوش(یا باتجربه؟) باشید میتوانید با توجه به این آموزش آپاچی را برای ویندوز و سایر شبه یونیکس ها هم پیکره‌بندی بکنید.

برای اینکار اول آپاچی را نصب کنید(در توزیع شما ممکن است متفاوت باشد):

apt install apache2

حال آدرس localhost یا 127.0.0.1 را در مرورگر وارد بکنید، اگر صفحه It works ظاهر شد پس آپاچی به درستی نصب شده است. حال این دو خط را به فایل /etc/apache2/apache2.conf اضافه کنید:

AddHandler cgi-script .cgi .pl
ServerName 127.0.0.1

حال این بلاک را پیدا کنید:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

و آنرا به این تغییر دهید:

<Directory /var/www/>
    Options Indexes FollowSymLinks
ExecCGI
    AllowOverride None
    Require all granted
</Directory>

حال باید ماژول cgi را با این دستور فعال بکنید:

a2enmod cgi

و سرویس مربوط به آپاچی را از نو راه‌اندازی بکنید(در توزیع شما ممکن است متفاوت باشد):

service apache2 restart

پایان!

  • فاروق کریمی زاده

cb.vu یک جعبه ابزار تحت وب یونیکس هست که بیشتر ابزار های پایه ای و اصلی یونیکس را دارد.

  • فاروق کریمی زاده
این دو دیوایس فایل در مکان زیر قرار دارند:
/dev/null
/dev/zero

این دو خیلی به هم شباهت دارند و هر چه را به آنها بدهید نابود میکنند!

cat MyFile >> /dev/null

مانند یک سیاه چاله!اما این دو یک تفاوت با هم دارند.اگر تلاش کنید از نول چیزی بخوانید مقدار EOF را برمیگرداند و اگر تلاش کنید از زیرو چیزی بخوانید بینهایت صفر برمیگرداند.

یکی از سرگرمی های من با زیرو:

cat /dev/zero >> ~/z

بعد صبر میکنم تا چند گیگ فایل ساخته بشه!بعدش با لذت حذفش میکنم!

  • فاروق کریمی زاده

این دو دیواس در سیستم عامل های یونیکس و شبه یونیکس عدد تصادفی تولید میکنند.مسیر رندم و یو رندم به ترتیب بصورت زیر است:

/dev/random
/dev/urandom

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

یو رندم نیز مخفف unlimited random است که تعداد اعداد آن بی‌نهایت است اما قدرت آن کمتر است و برای استفاده های دیگر میباشد.

در بعضی سیستم عامل ها مانند مک، فری بی اس دی و مینیکس این دو دیوایس یک کار را انجام میدهند و فرقی بین آن‌ها نیست.

دوبار فایل «رندم» را با برنامه hexedit یا هر Hex Viewer دیگر باز کنید و مقدار بایت های آن را ببینید

همانطور که میبینید هر بار مقدار بایت ها تغییر میکند:

هشدار! زیاد از فایل رندم استفاده نکنید چرا که محدود است و برای استفاده های دیگر ممکن است دیگر به اندازه کافی عدد تصادفی تولید نکند!

  • فاروق کریمی زاده

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

برای مثال من این دستور را در یک پوشه به نام foo  اجرا کردم:

  • فاروق کریمی زاده