Mục lục:
- Bước 1: Chúng ta bắt đầu như thế nào?
- Bước 2: Bắt đầu
- Bước 3: Tạo kết nối
- Bước 4: Cho phép gửi một số nội dung
- Bước 5: Cho phép có một kết nối mở
- Bước 6: Kết luận
Video: Netcat bằng Python: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Netcat là gì? Trang hướng dẫn sử dụng cho netcat cho biết như sau: "tiện ích nc (hoặc netcat) được sử dụng cho mọi thứ liên quan đến ổ cắm miền TCP, UDP hoặc UNIX. Nó có thể mở kết nối TCP, gửi gói UDP, nghe tùy ý Cổng TCP và UDP, thực hiện quét cổng và xử lý cả IPv4 và IPv6. Không giống như telnet (1), các tập lệnh nc độc đáo và phân tách các thông báo lỗi thành lỗi tiêu chuẩn thay vì gửi chúng đến đầu ra tiêu chuẩn, như telnet (1) đã làm với một số"
Về bản chất, netcat cho phép bạn kết nối với các máy chủ khác bằng giao thức TCP hoặc UDP. TCP là viết tắt của Transmission Control Protocol, và là định hướng kết nối. UDP là viết tắt của Universal Datagram Protocol, và không có kết nối. TCP thường được sử dụng cho các ứng dụng internet, trong khi UDP được sử dụng cho phát trực tuyến phương tiện hoặc VPN.
Bước 1: Chúng ta bắt đầu như thế nào?
Trên đây là cách gọi của netcat. Bạn có thể thấy rằng có hai đối số ở cuối được gọi là "đích" và "cổng". Đích đề cập đến tên máy chủ hoặc địa chỉ ip của máy chủ mà chúng tôi đang cố gắng kết nối, trong khi cổng đề cập đến cổng của máy chủ mà chúng tôi đang cố gắng kết nối.
Bước 2: Bắt đầu
Trên đây là một số mã python bắt đầu. Như bạn có thể thấy, chúng tôi muốn xử lý các đối số cho chương trình tương tự như cách tiện ích thực sự làm. Tên máy chủ sẽ là đối số đầu tiên sau tên của tệp thực thi, trong khi cổng sẽ là đối số thứ hai sau tên của tệp thực thi trong dòng lệnh.
Bước 3: Tạo kết nối
Hãy tạo một hàm netcat mà chúng ta có thể sử dụng. Về cơ bản những gì chúng ta đang làm ở đây là tạo một ổ cắm và kết nối với máy chủ bằng cách sử dụng các thông số đã cho. Đối với lệnh netcat, các tham số hiện tại là tên máy chủ và cổng của máy chủ mà chúng tôi đang cố gắng kết nối. Ổ cắm chứa các tham số "socket. AF_INET" và "socket. SOCK_STREAM" vì chúng tôi đang đặt mặc định là kết nối TCP cho hướng dẫn này.
Bước 4: Cho phép gửi một số nội dung
Chúng tôi đã mở rộng hàm netcat của mình để nhận tham số thứ ba, "nội dung". Có rất nhiều nội dung ở đây vì vậy hãy chia nhỏ nó theo số dòng.
Dòng 14-16: chúng tôi gửi tất cả nội dung qua socket, chúng tôi đợi một chút và sau đó chúng tôi đóng socket đối với bất kỳ dữ liệu gửi đi nào để socket biết rằng không còn dữ liệu nào đến.
Dòng 18-26: chúng tôi tạo bộ đệm để lưu trữ phản hồi của máy chủ và trong khi ổ cắm đang nhận dữ liệu, chúng tôi nối tối đa 1024 byte dữ liệu vào kết quả miễn là có dữ liệu để đọc.
Dòng 28-29: chúng tôi muốn kết nối netcat này là kết nối một lần, vì vậy chúng tôi khai báo kết nối đóng và sau đó đóng kết nối.
Dòng 31: Đây là một yêu cầu HTTP tiêu chuẩn. Nếu bạn chạy mã với các đối số dòng lệnh "google.com" và "80", thì bạn sẽ thấy phản hồi HTTP thích hợp
Bước 5: Cho phép có một kết nối mở
Đoạn mã trên (nằm bên dưới mã từ phần trước) chỉ đơn giản là cho phép chúng ta chạy nhiều lệnh netcat qua một kết nối giả mở. (Trong thực tế, mỗi khi bạn chạy một lệnh, nó sẽ mở và sau đó đóng một kết nối TCP mới, vì vậy nó không thực sự mô phỏng hành vi của netcat, chúng tôi chỉ đơn giản làm điều này cho mục đích học tập). Cũng hãy chia nhỏ điều này theo từng dòng:
Dòng 31: Chúng tôi muốn đọc lệnh vô thời hạn để duy trì "tính tương tác"
Dòng 32: Đây là bộ đệm của chúng tôi sẽ lưu trữ nội dung yêu cầu của chúng tôi
Dòng 36-45: Chúng tôi sẽ đọc vào bộ đệm cho đến khi chúng tôi đọc một dòng trống
Dòng 48: chúng tôi chỉ cần gọi hàm netcat của mình bằng tên máy chủ, cổng và nội dung mới được tạo (được mã hóa đúng cách)
Dòng 50: nếu nội dung bộ đệm của chúng tôi từng chứa "Kết nối: Đóng" (cho biết chúng tôi muốn đóng kết nối), chúng tôi chỉ cần thoát ra khỏi vòng lặp
Bước 6: Kết luận
Ở phần cuối của hướng dẫn này, bạn sẽ có một triển khai netcat hoạt động tối thiểu. Tôi sẽ để nó như một bài tập cho người dùng để triển khai các tính năng như:
1. hỗ trợ các giao thức khác
2. sửa mã để không đóng kết nối mỗi lần
3. thêm cờ mà netcat đã có để sửa đổi hành vi
Đề xuất:
Giám sát tăng tốc bằng Raspberry Pi và AIS328DQTR bằng Python: 6 bước
Theo dõi gia tốc bằng Raspberry Pi và AIS328DQTR Sử dụng Python: Gia tốc là hữu hạn, tôi nghĩ theo một số định luật Vật lý. - Terry Riley Một con báo gêpa sử dụng khả năng tăng tốc đáng kinh ngạc và thay đổi tốc độ nhanh chóng khi đuổi theo. Sinh vật tốc độ nhất thỉnh thoảng lên bờ sử dụng tốc độ cao nhất của mình để bắt con mồi. Các
Máy tạo sương mù bằng đá khô Ultimate - Điều khiển bằng Bluetooth, chạy bằng pin và in 3D.: 22 bước (có hình ảnh)
Máy làm đá khô Ultimate - Điều khiển bằng Bluetooth, chạy bằng pin và in 3D. Gần đây, tôi cần một máy làm đá khô cho một số hiệu ứng sân khấu cho một buổi biểu diễn địa phương. Ngân sách của chúng tôi sẽ không kéo dài đến việc thuê một người chuyên nghiệp nên thay vào đó, đây là những gì tôi đã xây dựng. Nó chủ yếu được in 3D, được điều khiển từ xa qua bluetooth, pin sạc
Hệ thống chấm công bằng cách gửi dữ liệu RFID đến máy chủ MySQL bằng Python với Arduino: 6 bước
Hệ thống chấm công bằng cách gửi dữ liệu RFID đến máy chủ MySQL bằng Python với Arduino: Trong Dự án này, tôi đã giao tiếp RFID-RC522 với arduino và sau đó tôi gửi dữ liệu của RFID đến cơ sở dữ liệu phpmyadmin. Không giống như các dự án trước đây của chúng tôi, chúng tôi không sử dụng bất kỳ lá chắn ethernet nào trong trường hợp này, ở đây chúng tôi chỉ đọc dữ liệu nối tiếp đến từ ar
Cách lập trình bảng AVR bằng bảng Arduino: 6 bước
Làm thế nào để lập trình một bảng AVR bằng cách sử dụng một bảng Arduino: Bạn có một bảng vi điều khiển AVR được đặt xung quanh không? Nó có phức tạp để lập trình nó không? Tốt bạn đang ở đúng nơi. Ở đây, tôi sẽ chỉ cho bạn cách lập trình một bo mạch vi điều khiển Atmega8a bằng cách sử dụng một bo mạch Arduino Uno với tư cách là một lập trình viên. Vì vậy, không có lông
Netcat Fun!: 5 bước
Netcat Fun !: Tài liệu hướng dẫn này chỉ cho bạn cách tạo một cửa sau trên máy tính với netcat! Tôi sẽ chỉ cho bạn hai cách để thực hiện việc này, có và không có tệp loạt của tôi để tự động hóa nó cho bạn. Chỉ dẫn này đã giả định rằng bạn đã có quyền root