خانه - داده ها
تحلیلگرهای بسته شبکه Wireshark (رهگیر بسته های شبکه) نحوه بررسی پورت با استفاده از wireshark

طرح کلی

دنباله مراحلی که یک برنامه با استفاده از کتابخانه pcap (از PacketCAPture) باید برای تکمیل کار خود انجام دهد به شرح زیر است:

  • رابط شبکه ای که به آن گوش داده می شود را تعریف کنید. (در لینوکس این می تواند eth0 باشد، در BSD xl1).
  • pcap را مقداردهی اولیه کنید. در این صورت به کتابخانه اطلاع داده می شود که از کدام رابط به داده ها گوش خواهیم داد. امکان گوش دادن به چندین رابط به طور همزمان (در جلسات مختلف) وجود دارد.
  • اگر نیاز به ایجاد یک فیلتر است (برای مثال، ما فقط علاقه مند به دریافت بسته های TCP در پورت 23 هستیم)، این فیلتر را "کامپایل" کرده و آن را در یک جلسه خاص اعمال کنید.
  • به چرخه دریافت بسته بروید. پس از این، هر بار که بسته دیگری وارد می شود و از فیلتر مشخص شده عبور می کند، تابعی فراخوانی می شود که باید از قبل تعریف شود. این تابع می تواند هر عملی را که ما بخواهیم انجام دهد. می تواند بسته را تجزیه کند و به کاربر بدهد، می تواند آن را روی دیسک ذخیره کند، یا اصلا نمی تواند کاری انجام دهد.
  • پس از اتمام، باید تمام جلسات باز را ببندید.

بیایید مراحل ذکر شده را با جزئیات در نظر بگیریم.

تعریف رابط

برای تعیین رابطی که در آن باید گوش دهید، می توانید از دو روش استفاده کنید.

اولین مورد این است که نام رابط توسط کاربر مشخص می شود. برنامه زیر را در نظر بگیرید:

#عبارتند از #عبارتند از Int main(int argc، char *argv) ( char *dev = argv; printf("دستگاه: %s\n"، dev); return(0); )

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

راه دوم این است که نام رابط را از خود کتابخانه پیدا کنید:

#عبارتند از #عبارتند از Int main() (char *dev, errbuf; dev = pcap_lookupdev(errbuf); printf("دستگاه: %s\n"، dev); return(0); )

در این مورد، pcap نام رابطی را که در اختیار دارد به ما می دهد. خط errbuf حاوی توضیحاتی از خطا در هنگام اجرای فراخوانی ()pcap_lookupdev خواهد بود.

باز کردن یک رابط برای رهگیری بسته ها

برای ایجاد یک جلسه رهگیری ترافیک، باید تابع ()pcap_open_live را فراخوانی کنید. نمونه اولیه این تابع (از صفحه pcap man) به صورت زیر است:

Pcap_t *pcap_open_live (char *دستگاه، int snaplen، int promisc، int to_ms، char *ebuf)

آرگومان اول نام دستگاهی است که در مرحله قبل تعریف کردیم. snaplen یک عدد صحیح است که حداکثر تعداد بایت های یک فریم شبکه را که توسط کتابخانه گرفته می شود را مشخص می کند. اگر promisc روی true تنظیم شود، رابط وارد حالت به اصطلاح promiscuous می شود (بسته های خطاب به ایستگاه های دیگر در شبکه رهگیری می شوند). to_ms - وقفه در میلی ثانیه (اگر مقدار روی صفر تنظیم شود، خواندن تا اولین خطا رخ می دهد، اگر روی منهای یک تنظیم شود - بی نهایت). در نهایت، errbuf خطی است که در آن پیام خطا را دریافت خواهیم کرد. تابع دسته جلسه (توصیفگر) را برمی گرداند.

برای نشان دادن، اجازه دهید به یک قطعه کد نگاه کنیم:

#عبارتند از Pcap_t *دسته; handle = pcap_open_live(somedev, BUFSIZ, 1, 0, errbuf);

در اینجا یک رابط باز می شود که نام آن در خط somedev نشان داده شده است که نشان می دهد چند بایت از بسته مورد نظر باید ضبط شود (مقدار BUFSIZ در pcap.h تعریف شده است). رابط شبکه به حالت بی‌وقفه تغییر می‌کند. داده ها تا زمانی که خطایی رخ دهد خوانده می شوند. در صورت بروز خطا، می توانید توضیحات متنی آن را با استفاده از نشانگر errbuf روی صفحه نمایش دهید.

نکته ای در مورد رهگیری ترافیک در حالت های بی بند و باری: این دو روش بسیار متفاوت هستند. در مورد رهگیری ترافیک در حالت غیر بی بند و باری، گره تنها ترافیکی را دریافت می کند که به آن هدایت شده یا مربوط به آن است. فقط ترافیک به، از و از طریق میزبان توسط برنامه ما رهگیری می شود. در حالت بی‌وقفه، رابط شبکه تمام بسته‌هایی را که از طریق کابل وارد می‌شوند را می‌پذیرد. در یک محیط بدون سوئیچ، این می تواند تمام ترافیک شبکه باشد. مزیت واضح آن این است که تعداد بیشتری از بسته ها را برای ضبط فراهم می کند، که بسته به اینکه جریان شبکه را برای چه چیزی می گیرید ممکن است (یا نه) مفید باشد.

با این حال، رهگیری ترافیک در حالت غیرقانونی قابل تشخیص است. یک گره دیگر می تواند با دقت بالا تعیین کند که آیا ما از حالت promiscuous استفاده می کنیم یا خیر. علاوه بر این، فقط در محیط‌های بدون سوئیچ (مانند هاب یا سوئیچ‌هایی که با بسته‌های arp پر شده‌اند) کار می‌کند. ثالثاً، اگر شبکه به شدت بارگذاری شود، برنامه ما از مقدار زیادی از منابع سیستم استفاده می کند.

فیلترینگ ترافیک

اغلب یک رهگیر بسته برای رهگیری نه همه، بلکه فقط بسته های خاص مورد نیاز است. به عنوان مثال، مواقعی وجود دارد که می خواهیم در جستجوی رمز عبور، ترافیک پورت 23 (تلنت) را رهگیری کنیم. یا شاید بخواهیم فایلی را که از طریق پورت 21 ارسال می شود (FTP) رهگیری کنیم. شاید ما فقط می خواهیم رهگیری کنیم ترافیک DNS(پنجاه و سومین پورت UDP). در هر صورت، به ندرت نیاز به رهگیری همه داده ها است. توابع pcap_compile() و pcap_setfilter() برای فیلتر کردن ترافیک استفاده می شوند.

هنگامی که ما ()pcap_open_live را فراخوانی کردیم و یک جلسه ضبط ترافیک عملکردی داشتیم، می‌توانیم فیلتر خود را اعمال کنیم. به طور طبیعی، می‌توانید فیلتر را به صورت دستی با تجزیه هدرهای ETH/IP/TCP پس از دریافت بسته پیاده‌سازی کنید، اما استفاده از فیلتر داخلی pcap کارآمدتر و همچنین ساده‌تر است.

قبل از اینکه بتوانید فیلتری را اعمال کنید، باید آن را "کامپایل" کنید. عبارت فیلتر در یک رشته معمولی (آرایه کاراکتر) ذخیره می شود. نحو چنین عباراتی به تفصیل در صفحه man tcpdump (man tcpdump) توضیح داده شده است.

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

int pcap_compile(pcap_t *p، ساخت bpf_program *fp، char *str، int optimize، bpf_u_int32 netmask)

اولین آرگومان دسته (توصیفگر) جلسه ما است (pcap_t *handle در مثال قبلی). آرگومان بعدی یک اشاره گر به ناحیه ای در حافظه است که نسخه کامپایل شده فیلتر خود را در آن ذخیره می کنیم. بعد خود عبارت فیلتر به شکل یک رشته منظم می آید. پارامتر بعدی تعیین می کند که آیا عبارت ما نیاز به بهینه سازی دارد یا خیر (طبق معمول، 0 به معنای خیر، 1 به معنای بله است). آخرین پارامتر netmask است که فیلتر ما روی آن اعمال می شود. تابع در صورت بروز خطا، -1 را برمی گرداند، تمام مقادیر دیگر نشان دهنده تکمیل موفقیت آمیز هستند.

هنگامی که عبارت کامپایل شد، باید اعمال شود، که با استفاده از تابع ()pcap_setfilter انجام می شود. نمونه اولیه آن این است:

int pcap_setfilter (pcap_t *p، ساخت bpf_program *fp)

آرگومان اول دستگیره (توصیفگر) جلسه رهگیری بسته ما است، دومی نشانگر نسخه کامپایل شده عبارت فیلتر است (معمولاً آرگومان دوم تابع pcap_compile()).

مثال زیر استفاده از فیلتر را نشان می دهد:

#عبارتند از Pcap_t *دسته; // توصیفگر جلسه char dev = "eth0"; // رابطی که در آن به char errbuf گوش خواهیم داد. // خط با خطای ساختار bpf_program filter; // عبارت کامپایل شده برای فیلتر char filter_app = "port 23"; // عبارت برای فیلتر bpf_u_int32 mask; // Netmask رابط ما bpf_u_int32 net; // آدرس IP رابط ما pcap_lookupnet(dev، &net، &mask، errbuf); handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf); pcap_compile(دسته، &فیلتر، فیلتر_برنامه، 0، net); pcap_setfilter(دسته، &فیلتر);

این برنامه یک رهگیر برای بسته هایی که به پورت 23 یا از پورت 23 می روند، در حالت غیرقانونی، روی رابط eth0 آماده می کند. مثال حاوی تابع ()pcap_lookupnet است که برمی گردد آدرس شبکهو ماسک شبکه برای دستگاهی که نام آن به عنوان پارامتر به آن ارسال شده است. استفاده از آن ضروری است زیرا برای اعمال فیلتر باید آدرس و ماسک شبکه را بدانیم.

رهگیری بسته ها

دو تکنیک رهگیری بسته وجود دارد. شما می توانید یک بسته را در یک زمان رهگیری و پردازش کنید، یا می توانید با تنظیم یک حلقه خاص با گروهی از بسته ها کار کنید که تا زمانی که pcap تعداد مشخصی از بسته ها را رهگیری کند اجرا می شود. برای کار در حالت اول از تابع ()pcap_next استفاده می شود. نمونه اولیه ()pcap_next:

U_char *pcap_next(pcap_t *p، ساخت pcap_pkthdr *h)

آرگومان اول دستگیره جلسه ما است، دومی اشاره گر به ساختاری است که اطلاعات مربوط به بسته در آن ذخیره می شود، مانند زمان رهگیری، طول بسته و طول بخش جداگانه آن ( برای مثال، اگر بسته تکه تکه شده باشد). ()pcap_next یک اشاره گر u_char را به محل حافظه که بسته توصیف شده توسط این ساختار در آن ذخیره می شود، برمی گرداند.

نمایش استفاده از ()pcap_next برای گرفتن یک بسته:

#عبارتند از #عبارتند از int main() (pcap_t *handle; char *dev; char errbuf; // خطی که خطا را توصیف می کند فیلتر bpf_program؛ // فیلتر کامپایل شده char filter_app = "port 23"؛ // filter bpf_u_int32 mask; // network mask bpf_u_int32 net . (dev، &net، &mask، errbuf)؛ // باز کردن یک جلسه رهگیری در حالت غیرقانونی handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf); // یک فیلتر بسته را کامپایل و اعمال کنید pcap_compile( handle, &filter, filter_app, 0، net)؛ pcap_setfilter( handle، &filter); // بسته بسته را قطع کرد = pcap_next(handle، &header)؛ // طول آن را در کنسول چاپ کرد printf("یک بسته با طول [%d] را جک کرد\n" ، header.len)؛ / / بستن جلسه pcap_close(handle)؛ return(0)؛ )

این برنامه بسته هایی را بر روی دستگاهی که ()pcap_lookupdev برمی گرداند، رهگیری می کند و آن را در حالت پرمخاطب قرار می دهد. بسته ای را شناسایی می کند که از طریق پورت 23 (تلنت) می آید و اندازه آن را بر حسب بایت نمایش می دهد. فراخوانی ()pcap_close یک جلسه ضبط باز را می بندد.

روش جایگزین، اگرچه درک آن دشوارتر است، اما احتمالاً مفیدتر است. بسته های بسیار کمی (در صورت وجود) وجود دارد که از ()pcap_next استفاده می کنند. در اکثر موارد از pcap_loop() یا pcap_dispatch() استفاده می کنند (که به نوبه خود از pcap_loop() استفاده می کند. برای درک استفاده از این دو تابع، باید ایده توابع پاسخ به تماس را درک کنید.

توابع برگشت به تماس یک تکنیک برنامه نویسی پرکاربرد است. اصل بسیار ساده است. فرض کنید برنامه ای دارید که منتظر رویدادی است. برای مثال، برای پردازش یک ضربه کلید. هر بار که یک کلید فشار داده می شود، می خواهم تابعی را فراخوانی کنم که آن رویداد را مدیریت می کند. تابعی که من از آن استفاده می‌کنم یک تابع پاسخ به تماس است. هر بار که کاربر کلیدی را فشار می دهد، برنامه من یک تابع تماس را فراخوانی می کند. توابع Callback در pcap استفاده می‌شوند، اما به جای اینکه وقتی کاربر کلیدی را فشار می‌دهد، آن‌ها را هنگام دریافت بسته دیگری فراخوانی می‌کند. ()pcap_loop و ()pcap_dispatch توابعی هستند که از مکانیسم تابع callback تقریباً به روشی مشابه استفاده می کنند. هر دو یک تابع callback را هر بار که pcap بسته ای را که از فیلتر عبور می کند رهگیری می کند (مگر اینکه فیلتر کامپایل شده و در جلسه اعمال شود، در غیر این صورت تمام بسته های رهگیری شده به تابع callback ارسال می شوند) فراخوانی می کنند.

نمونه اولیه تابع pcap_loop():

Int pcap_loop (pcap_t *p، int cnt، pcap_handler callback، u_char *user);

اولین آرگومان هندل جلسه ما است. عدد صحیح بعدی به pcap_loop() می‌گوید که تعداد کل بسته‌ها باید جمع‌آوری شود (مقدار منفی به این معنی است که بسته‌ها باید تا زمانی که خطا رخ دهد ضبط شوند). آرگومان سوم نام تابع callback است (فقط نام، بدون پرانتز). آخرین آرگومان در برخی از برنامه ها استفاده می شود، اما معمولاً به سادگی روی NULL تنظیم می شود. ()pcap_dispatch تقریباً یکسان است، تنها تفاوت این است که توابع چگونه زمان‌بندی را مدیریت می‌کنند، که مقدار آن هنگام فراخوانی ()pcap_open_live تنظیم می‌شود. ()pcap_loop برخلاف pcap_dispatch() به سادگی از وقفه های زمانی چشم پوشی می کند. جزئیات در man pcap موجود است.

قبل از اینکه مثالی از نحوه استفاده از pcap_loop() ارائه دهیم، باید به فرمت تابع callback خود نگاه کنیم. ما نمی توانیم خودسرانه یک نمونه اولیه تابع callback تعریف کنیم زیرا ()pcap_loop نمی داند با آن چه کند. نمونه اولیه تابع callback ما باید به صورت زیر باشد:

void got_packet (u_char *args, const struct pcap_pkthdr *header, const u_char *packet);

بیایید نگاهی دقیق تر به آن بیندازیم. ابتدا تابع یک مقدار خالی (void) برمی گرداند. این منطقی است زیرا ()pcap_loop نمی تواند بداند با مقدار بازگشتی چه کند. آرگومان اول همان آرگومان آخر pcap_loop() است. هر مقداری که به عنوان آخرین آرگومان برای ()pcap_loop استفاده می شود، هر زمان که از ()pcap_loop فراخوانی شود، به عنوان اولین آرگومان به تابع callback ارسال می شود. آرگومان دوم هدر pcap است که حاوی اطلاعاتی درباره زمان ضبط بسته، اندازه آن و غیره است. ساختار pcap_pkthdr در pcap.h به صورت زیر تعریف شده است:

Struct pcap_pkthdr ( struct timeval ts; // timestamp bpf_u_int32 caplen; // طول قسمت ضبط شده بسته bpf_u_int32 len; // طول کل بسته );

آخرین آرگومان تابع callback جالب ترین است. این یک اشاره گر به یک بافر است که در واقع شامل کل بسته ای است که با استفاده از ()pcap_loop گرفته شده است.

چگونه از متغیر بسته استفاده کنیم؟ بسته حاوی ویژگی‌های زیادی است، بنابراین همانطور که می‌توانید تصور کنید، در واقع یک رشته نیست، بلکه مجموعه‌ای از ساختارها است (به عنوان مثال، یک بسته TCP/IP حاوی یک اترنت، ip، سربرگ tcp و خود داده است). پارامتر بسته که از نوع u_char است، در واقع یک نسخه سریالی از این ساختارها است. برای به دست آوردن داده های مفید از این ساختارها، باید تغییراتی را انجام دهیم.

اول از همه، باید ساختارهایی در برنامه تعریف شده داشته باشیم که از آنها استفاده خواهیم کرد. ما از ساختارهای زیر استفاده خواهیم کرد (در واقع می‌توانیم آنها را مستقیماً از فایل‌های هدر بگیریم، اما نام فیلدهای ساختارها از پلتفرم به پلتفرم متفاوت است، بنابراین برای اهداف نمایشی استفاده می‌شود):

Struct sniff_ethernet ( u_char ether_dhost; u_char ether_shost; u_short ether_type; /* IP? ARP? RARP? etc */ ); // ساختار هدر IP sniff_ip ( #if BYTE_ORDER == LITTLE_ENDIAN u_int ip_hl:4, ip_v:4; #endif #if BYTE_ORDER == BIG_ENDIAN u_int ip_v:4, /* نسخه */ ip_hl:4; /* طول سرصفحه */ #endif /* نه _IP_VHL */ u_char ip_tos؛ u_short ip_len؛ u_short ip_id؛ u_short ip_off؛ #define IP_RF 0x8000 /* Reserved fragment flag */ #define IP_DF 0x4000 /* dont fragmente 0x4000 /* dont fragmente 0x20 *_/ flag */ #define IP_OFFMASK 0x1fff /* mask برای تکه تکه کردن بیت ها */ u_char ip_ttl؛ /* زمان زنده ماندن */ u_char ip_p؛ /* پروتکل */ u_short ip_sum؛ /* checksum */ struct in_addr ip_src,ip_dst؛ /* منبع و آدرس مقصد */ )؛ struct sniff_tcp ( u_short th_sport; u_short th_dport; tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgment number */ #if BYTE_ORDER == LITTLE_END_THIAN *:4-th_unt, . * افست داده */ #endif #if BYTE_ORDER == BIG_ENDIAN u_int th_off:4، /* داده افست */ th_x2:4؛ /* (استفاده نشده) */ #endif u_char th_flags؛ #define TH_FIN 0x01 #define THx02 #defin TH_RST 0x04 #تعریف TH_PUSH 0x08 #تعریف TH_ACK 0x10 #تعریف TH_URG 0x20 #تعریف TH_ECE 0x40 #تعریف TH_CWR 0x80 #تعریف TH_FLAGS \ (THS_FLAGS \ (TH_ST_FN| _ECE|TH_CWR) u_short th_win؛ /* پنجره */ u_short th_sum؛ /* checksum */ u_short th_urp; /* urgent pointer */ );

اگر از توضیحات ساختار از فایل‌های هدر استاندارد استفاده می‌شود، گاهی اوقات برای اینکه برنامه‌ای که از توضیحات هدر TCP استفاده می‌کند بدون خطا کامپایل کند، لازم است قبل از گنجاندن فایل‌های هدر، نماد _BSD_SOURCE تعریف شود. راه جایگزین- ساختارهایی را تعریف کنید که هدر TCP را به صورت دستی توصیف می کنند.

pcap به طور طبیعی دقیقاً از همان ساختارها هنگام گرفتن بسته ها استفاده می کند. سپس به سادگی یک رشته u_char (بافر) ایجاد می کند و داده ها را از ساختارها در آن کپی می کند. چگونه یک رشته را به ساختارها تجزیه کنیم؟ این به راحتی با استفاده از اشاره گر و تبدیل نوع انجام می شود.

ابتدا، بیایید متغیرهایی را که برای تجزیه بسته u_char نیاز داریم در هدرهای جداگانه اعلام کنیم:

Const struct sniff_ethernet *ethernet; const struct sniff_ip *ip; ساختار const sniff_tcp *tcp; const char *payload; int size_ethernet = sizeof(struct sniff_ethernet); int size_ip = sizeof(struct sniff_ip); int size_tcp = sizeof(struct sniff_tcp);

اکنون تبدیل نوع را انجام می دهیم:

اترنت = (struct sniff_ethernet*)(packet); ip = (struct sniff_ip*) (packet + size_ethernet); tcp = (struct sniff_tcp*) (packet + size_ethernet + size_ip); محموله = (u_char *) (بسته + size_ethernet + size_ip + size_tcp);

پس از این می توانیم به فیلدهای تمام ساختارها به روش معمول دسترسی داشته باشیم، به عنوان مثال:

اگر (tcp->th_flags & TH_URG) ( ... ); ... printf("TTL = %d\n", ip->ip_ttl);

خاموش شدن

وقتی کارتان تمام شد، باید جلسه را ببندید. این کار با استفاده از تابع ()pcap_close انجام می شود.

هر یک از اعضای تیم ][ ترجیحات خود را در رابطه با نرم افزار و ابزارهای کمکی دارد
تست قلم پس از مشورت متوجه شدیم که انتخاب آنقدر متفاوت است که امکان پذیر است
یک مجموعه جنتلمن واقعی از برنامه های اثبات شده ایجاد کنید. خودشه
تصمیم گرفت. برای اینکه یک هجوم ایجاد نکنیم، کل لیست را به موضوعات تقسیم کردیم - و در
این بار به ابزارهای کمکی برای بو کشیدن و دستکاری بسته ها می پردازیم. از آن استفاده کنید
سلامتی.

Wireshark

نت کت

اگر در مورد رهگیری داده ها صحبت کنیم، پس ماینر شبکهاز روی آنتن گرفته خواهد شد
(یا از یک Dump از پیش آماده شده در قالب PCAP) فایل ها، گواهی ها،
تصاویر و رسانه های دیگر، و همچنین رمز عبور و سایر اطلاعات برای مجوز.
یکی از ویژگی های مفید این است که بخش هایی از داده ها را جستجو کنید که حاوی کلمات کلیدی هستند
(به عنوان مثال، ورود کاربر).

پوسته پوسته شدن

سایت اینترنتی:
www.secdev.org/projects/scapy

ابزاری قدرتمند برای هر هکری که باید داشته باشد
دستکاری بسته های تعاملی بسته های بیشتر را دریافت و رمزگشایی کنید
پروتکل های مختلف، پاسخ به درخواست، تزریق اصلاح شده و
بسته ای که توسط خودتان ایجاد شده است - همه چیز آسان است! با کمک آن می توانید یک کل را انجام دهید
تعدادی از کارهای کلاسیک مانند اسکن، tracorute، حملات و شناسایی
زیرساخت شبکه در یک بطری ما جایگزینی برای چنین ابزارهای محبوبی دریافت می کنیم،
مانند: hping، nmap، arpspoof، arp-sk، arping، tcpdump، tetheral، p0f و غیره. در آن
زمانش فرا رسیده است پوسته پوسته شدنبه شما امکان می دهد هر کاری را انجام دهید، حتی خاص ترین
وظیفه ای که هرگز نمی تواند توسط توسعه دهنده دیگری که قبلاً ایجاد شده است انجام دهد
به معنای. به جای نوشتن یک کوه کامل از خطوط در C، برای مثال،
تولید بسته اشتباه و fuzzing برخی از دیمون کافی است
با استفاده از چند خط کد پوسته پوسته شدن! برنامه ندارد
رابط گرافیکی، و تعامل از طریق مفسر به دست می آید
پایتون. هنگامی که به آن دست پیدا کردید، ایجاد نادرست هزینه ای برای شما نخواهد داشت
بسته ها، فریم های 802.11 لازم را تزریق می کنند، رویکردهای مختلف را در حملات ترکیب می کنند
(مثلاً مسمومیت کش ARP و پرش VLAN) و غیره. خود توسعه دهندگان اصرار دارند
تا اطمینان حاصل شود که از قابلیت های Scapy در پروژه های دیگر استفاده می شود. اتصال آن
به عنوان یک ماژول، ایجاد یک ابزار برای انواع مختلف تحقیقات محلی آسان است،
جستجوی آسیب پذیری ها، تزریق وای فای، اجرای خودکار موارد خاص
وظایف و غیره

بسته بندی

سایت اینترنتی:
پلتفرم: *nix، یک پورت برای ویندوز وجود دارد

یک توسعه جالب که از یک طرف امکان تولید هر یک را فراهم می کند
بسته اترنت، و از سوی دیگر، دنباله ای از بسته ها را با هدف ارسال می کند
چک ها پهنای باند. برخلاف سایر ابزارهای مشابه، بسته بندی
دارای یک رابط گرافیکی است که به شما امکان می دهد بسته ها را به ساده ترین شکل ممکن ایجاد کنید
فرم. علاوه بر این. ایجاد و ارسال به ویژه شرح داده شده است
دنباله ای از بسته ها می توانید تاخیر بین ارسال را تنظیم کنید،
ارسال بسته ها با حداکثر سرعت، بیشینه سرعتبرای بررسی پهنای باند
بخش شبکه (بله، اینجا جایی است که آنها پرونده را تشکیل می دهند) و جالب تر -
تغییر پویا پارامترها در بسته ها (به عنوان مثال، آدرس IP یا MAC).

مانیتور علاوه بر اتصال به کانال انتقال داده باید داشته باشد روش موثرشناسایی بسته های IP که به محض رسیدن آنها را رهگیری کنید. پروتکل های لایه کاربردی معمولاً با یک پورت TCP خاص ارتباط برقرار می کنند، برای مثال، HTTP از porg 80 استفاده می کند. برای نظارت بر ترافیک HTTP، مانیتور بسته می تواند خود را محدود به در نظر گرفتن ترافیک TCP در پورت 80 کند. این تصمیم را می توان برای هر بسته خاص توسط تجزیه و تحلیل فیلد پروتکل در هدر IP و شماره پورت مبدا و مقصد در هدر TCP. با این حال، جداسازی تمام ترافیک HTTP بسیار دشوار است. برخی از وب‌سایت‌ها از این پورت استفاده نمی‌کنند، اما از پورت‌های 8000 یا 8080 استفاده می‌کنند. بعلاوه، برخی از برنامه‌ها ممکن است از طریق پورت 80 با استفاده از پروتکل دیگری ارتباط برقرار کنند. اگرچه پورت ها به برنامه های خاص اختصاص داده می شوند، اما توسعه دهنده برنامه یا مدیر سیستمممکن است این دستورالعمل ها را نادیده بگیرد و از پورت 80 برای برنامه ای با استفاده از پروتکل دیگری استفاده کند.

علاوه بر این، وب دارای یک پروتکل HTTPS است که از پورت 443 استفاده می کند. یک مانیتور بسته می تواند با نظارت بر ترافیک TCP که حاوی پورت 443 به عنوان شماره پورت مبدا و مقصد است، ترافیک HTTPS را ضبط کند. با این حال، داده های ارسال شده از طریق HTTPS با استفاده از یک لایه سوکت امن رمزگذاری می شوند. SSL). مانیتور نمی تواند پیام های HTTP ارسال شده از طریق این اتصالات TCP را شناسایی کند. با این حال، می تواند ترافیک TCP در پورت 443 را به منظور محاسبه آمارهای اولیه مانند تعداد اتصالات و بایت های منتقل شده با استفاده از HTTPS رهگیری کند. سایر انتقالات آغاز شده توسط مرورگر وب ممکن است از پروتکل های لایه برنامه متفاوت استفاده کنند. در برخی موارد، این ترافیک را می توان با نظارت بر پورت های اختصاص داده شده به این پروتکل ها رهگیری کرد. با این حال، تعدادی از برنامه ها از پروتکل هایی استفاده می کنند که به صورت پویا شماره پورت ها را هنگام انتقال داده ها اختصاص می دهند. به عنوان مثال، سرویس گیرنده و سرور پروتکل انتقال فایل (FTP) می توانند به صورت پویا شماره پورت اتصال TCP مورد استفاده برای انتقال داده را انتخاب کنند. به همین ترتیب، بسیاری از پروتکل‌های پخش رسانه معمولاً از شماره پورت خاصی برای انتقال داده‌های صوتی و تصویری استفاده نمی‌کنند، همانطور که بعداً در بخش 14.4.4 با جزئیات بیشتر مورد بحث قرار خواهد گرفت.

رهگیری ترافیک با هدرهای IP و TCP خاص مستلزم اعمال فیلتر بر روی بسته های IP در هنگام رسیدن است. فیلتر کردن بسته‌ها در اسرع وقت هزینه‌های سربار مربوط به کپی و پردازش بسته‌هایی را که پس از آن دور ریخته می‌شوند، کاهش می‌دهد. مانیتور بسته ممکن است نرم افزار annarate خاصی داشته باشد که بسته ها را هنگام دریافت طبقه بندی می کند. کارت شبکه. اگر پشتیبانی سالانه وجود نداشته باشد، بسته ها ممکن است توسط سیستم عامل یا برنامه فیلتر شوند. تعداد زیادی از برنامه های نظارت بر بسته ها به ابزار tcpdump متکی هستند.

LJLM، Tcpj بر اساس فیلتر بسته برکلی (BPF)

 


خواندن:



نحوه پارتیشن بندی هارد دیسک

نحوه پارتیشن بندی هارد دیسک

نحوه تقسیم هارد به دو پارتیشن بدون از دست دادن اطلاعات به شرطی که یک پارتیشن با حرف (C:) به حجم اصلی تبدیل شود، در...

هارد دیسک را به پارتیشن تقسیم می کنیم

هارد دیسک را به پارتیشن تقسیم می کنیم

هنگام نصب ویندوز، هارد دیسک به طور سنتی به حداقل دو پارتیشن تقسیم می شود - یک پارتیشن سیستم کوچکتر با حرف C و یک پارتیشن کاربر بزرگتر...

وقتی کامپیوتر روشن می شود بوق می دهد

وقتی کامپیوتر روشن می شود بوق می دهد

تاریخ انتشار: 1390/02/01 مواقعی وجود دارد که کامپیوتر روشن نمی شود، اما شروع به بیپ می کند. اگر گوش کنید، مشخص می شود که ...

تغییر صحیح پسوند فایل در ویندوز نحوه تغییر پسوند آرشیو

تغییر صحیح پسوند فایل در ویندوز نحوه تغییر پسوند آرشیو

سیستم عامل های ویندوز محبوب هستند زیرا به شما امکان می دهند رایانه های کاری را به دلخواه خود پیکربندی کنید. هنوز یک سیستم عامل وجود ندارد ...

فید-تصویر RSS