当前位置: 首页 > news >正文

python捕获异常和scapy模块的利用

Python捕获异常

​ 当程序运行时,因为遇到未知的错误而导致中止运行,便会出现Traceback 消息,打印异常。异常即是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。一般情况下,在Python 无法正常处理程序时就会发生一个异常。异常是Python 对象,表示一个错误。当Python 脚本发生异常时我们需要响应处理它,否则程序会终止执行。

捕获异常

​ 如果一个语句发生了错误或异常,跳过该语句的执行,执行另外的语句

捕获异常使用关键字try except语句

try关键字使用来监控代码的

如果是try里面的代码出现异常就会被except关键字捕捉到并执行except里的语句

try:num=int(input())
except:print("请输入一个整数")num=int(input())

如果是用户输入的是字符串或者特殊字符那么就会报错异常被except捕捉到后就会打印让用户输入整数并且再次输入

异常的类型

except关键字是可以捕捉所有异常的

当然我们也可以控制捕捉的异常

下面是常见的异常

异常描述
SyntaxError语法错误
NameError未声明/初始化对象
IndexError序列中没有此索引
KeyboardInterrupt用户中断执行(Ctrl+C)
EOFError没有内建输入,到达EOF 标记(Ctrl+D) 不适用windows 系统
IOError输入/输出操作失败
ValueError当操作或函数接收到具有正确类型但值不适合的参数, 并且情况不能用更精确的异常,例如 IndexError来描述时将被引发。
TypeError字符串与整数相加时触发。

如果说我只想要捕获语法错误

try:num=int(input())
except SyntaxError:print("请输入一个整数")num=int(input())

想要捕获什么异常就可以在except后面加入就可以了

scapy模块

scapy 模块能够发送、捕获、分析和铸造网络数据包

Windows 下安装scapy
python -m pip install scapy

在这里插入图片描述

在Linux下安装
sudo apt install scapy

启动之后可能会需要安装pyX模块

pip install pyX  

可能会出现python虚拟环境报错

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

在这里插入图片描述
解决方法:
下载虚拟环境

apt install python3.11-venv

在这里插入图片描述

python3 -m venv tutorial-env

.创建一个虚拟环境中,决定在目录里你想要的 把它和运行的 venv 模块作为一个脚本用的目录路径
最后在执行

source tutorial-env/bin/activate

就可以成功安装了

方法简绍
发送数据包的函数说明
sr(pkt)发送数据包,接收所有返回包
sr1(pkt)发送数据包,接收一个返回包
send(pkt)发送数据包,不等待返回包
srp(pkt)发送2 层数据包,等待回应
pkt)发送数据包,不等待返回包
srp(pkt)发送2 层数据包,等待回应
sendp(pkt)发送2 层数据包,不等待返回包

案例探测网段内ip存活脚本

from scapy.all import *
from scapy.layers.inet import IP, TCP,ICMP
import logging
logging.getLogger("scapy.runtime") .setLevel(logging.ERROR)
attack_net = input("请输入目标网段或IP: ")
self_ip = input("请输入本机IP: ")
list_net=attack_net.split(".")
if  list_net[3]=='0/24' or list_net[3]=="*": #如果是0/24或*探测该网段下全部ipfor num in  range(1,255):i=str(num)attack_net=attack_net[0:attack_net.rfind(".")+1:1]attack_net=f"{attack_net}{num}"pkt = IP(dst=attack_net,src=self_ip)/ICMP()res=sr1(pkt,verbose=False, timeout=1)  #每个ip探测延迟1秒if res:print(f"[+]主机存活{attack_net}")print("[+]主机存活扫描完成")
elif list_net[3]!='':                 #如果不为空就只探测该主机pkt = IP(dst=attack_net, src=self_ip) / ICMP()res = sr1(pkt,verbose=False)if res and res.type==0:print(f"[+]主机存活{attack_net}")else:print("请输入正确的网段或IP")

成果如下
在这里插入图片描述

http://www.lryc.cn/news/214539.html

相关文章:

  • CSS+Javascript+Html日历控件
  • 让企业的数据用起来,数据中台=数据治理?
  • 【人工智能Ⅰ】5-粒子群算法
  • 软考高项-49个项目管理过程输入、输出和工具技术表
  • 《C和指针》(7)函数
  • vue3中的Props
  • ElasticSearch搜索技术深入与聚合查询实战
  • vue+element ui中的el-button自定义icon图标
  • PyQt5:构建目标检测算法GUI界面 (附python代码)
  • SV-10A-4G IP网络报警非可视终端 (4G版)
  • 对xml文本元素赋值
  • 【k8s】资源管理命令-陈述式
  • 无需频繁登录支付宝网站即可完成商家转账,实时到账,方便安全快捷
  • Vue 监听属性 watchEffect
  • 设计模式: 关于项目架构,技术选型,技术债务问题与解决方案
  • el-tabs 默认选中第一个
  • R -- match,pmatch,charmatch
  • 数据结构——线性表①(顺序表)
  • MFC网络编程-Udp客户端
  • 密码学基础
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • 拥抱AI-ChatGPT:人类新纪元
  • 基于深度学习的人脸表情识别 计算机竞赛
  • GitHub经常打不开或者访问解决办法
  • 密码学 - SHA-2
  • Vins-Fusion、Vins-Mono(之前那个编译通过但是没有这个好用)
  • 每日自动化提交git
  • 【Linux进程】再谈软件—操作系统(Operator System)
  • 创建超过1G内存大小的程序
  • 如何本地部署Jellyfin影音服务器并实现在公网访问