[CyberSecurity]Python基础入门与技能提高

Posted IT鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CyberSecurity]Python基础入门与技能提高相关的知识,希望对你有一定的参考价值。

CSDN成就一亿技术人才!

目录:

前言:

不管在渗透测试中,还是CTF中,人工智能等领域,Python自从1991年诞生以来,
作为一种使用简单的工具语言,以及渗透进了我们的生活中,本文主要以黑客的视角
讲解Python,简单的总结Python语言在CTF竞赛中的重点使用。
本文主要讲解Python语法及其重点应用,关于Python安装等文章请移步其他文章。

本文参考:BIT-NSC北京理工大学信息安全实验室/网络安全俱乐部CTF竞赛

1.Python-pip换源介绍

pip是python自带的包管理器Package Management,它从一个仓库下载,默认仓库由于在国外,我们将其换成国内(清华镜像源)可以提高我们下载并安装包的速度,pip换源(使用以下命令)

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2.基本语法介绍

2.1Python注释

#用#字符作为单行注释
"""" 跨行、多行注释内容
     aaaaa
     bbbbb
""""

2.2Python数据类型

整数int(无限精度)
二进制0b100101
十六进制0xFFFFFFF0
八进制Oo777711
浮点数float (更高精度,decimal模版)
复数complex
数值运算:math.sin()
按位运算:~ | ^ & << >> 与C语言相同 注意:Python中无 ++ –
bin(),hex()转化为2进制/16进制字符串
int(x)将x转为一个整数,float(x)是将x转化为浮点数

2.3逻辑

布尔值:True False注意大写 (Standard by C++)
布尔运算: or and not ,返回True False
C语言表示方法:
or ||
and &&
not !
比较运算: 和C一样,以及is和is not(in和not in)用于判断对象(Object),返回True False
#大小比较
1<2<3 # => True
2<3<2 # => False

2.4二进制数据和文本字符串

Python中字符串就是字符串,数值就是数值。
字符串str(‘xxxxxx’or"xxxxxxx",\\n\\r’‘等转义),用加号连接字符串
#用加号连接字符串
“Hello”+“world”!# ==>“Hello world!”
#字符串可以被当作字符列表
“This is a string”[0] # => ‘T’
#用.format来格式化字符串
“ can be ”.fomat(“strings”,“interpolated”)
#如果不想要数参数,能用关键字
“namewants to eatfood”.format(name=“Bob”,food=“lasagna”) #=>“Bob
wants to eat lasagna”
#原始字符
r’aaa\\\\\\\\\\naa’
bytes(b’\\0x1\\0x21\\xffasdsa’)
布局讲解:
内存单元:
1Byte= \\x00
\\x00 \\FF \\xAA 1B
暂且不考虑大端序与小端序,除了在ASCII码表里的符号数字,我们还需要表示其他种类的文字
例如中文,我们不能用这种方式来表示字符,我们需要一种编码,例如GTK编码,GB2312编码
我们将,字节串译码成为字符串。

2.5变量

#在给变量赋值的时候不需要提前声明,也不需要加类型名称。
#传统变量名使用小写,用下划线分隔单词。
some_var =5
例如程序字符太长写不下了,用以下方法表示
some_var:int = 110000000000000000011111111111\\
          + 100000000000
#用列表(list) 储存序列
li = []
other_li = [4,5,6]
#使用append在列表最后追加元素
li.append(1) #li=[1]
li.append(2) #li=[1,2]
li.append(4) #li=[1,2,4]
li.append(3) #li现在是[1,2,4,3]
#列表存取数组
li[0] # =>1
#取出最后一个元素
li[-1]# =>3
#倒数第二个元素
li[-2]
#越界访问会造成IndexError
li[4]
#列表有切片语法(左闭右开区间)
li[1:3] # => [2,4]
#取尾
li[2:] #=> [4,3]
#取头
li[:3] #=>[1,2,4]
#隔一个取一个
li[::2] #=>[1,4]
#倒数列表
li[::-1] # => [3,4,2,1]
#可以用三个参数的任何组合构建slice
#li[始:终:步伐]
#用del删除任何一个元素
del li[2] #li is now [1,2,3]
#列表可以想加
li + other_li # => [1,2,3,4,5,6]
#用in测试列表是否包含值
1 in li #=>True
#用len取列表长度
len(li) #=> 6
#元组(一种特殊的列表List)不可变的
tup =(1,2,3)
tup[0] #=>1
tup[0] = 3 #抛出异常
#列表允许操作元组大都可以
len(tup)#=>3
tup+ (4,5,6) #=> (1,2,3,4,5,6)
tup[:2] # =>(1,2)
2 in tup #=>True
#元组列表可以解包,赋值给变量,周围的括号可以省略
a,b,c=(1,2,3)
d,e,f=4,5,6
e,d=d,e
#用字典的方式映射关系
empty_dict = 
#初始化字典
filled_dict = "one":1,"two":2,"three":3
#用[]取值
filled_dict["one"] #=>1
>>> somedict =1:2,2:3
>>> somedict[1]
2
>>> somedict[2]
3

2.6流程控制

没有花括号,用缩进控制语块。

somevar = 1
if somevar == 1:
   xxx
elif somevar > 1:
   yyy
else:
   zzz
#while
x = 0
while x<4:
      print(x)
      x += 1 
#for
for animal in ["dog","cat","mouse"]
    print("is a animal".format(animal))
""""
for i in range(4):
    print(i)
""""
for i in range(0,10,3):
    print(i)

2.7函数

#用def定义函数
def add(x,y):
    print("x is  and y is ".format(x,y))
    return x + y #用return语句返回
#调用函数
add(5,6) #=>print out “x is 5 and y is 6"并返回11
#用关键字
add(y=6,x=5)

2.8变量作用域

x = 5 
def setX(num):
   #局部作用域的x和全局域的x是不同的
   x = num #=> 43
   print(x) # => 43
def setGlobalx(num):
   global x
   print (x)
   x = num
   print(x)

setx(43)
setGloabalx(6)

2.9模块

#用import导入模块
import math
print(math.sqrt(16)) # => 4.0
#也可以从模块中导入个别值
from math import ceil,floor
#类似C++的 using math::ceil;
print(ceil(3.7))
print(floor(3.7))
from math import *
#缩写模块名字
import math as m
math.sqrt(16) == m.sqrt(16)
import math
dir(math)

3.0输入输出

print("hello world")
a = input()
b =input("input something...")
print(a)
print(b)
print(b,end=',')
#各种格式化字符串
>>>print("%d"% 12)
12

3.1文件操作

#文件读取
#读文本文件
f = open("filepath",'r')
#读取全部,注意文件不能太大
f.read()
#关闭文件
f.close()
#由于每次这样反复操作太麻烦,Python引入了with语句自动完成close()操作
with open('filepath','r') as f:
#读一行
f.readline()
#一次读取所有内容并按行返回list
f.readlines()
#如果需要读取UTF-8编码的文字,需要给open()函数传入encoding参数。
f=open('filepath_gdk','r',encoding='gbk')
#读取二进制文件,把'r'改成'rb'
f = open("filepath",'rb')
f.read()
#b '\\xff\\d8\\xff\\xe1\\x00\\x18Exds\\x00\\x00'
#写文件,与读文件类似,
with open('filepath','w')as f:
     f.write('Hello world!')

3.2Python内存模型

传值和传引用,可变和不可变化对象
Python中所有的变量名字都可以认为是对象
不可变类型:变量赋值a=5后再赋值a=10
在内存中先分配一个5的空间,然后再分配一个10的空间,我们可以认为将a指向了10这就是不可变类型
可变化类型:变量赋值la=[1,2,3,4]后再赋值la[2]=5

以上是关于[CyberSecurity]Python基础入门与技能提高的主要内容,如果未能解决你的问题,请参考以下文章

Global Cybersecurity Market (2018-2023)

VulnHub渗透测试实战靶场 - NULLY CYBERSECURITY: 1

REANA-自动驾驶功能安全开发工具-功能安全ISO26262预期功能安全(SOTIF)ISO21448网络信息安全(Cybersecurity)ISO21434

如何零基础入门 Python?

Python零基础入门学习

Python爬虫入门:爬虫基础了解