سلام به همگی، امروز اومدم با یه برنامه ی خاص. حتی ازش میشه توی تست نفوذ و اکسپلویت نویسی هم استفاده کرد. اول یه توضیح بدم که برنامه EveryOpen چیه؟
برنامه EveryOpen برنامه ایه که وقتی اجرا شد , کارهایی رو در سیستم انجام میده و تا وقتی کارش تموم نشده، اصلا بسته نمیشه. با هیچ روشی ( ... , kill, Ctrl+Z , Ctrl+C) یا حتی خاموش کردن سیستم نمیشه بستش.
برای پیاده سازی این برنامه به ماژول threading و uuid و signal نیاز داریم. توابع مورد نیاز: Signals و signal.
1- قطعه کد:
from signal import Signals, signal from uuid import uuid4 from threading import Thread captured_kills=[] def handler(self, hand, foot): print("You cannot stop me! XD") kill=str(uuid4()).replace("-","") captured_kills.append(kill) print("Kill ID: "+kill) def work(): #Do your hacky work here # Code Place print(captured_kills) def capture(): for sig in Signals: signal(sig,handler) def main(): wt=Thread(target=work,daemon=1) ct=Thread(target=capture,daemon=1) wt.start() ct.start() if __name__=="__main__": main()
2- توضیحات:
روش کار ما این است که تمام سیگنال هایی که به پروسس برنامه می آید را بگیریم و کنسل کنیم و به هرکدام برای شناسایی یک آیدی اختصاص دهیم. و به صورت دو ترد جداگانه کار اصلی و گرفتن سیگنال را انجام دهیم. تابع signal یک سیگنال را گرفته و هندل می کند. و کلاس Signals یک enum است که تمامی سیگنال ها را ذخیره کرده و ما با حلقه همه را میگیریم.
داخل تابع work به جای کامنت هایی که من نوشتم کار خود را انجام میدهیم.
تا پست بعدی، خداحافظ.