SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

Network Programming with Python

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • Network Programming with Python

    با سلام خدمت تمام دوستان عزیز تو ایران هک....
    آموزش برنامه نویسی شبکه با پایتون...[img]images/smilies/Smileys/48.gif[/img]

    همون طور که خودتون می بینید رفرنس های فارسی در مورد پایتون کم هستش...
    کتاب های انگلیسی رو هم خیلیا وقت نمی کنن بخونن...
    به همین خاطر تصمیم گرفتم این رو آموزش بدم.....تا به کارتون بیاد....
    من از روی این کتاب آموزش می دم....

    network_programming_2nd_edition

    پس استارت می کنیم...[img]images/smilies/Smileys/3.gif[/img]

  • #2
    RE: Network Programming with Python

    آولین کاری که باید تو مبحث کار با شبکه انجام دهیم ساخت سوکت هستش برای اتصال...

    برای ساخت سوکت ابتدا باید ماژ<ل سوکت رو include کنید به این شکل:
    کد:
    import socket
    سوکت شامل متدهای Bind و listen و connect و accept هستش...

    با دستور زیر می تونید آدرس بدید و آیپی سایت رو در یافت کنید:

    کد:
    s=socket.gethostbyname("iranhack.com")
    print s
    ماژول هایی که ما بیشتر می خواهیم استفاده کنیم httplib , ftplib , telnetlib , smtplib هستش..
    [hr]
    اولین چیزی که برای ساخت سوکت استفاده میشه Host + port هستش...ترکیب این 2 با هم میشه یک سوکت.
    شکل کلی دستور به این شکل هستش:
    کد:
    s = socket.socket (socket_family, socket_type, protocol=0)
    ساخت سوکت
    کد:
    s = socket.socket()
    دریافت نام هاست
    کد:
    host = socket.gethostname()
    اختصاص پورت:
    کد:
    port = 12545
    اتصال پورت با هاست:
    کد:
    s.bind((host, port))
    مدت زمانی که منتظر پاسخ از سمت کلاینت می شویم:
    کد:
    s.listen(5)
    در آخر هم بستن سوکت:
    کد:
    c.close()
    قبول اتصال:
    کد:
    s.accept()
    ارسال دیتا:
    کد:
    c.send()
    این نوع سوکت در سمت سرور هستش.
    سممت کلاینت تقریبا به مین شکل هستش ولی با این تفاوت که
    بعد از اتصال دیتا دریافت می کنه:
    کد:
    s.recv()
    این نوع سوکت از نوع TCP هستش.
    برای UDP تقریبا به همین شکل هستش ولی با این تفاوت که دیگه  accept نداریم.

    نظر


    • #3
      RE: Network Programming with Python

      ماژول telnetlib

      همون جور که از اسم این ماژول معلومه شما می تونید یه برنامه تلنت کوچولو بنویسید:
      ابتدا ماژول را فراخوانی می کنیم :
      کد:
      import telnetlib
      کد:
      t=telnetlib.telnet('localhost')
      t.read_until('login:')
      user=raw_input('')
      t.write(user)
      t.read_until('password:')
      password=raw_input('')
      t.write(password)
      حالا خیلی راحت کاربر می تونه یا داشتن یوزر و پس لوگین کنه....
      و همچنین دیتا نقل و انتقال کنه...

      این ها همشون بر اساس متد GET در خواست ها رو ارسال می کنن..

      نظر


      • #4
        RE: Network Programming with Python

        ماژول Urllib2 , Urllib
        با استفاده از این ماژول ها می تونید به واکشی و دریافت اطلاعات از url بپردازید....

        زیاد با هم فرق ندارن ولی 2 تا فرق اصلی دارند....

        urllib هر urlای رو می پذیره.و می تونه url ها رو برای درخواست get کد کنه...
        urllib2  می تونه درخ واست ها رو پذیره و ست کنه روی هدر های url...

        خوب این ها رو از روی مثال بهتون توضیح میدم:
        کد:
        import urllib2
        res= urllib2.urlopen('http://google.com')
        print res.info()
        html = res.read()
        res.close()
        با این برنامه می تونید اطلاعات زیر رو دریافت کنید:
        کد:
        Date: Mon, 21 Apr 2014 21:47:23 GMT
        Server: Apache
        Last-Modified: Wed, 05 Feb 2014 07:36:36 GMT
        ETag: "460015-3168-4f1a3d110d00f"
        Accept-Ranges: bytes
        Content-Length: 12648
        Vary: Accept-Encoding,User-Agent
        Content-Type: text/html
        X-Pad: avoid browser bug
        Connection: close
        [hr]
        من توضیحی در مورد urlopen بدم...
        مقداری که این متد بر می گردونه بهتون دسترسی به هدر HTTP server میده...که بعد اطلاعاتش نمایش داده میشه...
        راستی می تونید به جای Http از ftp یا هر چیز دیگه ای هم استفاده کنید....[img]images/smilies/Smileys/58.gif[/img]

        به برنامه زیر توجه کنید:
        کد:
        import urllib2
        response = urllib2.urlopen('http://www.google.com')
        print "Response:", response
        
        دریافت url
        print "The URL : ", response.geturl()
        
        print "The Headers : ", response.info()
        
        دریافت کد html سایت
        html = response.read()
        print "Get all data: ", html
        برنامه رو سیو کنید و در CMD اجرا کنید.
        البته یادتو نباشه برای اجرا باید مفسر پایتون نصب باشه روی سیستم..

        نظر


        • #5
          RE: Network Programming with Python

          این هم برنامه برای در خواست اطلاعات هدر از سایت:
          کد:
          import urllib2
          url = 'http://www.google.com'
          headers = {'User-Agent' : 'Mozilla 5.10'}
          request = urllib2.Request(url, None, headers)
          response = urllib2.urlopen(request)
          print response.headers
          در خط سوم شما هدر رو به برنامه اضافه می کنید:
          در خط چهارم شما درخواست رو ایجاد می کنید
          در خط پنجم اطلاعت رو دریافت می کنید از سرور..
           

          نظر


          • #6
            RE: Network Programming with Python

            متد urlparse در urllib

            این متد برای آنالیز رشته url به کار میره....

            به این برنامه دقت کنید:
            کد:
            import urlparse
            url = "http://iranhack.com/acc/thread-2140-post-5825.html#pid5825"
            domain = urlparse.urlsplit(url)[1].split(':')[0]
            print "domain url : ", domain
            در این برنامه فقط دامین اصلی رو نشون میده:
            یعنی خروجی میشه :

            کد:
            iranhack.com

            نظر


            • #7
              RE: Network Programming with Python

              امروز بیکار بودم و برنامه ای برای بدست آوردن مک آدرس نوشتم...

              اول کار باید این ماژول رو وارد کنید:
              کد:
              from uuid import getnode as get_mac
              داخل این ماژول تابع برای فراخوانی مک داره:
              کد:
              mac=get_mac()
              در آخر هم اینو print بگیرید:
              کد:
              print mac
              یک نکته ای که اینجا هستش شما اگه یم خواهین در مبنای هگز مک رو دریافت کنید باید با تابع هگز خروجی بگیرید:
              کد:
              print hex(mac)
              موفق باشید[img]images/smilies/Smileys/48.gif[/img]

              نظر


              • #8
                RE: Network Programming with Python

                سلام.
                با این برنامه میتونید اطلاعاتی که به هاستتون وصل هستید رو بدست بیاورید.
                کد:
                import socket
                s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                print "done"
                print "port number..."
                port=socket.getservbyname('http','tcp')
                print "done"
                s.connect(("www.iranhack.com",port))
                print "done"
                print "connetcted from",s.getsockname()
                print "connetcted from",s.getpeername()
                
                print "IraN Hack Security Team"
                getsockname این متد آیپی خودتون رو نشون میده.
                getpeername این هم آیپی خود سایتی که بهش وصل هستید...

                نظر


                • #9
                  RE: Network Programming with Python

                  پایتون ماژولی داره برای جمع آوری اطلاعات یک وب سایت....

                  اسم این ماژول whois هستش....

                  ابتدا اونو دانلود و سپس نصب کنید:

                  سپس ماژول را فراخوانی کنید و استفاده کنید:

                  من یک برنامه ساده براتون نوشتم:
                  کد:
                  import whois
                  
                  site = input("Enter a domain: ")
                  i = whois.whois(site)
                  
                  print i
                  موفق باشید.

                  نظر


                  • #10
                    RE: Network Programming with Python

                    یکی از مازول هایی که می تونید برای دستورات تحت شبکه به کار ببرید subprocess هستش...

                    شما می تونید این ماژول رو فراخونی کنید و سپس دستوراتی نظیر ping و net sh و tracert و ...... رو به کار ببرید...

                    من در اینجا برنامه ای ساده نوشتم که میاد دستور net stat رو براتون انجام میده...

                    کد:
                    import subprocess
                    subprocess.call("netstat -n".split())
                    موفق باشید...[img]images/smilies/Smileys/48.gif[/img]

                    نظر

                    صبر کنید ..
                    X