我的一些常用的工具函数(持续更新)
之前写的一些有意思的函数,因为每次自己再敲一遍又很麻烦,故写好了可以直接复制就可以用了
1.跑跑弱口令字典之前一个课上用的,字典是从github上找的:https://github.com/fuzz-security/SuperWordlist
1234567flag = Falsewith open("MidPwds.txt", "r",encoding='utf-8') as f: for line in f.readlines(): line = line.strip('\n') if line == pwd: flag = True break
2.发邮件函数自己封装了个发邮件函数,写一些自动化任务可能会用到
需要的参数:
邮箱
邮箱TOKEN
需要用到的库:
smtplib
email.mime.text
email.utils
1234567891011121314151617181920#需要用到的库import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr# text 是你需要发送的内容,email 是邮箱,可以传入一个或者一堆def email(text,email): my_sender = '你的邮箱' my_pass = "邮箱TOKEN" msg=MIMEText(text,'plain','utf-8') msg['Subject']=& ...
一些常用的git命令
记录一些git的用法,怕之后的我给忘了(虽然已经忘记几次了)
1.克隆仓库克隆之前,先新建一个文件夹,进入后右键打开git bash,初始化git
1git init #初始化仓库
然后就可以直接克隆仓库辣
1git clone URL 克隆仓库
之后可以直接pull下来,获取最新版本
1git pull 本地与服务器端同步
2.上传在上传到服务器之前,需要先提交到本地仓库
1git commit -am "init" 提交并且加注释
然后就可以推到远程服务器辣
1git push origin master 将文件给推到服务器上
3.其他其他一些可能会用到的命令
123git status 查看当前状态git log 看你commit的日志
网络破防实践先导实验二————ROP攻击
1.前言终于在熬过了第一个实验之后,来到了老师所说的,比第一个简单一点的实验。然而,事实证明,老师在画大饼: (。第二次实验直接让我们利用二进制漏洞对程序进行攻击,拿到Flag。这有多难呢,这次上课在讲解实验的时候,就有好多人退课了,你没听错,上着上着课就退课了他们。不过抛开难度不谈,这次实验确实很有趣,不仅有种打游戏收集成就的感觉,还学到炒鸡多东西(没错,比上一个实验学到太多太多东西了),所以我很快啊,啪的一下就来写博客记录了。
2.实验概览这次实验的主题是二进制漏洞,课上,Aidai学长给我们讲解和演示了如何利用二进制漏洞进行ROP。关于ROP:
ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓 gadgets 就是以 ret 结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。之所以称之为 ROP,是因为核心在于利用了指令集中的 ret 指令,改变了指令流的执行顺序。ROP 攻击一般得满足如下条件
程序存在溢出,并且可以控制返回地址。
可以找到满足条件的 gadgets 以及相应 gadgets 的地址。
如果 gadgets 每次的地址是不固定的,那我们就需要想办法动态获取对应的地址了。
学长主要介绍了**ret2text **和 **ret2libc **两种类型的攻击手段。这次我们攻击的目标是一个Reperter程序。
3.实验介绍0)基础介绍在开始讲实验操作之前,先讲点基础知识:
Pwntools
pwntools是一个CTF框架和漏洞利用开发库
用Python开发,旨在让使用者简单快速的编写exploit。
文档:https://docs.pwntool ...
网络破防实践先导实验一————数组越界检测心得
1.前言网络攻防实践先导,听着名字很高大上吧,正如它的名字那般,它的难度也是非常的大: (。作为一门今年新开的课,属于四门先导课程之一(剩下三门分别是软件工程先导、人工智能先导和忘了叫啥先导)。在上学期选课的时候,110人的课,选了139人,可见其火爆程度,也许是网络和攻防这两个要素吸引人,所以这门课的第一个实验——数组越界的检测,与上述两点看起来似乎没有丝毫关系,但是难度还极大,这就造成了,很多人退课(毕竟才0.5学分)。截止至2022年4月1日02点54分,139的课现在还剩39人…….我捏,有幸忝列其中。这足以看出这门课有多难了吧,接下来我给大家分享一下我写这门课的一些心得与体会吧(主要是写给自己看的,要是有不认识我的人看到了这篇博客,算你厉害🤔)
2.实验介绍实验的要求很简单,编写一个文件checker.cpp,要求实现数组越界的检测。以下是原话:
本次实验自拟了一种类似C语言数组的语法,称为easy C,其仅包含简单的变量声明,算术表达式和数组操作,文件后缀为.ec。本次实验的目的是使用c++语言编写一个检测程序,检测输入的.ec文件中数组使用的索引值是否超过数组定义的最大长度。
看起来,似乎很简单,巴特,然并不。
3.实验分析由于使用了自定义的easyc语法,所以逻辑上和我们平时的c语言有些许不同,但是还好,easyc简化很多东西,使其变得和Python语法那般简洁。在easyc中,程序执行被分为两部分:变量赋值VarDef(保存在VarDefList) 和 数组引用ArrayUse(保存在ArrayUseList),执行顺序上,先执行完所有变量赋值后,再进行数组引用。我们的任务就是,遍历这两个部分,遍历其中的和数组越界有关的表达式,并判断其是否越界。在存储结构中,变量的定义和数组的引用大量的用到了树结构,如下图:
上图中VarDefList元素从0开 ...
用ssh连接服务器和使用pycharm把代码同步上服务器的方法
1.SSH连接服务器首先需要安装一个远程连接客户端(我用的是Final shell,用别的也行)
然后在软件里新建一个连接
这里,主机名是服务器的公网IP,端口默认22,底下,使用密码登录,
连接成功后就可以操作服务器了
2.用pycharm把代码同步上服务器(需要pycharm专业版)首先打开pycharm专业版(社区版没有这个功能好像),打开项目,左上角选择File–settings
新增一个SFTP连接,然后点右边的SSH configuration的三个点,新增SSH连接
账号密码同之前SSH远程登录时的账号密码
然后重点来了,接下来这几步不能错,不然可能会把文件覆盖掉
首先在Root path中,选择你想要的根目录,之后在Web server URL处填入你的远程服务器地址。
然后选择上方Mappings栏
本地路径设置,这里就设置你本地的Django项目的路径(就是manage.py的路径)
配置完成后,点击OK,接下来就是从服务器下载和上传代码
在pycharm项目的首页,文件树那里,右键,往下滑选择Deployment,里面的下载和上载就是同步操作
可以通过这个把代码同步上去。上传大概需要几分钟左右即可
基于uwsgi+nginx+centos的Django项目部署经历
1.起因寒假之前,我滴帅部长召哥给我们布置寒假作业:要求我们每个人把上个学期写的电商项目给部署到远程服务器上面。然后他也没告诉我们具体怎么去部署。我就自己在网上找教程,跌跌撞撞摸索出了部署的流程。
2.选择服务器要把Django部署上远程服务器,首先得有一台远程服务器。之前寄导课做实验,给了我们每个人华为云两百大洋的代金券,我才用了几块钱,本来想买华为云的,但是召哥推荐我们买良心云(腾讯云)和套路云(阿里云),然后我就用学生优惠花40大洋买了一年的腾讯云2H2G+40G的轻量应用服务器,性能对我来说还是够用的。
镜像我装了centos,至于为什么没用宝塔,主要使我想体验一下比较纯正的服务器体验。
3.配置环境我配置服务器主要参考腾讯云服务器部署 django项目整个流程 - lvye001 - 博客园 (cnblogs.com)这篇文章,剩下的细节和问题都是在网上不停搜索解决的。
1)安装Python3.9.5在安装python之前,先升级一下包管理工具,在安装一下可能用到的依赖。
123yum update -yyum -y groupinstall "Development tools"yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
然后再进入/usr/local路径下,
1cd /usr/local
下载Python3.9.5到/usr/local目录
1wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
下载有亿点点慢,耐心等等或者也可以在自己的电脑上下载好,在上传到服务器上。下载完毕,解压安装
12 ...
基于proteus的可视化设计(6)——一些自己写的程序介绍
这篇文章来介绍一下我自己写的一些程序,仅供参考,同时附上网盘链接,感兴趣可以下载看看
链接:https://pan.baidu.com/s/17sitBKqXfq3YgIHTPdrTBg提取码:uc6i
1.简易数字电压表要求:采用Arduino UNO板,外接1个电位器和4个BCD码输入的带有译码器的LED数码管,4位数码管显示电压测量值。
原理图设计
流程图设计
SETUP流程图设计
LOOP流程图
仿真验证
2.简易篮球计分器要求
采用 Arduino UNO 板,外接 6 个按键和 1 个 4 位 LED 数 码管,4 位数码管显示篮球比赛得分情况。 在原理图设计中,在元件中添加 2 个元件:1 个 GROVE 中的 TM1637 控制的 4 位数码管显示器元件(GROVE4DIGIT), 和按键(BUTTON)。 假如,A 队和 B 队进行篮球比赛,数码显示器显示比赛 得分情况,扩展 6 个按键,它们分别定义为:A 队+1 分、A 队+2 分、A 队+3 分、B 队+1 分、B 队+2 分、B 队+3 分。实现 按篮球比赛规则手动计分功能。
原理图设计
流程图设计
SETUP流程图
仿真验证
3.多功能万年历要求
采用 Arduino UNO 板,外接 1 个 LCD1602 显示屏、1 个 GROVE 串行口模块、1 个 DS1307 实时时钟模块和 1 个热电阻 测温模块,实现万年历和环境温度显示。
原理图设计
流程图设计
SETUP流程图
LOOP流程图
仿真验证
4.简易四向红绿灯控制要求
设计四向红绿灯:绿灯15秒,黄灯5秒,红灯20秒。
原理图设计
流程图设计
SETUP流程图
LOOP流程图
仿真验证
5.简易温度控制器要求
使用 Grove 中 4 位一体 LED 数码管,并对其进行改造为 2 个 2 位蓝 ...
基于proteus的可视化设计(5)——传感器
上一篇文章介绍了电机的一些用法,这次来介绍——传感器。
传感器(sensor)
传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。
通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。
1.距离传感器
模块介绍:
1、本模块性能稳定,测度距离精确。模块高精度,盲区(2cm)。 2 、主要技术参数:
使用电压:DC5V
静态电流:小于2mA
电平输出:高5V
电平输出:低0V
感应角度:不大于15度
探测距离:2cm-450cm
高精度:可达0.3cm
TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。
3、URF04模块工作原理: (1)采用IO触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间. 测试距离=(高电平时间*声速(340M/S))/2;
本产品使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。 ...
基于proteus的可视化设计(4)——电机控制
在上一篇文章中,我介绍了显示屏的一些用法,今天给大家介绍proteus可视化设计中,电机的一些用法
1.直流电机(1).直流电机简介直流电机有有刷电机和无刷电机两种,两者不同之处在于结构和原理不同,且两者各有优劣。
直流电机的一些特点:
1、调速性能好,调速范围广,易于平滑控制
2、起动、制动转矩大,易于快速起动、停车
3、易于控制
4、通过调整直流电压可以实现电机的调速
5、改变供电电压极性可以实现改变电机旋转方向
(2).proteus提供的模块介绍proteus可视化设计中,提供了许多的电机模块
介绍一个直流电机驱动模块——L298双路直流电机驱动器
关于L298双路直流电机驱动器:
L298是一个集成的单片电路,它有两种封装。它是一个高压,高电流双全桥驱动器设计到接受标准化TTL逻辑电平和驱动感应负载,例如:继电器,螺线管,直流电机。有以下特点:
双H全桥驱动;
电源工作电压最高达46V;
总输出直流电流高达4A;
过热的保护。
这里介绍这个模块:Arduino Motor Shield (R3) with DC Motors
电机模块方法:
1.run:电机旋转,参数dir设定方向,speed:设定速度(0~255)
2.stop:电机停止。
3.release:电机释放(自由、不受控)
一个例程参考
2.舵机控制舵机采用脉冲宽度控制舵机旋转角度
可视化设计中,在Grove中,有舵机模块,如下图:
方法:
1.read:读舵机的转动角度
2.write:写舵机的转动角度(0~180°)
(0180°)对应舵机转动(-90°+90°)。
3.readMicrosconds:读舵机控制的脉冲宽度(微秒)
4.writeMicrosconds:写舵机控制的脉冲宽度(微秒)
(10002000)对应舵机转动(-90 ...
用pyinstaller在64位电脑上打包32位exe
hello大家好,这里是LMark。今天给别人写程序的时候,用pyinstaller打包成exe,但是对方是32位Win7,而我的是64位,所以用pyinstaller打包出来的exe文件运行不了,后来去网上找了些资料,解决了这个问题。
1.安装32位的python下载python去官网,可以找到全版本。python的版本没有什么要求,只要是32位的。附官网传送门:Python Releases for Windows | Python.org。这里我演示下的是3.4.4,因为3.4.4还支持XP。
下载并安装,安装完之后记得将python添加到环境变量中(如果电脑上已经有了64位python,建议给32位python改个名字,防止冲突)
2.安装pywin32打包成32位exe程序需要pywin32这个包,所以我们先安装一下,这里先去下载一下Pywin32
找到适合的版本(这里以python3.4为例),貌似下载需要科学上网。
下载好后直接双击运行,按照默认值,一直下一步即可。
3.更新pip、whell、setuptools和安装future、pefile在cmd命令行中依次输入:
12345pip install pip==19.1.1pip install wheel==0.33.6pip install setuptools==42.0.2pip install future==0.18.2pip install pefile==2017.8.1
4.安装pyinstaller这里我安装的是3.4版本的pyinstaller(python3.4可以选择3.4或3.5版本的pyinstaller)
1pip install pyinstaller==3.4
安装完成后,在命令行中输入以下命令,显示以下内容表示安装成功
1pyinstaller -v












