Khi phân tích lỗ hổng hệ thống, một việc quan trọng là phát hiện các cuộc tấn công dò mật khẩu (brute-force) dựa trên nhật ký (log) đăng nhập. Cho N, T và một danh sách M dòng log theo thứ tự thời gian không giảm, mỗi dòng gồm: thời điểm ts (giây, số nguyên), địa chỉ ip, tên đăng nhập user, và kết quả result (FAIL hoặc OK).
Với mỗi cặp (ip, user), duy trì một cửa sổ trượt các lần đăng nhập thất bại: mỗi khi có một lần FAIL mới tại thời điểm ts, thêm ts vào cửa sổ, sau đó loại khỏi cửa sổ mọi thời điểm cũ hơn quá T giây so với ts hiện tại (tức ts - t_cu > T). Khi có một lần OK, cửa sổ của cặp (ip, user) đó được đặt lại về rỗng.
Ngay khi số phần tử trong cửa sổ đạt tới N (lần đầu tiên kể từ lần OK gần nhất, hoặc từ đầu log), hệ thống phát ra một cảnh báo duy nhất tại thời điểm đó cho cặp (ip, user) này (không cảnh báo lặp lại cho các lần FAIL tiếp theo trong cùng chuỗi, cho tới khi có OK reset và một chuỗi mới lại đạt ngưỡng).
Ví dụ: N=2,T=5; log: (0,FAIL) (5,FAIL) → tại t=5: cửa sổ ={0,5} vì 5−0=5≤T, đạt N=2 → cảnh báo tại t=5.
ts ip user result cách nhau bởi khoảng trắng; ts là số nguyên không giảm dần theo các dòng, ip và user là chuỗi không chứa khoảng trắng, result là FAIL hoặc OK.In ra tất cả các cảnh báo theo đúng thứ tự thời gian phát sinh, mỗi cảnh báo một dòng theo định dạng ALERT <ts> <ip> <user>. Nếu không có cảnh báo nào, in ra NONE.
Ví dụ: với ví dụ trên → output:
ALERT 5 9.9.9.9 x
(giả sử ip=9.9.9.9, user=x).
Ví dụ:
Đầu vào:
2 5
3
0 1.1.1.1 bob FAIL
10 1.1.1.1 bob FAIL
11 1.1.1.1 bob FAIL
Đầu ra:
ALERT 11 1.1.1.1 bob
Đầu vào:
3 60
6
100 1.2.3.4 admin FAIL
110 1.2.3.4 admin FAIL
115 1.2.3.4 admin FAIL
120 1.2.3.4 admin OK
200 5.6.7.8 root FAIL
260 5.6.7.8 root FAIL
Đầu ra:
ALERT 115 1.2.3.4 admin
Đang tải editor...