- در این سوال به هر بخش از سوال که پاسخ بدهید نمره همان قسمت را خواهید گرفت (توضیح نمرهی سوال در انتهای سوال قرار دارد)
- این سوال را باید با bash پاسخ دهید. دقت کنید برای پاسخ به این سوال باید با مفاهیم مربوط به bash و لینوکس آشنا باشید و برای این کار نیاز به جستجو دارید.
یک پروسهی مخرب روی کامپیوترهای سایت دانشکده مشاهده شده است و چند کامپیوتر سایت را که سیستم عامل ubuntu داشته اند را درگیر کرده است. یکی از بچههای سال بالایی ادعا کرده که توانسته اطلاعات زیر را از کامپیوترهای سایت جمع آوری کند:
- شناسهی پروسهای که مخرب است.
- یک قسمت از دادههای موجود در شاخهی
/proc
که به ازای هر(pid (process id
شامل فایلها و دایرکتوریهایی مشابه فایلهای زیر است.
proc
├── 2
│ ├── fd/
│ │ ├── 0
│ │ ├── 1
│ │ └── 2
│ ├── fdinfo/
│ │ ├── 0
│ │ ├── 1
│ │ └── 2
│ ├── cmdline
│ ├── gid_map
│ ├── io
│ └── status
├── 4
│ ├── fd/
│ ├── fdinfo/
│ ├── cmdline
│ ├── gid_map
│ ├── io
│ └── status
از شما میخواهیم یک اسکریپت bash با نام analyze.sh
بنویسید تا با آنالیز کردن اطلاعات موجود در /proc
اطلاعاتی از این پروسهی مخرب به ما بدهد.
توجه!
- تقریبا همهی افرادی که به حل این مساله میپردازند برای این که بتوانند به سوال پاسخ بدهند نیاز دارند تا در مورد proc در اینترنت جستوجو کنند.
جزئیات
نحوه اجرای اسکریپت به این صورت است:
bash analyze.sh malware_pid path/to/proc/snapshot
این اسکریپت باید به عنوان خروجی هر کدام از موارد زیر را در یک خط به ما ارائه بدهد.
- آیدی کاربری که این پروسه را اجرا کرده است.
- آیدی پروسههایی که توسط این پروسه ایجاد شده اند (پروسههای بچه) که با فاصله از هم جدا شدهاند.
- آیدی پروسهای که این پروسه را شروع کرده است.
- آیدی پروسههایی که با پروسهی مخرب به صورت هم زمان روی یک فایل متنی مشترک با پسوند
txt
کار میکردند.
نکات
- ممکن است برخی از اطلاعات خواسته شده برای برخی از
pid
ها وجود نداشته باشد. به طور مثال در صورتی که پروسه مخرب هیچ پروسهی بچهای نداشته باشد، شما باید در خروجیnot-found
چاپ کنید. همینطور در صورتی که پروسه با هیچ پروسهی دیگری به فایل مشترکtxt
دسترسی نداشته باشد باید مقدار بخش چهارم راnot-found
بازگردانید. - توجه داشته باشید که اگر به جای
not-found
کلمهی دیگری چاپ کنید، تمام امتیاز سوال را از دست خواهید داد. - توجه داشته باشید در مورد آخر خواسته شده در پاسخ باید حتما فایلی که برروی آن کار میکنند پسوند
txt
باشد. - برای ارسال پاسخ خود یک فایل Zip شامل
analyze.sh
آپلود کنید.
مثال
برای مثال یک خروجی از proc به صورت tar.gz در این آدرس پیوست شده است. شما میتوانید آن را دانلود کرده، extract کنید و پس از نوشتن اسکریپت analyze.sh
با دستور زیر خروجی خود را چک کنید.
- توجه داشته باشید اگر این فایل را در ویندوز
extract
کنید فایلها ناقص میشوند. پس باید حتما این کار را در linux انجام دهید.
bash analyze.sh 37829 path/to/proc/snapshot
خروجی باید مشابه زیر باشد.
1000
37830 37831
7225
37832 37833
امتیاز دهی
هر کدام از پاسخها به این سوال امتیاز خود را دارد. امتیاز بندی به شرح زیر است:
- شما برای پیدا کردن
شناسهی پروسهی پدر
وشناسهی کاربر اجرا کننده
۶۰ امتیاز خواهید گرفت. فقط توجه داشته باشید که این در صورتی است که برای سایر مقادیرnot-found
چاپ کنید. - در صورتی که به مقادیر بالا و مقدار
آی دی پروسههای بچه
جواب دهید. ۱۰۰ امتیاز دیگر خواهید گرفت. - در صورتی که همهی مقادیر را درست به دست آورید ۳۰۰ امتیاز سوال را خواهید گرفت.
ارسال پاسخ برای این سؤال