Python下的GUI:Thinter
Tkinter
是Python
的标准GUI
库。Python
使用Tkinter
可以快速的创建GUI
应用程序。
下面我们来通过一个简单的例子来用用它
#coding=utf-8
#Python3环境
import tkinter
def button():
print('被点了')
if __name__ == '__main__':
root = tkinter.Tk()
root.title('测试窗口')
root.geometry('300x250') #设置窗口大小(宽x高)
root.resizable(False,False) #禁止调整窗口大小(宽x高)
tkinter.Button(root,text='点我,点我',bg='#66ccff',command=button).pack()
#bg:按钮背景色
#command:按钮绑定事件
root.mainloop() #窗口循环事件
Slowhttptest慢攻击测试工具
Slowhttptest
是依赖HTTP
协议的慢速攻击DoS
攻击工具,设计的基本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并发将导致DoS
。
这次将对一台装有Lighttpd的测试服务器进行DoS攻击。
版本信息:
lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Jan 14 2017 21:07:19
安装这个工具:
sudo apt-get install slowhttptest
----------------------------------------------------
git仓库地址:https://github.com/shekyan/slowhttptest
用法与参数:
~# slowhttptest -h
-g 在测试完成后,以时间戳为名生成一个CVS和HTML文件的统计数据
-H SlowLoris模式
-B Slow POST模式
-R Range Header模式
-X Slow Read模式
-c number of connections 测试时建立的连接数
-d HTTP proxy host:port 为所有连接指定代理
-e HTTP proxy host:port 为探测连接指定代理
-i seconds 在slowrois和Slow POST模式中,指定发送数据间的间隔。
-l seconds 测试维持时间
-n seconds 在Slow Read模式下,指定每次操作的时间间隔。
-o file name 使用-g参数时,可以使用此参数指定输出文件名
-p seconds 指定等待时间来确认DoS攻击已经成功
-r connections per second 每秒连接个数
-s bytes 声明Content-Length header的值
-t HTTP verb 在请求时使用什么操作,默认GET
-u URL 指定目标url
-v level 日志等级(详细度)
-w bytes slow read模式中指定tcp窗口范围下限
-x bytes 在slowloris and Slow POST tests模式中,指定发送的最大数据长度
-y bytes slow read模式中指定tcp窗口范围上限
-z bytes 在每次的read()中,从buffer中读取数据量
攻击例子:
slowhttptest -c 1000 -H -g -o test -i 10 -r 200 -t GET -u http://your_domain/ -x 24 -p 3
(这条命令会在测试后留下一个名为test的html和csv文件,下面是html的内容)
服务器防范措施:
- 限制链接数
- 设置最大并发数
- 限制单位时间内的请求数
- 对于Nginx,可以使用 ModSecurity,http_guard,ngx_lua_waf
- 对于Apache,可以使用 mod_security,mod_evasive
安装Java8
适用于Ubuntu/Debian
1.添加源
deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
系统版本列表:
http://ppa.launchpad.net/webupd8team/java/ubuntu/dists/
2.导入GPG key到系统验证包的合法性
sudo apt-get install software-properties-common dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
3.更新索引与安装
sudo apt-get update && sudo apt-get install oracle-java8-installer
4.完成
java -version
5.设为默认java环境
sudo apt-get install oracle-java8-set-default
使用Powerline美化终端
天天对终端打字,难免视觉疲劳,不如来给终端来做些美化。
Powerline
是一个极棒的Vim
编辑器的状态行插件,这个插件是使用Python
开发的,主要用于显示状态行和提示信息,适用于很多软件,比如bash、zsh、tmux
等等。
1.由于Powerline
使用Python
,我们要先安装Python
环境
sudo apt install python python-pip
2.拉取与安装Powerline
pip install git+git://github.com/powerline/powerline
3.安装字体
Powerline
使用特殊的符号来为开发者显示特殊的箭头效果和符号内容。因此你的系统中必须要有符号字体或者补丁过的字体。
wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf
将字体复制到系统字体目录
sudo mv PowerlineSymbols.otf /usr/share/fonts/
更新字体缓存
sudo fc-cache -vf /usr/share/fonts/
安装字体配置文件
sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/
4.终端支持
sudo nano ~/.bashrc (or vim .bashrc)
写入:
export TERM="screen-256color"
. /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh
5.Vim支持
sudo vim ~/.vimrc
写入:
set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/
set laststatus=2
set t_Co=256
关于MySQL更新后无法连接数据库的问题
今天又迁移了一遍服务器,在配置MySQL出现了一些问题。
在配置好MySQL
后,打开站点,WordPress
出现了“Error establishing a database connection”
错误,这个错误在上次迁移也遇到过,于是不得不降级使用Debian8
,在查询了无数次资料后,找到了原因:
由于mysql 5.0
采用了一种新的密码验证机制,这需要客户端的版本要在4.0以上(PHP中的MYSQL客户端可以查看phpinfo得到),连接数据库时是用旧的密码机制,这会出现“Client does not support authentication protocol requested by server”
这样的错误提示。
解决办法是新建一个账户:
create user 'user'@'localhost' identified by 'passwd';
(MySQL环境下)
但又会遇到另一个错误:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
(您的密码不符合当前的策略要求)
还是密码验证机制的问题,输入以下命令解决:
set global validate_password_policy=0;
(MySQL环境下)
validate_password_policy的取值:
Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
(默认值为1)
修改后再新建用户,给予用户相关权限即可。
搭建Frp内网穿透服务
现在的服务器普遍偏贵,有没有更便宜的建站方法呢?答案是有的,只要在本地搭建服务器,使用Frp或Ngrok进行内网穿透就可以了,128MB内存的Vps就足够建站了,因为Frp或Ngrok内存需求不高,128MB足以部署内网穿透服务了。
下面以Ubuntu 18.04 Amd64 为例
1.下载与解压
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
tar -xvf frp_0.21.0_linux_amd64.tar.gz
cd frp_0.21.0_linux_amd64
对于服务端,我们只关心frps 和 frps.ini 文件。
2.配置与启动
sudo nano frps.ini (or sudo vi nano frps.ini)
------*-----*-----
#简单配置示例
[common]
bind_adddr = 0.0.0.0 #服务器地址
bind_port = 7000 #服务器端口
token = 123456 #服务器token,只有在客户端与服务器一致时,才允许客户端连接
dashboard_port = 2581 #Web页面端口
dashboard_user = admin #用户名
dashboard_pwd = passwd #密码
vhost_http_port = 80 #HTTP服务端口
vhost_https_port = 443 #HTTPS服务端口
log_file = ./frps.log #日志文件
------*-----*-----
3.运行与后台运行
./frps -c ./frps.ini
可以先测试测试
nohup ./frpc -c ./frpc.ini>nohup.out 2>&1 &
后台运行
4.客户端运行
下载客户端后解压,打开frpc.ini进行配置。
------*-----*-----
#简单配置示例
[common]
server_addr = x.x.x.x #服务器地址
server_port = 7000 #服务器端口
token = 123456 #token
[ssh] #TCP示例
type = tcp #类型
local_ip = 127.0.0.1 #本地IP
local_port = 22 #本地端口
remote_port = 6000 #远程端口
[http] #HTTP示例/HTTPS示例
type = http #http/https
local_port = 80 #80(http)/443(https)
custom_domains = www.yourdomain.com #域名,解析需指向服务器
#subdomain = test #或使用二级域名
[udp] #UDP示例
type = udp
local_ip = 127.0.0.1
local_port = 19312
remote_port = 6000
------*-----*-----
运行
./frpc -c ./frpc.ini
5.安全性
可以指定用户只能使用的端口(端口段),避免安全风险。
在frps.ini中配置:
allow_ports = 80,443,2000-3000,3001,3003,4000-50000
更多请查看Frp的Github文档!
today
长大了就能接受所有不可避免的分离。
2018.8.13 周一