python安全脚本开发简单思路

文章目录

为什么选择python作为安全脚本开发语言

  1. 易读性和易维护性:Python以其简洁的语法和清晰的代码结构著称,这使得它非常易于阅读和维护。在安全领域,代码的可读性和可维护性至关重要,因为它们有助于团队成员快速理解代码逻辑,减少错误,并快速响应安全事件。
  2. 丰富的库和框架:Python拥有一个庞大的生态系统和丰富的库,涵盖了网络编程、数据处理、加密解密、Web开发等多个领域。在安全领域,有许多专为安全测试、漏洞扫描、渗透测试等设计的库和框架,如Scapy(网络包处理)、Nmap的Python接口、OWASPZAP的API绑定等,极大地提高了开发效率和安全性。
  3. 跨平台支持:Python是一种跨平台的编程语言,可以在Windows、Linux、macOS等多种操作系统上运行,无需修改代码即可在不同平台上执行相同的任务。这对于需要处理多平台安全问题的场景特别有用。
  4. 动态性和灵活性:Python是一种动态类型语言,支持在运行时修改对象类型和结构,这使得它非常灵活,可以轻松地处理各种复杂的安全场景和异常情况。此外,Python的反射机制也允许程序在运行时检查或修改其自身结构,这在某些高级安全应用中非常有用。
  5. 社区支持:Python拥有庞大的开发者社区和丰富的在线资源,包括官方文档、教程、论坛、博客等。这意味着在开发过程中遇到的问题通常可以很快找到解决方案,而且有许多现成的工具和库可以直接使用。
  6. 学习曲线平缓:相对于其他编程语言,Python的学习曲线较为平缓,使得新手可以更快地入门并开始编写代码。这对于需要快速部署安全脚本或工具的场景特别有利。
  7. 强大的网络支持:Python提供了强大的网络编程支持,包括socket编程、HTTP请求处理等。这使得Python非常适合用于开发网络安全相关的脚本和工具,如网络扫描器、漏洞利用工具等。

如何编写人生第一个安全脚本开发

python的用武之地:

1.利用python完成安全脚本开发,提高工作效率。

2.利用-python进行自动化运维,日志分析等。

3.针对特定的服务器环境,用于开发安全测试工具。

4.使用python进行安全基线检查。

5.使用python进行资产收集、资产管理、信息收集。

举例子:写一个脚本来进行端口扫描(单线程,多线程,以及常见端口扫描)

python 复制代码
import threading
import socket
import time

#单线程
def socket_port(ip):
    for port in range(1,65535):
        try:
            s=socket.socket()
            s.settimeout(0.5)
            s.connect((ip,port))
            print(f"端口:{port}可用.")
            s.close()
        except ConnectionRefusedError:
            print(f"端口:{port}不可用.")
            #pass
        except socket.timeout:
            pass

#多线程
def socket_port_thread(ip,start):
    for port in range(start,start+50):
        try:
            s=socket.socket()
            s.settimeout(0.01)
            s.connect((ip,port))
            print(f"端口:{port}可用.")
            s.close()
        except:
            pass

#扫描常用端口,使得每次扫描完后停止三秒钟(防止ips/ids进行阈值监测)
def socket_port_normal(ip):
    list=[1, 7, 9, 11, 13, 17, 18, 19, 20, 21, 22, 23, 25, 33,
          42, 43, 53, 67, 68, 69, 80, 81, 82, 88, 110, 111, 113,
          119, 123, 135, 138,137,139, 143, 1433, 1521, 161,
          2049, 2181, 2222, 2601, 2604, 3306, 3389, 443, 4440,
          445, 5000, 50000, 5432, 5900, 5984, 6082, 6379, 7001,
          7002, 8000-9090, 8069, 8080, 8083, 8089, 8649, 873, 8888,
          9090, 9200, 9300, 10000, 11211, 27017, 27018, 3128, 3312, 3311
]
    for port in list:
        try:
            s=socket.socket()
            s.settimeout(0.01)
            s.connect((ip,port))
            print(f"端口:{port}可用.")
            s.close()
        except ConnectionRefusedError:
            print(f"端口:{port}不可用.")
            #pass
        except socket.timeout:
            pass
        time.sleep(3)

if __name__ == '__main__':

    #socket_port('127.0.0.1')

    # for i in range(1,1024,50):
    #     threading.Thread(target=socket_port_thread,args=('192.168.1.2',i)).start()

    socket_port_normal('192.168.1.2')

后续学习

当你进入内网后,有些情况可能不允许你上传一些工具,单数大多数服务器都支持python环境,这样你可以手搓一个tcp连接,或者手搓一个简易版的nmap进行内网扫描。事实上一些监测脚本的编写离不开一些网络底层的知识和python各种好用库的学习,所以该怎么学我想大家应该心里很清楚了吧。

相关推荐
Lucas555555553 分钟前
现代C++四十不惑:AI时代系统软件的基石与新征程
开发语言·c++·人工智能
源代码•宸4 分钟前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
世界唯一最大变量10 分钟前
利用自定义积分公式,目前可以求出所有1元方程和1元积分的近似值
python
若尘啊若辰13 分钟前
安全通用要求之六安全管理制度
安全·网络安全·等保·等级保护·安全通用要求
吃喝不愁霸王餐APP开发者20 分钟前
Java后端系统对接第三方外卖API时的幂等性设计与重试策略实践
java·开发语言
写代码的【黑咖啡】25 分钟前
深入理解 Python 中的模块(Module)
开发语言·python
wuk9981 小时前
matlab为地图进行四色着色
开发语言·matlab
_MyFavorite_1 小时前
cl报错+安装 Microsoft Visual C++ Build Tools
开发语言·c++·microsoft
charlie1145141911 小时前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++
zmzb01031 小时前
C++课后习题训练记录Day55
开发语言·c++