当前位置:网站首页>安全作业7.22
安全作业7.22
2022-07-23 10:13:00 【F75559】
linux文本三剑客
sed课堂总结
-p -n同时使用:=相应的匹配显示出来
-g :全局替换
-e:多次替换
“1,2p"=1-2行
”2s/b“=第二行
”2d“=删除第二行
“3c 12\n4”=替换第三行的内容,换成 12 (换行) 4
awk变量
效率比shell高十倍 内置的脚本
awk -v Fs=":”
‘{print $1,$3}'/etc/password
$1:第一列
$NF:文件列的末尾
awk -F=‘{print ARGC}’ /etc/password
可以写成ARGC【0】 ARGC【1】
这是打印出来的参数
两种方式书写
awk -F= {print $1}’ /etc/password
awk -v Fs=":” {print $1}’ /etc/password
%s:显示字符串
%u:无符号整数
%20s:表示20个字符串的格子,保证文本的书写好看(不够的空格补齐)
df -h (查看磁盘使用情况)
df -h | awk ’ /^\ /dev/ ’ =找dev开头的 ^ ( ^的转义)
df -h | awk ’ /^\ /dev/ ’ ‘{print $(NF-1}’=找dev开头的倒数第二列
awk 可以支持while 循环
awk -F=‘{i=1;while(i<=NF }
{ if
(length $i)>=6 {print $i,length( $i)};
i++}’ /etc/password
i的范围从1到列的结尾,当i>=6时候,打印i的长度,while一直循环
去重 awk
awk ’ ! arr[ $0]++’ demo
$0 放在数组arr里取反,又进行自增
原理:0取反 从假的变真的,自增
举例:文本 aa bb aa 123 123
去重后:aa bb 123
过程 :arr数组需要有值,aa无值(现在为空值)。0为假,取反后为1,aa存上了。
++往后走,bb也为空值,0为假,取反后为1,bb存上了。
++往后走,aa之前有值了 为1,取反为0,这个aa取不上值,++往后走。
123无值(现在为空值)。0为假,取反后为1,123存上了。
++往后走,123之前有值了 为1,取反为0,这个aa取不上值,
++往后走,没有了结束。
统计日志
查看日志格式:ls-al
cat access_log | awk ‘{print $1}’ | sort | uniq -c | sort -nr
打印最近访问的IP uniq -c 去重 sort -nr 从大到小排序
$4=时间 $5=访问的网址
平台被入侵 进行日志分析溯源
查看TCP状态也很重要
某个IP在某个时间段内多次的访问的。有很多注入语句。打印了这个网址的参数。
注意:月份!要么把数字换成字母,要么把字母换数字。时间一定要统一。
python 总结
包是文件夹,包里的模块是文件名
if__name__ ==“__name __”
1.当作包引用,这条if语句不执行。name=具体包名字
2.当入口文件执行时候,这条if语句执行。name=main
用类调用 用对象调用
python 定义类用class
比如 class Student (object)
默认object,要是有父类,就填父类
构造函数 init(self):
类实列化的一瞬间,构造函数就运行了
构造函数赋予属性(可以干什么。重量大学尺寸长相颜色 哪个班 可以区分不同人)=类定义不同对象
不要轻易显示调用,会变成普通函数
arr=Array1() 进行实例化
a=arr.init()进行构造函数
print(a)
print(type(a))
显示调用构造函数没有返回值,没有return ,默认返回None
data=‘rang02’
size=2
def__init__(self,data,size):实列化把属性传给对象,要在对象里保存
self.data=data
self.size=size这两个self是保存属性的
print(self.data)
print(self.size)
sum是自己带的函数,print(sum)打印的是自己的函数
定义类方法 装饰器
1.classmethod 用def class_arr(cls)
可以自由调用类的属性
2.staticmethod 静态方法 def static.func1()
脱离类和对象,自己单独一个
self.class.sum_total
实例化可以操作类变量,对象中可以调用类的属性,最好用类方法调用类变量
python没有这三个修饰符(php java有)
protected:被子类调用 提供get set接口
private:私有,只给get set这俩接口修改。调用方法getsize
public
python有__(俩下划线)=私有属性
原本 Array. 访问私有变量 _Array6__price
添加了_和类名
dict 可赋值可访问(错)
其实不是赋值和访问,是重新创建的
子类传父类:直接调用父类方法 init(self, )
调用父类构造函数 super( ).init(a,b)
用super关键字
闭包了,把此时的环境变量状态记录了ab自己的属性
js闭包:不能引用if循环变量
python闭包:定义函数+环境变量(在函数外部)
def demo1();
a=3 环境变量
def demo2(x):
return a *x
return demo2
a=10(全局变量。上面闭包,不生效)
d=demo1() -----(其实等于demo)
print(d.closure)
print(d.closure[0].cell_contents)
cell_contents:环境变量的值
closure:停闭
全局变量可以记录上一次的状态global total
列表生成式
[ i for i in range(1,20)]
[i * i for i in range(1,20)]
生成器generator(惰性) :将列表[ ]改成()。每次调用next,next(g)==计算出g的下一个值。
也经常用for循环
ll=[i * i for i in range(10)]
for i in ll:
print(i)
输出 0,1,4,9
迭代器和可迭代对象
被for循环的数据都为可迭代对象
可以被next调用,都为迭代器
1.字符串‘ ’
2.list
3.tuple(元组)
4.dict(字典)a={‘name’:‘ G’}= a={‘key’:‘ value’}
5.set(去重) a=set([0,1,2,3])里面要放数组
把可迭代对象变为迭代器用itre next
函数编程
list(rang 100) 生成1-99
map可以接受一个函数做为参数 ll=map(lambda x:x*x,list(rang 100) )
lambda :传入的参数值
reduce:上一次的结算结果作为下一次的参数值。比如1+2+3+…100用reduce
filter过滤函数:把if值取出了
strip()可以把空去掉
eval.
$_POST [‘1’]
1=aaa
输出:aaa
$_POST[’1’] ( $_POST[‘2’])
name=1 value=eval
$_POST[’1’]换成eval,会利用失败
eval不能被可变函数调用,是php自带函数
eval(只能字符串)
assert(只能表达式或者函数)
边栏推荐
猜你喜欢
随机推荐
[untitled]
深度学习单图三维人脸重建
Typora图床配置详细教程
The accuracy of digital addition
Vision and intelligent learning recent journal reading and related knowledge learning
Live classroom system 03 model class and entity
pytorch opencv pil图像预处理比较
Linked list review!
Subsequence --- edit distance
Matlab simulation of Turbo code error rate performance
基于simulink的双闭环矢量控制的电压型PWM整流器仿真
基于matlab的BOC调制解调的同步性能仿真,输出跟踪曲线以及不同超前滞后码距下的鉴别曲线
【启发式分治】启发式合并的逆思想
直播课堂系统03-model类及实体
Educational Codeforces Round 132 (Rated for Div. 2) D. Rorororobot
Cmake notes
初识C语言函数
Kettle implémente une connexion de base de données partagée et insère une instance de composant de mise à jour
OpenCV计算外包矩形
【无标题】测试【无标题】测试






![[untitled] test [untitled] test](/img/9d/c80dd9a1df2cd6cbbfc597d73a63b2.png)


