python 端口扫描器

Author Avatar
Geroge Lee 3月 29, 2017
  • 在其它设备中阅读本文章

0x00 端口扫描

端口扫描是指客户端向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。端口扫描的主要用途仍然只是确认远程机器某个服务的可用性。 扫描多个主机以获取特定的某个端口被称为端口清扫(Portsweep),以此获取特定的服务。例如,基于SQL服务的计算机蠕虫就会清扫大量主机的同一端口以在 1433 端口上建立TCP连接。 <!--more-->

0x01 端口扫描脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#-*- coding:utf_8 -*-
import urllib
import socket
ip='要扫描的ip'
default_ports=[80,21,22,3389,1433]
#写上要扫描的端口
def port_scan(ip,port):
try:
socket.setdefaulttimeout(3)
s=socket.socket()
s.connect((ip,port))
print '[+] port:%d\t open \t%s'%(port,socket.getservbyport(port))
s.close()#关闭套接字
except:
pass
if __name__ == '__main__':
for port in default_ports:
port_scan(ip,port)

结果[+]port:80 open http ...

oxo2 端口扫描脚本2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import urllib
import socket
ip='222.22.90.160'
default_ports=[80,21,22,3389,1433]
def port_scan(ip,port):
try:
socket.setdefaulttimeout(3)
s=socket.socket()
s.connect((ip,port))
s.send('aaa\r\n')
res=s.recv(40)
print '[+] port:%d\t open \t%s'%(port,res)
s.close()
except:
pass
if __name__ == '__main__':
map(port_scan,[ip]*len(default_ports),default_ports)

结果[+] port:22 open SSH-2.0-openSSH_6.6.1 ...

ps:nmap常用命令

nmap -sP -PI -PT 192.168.1.0/24 -oN metscan.txt 扫描网段内所有ip

nmap -sT 192.168.1.2 扫描主机开放了哪些端口

nmap -sS 192.168.1.2 隐藏扫描,只在目标主机上留下很少的日志信息

nmap -O -Pn 192.168.1.2 识别系统

nmap -sT -Pn 192.168.1.2 TCP扫描

namp -sS -p 80,135,3380,3389 192.168.1.2 端口扫描