python 学习系列--任务2

通过Python的网络连接开发一个基础的端口扫描器
思路:使用socket重复连接ip与端口的组合新值

0x01 知识补充 for循环

for port in range(100,120):
  print"[+]port:"+str(port)

执行结果:
在这里插入图片描述
0x02 建立一个socket连接

import socket  #导入socket模块
s=socket.socket()
s.connect(('127.0.0.1',80))#指定IP与端口,这随便用一个

调用了connect函数,它会建立一个TCP连接(SYN/SYN-ACK/ACK),要注意代码的缩进问题。

执行结果:

在这里插入图片描述

0x03 使用"try/except"循环来处理错误

try:
 s.connect(('127.0.0.1', 80))
except: pass

执行结果:
在这里插入图片描述0x04 扫描多个指定端口

import socket
s = socket.socket() 
ports = [22, 445, 80, 443, 3389]
for port in ports:
   try:
    print "[+] Attempting to connect to 192.168.220.1:"+str(port)
    s.connect(('192.168.220.1', port))
    s.send('zhimakaimen\n')    
    ban = s.recv(1024)
    if ban:
      print "[+] Port "+str(port)+" open: "+ban
    s.close()
   except: pass

使用数组来存储端口,然后遍历这一个数组,然后使用"if"条件语句打印出可以连接成功的端口。写代码的时候要注意特别注意格式问题,语法错误比较扎心,这里给出的执行结果和代码的有一点不一样,只是端口不同而已,无大碍。

执行结果:
在这里插入图片描述

0x05 扫描多个主机,多个端口


import socket
s = socket.socket() 
ports = [22, 445, 80, 443, 3389]
hosts = ['127.0.0.1', '192.168.220.1', '10.0.0.1']
for host in hosts:
 for port in ports:
   try:
    print "[+] Connecting to "+host+":"+str(port)
    s.connect((host, port))
    s.send('zhimakaimen \n')    
    ban = s.recv(1024)
    if ban:
      print "[+] Port "+str(port)+" open: "+ban
    s.close()
   except: pass

使用for循环嵌套,外层为主机ip,内层为端口。

执行结果:
在这里插入图片描述
最后,需要了解更多socket内容可以使用dir(socket)和和help(),这里用dir(socket)。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值