0X00 安装OpenSSH
一般情况下我们的系统中都是自带SSH服务端和客户端的,万一没有的话就需要我们手动安装这个服务。
yum install -y openssh
然后重启OpenSSH服务
systemctl restart sshd
0X01 两行简单的配置
OpenSSH的配置文件在/etc/ssh/目录下,有两个配置文件,一个是针对服务端的一个是针对客户端的,我们只需要修改针对服务端的sshd_config即可。
配置文件里比较重要的两行是PermitRootLogin和PasswordAuthentication。
* PermitRootLogin 当这个值为yes时,才允许root用户使用ssh登陆
* PasswordAuthentication 当这个值为yes时,允许使用密码登陆,反之则拒绝密码登陆(只能使用密钥)。
这里的配置就允许使用root用户登陆,也允许输入密码登陆
0X02 私钥和公钥————非对称加密
在ssh中可以使用用户名密码的形式登陆,也可以使用密钥的形式登陆。
非对称加密 就是说加密和解密用的密码不同。非对称加密里有公钥 和私钥…
0X00 hello,world
从一本 _The C Programming Language_ 开始,我们就开始了几十年的'hello,world'之路。从那以后,机会所有的教程都从输出一句'hello,world'开始,这次也不例外。
这里的第一行是注释,这个注释是很特殊的,他会告诉系统我们使用哪个解释器来运行下面的代码,这里我们用的是/bin/bash,当然Python的代码就要加上#!/usr/bin/python。
第二行就是输出一句'hello,world'。echo就是输出语句。
运行脚本
执行之前要给脚本一个x权限,也就是执行权限。然后直接运行就行了。还有一种运行方式是/bin/bash test.sh 这样就是执行bash这个命令,将test.sh作为参数传进去,这样就可以不必写第一行的解释器声明。但是建议使用第一种方式执行脚本。
0X01 使用变量
既然是编程,那一定会有变量。Shell编程里的变量和C、Java不同,我们不需要声明一个变量就能直接赋值,想下面这样。
这里需要注意一点,我们在写一些代码的时候,可能习惯了像这样使用操作符str =…
0X00 创建一个类
Python也是一个和C++、Java一样的面向对象编程语言,所以Python里也有类和对象。
在类中创建的方法使用def关键字定义,每个方法有一个或以上的参数,selft就是实例化的对象自己。需要返回值就return一个,不需要就可以不写return
Python的类和Java的类还是有点区别,Java的类里主要写的是属性和方法,Python里不写属性,因为Java的变量需要定义而Python的变量并不需要定义,最多也就是在前面个各个属性一个变量名并赋初值
0X01 实例化一个对象
类是一个很抽象的概念,可以由类实例化好多个对象出来。Java中我们习惯说成 new一个对象,而Python中并不需要new
此段代码接着上面的类声明
0X02 Python的私有
Java和其他好多面向对象编程语言中会有一个private关键字,将属性和方法约束为私有的。然而Python并不能直接支持private,间接地支持也不是真正的private。在Python中的private由一种诡异的方式模拟,在方法前加上连续的两个下划线…
0X00 什么是字典
字典,顾名思义就是通过一个条件可以找到相应的值,字典由Key-Value组成。像是下面这样创建一个字典
字典中的数据是没有顺序的,不像列表一样有顺序,在字典中是没有固定顺序的
下文说的Key就是键, Value就是值
Key-Value 就是键值对,一个键对应着一个值
Key的值是可以随意改变的,但是Key的类型是固定的不能改变
如果为一个不存在的键赋值,那么会自动添加这个K-V
0X01 字典操作
len 测量长度
测量这个字典中有多少
d[k] 调用字典
根据已知的Key来查找Key所对应的Value
d[k] = v 字典赋值
为某个特定的Key赋值,如果这个Key在字典中不存在则创建这个Key
del d[k] 删除Key-Value
删除相应的Key和Value
k in d 成员检查
检查某字典中是否存在某Key,成员检查时用的是Key而不是Value
0X02 字典的递归
字典中是Key-Value,然而字典的Value是可以是字典的,也就是Key-Value的Value是字典,也就是递归。…
0X00 列表和元组
Python里有个东西叫做序列 ,可以想象成一堆数据。可以简单的通过序列实现数组、链表、栈和队列等数据结构。
序列有几种,常见的是列表和元组。
0X01 序列分片
我们可以从序列中截取一部分,这种操作被称为分片
分片的时候我们可以选择起始点和结束点,还能选择步长,甚至乃能倒序
分片使用:分隔开参数,一般情况下有两个参数,截取第一个参数到第二个参数,左开右闭
如果参数是负数的话,则表示倒数第几个
但是可以接受第三个参数,第三个参数表示步长。如果第二个参数是2那么就是接一跳一。
如果参数为空则表示极限。 具体可以看下面的代码
0X02 序列拼接
序列拼接就和Java里的字符串拼接差不多,可以单纯的用一个加号连在一起。当然Python比Java方便的一点就是,不只是字符串,什么东西只要是在序列里就能用序列拼接到一起。
Python中用加号的方式把序列拼接在一起是返回一个新的序列 而不是直接修改其中的一个序列。
序列不只能做加法,还能做乘法。序列乘n之后返回一个重复了n次的序列
0X03 空序列…
0X00 如何定义一个字符串
Python不需要定义 其实就是这样的。。在Python中的字符串通常这么写
str1 的声明方式是最普通的声明方式
str2 的声明方式可以在字符串中存在单引号‘
str3 的声明方式可以在字符串中存在双引号 “ 还能在字符串中换行
0X01 拼接字符串
注意:
连接的时候加号左右都要是字符串,如果是字符串加数字就不行了。除非把数字转成字符串格式
0X02 输入字符串
标准输入就是直接把你输入的东西写到代码里,甚至可以用变量名
原始输入就是直接输入字符串,纯字符串
具体情况可以从下面的Demo中看到效果
0X03 字符串格式化
学过C的能迅速的理解Python里的字符串格式化,没学过C的可以快速的理解Python里的字符串格式化 +_+
0X04 字符串处理函数
find 字符串查找
从一个字符串中查找另一个字符串,返回最左端索引,找不到就返回 -1
如果find函数返回了0,并不是没找到,而是在0的位置找到了。毕竟程序员的世界从来都是从0开始数数的
join 连接
连接序列中的元素
注意这里是 str.join(list) 而不是…
0X00 准备工作
1.一台海外或者香港的服务器/虚拟主机(后面统称VPS),要有独立IP
2.VPS的带宽和流量不能太小
3.一个连接VPS的软件,LInux/Mac可以用终端,Windows用户可以用XShell或者putty
4.VPS要使用Linux系统,Debian/Ubuntu/CentOS都行
开工之前最好有Linux适用基础
没有VPS的推荐一个购买地址,便宜好用banwagong
这个网站不是官网,但是起到了类似中文官网的作用,可以按照里面的推荐和教程去购买适合自己的VPS
VPS买回来不止可以干这个、配置高一点的话还可以搭建一个独立博客和一些其他的服务
0X01 简述工作原理
不通过伟大防火墙时 我们访问某网站,流量从我们的机器一路跑到网站服务器,然后服务器响应数据再一路跑回来。
现在 有了伟大的防火墙 不让我们和某些网站交流了,我们可以搭一个 梯子 ,让流量通过梯子。其实用 镜子 比喻会更好一点。
有了镜子 之后,我们的流量一路跑到镜子那里,镜子替我们将流量一路跑到网站服务器,然后网站服务器将数据一路发送到镜子,镜子再转发给我们。…
0X00 简介
最近经常要在代码中使用到BASE64编码和MD5,所以把笔记贴在这里方便自己查找。
在配置postfix邮件服务器的时候发现,收到的邮件正文都是使用BASE64编码过的,所以才了解了一下这种编码。
MD5不算加密算法,但是可以用作摘要计算。
0X01 BASE64编码
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。 维基百科
代码需要 import sun.misc.BASE64Encoder;
0X02 BASE64解码
代码需要import sun.misc.BASE64Decoder;
0X03 MD5…
0X00 NFS简介
NFS的全称是Net-File-System也就是网络文件系统。这和Samba与FTP不同,FTP的主要用途是用来上传和下载文件,Samba的主要功能是共享文件,而NFS的主要功能是用作文件系统。也就是说和NTFS、FAT32、EXT4等是类似的性质。我们可以将这个NFS当做一个磁盘分区挂载到自己的操作系统上,像操作自己的分区一样,甚至可以从NFS启动操作系统。
实验环境:两台虚拟机CentOS7.x
同处在一个内网环境下
0X01 安装NFS软件和服务
0X02 创建测试目录并修改权限
0X03 修改配置文件
配置文件是/etc/exports 使用文本编辑器打开配置文件并进行修改
/home/share/表示NFS的路径
192.168.123.132(rw, sync)表示192.168.123.132访问此NFS时使用后面的配置、具有rw权限(读写)、sync同步模式,表示内存中的数据实时写入磁盘
*(ro)表示所有IP访问时使用后面的配置、ro表示read only只读
每个路径下面可以接好多个访问项,就是192.168.123.132(rw,…
SWAP分区是Linux的交换分区。交换分区实际存在于磁盘中,不过Linux系统可以将它当作内存使用,当物理真实内存不足的时候交换分区就可以和真实内存进行数据交换。简单地说就是从磁盘里拿出一块空间当作内存的储备区。虽说磁盘被拿来当作内存使用,但是速度还是磁盘的速度。可以想象下面一种日常生活的场景:
当你工作的时候一定是把桌洞里的东西拿出来放到桌面上,并且手里拿着一部分东西在操作,然后桌面和桌洞里的东西在不断的交换你手里的东西和桌面上的东西也一直在交换。
可以这么想:你从桌洞里拿出来了一本《5年高考3年模拟——理综》放到桌面上,然后拿起笔开始刷题。后来你又从桌洞里拿出来了一本《5年高考3年模拟——数学》放到桌面上,准备两本一起写(就是这么屌),写一题理综写一题数学。再后来你又想同时写语文,但是你发现你的桌面上已经没有了那么大的空间,就只能把语文放到桌洞里,每次拿出来语文就要把数学或是理综放到桌洞中。…