2.awd初阶_脚本扫描

1.python知识

随便过一遍python前置知识

import requests
# url="https://cn.bing.com/search?q=baidu1&form=ANSPH1&refig=6735b4ceb83048cd9c774ca99db2a002&pc=U531"
# try:                                            #1.get访问的时候要有http头
#     print(requests.get(url).status_code)        #5.返回状态码         .status_code
#     print(requests.get("https://cn.bing.com/search?q=baidu1&form=ANSPH1&refig=6735b4ceb83048cd9c774ca99db2a002&pc=U531"))
#                                                 #4.会输出状态码,说明网站正常访问
#     requests.get("https://yanxiao.comkjhgfd")   #2.访问不到网址就报错,停止程序
# except:
#     pass                                        #3.访问不到就过
#
# for i in range(1,100):
#     print(i)


#正式开始写代码
#比如大家在一个网段:192.168.6.X       X为0-255  #6.    .format代表前面的变量
url="http://192.168.6.129:"
for i in range(1,11):
    url_new=url+"{}".format(i)
    print(url_new)
'''
http://192.168.6.129:1
http://192.168.6.129:2
http://192.168.6.129:3
http://192.168.6.129:4
http://192.168.6.129:5
http://192.168.6.129:6
http://192.168.6.129:7
http://192.168.6.129:8
http://192.168.6.129:9
http://192.168.6.129:10
'''

2.脚本扫描存活主机(get)

import requests  
from concurrent.futures import ThreadPoolExecutor  
import re  
  
f = open("host.txt", "w")  
  
  
def get_ip(url):  
    resp = requests.get(url)  
    status = resp.status_code  
    if status == 200:  
        f.write(url + "\n")  
        print(url)  
  
  
url = []  
for i in range(1, 255):  
    url.append("http://192-168-1-" + str(i) + ".pvp5422.bugku.cn")    #拼接网段的字符串
with ThreadPoolExecutor(max_workers=100) as executor:  
    executor.map(get_ip, url)  
  
"""  
http://192-168-1-93.pvp5422.bugku.cn  
http://192-168-1-173.pvp5422.bugku.cn  
"""

导入模块

import requests  
from concurrent.futures import ThreadPoolExecutor  
import re  
  • requests: 用于发送HTTP请求。
  • ThreadPoolExecutor: 用于并发执行任务,这里用来同时处理多个HTTP请求,提高效率。
  • re: 正则表达式模块,在这个脚本中没有用到。

文件操作

f = open("host.txt", "w")
  • 打开或创建名为host.txt的文件,准备写入数据。

定义函数

def get_ip(url):  
    resp = requests.get(url)  
    status = resp.status_code  
    if status == 200:  
        f.write(url + "\n")  
        print(url)
  • get_ip(url): 这个函数接受一个URL作为参数,使用requests.get()方法向该URL发送GET请求。
  • resp = requests.get(url): 发送请求并获取响应对象。
  • status = resp.status_code: 获取HTTP响应的状态码。
  • 如果状态码为200(表示请求成功),则将URL写入host.txt文件,并打印该URL。

构建URL列表

url = []  
for i in range(1, 255):  
    url.append("http://192-168-1-" + str(i) + ".pvp5422.bugku.cn")    #拼接网段的字符串
  • 创建一个空列表url
  • 使用for循环遍历1到254之间的数字,构建每个可能的IP地址,并将其添加到url列表中。

并发执行

with ThreadPoolExecutor(max_workers=100) as executor:  
    executor.map(get_ip, url)
  • 使用ThreadPoolExecutor创建一个线程池,最大工作线程数设为100。
  • 使用executor.map()方法将get_ip函数应用到url列表中的每个元素上,实现并发执行。

注释

"""
http://192-168-1-93.pvp5422.bugku.cn  
http://192-168-1-173.pvp5422.bugku.cn  
"""
  • 这些注释展示了两个示例URL,可能是之前运行脚本时发现的可访问主机。

注意事项

  • 安全性: 在实际使用中,扫描网络可能会被认为是恶意行为,特别是在没有得到授权的情况下。确保您有权限对目标网络进行此类操作。
  • 性能: 并发请求数量设置为100,这可能会对网络和服务器造成较大压力。根据实际情况调整max_workers的值。
  • 异常处理: 当前代码没有处理请求过程中可能出现的异常,例如网络错误或超时。建议增加适当的异常处理机制,以提高代码的健壮性。
posted @   yan_xiao  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示