[PyHack] Bài 1: MAC là gì? Cách thay đổi MAC bằng python

Mở đầu cho seri Pyhack này, chúng ta sẽ đi tìm hiểu MAC là gì và cách đổi MAC bằng Python. Mac là địa chỉ duy nhất có 6 cặp 2 chữ số được chỉ định bởi nhà sản xuất cho từng phần cứng mạng (card không dây hoặc card Ethernet). Mac là viết tắt của Media Access Control, và mỗi địa chỉ (mã) là duy nhất cho một thiết bị. Mình sẽ dùng môi trường Linux để thực hiện seri này, cụ thể hơn là Kali Linux. Bài này chúng ta sẽ tìm hiểu cách đổi MAC bằng python.

PyHack là một seri Hack bằng python. Nơi bạn sẽ học lập trình python và ethical hacking cùng lúc. Để hiểu rõ bài viết hơn, bạn vui lòng học qua khoá học python cơ bản trước.

Tại sao chúng ta lại phải thay đổi MAC?

  1. Tăng tính ẩn danh.
  2. Mạo danh các thiết bị khác.
  3. Vượt qua các bộ lọc.

Mô phỏng cách Mac hoạt động

 

Như đã nói ở trên địa chỉ MAC là duy nhất. Như vật, khi các nhà sản xuất muốn cập nhật firmware sẽ có thể cập nhật các thiết bị cụ thể dễ hơn nhờ vào MAC. Các package cũng sẽ biết chúng đợi gửi tới đâu nhờ vào các địa chỉ MAC được chỉ định.

Cách thay đổi MAC bằng python

Trên Windows, bạn dễ dàng thay đổi MAC bằng phần mềm TMAC .

Trong Linux, chúng ta hoàn toàn có thể thay đổi MAC bằng python một cách rất đơn giản. Trong bài viết này, mình sẽ thay đổi MAC của eth0 (card mạng) và wlan0 (card wifi). Chúng ta làm theo các bước sau:

  1. Đầu tiên, ta sẽ vô hiệu hóa thiết bị MAC đó: sudo ifconfig wlan0 down
  2. Tiếp theo, ta sẽ thay đổi MAC: sudo ifconfig wlan0 hw ether 00:11:22:33:44:55
    Chỗ 00:11:22:33:44:55 là địa chỉ MAC mới, còn wlan0 là tên thiết bị, cụ thể ở đây là card wifi
  3. Cuối cùng là bật thiết bị MAC đó lên lại: sudo ifconfig wlan0 up

Để thay đổi MAC, chúng ta phải truy cập chạy lệnh trên shell. Python hỗ trợ chúng ta chạy lệnh trên hệ thống bằng module subprocess. Các lệnh sẽ phụ thuộc vào hệ điều hành mà bạn đang sử dụng.

Cú pháp:

import subprocess
subprocess.call(“COMMAND”, Shell=True)

Dựa theo cú pháp trên và thêm một vài dòng python cơ bản, chúng ta sẽ có code như thế này.

Khi chạy nó sẽ như thế này.

Tiếp theo, chúng ta sẽ thêm parser cho chương trình. Parser là những arguments hỗ trợ cho người dùng khi sử dụng chương trình của chúng ta.

Ví dụ: khi ta gõ sudo ifconfig --help thì nó sẽ trả ra cho ta các arguments của lệnh đó.

Để sử dụng parser, ta dùng module optparse.

Để user có thể nhập interface và new MAC khi chạy file, ta thêm biến optionsargurments bằng parser.parse_args(). Biến options giờ đã chứa 2 giá trị là interface và new_mac. Để gọi 2 giá trị đó ra t dùng lệnh options.interface hoặc options.new_mac.

Chúng ta sẽ nhập interface và new MAC khi chạy file chương trình.

Oops, lỗi rồi. Lưu ý, bạn chỉ có thể đặt địa chỉ unicast octet đầu tiên là số chẵn mà thôi. Địa chỉ MAC mà mình đặt có 2 số đầu tiên là số lẻ, 99. Vì vậy nó sẽ xảy ra lỗi. Để giải quyết việc này, bạn chỉ cần thay đổi 2 số đầu tiên của địa chỉ MAC mới lại thành số chẵn thôi.

Nhưng đến đây, chúng ta lại có thêm vấn đề. Khi user nhập sai cú pháp hoặc lỗi lệnh hệ thống như vậy thì chương trình vẫn in ra câu lệnh print. Vậy làm thế nào để kiểm tra lỗi, và nếu có lỗi, thì làm sao chúng ta in ra được đó là lỗi gì?

Module optparse đã biết trước trường hợp này, nên nó cho phép chúng ta dùng lệnh if để kiểm tra có lỗi lệnh hệ thống hay không.

Chúng ta bỏ code optparse vào hàm get_arguments() và code subprocess vào hàm change_mac()

Hoàn thành bài đầu tiên của seri PyHack, anh em thấy thế nào? Các bạn vào group RatHuuIch để xem seri PyNight của mình và xem những thông tin mới nhất về seri PyHack này nhé.

Đánh giá post
Exit mobile version