47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # FTP - File Transfer Protocol - RFC 959
 | |
| # Pattern attributes: great notsofast fast
 | |
| # Protocol groups: document_retrieval ietf_internet_standard
 | |
| # Wiki: http://protocolinfo.org/wiki/FTP
 | |
| # Copyright (C) 2008 Matthew Strait, Ethan Sommer; See ../LICENSE
 | |
| #
 | |
| # Usually runs on port 21.  Note that the data stream is on a dynamically
 | |
| # assigned port, which means that you will need the FTP connection 
 | |
| # tracking module in your kernel to usefully match FTP data transfers.
 | |
| # 
 | |
| # This pattern is well tested.
 | |
| #
 | |
| # Handles the first two things a server should say:
 | |
| #
 | |
| # First, the server says it's ready by sending "220".  Most servers say 
 | |
| # something after 220, even though they don't have to, and it usually 
 | |
| # includes the string "ftp" (l7-filter is case insensitive). This 
 | |
| # includes proftpd, vsftpd, wuftpd, warftpd, pureftpd, Bulletproof FTP 
 | |
| # Server, and whatever ftp.microsoft.com uses.  Almost all servers use only 
 | |
| # ASCII printable characters between the "220" and the "FTP", but non-English
 | |
| # ones might use others.
 | |
| # 
 | |
| # The next thing the server sends is a 331.  All the above servers also 
 | |
| # send something including "password" after this code.  By default, we 
 | |
| # do not match on this because it takes another packet and is more work 
 | |
| # for regexec.
 | |
| 
 | |
| ftp
 | |
| # by default, we allow only ASCII
 | |
| ^220[\x09-\x0d -~]*ftp
 | |
| 
 | |
| # This covers UTF-8 as well 
 | |
| #^220[\x09-\x0d -~\x80-\xfd]*ftp
 | |
| 
 | |
| # This allows any characters and is about 4x faster than either of the above 
 | |
| # (which are about the same as each other)
 | |
| #^220.*ftp
 | |
| 
 | |
| # This is much slower
 | |
| #^220[\x09-\x0d -~]*ftp|331[\x09-\x0d -~]*password
 | |
| 
 | |
| # This pattern is more precise, but takes longer to match. (3 packets vs. 1)
 | |
| #^220[\x09-\x0d -~]*\x0d\x0aUSER[\x09-\x0d -~]*\x0d\x0a331
 | |
| 
 | |
| # same as above, but slightly less precise and only takes 2 packets.
 | |
| #^220[\x09-\x0d -~]*\x0d\x0aUSER[\x09-\x0d -~]*\x0d\x0a
 |