Lót
Tôi đã kết hợp một lớp lót đẹp, nhanh chóng phục vụ mục đích, cho phép lấy một số cổng tùy ý trong một phạm vi tùy ý (ở đây được chia thành 4 dòng để dễ đọc):
comm -23 \
<(seq "$FROM" "$TO") \
<(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep '[0-9]\{1,5\}' | sort -n | uniq) \
| shuf | head -n "$HOWMANY"
Từng dòng
comm
là một tiện ích so sánh các dòng được sắp xếp trong hai tệp. Nó xuất ra ba cột: các dòng chỉ xuất hiện trong tệp đầu tiên, các dòng chỉ xuất hiện trong cột thứ hai và các dòng chung. Bằng cách chỉ định -23
chúng tôi triệt tiêu các cột sau và chỉ giữ cột đầu tiên. Chúng ta có thể sử dụng điều này để có được sự khác biệt của hai bộ, được biểu thị dưới dạng một chuỗi các dòng văn bản. Tôi đã học về comm
đây .
Tệp đầu tiên là phạm vi cổng mà chúng ta có thể chọn. seq
tạo ra một chuỗi các số được sắp xếp từ $FROM
đến $TO
. Kết quả được dẫn đến comm
là tệp đầu tiên sử dụng thay thế quá trình .
Tệp thứ hai là danh sách các cổng được sắp xếp mà chúng ta có được bằng cách gọi ss
lệnh (với -t
nghĩa là các cổng TCP, -a
nghĩa là tất cả - được thiết lập và lắng nghe - và -n
số - không cố gắng giải quyết, nói, 22
thành ssh
). Sau đó chúng tôi chỉ chọn cột thứ tư với awk
, chứa địa chỉ và cổng cục bộ. Chúng tôi sử dụng cut
để phân tách địa chỉ và cổng với :
dấu phân cách và chỉ giữ lại cái sau ( -f2
). ss
cũng đưa ra một tiêu đề, mà chúng ta loại bỏ bằng grep
ping cho các chuỗi số không trống không dài hơn 5. Sau đó, chúng tôi tuân thủ comm
yêu cầu của bằng cách nhập sort
số ( -n
) và loại bỏ trùng lặp với uniq
.
Bây giờ chúng ta có một danh sách sắp xếp các cổng mở, mà chúng ta có thể shuf
chạy đến sau đó lấy các cổng đầu tiên "$HOWMANY"
với head -n
.
Thí dụ
Lấy ba cổng mở ngẫu nhiên trong phạm vi riêng tư (49152-65535)
comm -23 <(seq 49152 65535) <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep "[0-9]\{1,5\}" | sort | uniq) | shuf | head -n 3
có thể trở lại ví dụ
54930
57937
51399
Ghi chú
- chuyển
-t
với -u
trong ss
để có được cổng UDP miễn phí thay thế.
- thả
shuf
nếu bạn không quan tâm đến việc lấy một cổng ngẫu nhiên