Tôi có nhiều chương trình đang mở tại bất kỳ điểm nào trên máy tính của mình, nhiều chương trình kết nối với Internet mà tôi không hề nhận ra. Nếu tôi muốn biết chương trình nào trong số những chương trình này đang kết nối bên ngoài thế giới thông qua cổng 443, một HTTPS bảo mật mã hóa mọi thứ đến hoặc đi, tôi sẽ làm như thế nào?

NetStat là một dòng lệnh của Windows hiển thị các kết nối mạng đang hoạt động, các cổng mà máy tính cục bộ đang nghe, thống kê Ethernet, bảng định tuyến, v.v. Với công tắc -b chạy trong cửa sổ nhắc lệnh nâng cao, tôi có thể tìm thấy tệp thực thi có liên quan tạo từng kết nối và cổng lắng nghe của nó.

NetStat -b

Nhưng thật khó để lọc qua kết quả đầu ra để tìm ra chính xác những gì tôi đang tìm kiếm.

Get-NetTCPConnectionngười anh em họ PowerShell của NetStat, cũng nhận được các kết nối TCP hiện tại với các tùy chọn lọc bổ sung có sẵn ngay khi xuất hiện.

Để nhận danh sách các kết nối đã thiết lập tới cổng từ xa 443,

Get-NetTCPConnection -RemotePort 443 -State Established

Vấn đề duy nhất, nó không cho tôi biết chương trình nào đang sử dụng kết nối nào trong danh sách.

Chúng tôi sẽ cần một số trợ giúp từ lệnh ghép ngắn Nhận-Xử lý. Để hiển thị tên quá trình, hãy sử dụng phần sau.

(Get-Process -id $id).ProcessName

Nếu bạn cần đường dẫn đầy đủ về vị trí của tệp thực thi, hãy sử dụng đường dẫn này để thay thế.

(Get-Process -id $id).Path

Bây giờ kể từ Chọn-Đối tượng hỗ trợ các thuộc tính được tính toán một cách nhanh chóng, chúng tôi có thể xác định một biến tính toán thuộc tính từ ban đầu Sở hữu tài sản từ Get-NetTCPConnect cmdlet. Nhờ vào tiền boa từ PowerTips.

Tập hợp lại với nhau, tập lệnh sau liệt kê tất cả các chương trình kết nối với internet thông qua giao thức HTTPS.

$Process = @{
    Name="Process"
    Expression={
        # return process path
        (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName
        }
}
 
# get all connections to port 443 (HTTPS)
Get-NetTCPConnection -RemotePort 443 -State Established | 
  # and resolve IP and process ID
  Select-Object -Property $HostName, RemotePort, OwningProcess, $Process 

Nếu bạn muốn liệt kê tất cả các chương trình kết nối với internet bất kể chúng đi qua cổng nào, hãy xóa -RemotePort 443 ra khỏi Get-NetTCPConnection cmdlet.

Và nếu bạn muốn xem liệu bạn có chương trình nào sử dụng kết nối HTTP không an toàn hay không, hãy thay thế 443 bằng 80 trong lệnh. Bạn có thể nhận được thông báo lỗi cho biết không tìm thấy đối tượng MSFT_NetTCPConnection nào phù hợp được CIM tìm thấy, đây là một dấu hiệu tốt cho bạn biết rằng bạn không có bất kỳ chương trình nào sử dụng kết nối HTTP không an toàn.