-
-
Save EdisonJwa/5d113d795bda8a3e8b2826c69b31d0ab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html ⚡> | |
<head> | |
<meta charset="utf-8"> | |
<link rel="canonical" href="https://www.wevg.org/archives/pair-locking-your-iphone/" > | |
<title>利用 Pair Locking 保证 iOS 设备数据安全 - Vigorous Pro</title> | |
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> | |
<meta property="og:title" content="利用 Pair Locking 保证 iOS 设备数据安全"> | |
<meta property="og:type" content="article"> | |
<meta property="og:url" content="https://www.wevg.org/archives/pair-locking-your-iphone/"> | |
<meta property="og:image" content="http://121.128.211.224:4000/source/pair-locking/AppleConfigurator.png"> | |
<meta property="og:site_name" content="Vigorous Pro"> | |
<meta property="og:description" content="<p>通过配置Pair Locking,保护隐私,防止执法人员对您的设备进行取证。"> | |
<meta name="twitter:card" content="summary_large_image" /> | |
<meta name="twitter:site" content="Vigorous Pro"> | |
<meta name="twitter:url" content="https://www.wevg.org/archives/pair-locking-your-iphone/"> | |
<meta name="twitter:title" content="利用 Pair Locking 保证 iOS 设备数据安全 - Vigorous Pro"> | |
<meta name="twitter:description" content="<p>通过配置Pair Locking,保护隐私,防止执法人员对您的设备进行取证。"> | |
<meta name="twitter:image" content="http://121.128.211.224:4000/source/pair-locking/AppleConfigurator.png"> | |
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style> | |
<noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript> | |
<script async custom-element="amp-sidebar" src="https://cdn.ampproject.org/v0/amp-sidebar-0.1.js"></script> | |
<!-- | |
<script async custom-element="amp-social-share" src="https://cdn.ampproject.org/v0/amp-social-share-0.1.js"></script> | |
--> | |
<script async src="https://cdn.ampproject.org/v0.js"></script> | |
<script type="application/ld+json"> | |
{ | |
"@context": "http://schema.org", | |
"@type": "BlogPosting", | |
"headline": "利用 Pair Locking 保证 iOS 设备数据安全", | |
"description": "<p>通过配置Pair Locking,保护隐私,防止执法人员对您的设备进行取证。", | |
"mainEntityOfPage":{ | |
"@type":"WebPage", | |
"@id":"https://www.wevg.org/archives/pair-locking-your-iphone/" | |
}, | |
"datePublished": "2019-10-12T10:48:16.000Z", | |
"dateModified": "2019-10-12T10:58:00.000Z", | |
"image": { | |
"@type": "ImageObject", | |
"url": "http://121.128.211.224:4000/source/pair-locking/AppleConfigurator.png", | |
"width" : "1177", | |
"height" : "955" | |
}, | |
"author": { | |
"@type": "Person", | |
"name": "Edison Jwa" | |
}, | |
"publisher": { | |
"@type": "Organization", | |
"name": "Vigorous Pro" | |
, | |
"logo": { | |
"@type": "ImageObject", | |
"url": "https://www.wevg.org/amp-dist/sample/sample-logo.png", | |
"width": 600, | |
"height": 60 | |
} | |
} | |
} | |
</script> | |
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> | |
<style amp-custom> | |
abbr, | |
acronym, | |
address, | |
applet, | |
big, | |
blockquote, | |
body, | |
caption, | |
cite, | |
code, | |
dd, | |
del, | |
dfn, | |
div, | |
dl, | |
dt, | |
em, | |
fieldset, | |
form, | |
h1, | |
h2, | |
h3, | |
h4, | |
h5, | |
h6, | |
html, | |
iframe, | |
img, | |
ins, | |
kbd, | |
label, | |
legend, | |
li, | |
object, | |
ol, | |
p, | |
pre, | |
q, | |
s, | |
samp, | |
small, | |
span, | |
strike, | |
strong, | |
sub, | |
sup, | |
table, | |
tbody, | |
td, | |
tfoot, | |
th, | |
thead, | |
tr, | |
tt, | |
ul, | |
var { | |
border: 0; | |
font-family: inherit; | |
font-size: 1rem; | |
font-style: inherit; | |
font-weight: inherit; | |
margin: 0; | |
outline: 0; | |
padding: 0; | |
vertical-align: baseline; | |
} | |
abbr { | |
cursor: help; | |
border-bottom: 1px dotted; | |
font-variant: normal; | |
} | |
acronym { | |
border-bottom: 1px dotted; | |
font-variant: normal; | |
} | |
body { | |
-moz-osx-font-smoothing: grayscale; | |
-webkit-font-smoothing: antialiased; | |
-webkit-text-size-adjust: 100%; | |
background: #fff; | |
color: #2d3d40; | |
font-family: sans-serif; | |
font-size: 1rem; | |
font-weight: 500; | |
line-height: 2rem; | |
text-rendering: optimizelegibility; | |
} | |
button::-moz-focus-inner, | |
input::-moz-focus-inner, | |
figure.highlight td, | |
.post .entry-content figure.highlight th { | |
border: 0; | |
padding: 0; | |
} | |
caption, | |
table, | |
td, | |
th { | |
vertical-align: middle; | |
} | |
caption, | |
td, | |
th, | |
.table-align-left { | |
text-align: left; | |
} | |
del { | |
text-decoration: line-through; | |
} | |
html { | |
font-size: 14px; | |
} | |
:root sub, | |
:root sup { | |
vertical-align: baseline; | |
} | |
table { | |
border-collapse: separate; | |
border-spacing: 0; | |
} | |
a { | |
color: #e91e63; | |
text-decoration: none; | |
-webkit-transition: 0.7s; | |
-ms-transition: 0.7s; | |
-moz-transition: 0.7s; | |
-o-transition: 0.7s; | |
-webkit-transition: 0.7s; | |
-moz-transition: 0.7s; | |
-o-transition: 0.7s; | |
-ms-transition: 0.7s; | |
transition: 0.7s; | |
border: 0; | |
font-family: inherit; | |
font-size: 1rem; | |
font-style: inherit; | |
font-weight: inherit; | |
margin: 0; | |
outline: 0; | |
padding: 0; | |
vertical-align: baseline; | |
} | |
a img { | |
border: none; | |
} | |
a:hover { | |
-webkit-transition: 0.2s; | |
-ms-transition: 0.2s; | |
-moz-transition: 0.2s; | |
-o-transition: 0.2s; | |
-webkit-transition: 0.2s; | |
-moz-transition: 0.2s; | |
-o-transition: 0.2s; | |
-ms-transition: 0.2s; | |
transition: 0.2s; | |
color: #930e3b; | |
} | |
@media (min-width: 481px) { | |
html { | |
font-size: 16px; | |
} | |
} | |
@media (min-width: 0px) and (max-width: 480px) { | |
html { | |
font-size: 14px; | |
} | |
} | |
.clearfix:after { | |
clear: both; | |
visibility: hidden; | |
content: "."; | |
display: block; | |
height: 0; | |
} | |
.left { | |
float: left; | |
} | |
.right { | |
float: right; | |
} | |
.circle { | |
-webkit-border-radius: 50%; | |
border-radius: 50%; | |
} | |
.thumbImg-w { | |
width: 100px; | |
height: 100px; | |
display: inline-block; | |
position: relative; | |
overflow: hidden; | |
} | |
.thumbImg { | |
top: 50%; | |
left: 50%; | |
position: absolute; | |
-webkit-transform: translate(-50%, -50%); | |
-ms-transform: translate(-50%, -50%); | |
-webkit-transform: translate(-50%, -50%); | |
-moz-transform: translate(-50%, -50%); | |
-o-transform: translate(-50%, -50%); | |
-ms-transform: translate(-50%, -50%); | |
transform: translate(-50%, -50%); | |
} | |
.__web-inspector-hide-shortcut__ { | |
visibility: hidden ; | |
} | |
button { | |
-webkit-box-align: start; | |
-moz-box-align: start; | |
-o-box-align: start; | |
-ms-flex-align: start; | |
-webkit-align-items: flex-start; | |
align-items: flex-start; | |
text-align: center; | |
cursor: default; | |
color: buttontext; | |
background-color: buttonface; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
box-sizing: border-box; | |
padding: 2px 6px 3px; | |
border-width: 2px; | |
border-style: outset; | |
border-color: buttonface; | |
-webkit-border-image: initial; | |
-moz-border-image: initial; | |
-o-border-image: initial; | |
border-image: initial; | |
text-rendering: auto; | |
color: initial; | |
letter-spacing: normal; | |
word-spacing: normal; | |
text-transform: none; | |
text-indent: 0px; | |
text-shadow: none; | |
display: inline-block; | |
text-align: start; | |
margin: 0em 0em 0em 0em; | |
font: 11px system-ui; | |
-webkit-writing-mode: horizontal-tb; | |
-webkit-appearance: button; | |
} | |
.hamburger { | |
display: inline-block; | |
background-color: transparent; | |
background-image: url("data:image/svg+xmlutf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-3 -6 24 24\"><path fill=\"#4A4A4A\" d=\"M0 12h18v-2H0v2M0 7h18V5H0v2M0 0v2h18V0H0\"/></svg>"); | |
background-repeat: no-repeat; | |
-webkit-background-size: 30px 24px; | |
-moz-background-size: 30px 24px; | |
background-size: 30px 24px; | |
background-position: center center; | |
border: none; | |
margin: 0; | |
padding: 0; | |
width: 60px; | |
height: 60px; | |
cursor: pointer; | |
-ms-flex-item-align: center; | |
-ms-grid-row-align: center; | |
-webkit-align-self: center; | |
align-self: center; | |
-ms-flex-item-align: center; | |
} | |
.nav ul:after { | |
clear: both; | |
visibility: hidden; | |
} | |
.nav, | |
.nav-icon { | |
position: relative; | |
} | |
.nav ul { | |
display: block; | |
} | |
.nav ul li { | |
display: block; | |
} | |
.nav ul li a { | |
display: block; | |
} | |
.tab { | |
position: relative; | |
color: #424242; | |
padding: 6px; | |
margin: 0 4px; | |
text-decoration: none; | |
text-transform: uppercase; | |
font-weight: 400; | |
-webkit-transition: 0.1s ease color; | |
-webkit-transition: 0.1s ease color; | |
-moz-transition: 0.1s ease color; | |
-o-transition: 0.1s ease color; | |
-ms-transition: 0.1s ease color; | |
transition: 0.1s ease color; | |
} | |
amp-sidebar { | |
width: 200px; | |
} | |
amp-sidebar ul { | |
padding: 10px 0; | |
} | |
amp-sidebar li a { | |
display: block; | |
padding: 10px 20px; | |
} | |
header { | |
height: 60px; | |
background-color: #222f31; | |
-webkit-box-shadow: 0 -1px 0 #3c5155 inset, 0 -3px 0 #1e292b inset; | |
box-shadow: 0 -1px 0 #3c5155 inset, 0 -3px 0 #1e292b inset; | |
-webkit-box-shadow: 0 -1px 0 #3c5155 inset, 0 -3px 0 #1e292b inset; | |
} | |
header .header-title a { | |
padding: 0 0 0 20px; | |
height: 60px; | |
line-height: 60px; | |
font-size: 20px; | |
color: #fff; | |
letter-spacing: 0.2em; | |
} | |
header .nav-container { | |
display: -webkit-box; | |
display: -ms-flexbox; | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-pack: justify; | |
-ms-flex-pack: justify; | |
-webkit-box-pack: justify; | |
-moz-box-pack: justify; | |
-o-box-pack: justify; | |
-ms-flex-pack: justify; | |
-webkit-justify-content: space-between; | |
justify-content: space-between; | |
} | |
header .left-nav { | |
display: -webkit-box; | |
display: -ms-flexbox; | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-align: center; | |
-ms-flex-align: center; | |
-webkit-box-align: center; | |
-moz-box-align: center; | |
-o-box-align: center; | |
-ms-flex-align: center; | |
-webkit-align-items: center; | |
align-items: center; | |
-webkit-box-pack: start; | |
-ms-flex-pack: start; | |
-webkit-box-pack: start; | |
-moz-box-pack: start; | |
-o-box-pack: start; | |
-ms-flex-pack: start; | |
-webkit-justify-content: flex-start; | |
justify-content: flex-start; | |
font-size: 20px; | |
margin-left: 0; | |
font-weight: 300; | |
-webkit-box-pack: start; | |
-ms-flex-pack: start; | |
-webkit-box-pack: start; | |
-moz-box-pack: start; | |
-o-box-pack: start; | |
-ms-flex-pack: start; | |
-webkit-justify-content: flex-start; | |
justify-content: flex-start; | |
-webkit-box-flex: 1; | |
-ms-flex: 1 1 auto; | |
-webkit-box-flex: 1; | |
-moz-box-flex: 1; | |
-o-box-flex: 1; | |
box-flex: 1; | |
-webkit-flex: 1 1 auto; | |
-ms-flex: 1 1 auto; | |
flex: 1 1 auto; | |
text-align: left; | |
width: auto; | |
font-size: 15px; | |
} | |
header .right { | |
font-size: 15px; | |
} | |
header .alt { | |
padding: 0; | |
text-align: right; | |
display: -webkit-box; | |
display: -ms-flexbox; | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-align: stretch; | |
-ms-flex-align: stretch; | |
-webkit-box-align: stretch; | |
-moz-box-align: stretch; | |
-o-box-align: stretch; | |
-ms-flex-align: stretch; | |
-webkit-align-items: stretch; | |
align-items: stretch; | |
-webkit-box-pack: center; | |
-ms-flex-pack: center; | |
-webkit-box-pack: center; | |
-moz-box-pack: center; | |
-o-box-pack: center; | |
-ms-flex-pack: center; | |
-webkit-justify-content: center; | |
justify-content: center; | |
} | |
.blog-title a { | |
position: relative; | |
} | |
button { | |
-webkit-box-align: start; | |
-moz-box-align: start; | |
-o-box-align: start; | |
-ms-flex-align: start; | |
-webkit-align-items: flex-start; | |
align-items: flex-start; | |
text-align: center; | |
cursor: default; | |
color: buttontext; | |
background-color: buttonface; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
box-sizing: border-box; | |
padding: 2px 6px 3px; | |
border-width: 2px; | |
border-style: outset; | |
border-color: buttonface; | |
-webkit-border-image: initial; | |
-moz-border-image: initial; | |
-o-border-image: initial; | |
border-image: initial; | |
text-rendering: auto; | |
color: initial; | |
letter-spacing: normal; | |
word-spacing: normal; | |
text-transform: none; | |
text-indent: 0px; | |
text-shadow: none; | |
display: inline-block; | |
text-align: start; | |
margin: 0em 0em 0em 0em; | |
font: 11px system-ui; | |
-webkit-writing-mode: horizontal-tb; | |
-webkit-appearance: button; | |
} | |
.__web-inspector-hide-shortcut__ { | |
visibility: hidden ; | |
} | |
.hamburger { | |
display: inline-block; | |
background-color: transparent; | |
background-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-3 -6 24 24\"><path fill=\"#FFF\" d=\"M0 12h18v-2H0v2M0 7h18V5H0v2M0 0v2h18V0H0\"/></svg>"); | |
background-repeat: no-repeat; | |
-webkit-background-size: 30px 24px; | |
-moz-background-size: 30px 24px; | |
background-size: 30px 24px; | |
background-position: center center; | |
border: none; | |
margin: 0; | |
padding: 0; | |
width: 60px; | |
height: 60px; | |
cursor: pointer; | |
-ms-flex-item-align: center; | |
-ms-grid-row-align: center; | |
-webkit-align-self: center; | |
align-self: center; | |
-ms-flex-item-align: center; | |
} | |
.tab { | |
position: relative; | |
color: #2d3d40; | |
padding: 6px; | |
margin: 0 4px; | |
text-decoration: none; | |
text-transform: uppercase; | |
font-weight: 400; | |
-webkit-transition: 0.1s ease color; | |
-webkit-transition: 0.1s ease color; | |
-moz-transition: 0.1s ease color; | |
-o-transition: 0.1s ease color; | |
-ms-transition: 0.1s ease color; | |
transition: 0.1s ease color; | |
} | |
amp-sidebar { | |
width: 250px; | |
background-color: #182022; | |
} | |
amp-sidebar ul { | |
padding: 10px 0; | |
} | |
amp-sidebar li { | |
border-top: 1px solid #2f4043; | |
} | |
amp-sidebar li:last-child { | |
border-bottom: 1px solid #2f4043; | |
} | |
amp-sidebar li a { | |
color: #fff; | |
font-weight: bold; | |
display: block; | |
padding: 10px 20px; | |
} | |
amp-sidebar li a:hover { | |
color: #ccc; | |
background-color: #030404; | |
} | |
.categories-header { | |
background-color: #2d3d40; | |
padding: 0rem 0.8rem; | |
} | |
.categories-header a { | |
color: #fff; | |
} | |
.categories-header a:hover { | |
color: #fff; | |
} | |
.categories-header .breadcrumb ol li { | |
list-style: none; | |
display: inline-block; | |
margin: 0; | |
} | |
.categories-header .breadcrumb ol li span { | |
font-size: 0.8rem; | |
font-weight: bold; | |
} | |
.categories-header .breadcrumb ol li:after { | |
content: "/"; | |
color: #fff; | |
display: inline-block; | |
margin: 0 0.4rem; | |
} | |
.categories-header .breadcrumb ol li:last-child:after { | |
content: ""; | |
margin: 0; | |
} | |
.entry-header { | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-pack: center; | |
-moz-box-pack: center; | |
-o-box-pack: center; | |
-ms-flex-pack: center; | |
-webkit-justify-content: center; | |
justify-content: center; | |
-webkit-align-items: center; | |
-webkit-box-align: center; | |
-moz-box-align: center; | |
-o-box-align: center; | |
-ms-flex-align: center; | |
-webkit-align-items: center; | |
align-items: center; | |
} | |
.entry-header .flx:first-child { | |
margin: 0 1rem 0 0; | |
} | |
.header-cap { | |
-webkit-flex-grow: 3; | |
-webkit-box-flex: 3; | |
-moz-box-flex: 3; | |
-o-box-flex: 3; | |
-ms-box-flex: 3; | |
box-flex: 3; | |
-webkit-flex-grow: 3; | |
flex-grow: 3; | |
} | |
.title-cover { | |
background-color: #fff; | |
color: #2d3d40; | |
padding: 1.5rem 0.8rem 0 0.8rem; | |
} | |
.title-cover a { | |
font-size: 1.2rem; | |
color: #2d3d40; | |
text-align: left; | |
font-weight: bold; | |
} | |
.entry-title { | |
margin: 0; | |
} | |
.entry-meta-header { | |
font-size: 0.85rem; | |
text-align: center; | |
} | |
.entry-meta-header .date { | |
font-family: sans-serif; | |
} | |
h1 a, | |
h2 a, | |
h3 a, | |
h4 a, | |
h5 a, | |
h6 a { | |
color: #2d3d40; | |
text-decoration: none; | |
} | |
h1 a:hover, | |
h2 a:hover, | |
h3 a:hover, | |
h4 a:hover, | |
h5 a:hover, | |
h6 a:hover { | |
color: #e91e63; | |
} | |
#container { | |
margin-left: auto; | |
margin-right: auto; | |
} | |
#main { | |
margin-bottom: 3em; | |
padding-left: 0; | |
} | |
.post { | |
margin-bottom: 3rem; | |
position: relative; | |
} | |
.entry-content { | |
margin: 0 0.6rem; | |
font-size: 1rem; | |
} | |
.entry-content h1 { | |
font-size: 1.7rem; | |
line-height: 1.5; | |
margin: 1em 0 0.8em; | |
} | |
.entry-content h2, | |
.entry-content h3, | |
.entry-content h4, | |
.entry-content h5, | |
.entry-content h6, | |
.entry-content h2 span, | |
.entry-content h3 span, | |
.entry-content h4 span, | |
.entry-content h5 span, | |
.entry-content h6 span { | |
color: #98b8be; | |
font-weight: bold; | |
} | |
.entry-content h2, | |
.entry-content h2 span { | |
font-size: 1.8rem; | |
line-height: 2.6rem; | |
text-align: center; | |
} | |
.entry-content h2 { | |
border-bottom: 2px solid #cce4e8; | |
margin: 4.5rem 0 0.5em; | |
padding: 0.8em 0; | |
} | |
.entry-content h3, | |
.entry-content h3 span { | |
font-size: 1.6rem; | |
line-height: 2.2rem; | |
text-align: center; | |
} | |
.entry-content h3 { | |
margin: 3.6rem 0.8rem 3rem 0.8rem; | |
padding: 0; | |
} | |
.entry-content h4, | |
.entry-content h4 span { | |
font-size: 1.4rem; | |
line-height: 2rem; | |
text-align: center; | |
} | |
.entry-content h4 { | |
margin: 3.6rem 0.8rem 3rem 0.8rem; | |
padding: 0; | |
} | |
.entry-content h5, | |
.entry-content h5 span { | |
font-size: 1.2rem; | |
line-height: 1.8rem; | |
text-align: center; | |
} | |
.entry-content h5 { | |
margin: 3.6rem 0.8rem 3rem 0.8rem; | |
padding: 0; | |
} | |
.entry-content h6, | |
.entry-content h6 span { | |
font-size: 1.1rem; | |
line-height: 1.6rem; | |
text-align: center; | |
} | |
.entry-content h6 { | |
margin: 3.6rem 0.8rem 3rem 0.8rem; | |
padding: 0; | |
} | |
.entry-content p { | |
font-size: 1rem; | |
letter-spacing: 0.05rem; | |
line-height: 2.2rem; | |
margin: 3rem 0.8rem; | |
} | |
.entry-content p a { | |
word-wrap: break-word; | |
overflow-wrap: break-word; | |
display: inline; | |
border-bottom: 1px dashed #f1729d; | |
padding-bottom: 0.3rem; | |
} | |
.entry-content p a:hover { | |
border-bottom: 1px dashed #9c0f3f; | |
padding-bottom: 0.4rem; | |
} | |
.entry-content em { | |
background-color: #f9f5d1; | |
color: #886d00; | |
font-style: normal; | |
margin: 0 2px; | |
padding: 0.4em; | |
} | |
.entry-content strong { | |
color: #871c1c; | |
font-style: normal; | |
margin: 0 2px; | |
padding: 0.4em; | |
background-color: #fadcdc; | |
} | |
.entry-content hr { | |
border: 0; | |
border-top: 3px solid #cce4e8; | |
margin: 3rem auto; | |
width: 20%; | |
} | |
.entry-content img, | |
.entry-content video { | |
display: block; | |
height: auto; | |
margin: auto; | |
max-width: 100%; | |
} | |
.entry-content iframe { | |
width: 100% ; | |
} | |
.entry-content blockquote { | |
margin: 3rem 0.8rem; | |
padding: 1rem 1.8rem; | |
position: relative; | |
background-color: none; | |
border-left: 3px solid #98b8be; | |
font-style: italic; | |
} | |
.entry-content blockquote p { | |
margin: 0.5rem 0; | |
} | |
.entry-content blockquote blockquote { | |
border-left: none; | |
} | |
.entry-content .table-wrapper { | |
margin: 3rem 0.8rem; | |
} | |
.entry-content table { | |
border-collapse: collapse; | |
border-spacing: 0; | |
overflow: auto; | |
display: block; | |
font-size: 0.85rem; | |
margin: 0 auto; | |
width: auto; | |
} | |
.entry-content td, | |
.entry-content th { | |
line-height: 1.8em; | |
padding: 0.8rem 0.8rem; | |
font-size: 0.85rem; | |
} | |
.entry-content td em, | |
.entry-content th em, | |
.entry-content td strong, | |
.entry-content th strong, | |
.entry-content td a, | |
.entry-content th a { | |
font-size: 0.85rem; | |
} | |
.entry-content td { | |
border: 1px solid #c4c4c4; | |
} | |
.entry-content th { | |
background-color: #ecf5f7; | |
border: 1px solid #c4c4c4; | |
} | |
.entry-content .table-align-center { | |
text-align: center; | |
} | |
.entry-content .table-align-right { | |
text-align: right; | |
} | |
.entry-content ul, | |
.entry-content ol, | |
.entry-content dl { | |
margin: 3rem 0 3rem 1.6rem; | |
padding: 0; | |
list-style: none; | |
font-size: 1rem; | |
} | |
.entry-content ul li, | |
.entry-content ol li, | |
.entry-content dl li { | |
line-height: 2rem; | |
position: relative; | |
padding: 0; | |
} | |
.entry-content ul li p, | |
.entry-content ol li p, | |
.entry-content dl li p { | |
line-height: 2rem; | |
margin: 0; | |
} | |
.entry-content ul li p:not(:first-child), | |
.entry-content ol li p:not(:first-child), | |
.entry-content dl li p:not(:first-child) { | |
color: #57767c; | |
margin: 0.5rem; | |
} | |
.entry-content ul li ul, | |
.entry-content ol li ul, | |
.entry-content dl li ul, | |
.entry-content ul li ol, | |
.entry-content ol li ol, | |
.entry-content dl li ol, | |
.entry-content ul li dl, | |
.entry-content ol li dl, | |
.entry-content dl li dl { | |
margin: 1rem; | |
} | |
.entry-content ul li { | |
margin: 0.4rem 0 0.4rem 0.8rem; | |
} | |
.entry-content ul li::after { | |
position: absolute; | |
display: block; | |
content: ''; | |
top: 0.75rem; | |
left: -1rem; | |
width: 0.5rem; | |
height: 0.5rem; | |
background-color: #cce4e8; | |
border-radius: 100%; | |
} | |
.entry-content ol { | |
counter-reset: number; | |
} | |
.entry-content ol li { | |
margin: 0.4rem 0 0.4rem 2rem; | |
} | |
.entry-content ol li p:first-child { | |
display: inline-block; | |
line-height: 1.6rem; | |
height: 1.6rem; | |
} | |
.entry-content ol li:before { | |
position: absolute; | |
display: inline-block; | |
float: left; | |
margin: 0 0.2rem 0 0; | |
padding: 0; | |
counter-increment: number; | |
content: counter(number); | |
left: -2.2rem; | |
top: 0.2rem; | |
background-color: #98b8be; | |
width: 1.6rem; | |
height: 1.6rem; | |
border-radius: 50%; | |
color: #fff; | |
text-align: center; | |
font-weight: bold; | |
font-size: 0.8rem; | |
line-height: 1.6rem; | |
} | |
kbd { | |
font-family: sans-serif; | |
text-align: center; | |
display: inline-block; | |
color: #425a5e; | |
-moz-osx-font-smoothing: grayscale; | |
-webkit-border-radius: 3px; | |
-webkit-box-shadow: 0 0 10px #e8e8e8 inset, 0 1px 0 #c3c3c3, 0 2px 0 #c9c9c9, 0 3px 3px #333; | |
box-shadow: 0 0 10px #e8e8e8 inset, 0 1px 0 #c3c3c3, 0 2px 0 #c9c9c9, 0 3px 3px #333; | |
-webkit-box-shadow: 0 0 10px #e2e2e2 inset, 0 1px 0 #c3c3c3, 0 2px 0 #c9c9c9, 0 3px 3px #333; | |
-webkit-font-smoothing: subpixel-antialiased; | |
background: #fff; | |
border-left: 1px solid #fff; | |
border-radius: 3px; | |
border-right: 1px solid #e6e6e6; | |
border-top: 1px solid #fff; | |
font-size: 0.85rem; | |
line-height: 1rem; | |
margin: 5px; | |
padding: 6px 8px 3px; | |
text-shadow: 0 1px 0 #fff; | |
vertical-align: baseline; | |
} | |
img.responsive-img { | |
height: auto; | |
max-width: 100%; | |
} | |
video.responsive-video { | |
height: auto; | |
max-width: 100%; | |
} | |
amp-instagram, | |
amp-vimeo, | |
amp-video, | |
amp-youtube, | |
amp-twitter, | |
.soundcloud-wrapper, | |
.amp-img-wrapper, | |
.googleAdPost, | |
.ad-footer { | |
margin: 3rem 0.8rem; | |
} | |
code, | |
figure.highlight .code, | |
pre { | |
-moz-osx-font-smoothing: grayscale; | |
-webkit-font-smoothing: subpixel-antialiased; | |
} | |
code, | |
pre, | |
samp { | |
font-family: Menlo, Consolas, Monaco, Consolas, monospace; | |
} | |
p code { | |
font-size: 1rem; | |
} | |
code, | |
pre { | |
font-size: 0.85rem; | |
letter-spacing: 0.05rem; | |
background-color: #ecf5f7; | |
color: #007e96; | |
} | |
code { | |
margin: 0 3px; | |
padding: 0.4em; | |
} | |
samp { | |
font-size: 0.85rem; | |
letter-spacing: 0.05rem; | |
} | |
sub, | |
sup { | |
font-size: 0.75rem; | |
line-height: 0; | |
position: relative; | |
} | |
sub { | |
bottom: -0.2em; | |
} | |
sup { | |
top: -0.5em; | |
} | |
pre { | |
font-size: 1rem; | |
letter-spacing: 0.05rem; | |
margin: 0 3px; | |
padding: 15px; | |
-webkit-background-clip: padding; | |
-moz-background-clip: padding; | |
background-clip: padding-box; | |
border: 0; | |
line-height: 1.3rem; | |
overflow-x: auto; | |
} | |
pre .addition, | |
pre .css .tag, | |
pre .keyword, | |
pre .method, | |
pre .nginx .title, | |
pre .request, | |
pre .status, | |
pre .winutils { | |
color: #66d9ef; | |
} | |
pre .attr_selector, | |
pre .cdata, | |
pre .clojure .title, | |
pre .diff .change, | |
pre .important { | |
color: #9882eb; | |
} | |
pre .preprocessor { | |
color: #9882eb; | |
} | |
pre .preprocessor .keyword { | |
color: #9882eb; | |
} | |
pre .shebang, | |
pre .special, | |
pre .subst { | |
color: #9882eb; | |
} | |
pre .symbol { | |
color: #9882eb; | |
} | |
pre .symbol .string { | |
color: #9882eb; | |
} | |
pre .attribute, | |
pre .class .title, | |
pre .constant, | |
pre .haskell .type, | |
pre .lisp .body, | |
pre .parent, | |
pre .smalltalk .number, | |
pre .variable { | |
color: #a6e22e; | |
} | |
pre .built_in, | |
pre .chunk, | |
pre .decorator, | |
pre .id, | |
pre .identifier, | |
pre .literal, | |
pre .localvars, | |
pre .title, | |
pre .vhdl, | |
pre .deletion { | |
color: #f92672; | |
} | |
pre .command, | |
pre .hexcolor, | |
pre .number, | |
pre .phpdoc, | |
pre .regexp, | |
pre .string, | |
pre .tag .value, | |
pre .tex .formula { | |
color: #e6db74; | |
} | |
pre .comment, | |
pre .diff .header, | |
pre .doctype, | |
pre .javadoc, | |
pre .lisp .string, | |
pre .pi, | |
pre .template_comment { | |
color: #75715e; | |
font-weight: normal; | |
} | |
.line { | |
font-size: 0.85rem; | |
letter-spacing: 0.05rem; | |
line-height: 2rem; | |
color: #f8f8f2; | |
} | |
.line span { | |
font-size: 0.85rem; | |
letter-spacing: 0.05rem; | |
} | |
.gist { | |
background: #fff; | |
border: 1px solid color-gutter; | |
color: #f8f8f2; | |
line-height: 1.6rem; | |
margin-top: 15px; | |
overflow: auto; | |
padding: 7px 15px; | |
} | |
.gist .gist-file { | |
border: none; | |
font-family: inherit; | |
font-size: 1rem; | |
letter-spacing: 0; | |
margin: 0; | |
} | |
.gist .gist-file .gist-data { | |
background: 0 0; | |
border-bottom: none; | |
} | |
.gist .gist-file .gist-data pre { | |
font-family: Menlo, Consolas, Monaco, Consolas, monospace; | |
padding: 0 ; | |
} | |
.gist .gist-file .gist-meta { | |
background: 0 0; | |
color: #f8f8f2; | |
font-size: 1rem; | |
margin-top: 5px; | |
padding: 0; | |
} | |
.gist .gist-file .gist-meta a { | |
color: #f8f8f2; | |
} | |
.gist .gist-file .gist-meta a:visited { | |
color: #f8f8f2; | |
} | |
figure.highlight { | |
font-size: 0.95rem; | |
margin: 3rem 0.8rem; | |
background: #263338; | |
border: 1px solid color-gutter; | |
line-height: 2rem; | |
overflow: auto; | |
position: relative; | |
} | |
figure.highlight .code { | |
padding: 0 1em 1em 1em; | |
color: #f8f8f2; | |
} | |
figure.highlight .gutter { | |
display: none; | |
} | |
figure.highlight figcaption { | |
font-size: 1rem; | |
font-weight: bold; | |
color: #e9e9d6; | |
background-color: #1e282c; | |
padding: 0.6em 1em; | |
} | |
figure.highlight figcaption a { | |
position: absolute; | |
right: 1rem; | |
} | |
figure.highlight figcaption:before { | |
content: "\f121"; | |
font-family: "fontawesome"; | |
text-align: center; | |
display: inline-block; | |
margin-right: 0.6em; | |
} | |
figure.highlight pre { | |
background: 0 0; | |
border: none; | |
margin: 0; | |
padding: 0.5rem; | |
} | |
figure.highlight table { | |
border-spacing: 0; | |
margin: 0; | |
} | |
figure.highlight th { | |
border: 0; | |
font-weight: 400; | |
padding: 0; | |
} | |
figure.highlight td { | |
border: 0; | |
font-size: 1.1rem; | |
padding: 0; | |
} | |
.entry-content .toc { | |
background: #fff; | |
padding: 0.5rem; | |
margin: 3rem 0; | |
border: 1px solid #cce4e8; | |
border-radius: 2px; | |
} | |
.entry-content .toc ul { | |
margin-bottom: 0; | |
padding: 0; | |
margin: 0; | |
border-top: 1px solid #5d8b93; | |
border-radius: 2px; | |
} | |
.entry-content .toc ul:first-child { | |
border-top: none; | |
} | |
.entry-content .toc ul ul, | |
.entry-content .toc ul ol { | |
margin-bottom: 0; | |
padding: 0; | |
margin: 0; | |
} | |
.entry-content .toc ul li { | |
padding: 0; | |
margin: 0; | |
border-top: 1px solid #5d8b93; | |
} | |
.entry-content .toc ul li:first-child { | |
border-top: none; | |
} | |
.entry-content .toc ul li::after, | |
.entry-content .toc ul li::before { | |
content: normal; | |
} | |
.entry-content .toc ul li a { | |
font-size: 1.2rem; | |
font-weight: bold; | |
display: block; | |
padding: 1rem; | |
background-color: #3d5b61; | |
color: #fff; | |
-webkit-transition: 0.3s; | |
-ms-transition: 0.3s; | |
-moz-transition: 0.3s; | |
-o-transition: 0.3s; | |
-webkit-transition: 0.3s; | |
-moz-transition: 0.3s; | |
-o-transition: 0.3s; | |
-ms-transition: 0.3s; | |
transition: 0.3s; | |
} | |
.entry-content .toc ul li a:hover { | |
color: #fff; | |
background-color: #2c4145; | |
} | |
.entry-content .toc ul li a:before { | |
content: "\f02d"; | |
font-family: "fontawesome"; | |
display: inline-block; | |
padding: 0; | |
margin: 0; | |
margin-right: 0.8rem; | |
} | |
.entry-content .toc ul li ul, | |
.entry-content .toc ul li ol { | |
margin-bottom: 0; | |
padding: 0; | |
margin: 0; | |
} | |
.entry-content .toc ul li ul li a, | |
.entry-content .toc ul li ol li a { | |
padding: 0.5rem 0.75rem 0.5rem 2rem; | |
font-size: 0.9rem; | |
background-color: #416167; | |
} | |
.entry-content .toc ul li ul li a:before, | |
.entry-content .toc ul li ol li a:before { | |
content: "\f0da"; | |
font-family: "fontawesome"; | |
display: inline-block; | |
padding: 0; | |
margin: 0; | |
margin-right: 0.6rem; | |
} | |
.entry-content .toc ul li ul li ul li a, | |
.entry-content .toc ul li ol li ul li a { | |
padding: 0.5rem 0.75rem 0.5rem 4rem; | |
} | |
.entry-content .toc ul li ul li ul li a:before, | |
.entry-content .toc ul li ol li ul li a:before { | |
content: none; | |
} | |
.meta-content { | |
background-color: #fff; | |
margin: 1.5rem 0.8rem; | |
padding: 0; | |
border-top: 1px dotted #cce4e8; | |
letter-spacing: 0.05rem; | |
} | |
.meta-wrapper { | |
margin: 3rem 0.8rem; | |
padding: 0; | |
background-color: #fff; | |
} | |
h6.tag, | |
h6.categories { | |
color: #2d3d40; | |
font-size: 0.9rem; | |
font-weight: bold; | |
} | |
.article-tag-list { | |
padding: 0; | |
} | |
.article-tag, | |
.article-tag-list, | |
.article-categories, | |
.article-categories-list { | |
padding: 0; | |
margin: 0; | |
} | |
.article-categories { | |
margin-bottom: 1.6em; | |
} | |
.article-tag-list li, | |
.article-categories-list li { | |
list-style: none; | |
display: inline-block; | |
padding: 0; | |
margin: 0.2rem 0.1rem; | |
} | |
.article-tag-list li a, | |
.article-categories-list li a { | |
font-size: 0.8rem; | |
font-weight: bold; | |
padding: 0.4rem 0.8rem; | |
margin: 0; | |
background-color: #ecf5f7; | |
color: #2d3d40; | |
border-radius: 2px; | |
display: block; | |
} | |
.article-tag-list li a:before, | |
.article-categories-list li a:before { | |
content: "#"; | |
} | |
.article-tag-list li a:hover, | |
.article-categories-list li a:hover { | |
color: #fff; | |
background-color: #2d3d40; | |
} | |
.widget { | |
margin: 1.5rem 0.8rem; | |
padding: 0; | |
} | |
.widget-h { | |
text-align: center; | |
margin: 1.6rem 0; | |
} | |
.widget-h h6 { | |
color: #fff; | |
background-color: #2d3d40; | |
display: inline-block; | |
padding: 0.4rem 1rem; | |
font-size: 0.9rem; | |
font-weight: bold; | |
} | |
.posts-list li { | |
list-style: none; | |
margin: 0.8rem 0; | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-pack: center; | |
-moz-box-pack: center; | |
-o-box-pack: center; | |
-ms-flex-pack: center; | |
-webkit-justify-content: center; | |
justify-content: center; | |
-webkit-align-items: center; | |
-webkit-box-align: center; | |
-moz-box-align: center; | |
-o-box-align: center; | |
-ms-flex-align: center; | |
-webkit-align-items: center; | |
align-items: center; | |
} | |
.posts-list li .posts-list-link { | |
-webkit-flex-grow: 3; | |
-webkit-box-flex: 3; | |
-moz-box-flex: 3; | |
-o-box-flex: 3; | |
-ms-box-flex: 3; | |
box-flex: 3; | |
-webkit-flex-grow: 3; | |
flex-grow: 3; | |
} | |
.posts-list li .posts-list-link a { | |
color: #2d3d40; | |
font-size: 1.1rem; | |
font-weight: bold; | |
} | |
.posts-list li .posts-list-link a:hover { | |
color: #e91e63; | |
} | |
.posts-list li .posts-list-meta { | |
font-size: 0.7rem; | |
} | |
.posts-list li .flx:first-child { | |
margin: 0 1rem 0 0; | |
} | |
.posts-list li amp-img { | |
border-radius: 2px; | |
} | |
#footer { | |
background-color: #2d3d40; | |
color: #fff; | |
display: block; | |
font-size: 1rem; | |
letter-spacing: 0.05rem; | |
line-height: 2rem; | |
margin: 3rem 0 0 0; | |
padding: 0; | |
} | |
.site-author-info { | |
margin: 0; | |
padding: 3rem 1.6rem; | |
} | |
.site-author-info h6 { | |
font-size: 1rem; | |
color: #fff; | |
font-weight: bold; | |
display: inline-block; | |
background-color: #222f31; | |
padding: 0.4rem 0.8rem; | |
} | |
.site-author-info-wrapper { | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-pack: center; | |
-moz-box-pack: center; | |
-o-box-pack: center; | |
-ms-flex-pack: center; | |
-webkit-justify-content: center; | |
justify-content: center; | |
-webkit-align-items: center; | |
-webkit-box-align: center; | |
-moz-box-align: center; | |
-o-box-align: center; | |
-ms-flex-align: center; | |
-webkit-align-items: center; | |
align-items: center; | |
} | |
.site-author-info-wrapper .flx:first-child { | |
margin: 0 1rem 0 0; | |
} | |
.authorCap-wrapper { | |
-webkit-flex-grow: 3; | |
-webkit-box-flex: 3; | |
-moz-box-flex: 3; | |
-o-box-flex: 3; | |
-ms-box-flex: 3; | |
box-flex: 3; | |
-webkit-flex-grow: 3; | |
flex-grow: 3; | |
} | |
.authorCap { | |
font-size: 1.4rem; | |
font-weight: bold; | |
} | |
.authorReading { | |
font-size: 0.7rem; | |
} | |
.site-author-desc { | |
font-size: 0.8rem; | |
line-height: 1.6rem; | |
margin: 1.4rem 0; | |
} | |
.copyright-tool { | |
margin: 0; | |
padding: 1.5rem 1.6rem; | |
border-top: 1px solid #384b4f; | |
} | |
.copyright-notice p { | |
font-size: 0.6rem; | |
letter-spacing: 0.05rem; | |
line-height: 1.2rem; | |
color: #8ba8ae; | |
} | |
.copyright-title { | |
font-size: 1rem; | |
text-align: center; | |
margin: 0.8rem 0 0.4rem 0; | |
} | |
.copyright-license { | |
margin: 0.4rem 0 0.8rem 0; | |
font-size: 0.7rem; | |
text-align: center; | |
} | |
.copyright-license a { | |
color: #e6e6e6; | |
font-size: 0.7rem; | |
} | |
.copyright-license a:hover { | |
color: #b3b3b3; | |
} | |
.sns-link { | |
margin: 0; | |
text-align: center; | |
} | |
.sns-link a { | |
display: inline-block; | |
font-size: 1.6rem; | |
text-align: center; | |
width: 2rem; | |
height: 2rem; | |
line-height: 2rem; | |
padding: 0.6rem; | |
margin: 0 0.1rem; | |
background-color: #222f31; | |
color: #fff; | |
border-radius: 4px; | |
} | |
.sns-link a:hover { | |
color: #ccc; | |
background-color: #030404; | |
} | |
.footer-menu { | |
padding: 1.5rem 0.8rem; | |
border-top: 1px solid #384b4f; | |
} | |
.footer-menu ul li { | |
list-style: none; | |
margin: 0; | |
padding: 0; | |
} | |
.footer-menu ul li a { | |
display: block; | |
padding: 0.6rem; | |
margin: 0.2rem 1.6rem; | |
font-size: 1rem; | |
color: #fff; | |
background-color: #222f31; | |
border-radius: 4px; | |
text-align: center; | |
font-weight: bold; | |
} | |
.footer-menu ul li a:hover { | |
color: #ccc; | |
background-color: #030404; | |
} | |
.social-share { | |
margin: 1.5rem 0.8rem; | |
display: -webkit-box; | |
display: -moz-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: box; | |
display: flex; | |
-webkit-box-pack: center; | |
-moz-box-pack: center; | |
-o-box-pack: center; | |
-ms-flex-pack: center; | |
-webkit-justify-content: center; | |
justify-content: center; | |
} | |
.social-share amp-social-share, | |
.social-share .sbtn { | |
margin: 5px; | |
} | |
.sbtn { | |
padding: 0; | |
width: 4rem; | |
height: 3rem; | |
line-height: 3rem; | |
color: #fff; | |
font-size: 1.2rem; | |
text-align: center; | |
border-radius: 4px; | |
} | |
.sbtn:hover { | |
color: #fff; | |
} | |
.tw { | |
background-color: #1cafe8; | |
} | |
.tw:hover { | |
background-color: #0f6b8f; | |
} | |
.fb { | |
background-color: #4f677f; | |
} | |
.fb:hover { | |
background-color: #283440; | |
} | |
.ht { | |
background-color: #35acda; | |
} | |
.ht:hover { | |
background-color: #1a6e8f; | |
} | |
.gp { | |
background-color: #d56153; | |
} | |
.gp:hover { | |
background-color: #9c3326; | |
} | |
.tb { | |
background-color: #465f79; | |
} | |
.tb:hover { | |
background-color: #212c38; | |
} | |
.icon-hatena:before { | |
content: "B"; | |
font-weight: bold; | |
font-size: 1.2rem; | |
} | |
#totop { | |
position: fixed; | |
bottom: 2rem; | |
right: 1.6rem; | |
font-size: 1.2rem; | |
z-index: 995; | |
} | |
#totop a { | |
background: rgba(152,184,190,0.6); | |
text-decoration: none; | |
color: #fff; | |
padding: 0.8rem; | |
border-radius: 50%; | |
} | |
#totop a:before { | |
content: "\f062"; | |
font-family: "fontawesome"; | |
font-size: 1.2rem; | |
} | |
#totop a:hover { | |
text-decoration: none; | |
background: #5d8b93; | |
color: #fff; | |
line-height: 2.3em; | |
} | |
@media (min-width: 800px) { | |
.title-cover, | |
.entry-content, | |
.categories, | |
.meta-content, | |
.site-author-info { | |
width: 780px; | |
margin: 0 auto; | |
} | |
.nav-container { | |
width: 800px; | |
margin: 0 auto; | |
} | |
} | |
@media (min-width: 0px) and (max-width: 480px) { | |
.site-author-info-wrapper { | |
display: block; | |
} | |
.gravatar-area { | |
text-align: center; | |
} | |
.gravatar-area amp-img { | |
display: inline-block; | |
} | |
.entry-content td, | |
.entry-content th { | |
line-height: 1.8em; | |
padding: 0.6rem 0.6rem; | |
font-size: 0.5rem; | |
} | |
.entry-content td em, | |
.entry-content th em, | |
.entry-content td strong, | |
.entry-content th strong, | |
.entry-content td a, | |
.entry-content th a { | |
font-size: 0.5rem; | |
} | |
} | |
#hexo-amp-id-1{color:#DB4D6D;}#hexo-amp-id-2{color:#DB4D6D;}#hexo-amp-id-3{color:#DB4D6D;}#hexo-amp-id-4{color:#DB4D6D;}#hexo-amp-id-5{color:#DB4D6D;}#hexo-amp-id-6{background-color:black;color:white;text-decoration:none;padding:4px 6px;font-family:-apple-system, BlinkMacSystemFont, "San Francisco", "Helvetica Neue", Helvetica, Ubuntu, Roboto, Noto, "Segoe UI", Arial, sans-serif;font-size:12px;font-weight:bold;line-height:1.2;display:inline-block;border-radius:3px}#hexo-amp-id-7{display:inline-block;padding:2px 3px}#hexo-amp-id-8{height:12px;width:auto;position:relative;vertical-align:middle;top:-2px;fill:white}#hexo-amp-id-9{display:inline-block;padding:2px 3px} | |
</style> | |
</head> | |
<body> | |
<!-- google analytics --> | |
<!-- menu --> | |
<header> | |
<div class="nav-container"> | |
<div class="left-nav"> | |
<div class="header-title"> | |
<a href="/">Vigorous Pro</a> | |
</div> | |
</div> | |
</div> | |
</header> | |
<!-- sidebar --> | |
<!-- container --> | |
<div id="container"> | |
<div id="main"> | |
<article id="post-26-pair-locking-your-iphone" class="post"> | |
<!-- categories and bread crumb --> | |
<div class="categories-header"> | |
<div class="categories"> | |
<div class="breadcrumb inline-icon"> | |
<ol itemscope itemtype="http://schema.org/BreadcrumbList"> | |
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> | |
<a itemprop="item" href="/"> | |
<span class="sns-icon home-icon"></span> | |
<span itemprop="name"><span class="fa fa-fw fa-home"></span></span> | |
</a> | |
<meta itemprop="position" content="1" /> | |
</li> | |
<li itemprop="itemListElement" itemscope | |
itemtype="http://schema.org/ListItem"> | |
<a itemprop="item" href="/categories/Tech/"> | |
<span class="sns-icon folder-icon"></span> | |
<span itemprop="name">Tech</span> | |
</a> | |
<meta itemprop="position" content="2" /> | |
</li> | |
<li itemprop="itemListElement" itemscope | |
itemtype="http://schema.org/ListItem"> | |
<a itemprop="item" href="/categories/Tech/Apple/"> | |
<span itemprop="name">Apple</span> | |
</a> | |
<meta itemprop="position" content="3" /> | |
</li> | |
</ol> | |
</div> | |
</div> | |
</div> | |
<!-- entry title --> | |
<div class="title-cover"> | |
<div class="entry-header"> | |
<div class="header-thumb flx"> | |
<div class="thumbImg-w circle"> | |
<amp-img class="thumbImg" layout="fixed" width="123" height="100" src="http://121.128.211.224:4000/source/pair-locking/AppleConfigurator.png"> | |
</amp-img> | |
</div> | |
</div> | |
<div class="header-cap flx"> | |
<h1 class="article-title entry-title" itemprop="name"> | |
<a href="https://www.wevg.org/archives/pair-locking-your-iphone/" target="_blank" itemprop="url">利用 Pair Locking 保证 iOS 设备数据安全</a> | |
</h1> | |
</div> | |
</div> | |
<!-- datePublished --> | |
<div class="entry-meta-header"> | |
<span class="meta-elements date"> | |
<span class="fa fa-fw fa-clock-o"></span> | |
<time datetime="2019-10-12" itemprop="datePublished">2019.10.12</time> | |
</span> | |
</div> | |
</div> | |
<!-- entry content --> | |
<div class="entry-content ecp"> | |
<!-- social share button --> | |
<!-- google Adsense Matched content --> | |
<!-- content --> | |
<p>通过配置Pair Locking,保护隐私,防止执法人员对您的设备进行取证。<a id="more"></a> 但对于受 checkm8 影响的设备的设备无效。</p> | |
<h2 id="什么是-checkm8-漏洞?"><a href="#什么是-checkm8-漏洞?" class="headerlink" title="什么是 checkm8 漏洞?"></a>什么是 checkm8 漏洞?</h2><p><strong>checkm8</strong> 是由 Twitter 用户 <a href="https://twitter.com/axi0mX/status/1177542201670168576" target="_blank" rel="noopener">@axi0mX</a> 发现并命名的 bootrom 漏洞 。它让永久越狱变成了可能,同时也带来了极大的安全隐患。举例来说,捡到或盗取你手机的不法人士,将可以通过越狱的方式开机,绕过 iCloud 的保护,同时你存放在中的个人数据也有被窥视的危险。<br>从使用 A5 芯片的 iPhone4S 到 使用了 A11 芯片的 iPhone8 iPhoneX 都可能受到这个漏洞的影响。<br>由于 bootrom 是存在于手机的硬件之中,无法通过软件去修改,意思也就是说苹果将无法通过软件更新的方式去将这个漏洞堵上,只要是拥有这个漏洞的硬件,无论 iOS 怎么升级都能被破解。目前基本上只要是使用 A11 或更早的芯片的 iPhone 机种都在受影响的范围内,也就是除了今年最新 iPhone 11 / 11 Pro / 11 Pro Max 和去年的 XS / XS Max / XR之外,剩下来所有的机种都有这个漏洞了。</p> | |
<p><a href="https://github.com/axi0mX/ipwndfu" target="_blank" rel="noopener">https://github.com/axi0mX/ipwndfu</a></p> | |
<h2 id="为什么要配对锁定我的手机?"><a href="#为什么要配对锁定我的手机?" class="headerlink" title="为什么要配对锁定我的手机?"></a>为什么要配对锁定我的手机?</h2><p>处于信息化社会的今天,我们的数字隐私日益收到执法机构,政府等等方面的攻击,尤其是在抗议活动,机场和过境点时,这个问题更为明显。<span class="spoiler">而且想必对于手机取证这种事情都或多或少有所耳闻。 | |
</span> </p> | |
<p>通过配置 Pair Locking ,即使您被执法部门强迫,也会阻止 iPhone 取证工具连接到您的设备,读取您的聊天记录,相册,联系人,通话记录等行为。即使你被法律强制执行,也迫使你打开你的装置! 他们也只能 <em>手动</em> 查看您的手机内容,但他们无法复制并进行离线分析,他们无法运行自动扫描的扫描程序,而且他们也无法获取到您的各种 App 认证 token。</p> | |
<h2 id="Pair-Locking-是如何工作的?"><a href="#Pair-Locking-是如何工作的?" class="headerlink" title="Pair Locking 是如何工作的?"></a>Pair Locking 是如何工作的?</h2><p>取证工具使用名为pairing的概念从iPhone提取数据,Jonathan最好地解释了这一点:</p> | |
<blockquote> | |
<p>A pairing is a trusted relationship with another device, where a computer is granted privileged, trusted access on the iPhone. In order to have the level of control to backup the phone, download personal data, install applications, or perform other such tasks on an iOS device, the machine it’s connected to must be paired with the device. This is what iTunes and Xcode do to talk to the phone, but also what forensic imaging tools and a number of free hacking tools do as well.</p> | |
</blockquote> | |
<blockquote> | |
<p>配对,是与另一个设备相匹配的一种信任关系。在另一台设备上,计算机被赋予权限 ——在 iPhone 上受信任的访问。为了能够控制 iOS 设备进行备份手机,下载个人数据,安装应用程序或执行其他类似任务的控制级别,必须将与其连接的计算机与该设备配对。这是 iTunes 和 Xcode 与设备进行信息传输的方式,但是取证工具和许多黑客工具也是如此。</p> | |
</blockquote> | |
<p>通过 <em>锁定</em> 配对设备,让您的 iPhone 设备<strong>不会</strong>与其他的连接的设备去创建新的信任,<strong>除了</strong>锁定配对的设备,副作用便是阻止了所有的取证设备。在存在配对锁定的情况下,从手机中收集数据的唯一方法是存在硬件漏洞(例如本博文开头部分提到的 bootrom )。</p> | |
<p>要启用配对锁定,我们需要将手机设置成受监管的状态,从而可以对手机的功能和行为施加大量限制。它是专为企业实施其员工手机上的安全控制而设计的,但对我们来说也一样。</p> | |
<h3 id="需要注意的是:"><a href="#需要注意的是:" class="headerlink" title="需要注意的是:"></a><span id="hexo-amp-id-1">需要注意的是:</span></h3><ul> | |
<li>建议在执行前,先完整阅读一遍此文章,再决定是否进行此操作。</li> | |
<li>将手机设置成受监管状态会 <span id="hexo-amp-id-2"><strong>完全擦除手机</strong></span>,尽管擦除之后,您可以重新登录到您的 iCloud,所有同步过的设置,应用程序等项目都会再次出现。<br><span id="hexo-amp-id-3"><strong>但是,不能先对手机进行备份,再将手机设置成受监管状态,然后再恢复备份!!!(因为恢复备份的同时也会将设备还原到不受监管的状态)</strong></span></li> | |
<li>任何能够使用您的笔记本电脑的人都可以从中获得配对记录,并且可以完全访问您手机上的所有内容(在物理连接到笔记本电脑之后)。</li> | |
<li><span id="hexo-amp-id-4">如果您无法访问笔记本电脑或丢失配对记录,那么您也将无法连接手机。</span></li> | |
</ul> | |
<h2 id="监管并锁定配对您的设备"><a href="#监管并锁定配对您的设备" class="headerlink" title="监管并锁定配对您的设备"></a>监管并锁定配对您的设备</h2><ol> | |
<li><p>下载并安装 <a href="https://apps.apple.com/us/app/apple-configurator-2/id1037126344" target="_blank" rel="noopener">Apple Configurator 2</a></p> | |
</li> | |
<li><p>将您的设备与电脑通过 USB 连接</p> | |
</li> | |
<li><p>打开 <strong>Apple Configurator 2</strong>,选择设备后,点击 <code>Prepare</code> 按钮<br></p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/AppleConfigurator.png" width="1177" height="955" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>在 <code>Prepare Devices</code> 页面中:</p> | |
<ul> | |
<li><p>勾选 <strong><code>Supervise devices</code></strong></p> | |
</li> | |
<li><p>勾选 <strong><code>Allow devices to pair with other computers</code></strong></p> | |
</li> | |
<li><p>然后点击 <kbd>Next</kbd><br></p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/7.png" width="1171" height="880" layout="responsive"></amp-img></div> | |
<p>配对锁定可以在两个不同的级别中执行:在监管级别或者在描述文件的级别执行(描述文件是执行一个iPhone设置的合集)</p> | |
<p>根据 Jonathan 的建议我们在这里勾选 <code>Allow devices to pair with other computers</code>,我们在监管级别允许它,稍后将在描述文件级别来阻止他。因为如果您需要更换到新的笔记本或者台式机,不需要去清除您的手机。</p> | |
</li> | |
</ul> | |
</li> | |
<li><p>在 <code>Enroll in MDM Server</code> 页面中选择 <strong><code>Do not enroll in MDM</code></strong>,然后点击 <kbd>Next</kbd><br></p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/8.png" width="1171" height="880" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>在 <code>Assign to Organization</code> 页面中,点击 <strong><code>New Organization</code></strong>,然后点击 <kbd>Next</kbd></p> | |
</li> | |
<li><p>在 <code>Devices Enrollment Program</code> 界面,我们<strong>直接点击</strong> <kbd>Skip</kbd> 跳过即可<br> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/9.png" width="1171" height="880" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>接下来,在 <code>Create an Organization</code> 页面中填写您组织的名称,<strong>除名称外,其他项目均可留空</strong><br></p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/10.png" width="1171" height="880" layout="responsive"></amp-img></div><br>此处填写的名称将会在您的设备中显示,效果如下图:<br> <div class="amp-img-wrapper"><amp-img src="/source/pair-locking/PICSEW_C980.jpg" width="821" height="747" layout="responsive"></amp-img></div> | |
<p>填写完成后,点击 <kbd>Next</kbd> 进行下一步操作</p> | |
</li> | |
<li><p>在接下来下页面中,点击 <strong><code>Generate a new supervision identity</code></strong> ,然后点击 <kbd>Next</kbd><br> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/11.png" width="1171" height="880" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>在 <code>Configure iOS Setup Assistant</code> 页面,不进行修改,直接点击 <kbd>Prepare</kbd> 按钮<br></p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/12.png" width="1171" height="880" layout="responsive"></amp-img></div><br>此时会弹出提示,要求输入密码,以便于更新证书设置,输入密码后,点击 Update Settings 。 | |
<p>接下来,擦除和监管手机的过程。如果您的设备已经受到监管,则会出现有关需要首先还原设备的错误。</p> | |
<div class="amp-img-wrapper"><amp-img src="/source/pair-locking/13.png" width="1171" height="880" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>该过程完成后,您可以创建一个新的配置文件,该配置文件将具有配对锁定限制:</p> | |
<p> <em>之所以选择通过配置文件的方式,而非直接在监管级别进行锁定,是因为我们无法避免可能会出现的情况,比如电脑损坏,丢失等情况。为了避免在这种情况下我们无法连接自己的手机,所以选择使用配置文件的方式进行限制。</em></p> | |
<ul> | |
<li><p>点击状态栏的 <strong><code>File</code></strong> -> <strong><code>New Profile</code></strong> 并为您的新描述文件命名</p> | |
<p> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/Snipaste_2019-10-12_23-20-56.png" width="565" height="431" layout="responsive"></amp-img></div><br> <div class="amp-img-wrapper"><amp-img src="/source/pair-locking/Snipaste_2019-10-12_23-21-58.png" width="926" height="862" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>在 <code>Controls when the profile can be removed</code> 的部分下,选择 <strong><code>Never</code></strong> 或 <strong><code>With Authorization</code></strong><br> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/16.png" width="195" height="102" layout="responsive"></amp-img></div><br>通过这项设置我们可以控制如果有人试图通过手机删除此描述文件。<br>如果此处保留默认设置,即 <strong><code>Always</code></strong> ,那么任何有权访问未锁定手机的人都<strong>可以</strong>删除此描述文件(这便失去了我们的目的)<br>设置为 <strong><code>Never</code></strong> 即表示我们<strong>无法</strong>透过手机来移除这个配置文件<br>设置为 <strong><code>With Authorization</code></strong> ,则只有<strong>输入</strong>正确的<strong>密钥</strong>时,才能从设备中删除此描述文件 | |
<p><span id="hexo-amp-id-5"><em><strong>如果您居住在或者计划访问一个法院可能会迫使您删除描述文件的国家,则最好选择 <code>Never</code> ,这样便不会因为拒绝交出密码而被指控蔑视法庭或妨碍司法。</strong></em></span></p> | |
</li> | |
</ul> | |
</li> | |
<li><p>点击左侧的 <code>Restrictions</code> 选项卡,首先点击 <strong><code>Configure</code></strong><br> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/18.png" width="1038" height="974" layout="responsive"></amp-img></div> | |
</li> | |
<li><p>接下来,可以看到大量的设置,比如禁止某些应用程序,设置密码,Touch ID,Face ID 限制等等。找到并取消勾选 <strong><code>Allow pairing with non-Configurator hosts</code></strong> </p> | |
<p> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/Snipaste_2019-10-12_23-54-26.png" width="926" height="862" layout="responsive"></amp-img></div><br> 也可以继续做一些您喜欢的设置 | |
</li> | |
<li><p>退出并保存描述文件,在主界面中,右键点击您的 iOS 设备,选择 <strong><code>Add</code></strong> -> <strong><code>Profiles...</code></strong>,选择刚刚保存的描述文件。</p> | |
</li> | |
</ol> | |
<p> 此时便成功将锁定了配对的设备,现在拿你的手机到其他电脑上去试试看吧~你会得到这样的提示<br> </p><div class="amp-img-wrapper"><amp-img src="/source/pair-locking/22.png" width="1100" height="725" layout="responsive"></amp-img></div><br> 当然取证工具也同样无法连接到您的设备。o(<em> ̄▽ ̄</em>)ブ🎉<br> 如果以后要删除此限制,则可以点击 <strong><code>Remove</code></strong> -> <strong><code>Profiles...</code></strong> 操作与 添加的步骤(14) 类似。 | |
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>锁定配对的优点是非常好的配对安全性。实际上,为了删除监管配置文件,入侵者将需要擦除设备中的内容。如果有人为了执行取证提取或任何其他类型的分析,想解除配对锁定,则需要对同时拥有您的 iOS 设备和计算机的控制权并具有对它们的完全访问权限。</p> | |
<p>但是同时缺点也十分的明显,当您出门在外时,不能简单的与其他设备进行配对连接。尽管您可以将配置文件设置成可删除的状态,但是您需要再重新使用电脑来安装配置文件来锁定配对。与其他设备配对必须是一个明智的决定,并且需要花费一些时间来验证您是否有权确认该设备的内容。</p> | |
<p>配对锁定是一项有用的功能,可保护您免受侵入性设备搜索的侵害。</p> | |
<p>虽然让我在手机上拥有这种保护更加安全,但是没有什么技术可以解决最终的政策问题。我们需要的是现代化的隐私法律法规。</p> | |
<h2 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"></a>参考链接</h2><ul> | |
<li><a href="https://www.zdziarski.com/blog/?p=2589" target="_blank" rel="noopener">Counter-Forensics: Pair-Lock Your Device with Apple’s Configurator</a></li> | |
<li><a href="https://arkadiyt.com/2019/10/07/pair-locking-your-iphone-with-configurator-2/" target="_blank" rel="noopener">Pair Locking your iPhone with Configurator 2</a></li> | |
<li><a href="https://twitter.com/axi0mX/status/1177542201670168576" target="_blank" rel="noopener">axi0mX’s Twitter</a></li> | |
<li><a href="https://www.engadget.com/2019/09/27/apple-iphone-exploit-jailbreak/" target="_blank" rel="noopener">iPhone exploit could allow permanent jailbreak for millions of devices</a></li> | |
<li><a href="https://cn.engadget.com/2019/09/28/apple-iphone-exploit-jailbreak/" target="_blank" rel="noopener">iPhone 的 bootrom 漏洞让永久越狱成为可能</a></li> | |
</ul> | |
<p><a id="hexo-amp-id-6" href="https://unsplash.com/@jankronies?utm_medium=referral&utm_campaign=photographer-credit&utm_content=creditBadge" target="_blank" rel="noopener noreferrer" title="Download free do whatever you want high-resolution photos from Jan Kronies"><span id="hexo-amp-id-7"><svg id="hexo-amp-id-8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><title>unsplash-logo</title><path d="M10 9V0h12v9H10zm12 5h10v18H0V14h10v9h12v-9z"/></svg></span><span id="hexo-amp-id-9">Jan Kronies</span></a></p> | |
<!-- google Adsense --> | |
<!-- google Adsense Matched content --> | |
</div> | |
</article> | |
<!-- TAGS --> | |
<div class="meta-content"> | |
<div class="widget"> | |
<h6 class="tag"><span class="fa fa-fw fa-tag"></span>TAGS</h6> | |
<div class="article-tag"> | |
<ul class="article-tag-list"> | |
<li class="article-tag-list-item"> | |
<a class="article-tag-list-link" href="/tags/Secure/"> | |
Secure | |
</a> | |
</li> | |
<li class="article-tag-list-item"> | |
<a class="article-tag-list-link" href="/tags/配置/"> | |
配置 | |
</a> | |
</li> | |
<li class="article-tag-list-item"> | |
<a class="article-tag-list-link" href="/tags/iPhone/"> | |
iPhone | |
</a> | |
</li> | |
<li class="article-tag-list-item"> | |
<a class="article-tag-list-link" href="/tags/Exploit/"> | |
Exploit | |
</a> | |
</li> | |
<li class="article-tag-list-item"> | |
<a class="article-tag-list-link" href="/tags/Apple/"> | |
Apple | |
</a> | |
</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
<!-- Categories posts --> | |
<!-- Detailed categories posts --> | |
<!-- Latests --> | |
</div> | |
<footer id="footer"> | |
<div class="copyright-tool"> | |
<div class="copyright-title"> | |
<span> | |
© 2019 Vigorous Pro | |
</span> | |
</div> | |
<div class="copyright-license"> | |
<aside> | |
Powered by <a href="https://hexo.io/">Hexo</a>. <a href="https://github.com/tea3/hexo-generator-amp">AMP-Theme</a> designed by <a href="https://github.com/tea3/">tea</a>. | |
</aside> | |
</div> | |
</div> | |
</footer> | |
<div id="totop"><a href="#"></a></div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment