• python新手灰帽脚本练习---简易端口扫描


    总体思路:

    调用了socket模块并用connect()函数链接了相应的IP和端口号,用send()函数发送数据并用recv()函数检查响应.

     1 # -*- coding:utf-8 -*-
     2 
     3 __author__='Dou—wei'
     4 
     5 import socket
     6 import sys
     7 
     8 
     9 def scanner(ip,port):                                                    
    10     try:
    11         s = socket.socket()                                                 #创建socket
    12         print "[-] Attempting to connect to " + ip + ":" + str(port)        
    13         s.connect((ip,port))                                                #连接指定地址
    14         s.send('try')                                                       
    15         banner = s.recv(1024)                                               #获取返回信息
    16         if banner:                                                          #判断返回是否为空
    17             print "[+] Port " + str(port) + " open: 
    " + banner
    18         s.close()
    19     except Exception,e:
    20         print e
    21 
    22 def main():
    23     ip = sys.argv[1]
    24     port = int(sys.argv[2])
    25     scanner(ip,port)
    26 
    27 if __name__=='__main__':
    28     main()
    View Code

    效果如图:

    也可以自行添加列表,通过遍历实现批量扫描:

     1 # -*- coding:utf-8 -*-
     2 
     3 __author__='Dou—wei'
     4 
     5 import socket
     6 import sys
     7 
     8 
     9 def scanner(hosts,ports):
    10     for host in hosts:
    11         for port in ports:                                                    
    12             try:
    13                 s = socket.socket()                                                 #创建socket
    14                 print "[-] Attempting to connect to " + host + ":" + str(port)        
    15                 s.connect((host,port))                                                #连接指定地址
    16                 s.send('try')                                                       
    17                 banner = s.recv(1024)                                               #获取返回信息
    18                 if banner:                                                          #判断返回是否为空
    19                     print "[+] Port " + str(port) + " open: 
    " + banner
    20                 s.close()
    21             except Exception,e:
    22                 print e
    23 
    24 def main():
    25     hosts = ['127.0.0.1','192.168.1.1']
    26     ports = [21,22,25,80,3389,8080]
    27     scanner(hosts,ports)
    28 
    29 if __name__=='__main__':
    30     main()
    View Code

    效果如图:

  • 相关阅读:
    PHP双向队列
    [转]数据库查询的3个优化方法
    MySQL性能测试工具 mysqlslap
    PHP各种魔术方法测试
    VBA中级班课时3小结
    VBA中级班课时1小结
    执行cmd并返回程序结果
    Update Dataset data back to Database
    终于会用c#中的delegate(委托)和event(事件)了
    c#: Enqueued event for Queue<T>
  • 原文地址:https://www.cnblogs.com/ScriptKid-Lu/p/9558719.html
Copyright © 2020-2023  润新知