Python for InfoSec Part 1: Getting Started (continued)


  • administrators

    Tutorial này tiếp tục chỉ ra một vài khái niệm cơ bản trong Python. Chúng ta sẽ tìm hiểu qua việc đưa code vào trong một script, các hàm, các class, và module sys.

    Python Script:

    Dưới đây là một đoạn lệnh cơ bản để bắt đầu một Python script. Chúng ra sẽ bắt đầu nói với Hệ điều hành rằng chạy file thông qua "#!/usr/bin/env python". Sau đó tạo một hàm main bằng "def main():" và 2 dòng code cuối dùng để chạy hàm main().

    #!/usr/bin/python
    import <module1>, <module2>
     
    def myFunction():
     
    def main():
        myFunction()
     
    if __name__=="__main__":
        main()
    

    Hàm (function):

    Hàm thường là một đoạn code mà thực thi một vài tác vụ và trả về một output.

    # Declare function/setup logic
    def MyFunction():
        ...do work...
        return output
     
    #Call the function from main:
    def main():
        output = MyFunction(input)
    

    Class:

    Class là một cách để tổ chức các đoạn code của bạn, nó là một tập hợp logic của các dữ liệu và các thứ được khởi tạo trong nó. Class có các thuộc tính và các phương thức nhất định. Khi bạn tạo xong một class, sau đó bạn có thể tạo ra một Object của class đó, nó sẽ thừa hưởng những thuộc tính và phương thức của class bạn đã định nghĩa, đây chính là lập trình hướng đối tượng.

    Khái niệm class khá khó hiểu nếu bạn mới tiếp xúc với lập trình. Thực ra bạn có thể không cần đến class, nhưng nó có thể làm cho code của bạn đỡ rườm rà hơn. Dưới đây chúng ta sẽ định nghĩa một class tên là "Domain" bằng cách sử dụng từ khóa 'class'. Các phương thức bên trong class đó sẽ hoạt động khi bạn tạo một Object của class Domain.

    >>> import os
    >>> class Domain:
    ...     def __init__(self, domain, port, protocol):
    # Stores the variabled passed inside two variables
    ...         self.domain = domain
    ...         self.port = port
    ...         self.protocol = protocol
    # Defines a method to build a URL
    ...     def URL(self):
    ...         if self.protocol == 'https':
    ...             URL = 'https://' + self.domain + ':' + self.port + '/'
    ...         if self.protocol == 'http':
    ...             URL = 'http://' + self.domain + ':' + self.port + '/'
    ...         return URL
    # Sets up a method to lookup resolve domain to IP using host command via os.system
    ...     def lookup(self):
    ...         os.system("host " + self.domain)
    ...
    >>>
    >>> domain = Domain('google.com', '443', 'https')
    >>>
    >>> dir(domain)
    ['URL', '__doc__', '__init__', '__module__', 'ip', 'lookup', 'port', 'protocol']
    >>> domain.URL()
    'https://8.8.8.8:443/'
    >>> domain.ip
    '8.8.8.8'
    >>> domain.port
    '443'
    >>> domain.protocol
    'https'
    >>> domain.lookup()
    google.com has address 74.125.228.233
    google.com has address 74.125.228.227
    google.com has address 74.125.228.232
    

    Như bạn thấy sau khi tạo một Object của class Domain, bạn có thể chạy các phương thức của class đó.

    Module cuối cùng để kết thúc bài mở đầu của chúng ta đó là module sys. Module này cho phép bạn đọc các biến và đưa chúng vào trình thông dịch như các biến dòng lệnh. Cú pháp khá đơn giản sys.argv[0]. Dưới đây là một đoạn code trong script có tên "sys.py":

    import sys
     
    script = sys.argv[0]
    ip = sys.argv[1]
    port = sys.argv[2]
     
    print "[+] The script name is: " + script
    print "[+] The IP is: "+ ip +" and the port is: " + port
    

    Khi script này được gọi vào command line cùng với một vài biến nó sẽ cho kết quả như sau:

    ~$ python sys.py 8.8.8.8 53
    [+] The script name is: sys.py
    [+] The IP is: 8.8.8.8 and the port is: 53
    

    Hãy tiếp tục khám phá những module và những hàm có sẵn khác trong Python vì chúng sẽ giúp bạn xử lý được rất nhiều vấn đề một cách dễ dàng. Tutorial tiếp theo sẽ giới thiệu đến khái niệm tạo các kết nối mạng với Python bằng cách xây dựng một công cụ scan (quét qua các cổng) đơn giản.
    Dịch giả: Mod Nguyễn Trung


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.