درس شماره 7 |
◊ يادآوری |
قبلا گفتم که برای اينکه هکر خوبی بشيد، زبان C را بايد ياد بگيريد. امروز اولين برنامه اينترنتی خود را به زبان C شروع میکنيم.برنامهای که امروز مینويسيم، يک پورت اسکنر ساده (Simple Port Scanner) است که acw_spscan.exe نام دارد. acw يعنی Artawill Commandline Windows و spscan يعنی Simple Port Scanner. من سورس اين برنامه را با Borland C++ 5.02 کامپايل کردم ولی فکر کنم روی هر نوع کامپايلر C ويندوز کار کند. يک سری نکات در مورد هر برنامهای که با C برای ويندوز خواهم نوشت هست که فقط امروز میگم و بعدا ديگه اشاره نخواهم کرد. ۱- هر برنامهای که من مینويسم، شامل دو فايل است که بايد داونلود کنيد: فايل اصلی که پسوند C يا CPP دارد و يک فايل به يکی از نامهای acw_sock.h يا agw_sock.h يا acu_sock.h ويا axu_sock.h که با توجه به نوع سيستمعامل (ويندوز يا يونيکس) و نوع ظاهر برنامه (خط فرمان يا گرافيکی) يکی از اين چهارتا خواهد بود. اگر برنامه برای ويندوز نوشته شده است، بايد قبل از کامپايل نهايی فايل WS2_32.LIB را هم به پروژه اضافه کنيد. ۲- هر بار که برنامه جديدی خواهم نوشت فايلی که پسوند h دارد، کامل و کاملتر میشود، پس هر وقت يک فايل جديد C يا CPP داونلود میکنيد، فايل h مربوطه را هم داونلود کنيد. ۳- کامپايلر مورد استفاده در برنامههای ويندوز Borland C++ 5.02 است. اگر از کامپايلر ديگری استفاده میکنيد، ممکن است لازم باشد که تغييراتی اعمال کنيد. ۴- سورس تمام توابع و برنامهها مشمول کپی رايت است ولی استفاده از توابع در برنامههايتان در صورت عدم اعمال تغييرات در سورس بلامانع است. - اينههههههه ! |
◊ درباره برنامه Artawill Command-prompt Windows - Simple Prot Scanner = acw_spscan |
برنامه acw_spscan.exe عمل پورت اسکنينگ را به صورت tcp و udp انجام میدهد. همانطوری که از نامش پيداست، برای ويندوز و بهصورت خط فرمان عمل میکند. اگر در command prompt تايپ کنيد: acw_spscan ،خطوط زير چاپ میشود: Artawill Command-line Windows SimplePortScanner (acw_spscan.exe) v1.0 acw_spscan 63.148.227.65 20 30 tcp Artawill Command-line Windows SimplePortScanner (acw_spscan.exe) v1.0 |
◊ بررسی سورس برنامه |
من برای راحتی کار برنامهنويسی شبکه، يک سری تابع تعريف کرده و آنها را در فايل acw_sock.h قرار دادهام که در برنامه اصلی آن را include میکنم. حال به بررسی توابع مورد استفاده در برنامه امروز میپردازم ( اگر خواهان اطلاعات بيشتری هستيد، سورس اين توابع را از فايل acw_sock.h بخوانيد ): ۱- (int arta_win_LoadWinsock(char, char ==> در برنامهنويسی ويندوز قبل از استفاده از سوکت(socket)، بايد WinSock را لود کرد که من اين کار را با اين تابع انجام میدهم. اگر بپرسيد سوکت چيست، میگويم سوکت ارتباطی است از نوع TCP/IP که از پورت خاصی از يک کامپيوتر به سوی يک پورت خاص از يک کامپيوتر ديگر برای رد و بدل کردن دادهها ايجاد میشود. کل برنامهنويسی شبکه به کمک C با استفاده از سوکتهاست. if(arta_win_LoadWinsock(2,0)==-1) دو خط بالا برای لودکردن WinSock ورژن 2.0 بهکار میرود. arta_win_CleanWinsock(); ۳- (int arta_win_CreateTcpSocket(void ==> اين تابع يک سوکت از نوع tcp ايجاد میکند. if((sock=arta_win_CreateTcpSocket())==-1) دو خط بالا برای ايجاد يک سوکت tcp بهکار میرود. if((sock=arta_win_CreateUdpSocket())==-1) ۵- (void arta_win_CloseSocket(int ==> اين تابع، سوکتی را که با يکی از دو دستور بالا ايجاد کردهايم، میبندد. arta_win_CloseSocket(sock); ۶- void arta_win_CreateServerAddressStructure (* struct sockaddr_in *, unsigned short, char ) ==> اين تابع اطلاعات لازم برای برقراری اتصال را مانند IP, Port میگيرد و در يک structure مخصوص از نوع sockaddr_in قرار میدهد. اين structure در توابع بعدی بهکار میرود. arta_win_CreateServerAddressStructure(&addr,port,IP); ۷- (* int arta_win_EstablishTcpSocketConnection(int, struct sockaddr_in ==> اين تابع sock (که از تابعهای ۳ يا ۴ بهدست آمده) و addr را (که از تابع ۶ حاصل شده) میگيرد و يک ارتباط واقعی tcp تشکيل میدهد. اگر ارتباط بهوجود آمد، پورت باز است وگرنه بسته است. if(arta_win_EstablishTcpSocketConnection(sock, &addr)==-1){ ۸- (* int arta_win_EstablishUdpSocketConnection(int, struct sockaddr_in ==> اين تابع sock (که از تابعهای ۳ يا ۴ بهدست آمده) و addr را (که از تابع ۶ حاصل شده) میگيرد و يک ارتباط واقعی udp تشکيل میدهد. اگر ارتباط بهوجود آمد، پورت باز است وگرنه بسته است. if(arta_win_EstablishUdpSocketConnection(sock, &addr)==-1){ حالا يک توضيح کلی میدم: اولين سطرهای برنامه را بررسی میکنم /* An ArtaWill Production - copyright(c) ArtaWill.com */ بعدش يک سری هدر (header) را include کردهام از جمله acw_sock.h را بعدش main شروع میشود و يک سری تعريف متغير داريم که به نوع اين متغير ها دقت کنيد. بعد از روی ورودی خط فرمان، متغيرها ست میشوند. دو سطر آخر هم يک WinSock لود میکند. حالا ادامه:
حالا ادامه برنامه: if(tcp_udp_both!=1){ و حالا آخر برنامه: puts("\n"); |
۷.۰۱.۱۳۸۸
آموزش هک ( جلسه ي ششم - حرفه اي )
اشتراک در:
نظرات پیام (Atom)
هیچ نظری موجود نیست:
ارسال یک نظر