python扫描-ftp匿名登陆

参考书籍:《Foundations of Python Network Programming 2nd》Page294


案例一,下载user.txt

在hackthebox中,用python代码下载位于10.10.10.152的ftp端口上的user.txt文件。

1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ascii download
import os
from ftplib import FTP

if os.path.exists('user.txt'):
	raise IOError('refusing to overwrite your user.txt')

def writeline(data):
	fd.write(data)
	fd.write(os.linesep)

f = FTP('10.10.10.152') #远程IP
f.login()              
f.cwd('/Users/Public') #切换远程系统上的工作目录

fd = open('user.txt', 'w')
f.retrlines('RETR user.txt', writeline) #开始传输
fd.close()
f.quit()

案例二,扫描开放21端口的主机。

通过这个脚本,我们获得了40个主机的端口扫描结果。

接下来,用python自动连接开放21端口的主机。

grep ‘21/tcp’ */nmap-result > test/result 2

将ip写入ip.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#if anonymous can login 
from ftplib import FTP,error_perm
 
def try_login(IP):
	f=FTP(IP)
	try:
		f.login()
		print "Current working directory:", f.pwd()
		f.quit()
	except error_perm:
		print 'error'	
		return #ignore non-directories and ones we cannot enter
f = open("ip.txt",'r')
all_ip = f.read().splitlines()
print all_ip
for i in all_ip:
	print i
	try_login(i)
	print '-----------'

3


修改下try的代码段,列出ip.txt中,可以匿名登陆的ip。

1
2
3
4
5
6
7
8
9
10
		f.login()
		print "Current working directory:", f.pwd()
		
		entries = []
		f.dir(entries.append)
		print "%d entries:" % len(entries)

		for entry in entries:
			print entry
		f.quit()

4