分类目录归档:未分类

微信H5手机网页开发—快速入门

序言

随着微信(WeChat)的盛行,一个流行的开发工作也随之诞生——微信公众号开发,而其中最主要的部分,当属微信H5网页开发。
虽然网页开发大家并不陌生,但层出不穷的手机型号,导致了微信网页开发中遇到的最难的问题——手机分辨率适应。
实际上,针对手机分辨率的问题,也有相应的设置来解决,下面由我带领大家来揭秘这让人头疼的微信H5网页开发。希望各位能够享受这段文字旅程并有所收获。

前言

为什么写本文
本人在微信开发这条路也已经走了将近3年了,在H5网页制作方面也曾希望有高人能指点一番,然而并没有遇到。很多问题虽然网上有各种资料可以查询,但是都不够系统,因工作问题,没有时间系统的去学习一番,故而一致都是在摸索中前进,经点滴积累,现在我希望把我的经验分享给大家,希望大家阅读愉快。
本文的主要内容和特色
本文将以介绍为基本开篇,逐步引出在微信浏览器下开发我们的H5网页,以一个微信商城案例,循序渐进,一步步为大家剖析在微信浏览器下的H5网页设计原理和方法。
本文面向的读者
本书希望面向的读者可以是已经从事web开发的各类开发人员和对web开发感兴趣的初学者。

第一章 了解HTML5

1.1 什么是HTML5

HTML5 将成为 HTML、XHTML 以及 HTML DOM 的新标准。
HTML 的上一个版本诞生于 1999 年。自从那以后,Web 世界已经经历了巨变。
HTML5 仍处于完善之中。然而,大部分现代浏览器已经具备了某些 HTML5 支持。

1.2 HTML5是如何起步的

HTML5 是 W3C 与 WHATWG 合作的结果。
编者注:W3C 指 World Wide Web Consortium,万维网联盟。
编者注:WHATWG 指 Web Hypertext Application Technology Working Group。
WHATWG 致力于 web 表单和应用程序,而 W3C 专注于 XHTML 2.0。在 2006 年,双方决定进行合作,来创建一个新版本的 HTML。
为 HTML5 建立的一些规则:

  • 新特性应该基于 HTML、CSS、DOM 以及 JavaScript。
  • 减少对外部插件的需求(比如 Flash)
  • 更优秀的错误处理
  • 更多取代脚本的标记
  • HTML5 应该独立于设备
  • 开发进程应对公众透明

1.3 新特性

HTML5 中的一些有趣的新特性:

  • 用于绘画的 canvas 元素
  • 用于媒介回放的 video 和 audio 元素
  • 对本地离线存储的更好的支持
  • 新的特殊内容元素,比如 article、footer、header、nav、section
  • 新的表单控件,比如 calendar、date、time、email、url、search

1.4 HTML5的一个实例

<!DOCTYPE HTML>
<html>
<body>
<video width="320" height="240" controls="controls">
  <source src="movie.ogg" type="video/ogg">
  <source src="movie.mp4" type="video/mp4">
  Your browser does not support the video tag。
</video>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.5 本章小结

本章先带领大家了解html5的基本来历,接下来以案例“微信商城”分模块,一步一步揭开HTML开发的神秘面纱。

第二章 header里标签的奥秘

2.1 HTML head 元素

head 元素是所有头部元素的容器。head 内的元素可包含脚本,指示浏览器在何处可以找到样式表,提供元信息,等等。
以下标签都可以添加到 head 部分:title、base、link、meta、script 以及 style。

2.2 HTML title 元素

title 标签定义文档的标题。
title 元素在所有 HTML/XHTML 文档中都是必需的。
title 元素能够:

  • 定义浏览器工具栏中的标题
  • 提供页面被添加到收藏夹时显示的标题
  • 显示在搜索引擎结果中的页面标题

2.3 HTML base 元素

base 标签为页面上的所有链接规定默认地址或默认目标(target):

<head>
<base href="http://www.w3school.com.cn/images/" />
<base target="_blank" />
</head>
  • 1
  • 2
  • 3
  • 4
  • 5

link 标签定义文档与外部资源之间的关系。
link 标签最常用于连接样式表:

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
  • 1
  • 2
  • 3
  • 4

2.5 HTML style 元素

style 标签用于为 HTML 文档定义样式信息。
您可以在 style 元素内规定 HTML 元素在浏览器中呈现的样式:

<head>
<style type="text/css">
body {background-color:yellow}
p {color:blue}
</style>
</head>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.6 HTML meta 元素

元数据(metadata)是关于数据的信息。
meta 标签提供关于 HTML 文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。
典型的情况是,meta 元素被用于规定页面的描述、关键词、文档的作者、最后修改时间以及其他元数据。
meta 标签始终位于 head 元素中。
元数据可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。

2.7 本章小结

本章为大家简单的罗列了在网页开发中head部分常见的标签,在下一章节中,我们将详细为大家解释meta标签的奥秘。

第三章 HTML Meta 常用的元素

3.1 meta 语法

定义和用法:name 属性把 content 属性连接到 name。
语法:name=author|description|keywords|generator|revised|others

3.2 meta之keywords元素

说明:为搜索引擎提供的关键字列表
用法:<meta name="keywords" content="关键词1,关键词2,关键词3,关键词4,……">

3.3 meta之description元素

说明:用来告诉搜索引擎你的网站主要内容
用法:<meta name="description" content="你网页的简述">

3.4 meta之author元素

说明:标注网页的作者或制作组
用法:<meta name="author" content="K神,K神工作室">
注意:content可以是:你或你的制作组的名字,或Email

3.5 meta之copyright元素

说明:标注版权
用法:<Meta name="copyright" content="本页版权归K神工作室所有。All Rights Reserved">

3.6 meta之generator元素

说明:编辑器的说明
用法:<meta name="generator" content="PCDATA|FrontPage|">

3.7 meta之revisit-after

说明:用来控制搜索引擎抓取网站的频率,告诉搜索引擎多长时间来网站抓取一次
用法:<meta name="revisit-after" content="7 days">

3.8 本章小结

本章详细给出了常用的HTML种meta标签和用法。这些都是web开发中的基本知识,为手机网页开发做准备,下面我们先直接进入手机网页开发,看看需要对head进行哪些特殊的定义呢?

第四章 手机网页开发之head必修课

4.1 你知道手机的分辨率吗?

在手机参数中,往往会看到,手机屏幕分辨率这一个参数,这个参数是一个怎么样的意思呢,关于分辨率你又了解多少呢?
屏幕物理尺寸:屏幕对角线的实际尺寸,如2.4寸,3.5寸等等。
屏幕分辨率:屏幕所能显示的像素的多少,如320*480等。
屏幕密度(pix per inch):以每英寸的像素数。每英寸的分辨率数。如160dpi。
物理尺寸决定了屏幕的实际尺寸,而分辨率可以表示屏幕上可以呈现的像素点数,屏幕密度决定了屏幕的精细程度。
相同的屏幕大小如果分辨率高,则屏幕元素更精细,一个界面元素在屏幕里的实际尺寸,在密度较小的屏上,界面元素的实际尺寸就会更大一些,反之亦然。
所以在手机界面布局中,除了元素的像素值外,考虑元素的实际尺寸也非常重要,因为人眼看到的是实际尺寸。
下面列出了常用的手机分辨率:

  • 3.5英寸,480×320(HVGA),165PPI
  • 3.5英寸,800×480(WVGA),267PPI
  • 3.5英寸,854×480(WVGA),280PPI
  • 3.5英寸,960×640(DVGA),326PPI(苹果iphone4)
  • 3.7英寸,800×480(WVGA),252PPI
  • 3.7英寸,800×480(WVGA),252PPI
  • 3.7英寸,960×540(qHD),298PPI
  • 4.0英寸,800×480(WVGA),233PPI
  • 4.0英寸,854×480(WVGA),245PPI
  • 4.0英寸,960×540(qHD),275PPI
  • 4.0英寸,1136×640(HD),330PPI(苹果iphone5)
  • 4.2英寸,960×540(qHD),262PPI
  • 4.3英寸,800×480(WVGA) ,217PPI
  • 4.3英寸,960×640(qHD),268PPI
  • 4.3英寸,960×540(qHD),256PPI
  • 4.3英寸,1280×720(HD),342PPI
  • 4.5英寸,960*540(qHD),245PPI
  • 4.5英寸,1280×720(HD),326PPI

4.2 如何编写自适应各种手机分辨率的网页呢?

案例一:2010年,Ethan Marcotte提出了“自适应网页设计”(responsive web design),指可以自动识别屏幕宽度、并做出相应调整的网页设计。
案例二:利用@media screen实现网页布局的自适应,就是针对不同的分辨率调用不同的样式文件。
案例三:使用body的zoom属性,对网页进行缩放。
案例四:使用viewport的initial-scale值,对网页进行缩放。
我想对以上的做法表示无奈,真的什么招都用尽了,下面我来给大家详细分析一下网页开发中遇到的坑吧!

4.3 手机网页必学标签meta之viewport

viewport 语法介绍

<meta name="viewport"
content="
    height = [pixel_value | device-height] ,
    width = [pixel_value | device-width ] ,
    initial-scale = float_value ,
    minimum-scale = float_value ,
    maximum-scale = float_value ,
    user-scalable = [yes | no] ,
    target-densitydpi = [dpi_value | device-dpi | high-dpi | medium-dpi | low-dpi]
"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

width
控制 viewport 的大小,可以指定的一个值或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
height
和 width 相对应,指定高度。
initial-scale
初始缩放。即页面初始缩放程度。这是一个浮点值,是页面大小的一个乘数。例如,如果你设置初始缩放为“1.0”,那么,web页面在展现的时候就会以target density分辨率的1:1来展现。如果你设置为“2.0”,那么这个页面就会放大为2倍。
maximum-scale
最大缩放。即允许的最大缩放程度。这也是一个浮点值,用以指出页面大小与屏幕大小相比的最大乘数。例如,如果你将这个值设置为“2.0”,那么这个页面与target size相比,最多能放大2倍。
user-scalable
用户调整缩放。即用户是否能改变页面缩放程度。如果设置为yes则是允许用户对其进行改变,反之为no。默认值是yes。如果你将其设置为no,那么minimum-scale 和 maximum-scale都将被忽略,因为根本不可能缩放。
所有的缩放值都必须在0.01–10的范围之内。
示例1:设置屏幕宽度为设备宽度,禁止用户手动调整缩放
<meta name="viewport" content="width=device-width,user-scalable=no" />
示例2:设置屏幕密度为高频,中频,低频自动缩放,禁止用户手动调整缩放
<meta name="viewport" content="width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

target-densitydpi
一个屏幕像素密度是由屏幕分辨率决定的,通常定义为每英寸点的数量(dpi)。Android支持三种屏幕像素密度:低像素密度,中像素密度,高像素密度。一个低像素密度的屏幕每英寸上的像素点更少,而一个高像素密度的屏幕每英寸上的像素点更多。Android Browser和WebView默认屏幕为中像素密度。

  • device-dpi –使用设备原本的 dpi 作为目标 dp。 不会发生默认缩放。
  • high-dpi – 使用hdpi 作为目标 dpi。 中等像素密度和低像素密度设备相应缩小。
  • medium-dpi – 使用mdpi作为目标 dpi。 高像素密度设备相应放大, 像素密度设备相应缩小。 这是默认的target density.
  • low-dpi -使用mdpi作为目标 dpi。中等像素密度和高像素密度设备相应放大。
  • dpi-value – 指定一个具体的dpi 值作为target dpi. 这个值的范围必须在70–400之间
    编者注:可惜的是目前手机浏览器已经放弃了target-densitydpi属性

4.4 未完待续

VULTR各节点测试地址[官方]

Location
地理位置
Hostname
官方测试服务器ip
Download Test File
下载测试文件
(Asia)Tokyo, Japan[日本 东京] hnd-jp-ping.vultr.com 100Mb 1000Mb
Singapore[新加坡] sgp-ping.vultr.com 100Mb 1000Mb
(AU) Sydney, Australia[悉尼] syd-au-ping.vultr.com 100Mb 1000Mb
(EU) Frankfurt, DE[德国 法兰克福] fra-de-ping.vultr.com 100Mb 1000Mb
(EU) Amsterdam, NL[荷兰 阿姆斯特丹] ams-nl-ping.vultr.com 100Mb 1000Mb
(EU) London, UK[英国 伦敦] lon-gb-ping.vultr.com 100Mb 1000Mb
(EU) Paris, France[法国 巴黎] par-fr-ping.vultr.com 100Mb 1000Mb
Seattle, Washington[美东 华盛顿州 西雅图] wa-us-ping.vultr.com 100Mb 1000Mb
Silicon Valley, Ca[美西 加州 硅谷] sjo-ca-us-ping.vultr.com 100Mb 1000Mb
Los Angeles, Ca[美西 加州 洛杉矶(推荐)] lax-ca-us-ping.vultr.com 100Mb 1000Mb
Chicago, Illinois[美东 芝加哥] il-us-ping.vultr.com 100Mb 1000Mb
Dallas, Texas[美中 德克萨斯州 达拉斯] tx-us-ping.vultr.com 100Mb 1000Mb
New York / New Jersey[美东 新泽西] nj-us-ping.vultr.com 100Mb 1000Mb
Atlanta, Georgiaa[美东 乔治亚州 亚特兰大] ga-us-ping.vultr.com 100Mb 1000Mb
Miami, Florida[美东 佛罗里达州 迈阿密] fl-us-ping.vultr.com 100Mb 1000Mb

如何在 CentOS 7上部署 Google BBR

轉貼來源
https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7

 

BBR(瓶頸帶寬和 RTT)是一種新的擁塞控制算法,由 Google 提供給 Linux 內核 TCP 堆棧。
使用 BBR,Linux 服務器可以顯著增加吞吐量並減少連接的延遲。
此外,由於該算法只需要在發送方更新,而不是在網絡中或在接收端,所以很容易部署 BBR。

在本文中,我將向您展示如何在 Vultr CentOS 7 KVM 服務器實例上部署 BBR。

先決條件

Vultr CentOS 7 x64 服​​務器實例。
一個 sudo 用戶。
第1步:使用ELRepo RPM存儲庫升級內核

為了使用 BBR,您需要將 CentOS 7 機器的內核升級到 4.9.0。您可以使用 ELRepo RPM 存儲庫輕鬆完成此操作。

升級之前,您可以查看當前的內核:
uname -r

這個命令應該輸出一個類似於:

3.10.0-514.2.2.el7.x86_64

如你所見,目前的內核是 3.10.0。

安裝 ELRepo repo:
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

使用ELRepo repo安裝4.9.0內核:
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

確認結果:
rpm -qa | grep kernel

如果安裝成功,您應該 kernel-ml-4.9.0-1.el7.elrepo.x86_64 在輸出列表中看到:

kernel-ml-4.9.0-1.el7.elrepo.x86_64
kernel-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.2.2.el7.x86_64
kernel-tools-3.10.0-514.2.2.el7.x86_64
kernel-3.10.0-514.2.2.el7.x86_64

現在,您需要通過設置默認的 grub2 引導項來啟用 4.9.0 內核。

顯示grub2菜單中的所有條目:
sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

結果應該類似於:

CentOS Linux 7 Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.9.0-1.el7.elrepo.x86_64)
CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-bf94f46c6bd04792a6a42c91bae645f7) 7 (Core)

由於 0 行計數開始,4.9.0 內核條目位於第二行,請將默認引導項設置為 1:
sudo grub2-set-default 1

重啟系統:
sudo shutdown -r now

當服務器重新聯機時,請重新登錄並重新運行 uname 命令,以確認您正在使用正確的內核:
uname -r

你應該看到如下結果:

4.9.0-1.el7.elrepo.x86_64

步驟2:啟用 BBR

為了啟用 BBR 算法,您需要修改 sysctl 配置如下:
echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

現在,您可以使用以下命令確認啟用 BBR:
sudo sysctl net.ipv4.tcp_available_congestion_control

輸出應該類似於:

net.ipv4.tcp_available_congestion_control = bbr cubic reno

接下來,驗證:
sudo sysctl -n net.ipv4.tcp_congestion_control

輸出應為:

bbr

最後,檢查內核模塊是否加載:
lsmod | grep bbr

輸出將類似於:

tcp_bbr 16384 0

步驟3(可選):測試網絡性能提升

為了測試 BBR 的網絡性能增強,您可以在 Web 服務器目錄中創建一個文件進行下載,然後從台式機上的 Web 瀏覽器測試下載速度。
sudo yum install httpd -y
sudo systemctl start httpd.service
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
cd /var/www/html
sudo dd if=/dev/zero of=500mb.zip bs=1024k count=500

最後,http://[your-server-IP]/500mb.zip 從桌面計算機上的 Web 瀏覽器訪問 URL,然後評估下載速度。

 


 

下載 speedtest 測速文件
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli

執行 speedtest 就近測速,並產生結果分享圖
./speedtest-cli --share

或是查找其他國家地區的代號
./speedtest-cli --list | grep Taiwan 台灣
./speedtest-cli --list | grep Taipei 台北

指定的伺服器測速,並產生結果分享圖
./speedtest-cli --server=3967 --share

Windows激活之路:巧用Win7为Win10申请数字许可证激活

Windows激活之路:巧用Win7为Win10申请数字许可证激活

利用Windows 7 给 Windows 10 洗白的方法,博主介绍了挺多了。

Windows激活之路:盗版Windows 7 升级到 Windows 10专业版

Windows激活之路:盗版升级到正版方法(已失效)

本文再给大家介绍一种方法,略有点麻烦!喜欢折腾的大佬可以参考一下!!

如果懒的折腾可以淘宝上直接花几块钱买一个激活码。

 

操作步骤

 

1)首先保证你的当前win7是永久激活状态的(盗版正版无所谓都可以,激活工具网上一大把)
2)然后下载和你当前win7版本对应的win10镜像,(纯净版官方原版镜像可以去i tell you下载)
3)在 Win10 镜像里的 Sources 文件夹下找到名为「gatherosstate.exe」复制到Win7的电脑运行 稍等片刻,会生成一个「GenuineTicket.xml」的文件 保存这个文件

 

4)然后正常方法安装Win10系统,安装过程中无需输入序列号 直接跳过。

 

5)安装完成后按将上面生成的「GenuineTicket.xml」复制到 ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket

PS: 找不到目录?可以按下图操作搜索一下!

 

 

6)放入此文件夹中之后重启系统完成激活!

 

特别提醒

1)如果你Win7是家庭版 那么win10也要装家庭版 ,win7是旗舰版或专业版 win10就要装Win10专业版!

2)该方式激活的Win10 是永久激活,重装系统后自动激活系统。

3)获取「GenuineTicket.xml」后,可以升级安装Win10 ,也可以格式化后全新新安装Win10!

 

 

 

相关资源

Win 7 专业版:ed2k://|file|cn_windows_7_professional_x64_dvd_x15-65791.iso|3341268992|3474800521D169FBF3F5E527CD835156|/

 

Win10专业版:ed2k://|file|cn_windows_10_multiple_editions_version_1703_updated_march_2017_x64_dvd_10194190.iso|458

从 wireshark 抓包开始学习 https

导语

目前互联网大量web的应用层协议从http迁移到了https,https已经在越来越多的场合替换http协议。近期由于业务需要,我们通过Wireshark对https的请求进行了一次抓包分析,同时也了解了更多https相关知识,整理出来和大家一起学习。

一、概述

到底什么是HTTPS呢?简单而言,HTTPS是使用TLS/SSL加密的HTTP协议。HTTP协议通过明文进行信息传输,存在信息窃听、信息篡改和身份冒充的风险,而协议TLS/SSL具有信息加密、完整性校验和身份验证的功能,可以避免此类问题。

TLS/SSL全称为:安全传输层协议(Transport Layer Security),是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议,所以使用HTTPS基本上不需要对HTTP页面进行太多的改造。

(注:大多数人将HTTPS和SSL(Secure Sockets Layer)联系起来,SSL是Netscape公司在90年代中期发明的。随着时间的推移这种说法就渐渐变得不准确了。由于Netscape失去了市场份额,它将SSL的维护工作移交给因特网工程任务组(IETF)。第一个后Netscape版本被重新命名为安全传输层协议(TLS),TLS1.0是在1999年1月份发布的。由于TLS诞生都10年了, 所以真正的“SSL”传输其实是几乎见不到.)

二、Wireshark看TLS握手

下面是我们抓包数据中的一次https请求的建立过程:

很明显,前3条消息对应的是TCP通信的三次握手的过程。(需要说明的是,根据RFC2818,一旦出现“https”就意味着TCP需要连接目标端的443号端口)

Client Hello

从这条消息开始,开始TLS协议的握手过程

Version

我们可以在Client Hello消息中,看到两个Version信息,根据RFC5246它们分别是:第一处表示本次通信使用的TLS版本为1.0;第二处表示客户端期望使用的TLS版本为1.2。(注:版本协商,客户端会提供它能支持的最高的TLS版本,由服务端确认最终使用的TLS版本)

Random

前面的四个字节是当前时间,它的格式是Unix时间戳。跟随其后是28字节的随机数,它将在后面过程中使用。

Session ID

在这里它是空值或者是null。如果在几秒前连接过该服务,它就可能继续使用之前的会话,不需要重新执行整个“握手”过程。在我们的抓包内容中,由于是第一次连接,所以Session ID长度为0。

Cipher Suites

它是请求发送端所支持的密码算法的一个列表。这里看到请求发起方提供了22个可供选择的选项。关于CipherSuite的解释,我们在后面篇章会有更详细的介绍。

Extension:server name

这个字段包含了我们请求要发往的服务器的域名信息,它作用有些类似HTTP协议header中的“Host”,这样就允许了Internet公司出于成本的考虑将上百个网站绑定在同一IP 地址上。

ServerHello

其中有服务端对Client Hello回应的一些关键信息:

Random

同Client Hello类似,它返回了服务端的当前时间,以及服务端产生的一个28字节随机数

Version

服务端确认通信使用的TLS版本:TLS1.2

Cipher Suite

服务端选择的通信使用的加密协议套件:

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Session ID

建立的会话标识ID,有了它,随后重连服务器就不需要再执行一个完整的握手过程了。

Certificate&Server Key Exchange&Server Hello Done

在同一条消息中包含了:服务端返回证书,交换公钥以及“Server Hello”结束三部分内容。客户端收到服务证书后,会先验证证书的合法性,如果验证通过才会进行后续通信。

Client Key Exchange&Change Cipher Spec、Encrypted Handshake Message(Finished)

这里三条客户端发送的消息:交换公钥,编码改变通知 和 握手结束消息。 ChangeCipher Spec 、Multipiple Handshake Messages(Finished)

这是TLS握手过程的最后一条消息,内容为:服务端编码改变通知 和 握手结束消息。至此,TLS通信的整个握手过程已经完成。

要注意,在Finished消息中包含两部分信息,finish标识和hash校验信息。但是无论客户端还是服务端,在Change Cipher Spec之后的内容都已经通过加密方式传输了,所以Finished中具体内容已经无法通过Wireshark直接查看。 TLS通信过程可以总结为:

客户端将可支持TLS版本、加密套件列表、随机数等,通过Hello 结构体传给服务端 服务端将选定的TLS版本、使用的加密套件和服务端产生的随机数通过Hello结构体回传给客户端。同时也会把证书传给客户端,证书里面同时带有公钥 客户端验证证书后,会计算产生随机数字Pre-master secret并用证书公钥加密后发给服务器,同时通过计算获得协商密钥 服务端使用私钥解密出Pre-master secret,并通过计算获得协商密钥 最后双方使用对称加密的密钥进行加解密传输

三、CipherSuite的介绍

在基本了解TLS的通信过程之后,我们再来了解一下CipherSuite的概念。每一个CipherSuite都是4个算法类型的组合:

1个authentication (认证)算法 1个encryption(加密)算法 1个message authentication code (消息认证码 简称MAC)算法 1个key exchange(密钥交换)算法 显然,这4个算法是用于实现信息加密、完整性校验 和 身份验证的功能

从我们的抓包内容中可以看到:服务端最终选择的加密套件为:

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

对应到CipherSuite算法类型后:

CipherSuite算法类型 示例中对应算法 常见算法名称 认证算法 RSA RSA(主流),DSA,ECDSA 加密算法 AES_256_GCM AES128/256 bit,加密模式gcm/ cbc/ ecb

RC4和3DES(不推荐),DES(已淘汰)

MAC算法 SHA384 SHA256, SHA384, SHA1 密钥交换算法 ECDHE DHE,ECDHE (注:关于cipher suite中各算法的流行趋势,感兴趣的同学可以自行检索)

关于CipherSuite协商过程:https消息内容是通过CipherSuite来指定过程中使用的算法的服务端大多数情况下,会从客户端Cipher Suites中按排列顺序从上往下进行选择,因为排列靠前意味着安全性越高算法的选择会一定程度上影响https连接的性能,在某些场景下服务端可以综合考虑安全性和效率问题,选择更加合适的算法组合。

四、一些数学相关的知识

对称加密 和 非对称加密

对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法。相应的非对称加密算法中加密和解密使用两种不同的密钥,其中,公钥是公开的,私钥由个人持有,必须保密。

HTTPS 的通信过程中只在握手阶段使用了非对称加密,后面的通信过程均使用的对称加密。尽管非对称加密相比对称加密更加安全,但也存在两个明显缺点:

CPU 计算资源消耗大。一次完全 TLS 握手,密钥交换时的非对称解密计算量占整个握手过程的 90% 以上,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。 非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的RSA公钥长度是2048位,意味着待加密内容不能超过256字节。所以非对称加密目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。 非对称密钥交换算法是整个 HTTPS 得以安全的基石,充分理解非对称密钥交换算法是理解 HTTPS 协议和功能的关键。下面我们选取其中常见的两种非对称算法进行介绍:

RSA算法简介

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的”非对称加密算法”。

公钥与密钥的产生

假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥:

随意选择两个大的质数p和q,p不等于q,计算N=pq。

根据欧拉函数,求得r =φ(N)=φ(p)φ(q)= (p-1)(q-1)

选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。(模反元素存在,当且仅当e与r互质)

将 p 和 q 的记录销毁。

(N,e)是公钥,(N,d)是私钥。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。

加密消息

假设Bob想给Alice送一个消息m,他知道Alice产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N,且与N互质的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c: n^e ≡ c (mod N)

计算c并不复杂。Bob算出c后就可以将它传递给Alice。

解密消息

Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n:

c^d ≡ n (mod N)

得到n后,她可以将原来的信息m重新复原。

解码的原理是

c^d ≡ n^(e·d)(mod N)

已知e·d ≡ 1 (mod r),即e·d =1 +hφ(N)。由欧拉定理可得:

n ^(e·d) =n^ (1 +hφ(N))=n·((n^φ(N))^h)≡(n(1)^h)(modN) ≡ n (mod N)

签名消息

RSA也可以用来为一个消息署名。假如Alice想给Bob传递一个署名的消息的话,那么她可以为她的消息计算一个散列值(Message digest),然后用她的私钥加密这个散列值并将这个“署名”加在消息的后面。这个消息只有用她的公钥才能被解密。Bob获得这个消息后可以用Alice的公钥解密这个散列值,然后将这个数据与他自己为这个消息计算的散列值相比较。假如两者相符的话,那么他就可以知道发信人持有甲的密钥,以及这个消息在传播路径上没有被篡改过。

通过一次简单实践更好的了解RSA

  1. 假设p = 2,q = 5(p,q都是素数即可),则N = pq = 10;
  2. 得到:r = (p-1)(q-1) = (2-1)(5-1) = 4;
  3. 根据模反元素公式,可以得出,e·d ≡ 1 (mod 4),即e·d = 4n+1 (n为正整数);
  4. 假设n=5,则e·d = 21,且e、d为正整数,并且e与r互质,则e = 7,d = 3;
  5. 获得公钥和密钥:公钥为(N, e) = (10, 7),密钥为(N, d) = (10, 3);
  6. 假设要传输的数字为2,通过公钥加密后为:(2^7)(mod 10) = 8;
  7. 通过密钥解密:(8^3)(mod 10) = 512(mod 10) = 2,即获得结果; ECDHE

目前大部分 HTTPS 流量是使用 ECDHE进行密钥交换。

在介绍ECDHE之前,先来看一下ECDH,它其实是使用椭圆曲线加密技术(ECC)的 DH密钥交换(Diffie-Hellman)算法。DH密钥交换算法,可以让交换双方在不共享任何秘密的情况下协商出一个密钥。ECC则是建立在基于椭圆曲线的离散对数问题上的密码体制,在相同的密钥长度下,其安全性比RSA更高。

而ECDHE则是ECDH的Ephemeral version,它会为每次握手过程分配一个不同的DH key,从而提供前向安全性。实际上,在HTTP/2中允许使用的Cipher Suite必须采用具有前向安全性的密钥交换算法。

五、总结

https实际就是在TCP层与http层之间加入了TLS/SSL来解决安全问题的。

在进行应用数据传输之前,TLS需要通过握手过程来协商安全通信所需的相关参数。

整个通信过程中主要用到散列、对称加密、非对称加密和证书等相关技术,来解决客户端与服务器数据传输中各种安全风险问题,从而达到保证整个通信过程的安全。

六、参考链接

http://www.infoq.com/cn/articles/HTTPS-Connection-Jeff-Moser

https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/

https://tools.ietf.org/html/rfc5246

https://blog.helong.info/blog/2015/01/23/ssl_tls_ciphersuite_intro/

wireshark学习笔记(九)——HTTPS协议

HTTPS的工作流程

使用HTTPS协议工作时,服务端和客户端的信息传输都会进行加密,所以传输的数据都是加密后的数据。HTTPS的工作流程如下:

1、客户端使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。

2、Web服务器收到客户端的请求后,会将网站包含有公钥的证书信息传送一份给客户端。

3、客户端浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

5、Web服务器利用自己的私钥解密出会话密钥。

6、Web服务器利用会话密钥加密与客户端之间的通信。

HTTPS数据包的捕获

由于HTTPS是建立在TCP协议之上的,所以我们在捕获之前,可以设置筛选器为TCP。开始捕获后,可以通过登录QQ邮箱的方式,捕获到含有HTTPS协议的数据包。如下图所示(Lab15-1.pcapng):

在这个界面的Info列中,可以看到这些数据包都是使用HTTPS协议传输的。而在Protocol列中,可以看到SSL、TCP以及TLSv1.1等协议。其中的TLS(Transport Layer Security)其实是SSL的升级版,是为网络通信提供安全及数据完整性的一种安全协议。二者都是在传输层对网络连接进行加密的。

为了便于进一步的分析,这里我们依旧可以采用前几次课中说过的,通过着色后提取数据包的方式,将我们需要的数据包提取出来,这里不再赘述。

HTTPS数据包的分析

这里我们打开Lab15-1-https.pcapng这个实验文件,也就是经过提取后的文件进行分析:

首先可以发现1到3号数据包是TCP连接建立时的三次握手的过程。接下来从第4个数据包开始,其实就是SSL握手过程中所产生的数据包,也就是使用HTTPS协议加密的信息。

对于第4个数据包,包含有客户端向服务器发送的Client Hello信息,以便开始一个新的加密会话连接。展开SSL区段,可以看到客户端支持的TLS的版本(Version);生成的随机数(Random,以便用于生成对话密钥);Cipher Suites的值是15,说明支持15种加密算法;支持的压缩方式(Compression)以及一些扩展(Extension)等:

当服务器收到客户端的请求后,就会向客户端发出响应,也就是Server Hello。对于我们这个捕获文件而言,第6个数据包就是服务器发送给客户端的确认信息,告诉客户端请求已经收到:

展开SSL数据段,可以看到服务器支持的TLS版本为1.1。也可以看到服务器生成的随机数,用于生成对话密钥。下面还有加密套件信息,这里的加密套件表示使用RSA公钥算法来验证证书以及交换密钥,用AES加密算法对数据进行加密,使用SHA算法来校验消息内容。

客户端收到服务器的响应后,首先验证服务器的证书。如果证书不是由可信任的机构颁发的,或者证书中的域名与实际域名不一致,或者证书已过期,就会向访问者显示一个警告,由访问者选择是否还要继续通信。如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送一些信息,包括用服务器公钥加密的随机数、编码改变通知和客户端握手结束通知等。服务器发送给客户端的数据包,如下图所示:

06

在Certificate区段中,保存有证书的详细信息。可以看到请求的网站、组织名、地区名、省名以及国家等的信息。紧接下来的signedCertificate是签名证书信息。“签名”的作用就在于,客户端(浏览器)在确定是否要信任一个网站时,就是通过证书判断的。所以每个证书上必须要有一份“签名”。最后一行Length的值为0,表示告诉客户端“Hello”过程已经完成,也就意味着服务器将不验证客户端的证书。

在客户端收到并验证服务器响应的证书后,将会把生成的密钥传给服务器,如下图所示:

在Client Key Exchange中,我们可以看到TLS的类型、版本、长度、握手协议、握手类型、长度、密钥交换算法客户端参数、公钥长度以及加密公钥等信息。而在其它的两个记录中,也有着类似的结构。

经过以上几个阶段,整个握手过程也就结束了。接下来客户端与服务器进入加密通信的阶段,就完全是使用普通的HTTP协议,但是会使用会话密钥来加密内容。用户可以发送通过TLS层使用RC4加密的HTTP的消息,也可以解密服务端发送来的由RC4加密的消息。此外还会通过哈希算法来验证消息是否被篡改。

在应用层,客户端向服务器发送的信息为:

可见,发送的数据都经过了加密处理。服务器响应客户端的信息,如下图所示:

可以看到,这也是使用了SSL进行加密。

HTTPS数据包的解密

HTTPS的数据包并不是绝对安全的,在一定的条件下也可以实现解密的操作,这里我们打开Lab15-2.cap实验文件:

可以看到,这里的数据包使用了SSLv3进行加密。为了实现解密,我们需要Lab15-2.key文件。为了便于寻找,这里我将这个文件放在了我的电脑中的C盘根目录下。之后在Wireshark中选择菜单栏的“Edit”->”Preferences”->”Protocols”->”SSL”->”RSA keys list”->”Edit”->”New”,之后进行如下填写:

之后点击OK,就可以实现解码了:

现在已经可以看到GET方法等信息。尽管我们对捕获文件进行了解码操作,但是并不意味着HTTPS不安全。因为解码所需要使用的密钥只能在服务器导出,不同的服务器的情况并不一样,因此想要破解HTTPS的数据包,是需要满足很多的条件的。

作者:kevinhuangk
链接:https://www.jianshu.com/p/f8e0b859749a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如何利用Wireshark解密SSL和TLS流量

英语版本:CTX116557 /   创建日期:2008年3月14日   /   更新日期:2012年11月29日

概要

本文介绍在Wireshark网络协议分析仪中如果解密SSL和TLS流量

要求

  • 以下基本知识:

• 网络追踪

• 网络,TCP/IP和SSL/TLS协议

• 证书和公私钥的使用

• Wireshark网络协议分析仪

  • Wireshark 软件支持SSL解密
  • 服务器或设备的私钥,私钥格式为PKCS#8 PEM

背景

在Wireshark中,SSL解析器功能完整,且支持高级特性,如提供加密私钥时的SSL解密。这对于使用SSL或TLS加密的思杰产品的排错有很大的帮助。

步骤

Wireshark 设置

  • 在Wireshark中,SSL解析器功能完整,且支持高级特性,如提供加密私钥时的SSL解密。这对于使用SSL或TLS加密的思杰产品的排错有很大的帮助。

  • 从菜单中选择Edit > Preferences.

  • 打开Preferences 窗口,展开Protocols.

  • 下拉选择 SSL.

  • 在RSA keys list后的空白处,提供以下信息<ip>,<port>,<protocol>,<key_file_name> (如上图所示)
    其中: 
    <ip>
    是具有私钥的服务器或设备的IP地址
    <port>
     是SSL/TLS端口号,通常是443
    <protocol>
     通常是HTTP
    <key_file_name>
     是私钥的名称和路径is the location and file name of the private key
    Note:
     逗号间没有符号。而且,使用分号间隔用于不同条目。
    “<ip>,<port>,<protocol>,<key_file_name>;<ip>,<port>,<protocol>,<key_file_name>;<ip>,<port>,<protocol>,<key_file_name>”.
  • SSL debug file后的空白处填入排错文件的路径和文件名
  • 点击 OK.
  • SSL则被解密(解密的SSL如下图所示)

私钥格式

Wireshark只要有私钥就可以解密SSL流量。私钥需要时decrypted PKCS#8 PEM format (RSA)格式。你可以打开私钥看它的内容。如果是二进制,则是DER格式,不能用于Wireshark解密。

你可以使用OpenSSL转换密钥格式。例如,可以将PKCS#8 DER格式的密钥转化成decrypted PKCS#8 PEM format (RSA)格式。在$提示符后输入如下指令:

openssl pkcs8 -nocrypt -in der.key -informat DER -out pem.key -outformat PEM

其中:

der.key 是DER密钥文件的文件名和路径

pem.key是pem文件的文件名和路径

解密后的decrypted PKCS#8 PEM format (RSA)格式如下:

注意密钥开头为:

—–BEGIN RSA PRIVATE KEY—–

如果开头为:

—–BEGIN ENCRYPTED PRIVATE KEY—–

则这个密钥需要用适当的方法解密。OpenSSL可以实现。

  • At the $ prompt, enter the command: 在$提示符,输入命令:
    openssl rsa

    If you enter this command without arguments, you are prompted as follows: 如果输入指令不带参数,则出现以下字样:
    read RSA key
  • 输入解密的私钥文件名

你可以在openssl rsa后加上参数,假如你知道私钥和解密的PEM的文件名。例如,私钥的文件名是myprivkey.pvk和解密的文件名问keyout.pem,命令如下:
openssl rsa –in myprivkeypvk -out keyout.pem

附加信息

http://www.wireshark.org/

http://wiki.wireshark.org/SSL

http://www.wireshark.org/docs/dfref/s/ssl.html

http://www.openssl.org/docs/apps/rsa.html#EXAMPLES

http://sourceforge.net/project/showfiles.php?group_id=23617&release_id=4880

手动获取我们所感兴趣网站X.509证书的一般方法

怎样手动获取我们所感兴趣网站的公钥证书?

一、通过抓包从网络协议数据流中获取

因为不管怎么说,在SSL协议的握手阶段,服务器必然会向客户端/浏览器发送自己的证书,所以我要详细说的这第一种获取证书的方法就是通过抓包从网络协议数据流中获取,这是一种通用性非常好的方法。以利用Wireshark 1.10(当然你若是有其他习惯的抓包工具也可以,只要支持SSL协议解析即可)获取account.test01.com的服务器证书例,方法如下:

(1)使用Wireshark 1.10把登录account.test01.com过程的HTTPS会话数据抓取下来(抓包的过程就不多说了,不会问度娘),为了后面定位数据包方便,抓包要尽量干净、完整;

(2)为了防止你还是不小心抓住了其他HTTPS会话的数据,你可以在Windows的命令提示符下用nslookup命令查询account.test01.com的IP地址,假如是192.168.1.57;

(3)使用 Ctrl+F 组合键打开查找对话框,By(查找类型)选择String,Search In(查找区域)选择Packet list,过滤条件写 Certificate ,设定完毕点 Find。如下图:

查找对话框

图1-1  查找对话框设置

(4)查看所查找到的数据包的源IP地址,是否为第(2)步中所获取的192.168.1.57,若是,则成功定位所需数据包;否则使用 Ctrl+N 组合键查看下一个符合查找条件的数据包,直到找到所需数据包为止;

证书所在数据包1

(a)证书和Sever Hello消息分开发

证书所在数据包2

(b)证书和Sever Hello消息在一个包里

图1-2 定位证书所在数据包的两种情况

(5)在上步定位好的数据包中找到证书链所在,如下图靛青色框所标注,

证书和证书链

图1-3 证书和证书链在数据包中所处的位置

        如上图,很多时候服务器发送的不止是自己的应用证书,而是会带上完整的证书链,其中第一个是本应用(即account.test01.com)的证书,图中黑色框标注。【应用证书的持有者,很多时候会使用通配符,例如本例中,account.test01.com所发送证书的持有者是*.test01.com,如果有类似于prox.test01.com,photo.test01.com之类的域名,他们也可以使用这个证书】

另外,图中灰色框标注了给该应用签名的子CA【即DigiCert High Assurance CA-3】的公钥证书,浅灰色框标注了上级CA【即DigiCert High Assurance EV Root CA】的公钥证书。

(6)Wireshark 提供了比较方便地方法从数据包中拷贝出证书,在上图中标注的证书所在位置右键,依次选择”copy”–>”Bytes”–>”Hex Stream”,获取16进制流形式的证书文件。如下图:

证书拷贝

图1-4  证书信息的拷贝

(7)找一款支持16进制流拷贝的工具,比如010Editor,新建一个文件,把上一步得到的十六进制流复制到本文件(一定注意不能使用简单的文本复制,必须基于16进制流格式粘贴,010Editor中使用 Ctrl+Shift+V 组合键即可达到此效果),文件另存为account.test01.com.der。这就是我们要的证书,可以直接双击打开。

 

二、通过浏览器自带的证书复制/导出功能

我要介绍的第二种方法,有一定局限性,但是操作更为简单。我们平时用浏览器访问HTTPS网站时,如果你有细心观察的话,应该能看到浏览器地址栏会有个小锁(不同浏览器显示的位置不太一致),对于搜狗浏览器,如图2-1。

浏览器地址栏

图2-1  搜狗浏览器访问https站点时的地址栏

       点击这个小锁,弹出如下提示:

提示信息

图2-2  “查看证书信息”

       单击“查看证书信息”弹出证书,在“详细信息”选项卡下有个“复制到文件”按钮,如图2-3,点击后按照提示即可成功获取证书文件。

证书复制

图2-3  证书复制

       这个方法的局限性在于只适用于可用浏览器访问的网站,对于那些只用客户端(或者手机应用)访问的网站就无能为力,因为人家的客户端或应用往往都不提供证书复制或导出功能;即使是可用浏览器访问的网站,也只适用于直接使用https协议的网站(比如Gmail),不适用于临时从http跳转到https又跳回http的情况(比如12306)。

使用下面的方法可以从wireshark抓的SSL报文里面得到DER格式的服务器证书。

http://www.wireshark.org/lists/wireshark-users/201003/msg00080.html

Is it possible to extract the x509 ssl certificate from a pcap file? I’m trying to compare a ssl certificate that I have with the one captured in a traffic capture. Searching the archives (and google) have only provided discussions on decrypting ssl traffic which is more than I need.

 

Yes, that’s possible. open the tracefile

1) make sure the setting “Allow subdissector to reassemble TCP streams” is on in the TCP protocol preferences
2) Then go to the packet which contains the SSL handshake message “Certificate”
3) In the packet detail pane, expand the SSL protocol
4) Expand the “Certificate” TLS record
5) Expand the “certificate” handshake protocol
6) Expand the list of certificates. There is now a list of certificate length and certificates (the list could be only 1 certificate). The first certificate is the server certificate, the second it’s signing CA, the third the CA that signed the CA, etc.
7) Now rightclick on the certificate that you want to export
8) Choose “Export selected packet bytes…”
9) Choose a filename and click on save

You now have a file containing the certificate in DER format. You can use openssl to process the certificate as needed.

在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)

全世界,现在大约50%的网站没有使用SSL加密,天朝尤其多。

我们都知道通过HTTP发送的数据都是明文,没有使用任何加密,即使是在数据敏感的登录页面。

本文的目的是:如果你在不熟悉的网络环境中,要注意提高警惕。

没有人希望自己的密码暴露给他人,so,不要嗅探(狗)他人的密码。

想象有一个攻击者坐在某个咖啡馆里,桌子上放着他的笔记本电脑并连着咖啡馆的免费wifi。这个家伙就可以非常容易的获得网络里通信信息。如果密码是明文,连破解都省了。

系统要求:

  • Wireshark
  • ARP欺骗攻击(ARP spoof attack)
  • 无线网卡

无线网卡监听模式和混杂模式有什么不同:

  • 监听模式允许网卡不用连接wifi就可以抓取特性频道的数据,就是在空气中抓取某个波段的数据。可以用在破解wifi密码
  • 混杂模式(连接wifi)就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址
  • 普通模式下网卡只接收发给本机的包

现在的无线路由器都是和主机直接通信,如果你直接使用嗅探工具,只会得到广播信息和自己的连接信息。为了得到网络中所有设备发送的的数据,攻击者必须想办法充当网关的角色,ARP欺骗攻击就干了这样一件事。如果有路由器控制权的话就省事了。

集线器可以直接嗅探,因为所有数据的发送形式是广播。看看这:集线器、交换机和路由器有什么不同

ARP欺骗攻击(ARP spoof attack):


下载安装Wireshark

它也支持Windows、Mac OSX;下载地址:https://www.wireshark.org/download.html

Kali Linux自带了这个工具。

Wireshark

ARP欺骗攻击

我选择使用ettercap,如果你不知道怎么使用,看,Kali Linux ettercap的使用

攻击同一wifi网络中的其他主机:

ettercap

使用Wireshark抓包

现在wifi网络中所有计算机发送的数据包都经过攻击者计算机,攻击者需要抓取这些数据包。

Wireshark

等待其他人使用明文密码。

例如,要找HTTP POST请求,过滤:

http.request.method == "POST"

Wireshark

查看明文密码:

Wireshark

ettercap也可以抓包,它直接提取了明文密码:

ettercap

POP抓取的是我163的邮箱账户。我手机安装了邮件客户端,如果连接网络它会定时收取邮件,在认证的过程中就把密码暴露了。

常用的其他未加密服务:FTP、Telnet等


总结:

  • 不要使用公共网络访问HTTP、POP等不安全服务,尽量使用HTTPS类型的网站。
  • 使用VPN加密连接;顺带还能翻墙。实际上也不是100%可靠,SSH服务器和目标之间还可以做手脚。
  • 密码要勤换,千万不要万年不变。
  • 感觉网络无安全,既要防黑、还要防朝廷。
Written on April 18, 2016