به نام خدا

netcat یا به اختصار nc یکی از ابزارهای خوب لینوکسه که به صورت پیشفرص در خیلی از توزیع هایی لینوکس و همچنین مکینتاش نصبه.

امروز میخوایم کمی به این ابزار اشنا بشیم.

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

از ابتدایی ترین کارهایی که با این دستور میتونیم انجام بدیم گوش دادن به یک پورت مشخص هست مثلا فرض کنید که میخواید پورت ۱۳۴۱ رو گوش کنید پس از دستور زیر استفاده میکنیم:

nc -l 1341

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

nc localhost 1341

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

این دستور مشابه به دستور telnet که یک ابزار قدیمی هست بوده اما امروز ما برای کارهای دیگه ای میتونیم ازش استفاده کنیم.

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

printf "HTTP/1.1 200 OK\n\nHello Alef-ba" | nc -l localhost 1341 

حالا کافیه توی کروم آدرس localhost:1341 رو باز کنید تا این صفحه html رو ببینید (توجه کنید که اون HTTP/1.1 و کلا خط اول لازمه که از الزامات http هست اگر نذارید مرورگر نمیتونه تفسیر کنه)

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

$ nc -l localhost 1341
HTTP/1.1 200 OKSALAM

 

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

nc -l 1341 > sendfile.txt

و کاربری که قرار هست بهش وصل بشه و فایل رو بگیره باید از دستور زیر استفاده کنه:

nc localhost 1341 > receivedfile.txt

 

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

nc -v -z domain.com 0-1000