Python - Ngôn ngữ của tương lai (P1)

Giới thiệu

  • Trong những năm gần đây, với sự phát triển của machine learning, security, python phát triển mạnh mẽ và vươn lên top 2 trong danh sách các ngôn ngữ lập trình được sử dụng nhiều nhất trong năm 2019. (nguồn : https://codeburst.io/10-top-programming-languages-in-2019-for-developers-a2921798d652)
  • Pyhon là ngôn ngữ cấp cao, thông dịch, được tạo ra bởi Guido van Rossum vào năm 1991.
  • Triết lý thiết kế của Python nhấn mạnh khả năng đọc code.
  • Cấu trúc ngôn ngữ và cách tiếp cận hướng đối tượng của nó nhằm mục đích giúp các lập trình viên viết mã rõ ràng, hợp lý cho các dự án quy mô nhỏ và quy mô lớn.
  • Được hỗ trợ socket, thread,... được sử dụng mạnh mẽ trong security.
  • Còn có thể sử dụng để viết web application (Django, Flask,...)
  • Cung cấp nhiều thư viện mạnh mẽ giúp dễ dàng thực hiện mục đích với thời gian ngắn nhất.

Cú pháp

  • Đơn giản nhất vẫn là Hello world, cú pháp của python rất dễ nhớ và sử dụng chỉ cần : print "Hello world"
  • Nhập dữ liệu từ bàn phím, ở đây gồm input và raw_input, cả 2 hàm đều là nhập dữ liệu nhưng input sẽ tự động cast dữ liệu theo người dùng còn raw_input sẽ mặc định người dùng nhập là string: input("Nhập dữ liệu") raw_input("Nhập dữ liệu")
  • Khai báo biến, đây là một trong những ưu điểm của python và 1 số ngôn ngữ cấp cao, chúng ta chỉ cần khai báo tên biến và value, nó sẽ tự động cast kiểu dữ liệu. a = 1 str = "Hello Sydney"
  • Các kiểu dữ liệu thường sử dụng: Python cung cấp tất cả kiểu dữ liệu chúng ta thường sử dụng như : array, string, number (int, float, double,...), dictionary, hơn thế nữa nó còn có thêm một kiểu dữ liệu gần giống như list (array) là tuple. string : "abc" number: 1234.567 array: ['a','b','c'] dictionary: {'a': 1, 'b': 2,...} tuple: ('a', 'b', 'c') -->Vậy, chúng ta thắc mắc tuple khác gì list (array), và tại sao phải tạo ra tuple. Đơn giản nhất chúng ta biết list là mutable còn tuple là immutable. Hơn nữa, list khi tạo là 1 và thay đổi giá trị các phần tử là 1 ô nhớ còn tuple thì ngược lại.

Thư viện:

  • Bất kì ngôn ngữ nào khi chúng ta lựa chọn đều dựa trên sự mạnh mẽ của nó, và thư viện python giúp nó đạt được điều đó. Hãy list ra một số thư viện mạnh mẽ mà python được hỗ trợ.

requests

  • Thư viện đầu tiên chúng ta nói đến là requests, nó hỗ trợ rất nhiều trong việc pentest cũng như crawl data, requests có hỗ trợ session đồng thời param được truyền vào dưới dạng dictonary. Thư viện requests rất dễ sử dụng (Mình đã sử dụng để viết các tool auto like, comment của facebook và một số automation khác)
  • Cú pháp cài đặt rất đơn giản : python -m pip install requests

BeautifulSoup

  • Nếu đã sử dụng request thì ko thể bỏ qa beautifulsoup, đây là thư viện giúp chúng ta dễ dàng parse từ response xml trả về thành các data dựa trên các tag (thẻ) và attribute tương ứng.

hashlib

  • Tiếp theo là thư viện dùng để mã hóa, giải mã. Thư viện hashlib cung cấp đầy đủ chúng ta các loại mã hóa, băm,... như base64, md5, sha, hmac,....

NumPy

  • Thư viện tiếp theo ko thể thiếu trong tính toán (machine learning, cryptography) là numpy, nó cung cấp các công cụ giúp chúng ta dễ dàng thực hiện các phép toán ma trận.

pycrypto

  • Một thư viện khác cung cấp các loại mã hóa, giải mã và các phép toán chuyển từ 1 chuỗi sang 1 số long hoặc ngược lại là pycrypto. Nó là thư viện gần như ko thể thiếu của dân crypto.

scapy

  • Đây là thư viện mình thích nhất khi giới thiệu với các bạn. Nó là thư viện "rất mạnh mẽ" trong môi trường mạng (đặc biệt là LAN). Nó cung cấp công cụ để chúng ta có thể thay đổi các trường trong package và header của các gói tin giúp chúng ta dễ dàng custom hoặc tận dụng với mục đích attack một target nào đó. Mình đang research về thư viện này và tool cơ bản nhất đầu tiên mình viết đc là scan mac address của các địa chỉ IP trong mạng LAN.

Kết luận :