httpClient4.1访问https

httpClient4.1访问https
httpClient4.1访问https

说明:本文只提供httpClient访问https简单的示例,为需要者方面的人做参考.并未做深入的分析,欢迎致mail讨论;其相关基础知识网上一大篓筐;

开发工具:myEclipse

测试环境:Tomcat + windows +HttpClient4.1

1.生成KeyStore

打开cmd,输入(jdk环境变量当然是配置好的):

keytool -genkey -alias tomcat -keyalg RSA –validity 60 -keystore D:\tomcat.keystore

cmd输出:

输入keystore密码:******

您的名字与姓氏是什么?

[Unknown]:localhost

您的组织单位名称是什么?

[Unknown]:it

您的组织名称是什么?

[Unknown]:dev

您所在的城市或区域名称是什么?

[Unknown]:bj

您所在的州或省份名称是什么?

[Unknown]:bj

该单位的两字母国家代码是什么

[Unknown]:CN

CN=localhost, OU= it, O= dev, L=bj, ST=bj, C=CN 正确吗?

[否]:Y

输入的主密码(如果和keystore 密码相同,按回车):*******

参数说明:

-genkey表示生成密钥

-validity指定证书有效期,这里是60天

-alias指定别名,这里是tomcat

-keyalg指定算法,这里是RSA

-keystore指定存储位置,这里是D:\ tomcat.keystore

使用的自定义密码为123456

Keytool 详细命令说明请参考百度百科;

*其中您的名字与姓氏是什么?localhost是网站的域名或者ip,根据实际情况填写。否者会出现证书上的名称无效;

2.配置tomcat服务器支持SSL

1.将生成的tomcat.keystore文件,放到%TOMCAT_HOME%/conf目录中(其他也OK).

修改%TOMCAT_HOME%/conf/server.xml,新增Connector(原注释里有):

SSLEnabled="true"

URIEncoding="UTF-8"

clientAuth="false"

keystoreFile="conf/tomcat.keystore"

keystorePass="123456"

maxThreads="150"

port="8443"

protocol="HTTP/1.1"

scheme="https"

secure="true"

sslProtocol="TLS" />

这样你的tomcat就支持https访问了;

属性说明(来源网上资源):

port:这个port属性(默认值是8443)是TCP/IP端口数码,Tomcat在其上监听安全连接。你可以把它更改成任何你愿意要的数值(如默认的https通信,数目是443)。不过,在许多操作系统中,要想在比1024小的端口数码上运行Tomcat,需要特殊的设置(它超出了这个文档资料的范围)。

redirectPort:如果你在这里更改端口数值,你还必须更改在non-SSL连接器上的redirectPort 这个属性特定的值。这允许Tomcat自动地redirect那些试图访问有安全限制页面的用户,指明根据Servlet 2.4 Specification要求,SSL是必需的

clientAuth:如果你想要Tomcat要求所有的SSL客户在使用这个socket时出示用户认证书,把这个值设定为true 。如果你想要Tomcat要求出示用户认证书,但是如果没有认证书也可以,就把这个值设定为want 。

keystoreFile:如果你产生的keystore文件不在Tomcat期望的默认地方(一个叫做.keystore 的文件在Tomcat运行的主目录),就添加这个属性。你可以指定一个绝对路径名称,或者一个由$CATALINA_BASE环境变量而派生的相对路径名称。

keystorePass:如果你使用一个不同的keystore(以及认证书)密码,而不是Tomcat期望的密码(就是changeit),添加这个元素。

keystoreType:如果使用一个PKCS12 keystore的话,就添加这个element。有效的值是JKS 和PKCS12

sslProtocol:要在这个socket上被使用的加密/解密协定。如果你在使用Sun的JVM,我们不提倡更改这个值。据报道,TLS协定的IBM's 1.4.1 实现与一些通用的浏览器不兼容。如果是这样,就使用value SSL

ciphers:这个socket允许使用的由逗号分隔开的加密密码列单。默认的情况下,任何可用的密码都允许被使用。

algorithm:可用的X509算法。默认是Sun的实现( SunX509 )。对于IBM JVMs,你应该使用值IbmX509。对于其他卖主,查阅JVM文档资料来找正确的值。

truststoreFile:用来验证用户认证书的TrustStore文件。

truststorePass:访问TrustStore的密码。默认值就是keystorePass的值。truststoreType:如果你在使用与KeyStore不同格式的TrustStore,添加这个元素。合法的值是JKS和PKCS12

keyAlias:如果keystore 里面有多个key,你可以为用这个选项为加入的key 起一个名字。如果没有指定名字,使用时keystore 内的第一个key 将会被使用

3.用浏览器访问你的应用

输入:https://localhost:8443/myDemo

你会发现:

你的应用已经处于SLL安全通道中了.

4.用httpClient访问https

利用官方的一个例子来说明:

public class ClientCustomSSL {

public final static void main(String[] args) throws Exception {

DefaultHttpClient httpclient = new DefaultHttpClient();

try {

KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());

FileInputStream instream =

new FileInputStream(new File("d:\\tomcat.keystore"));

try {

//加载keyStore d:\\tomcat.keystore

trustStore.load(instream, "123456".toCharArray());

} finally {

try { instream.close(); } catch (Exception ignore) {}

}

//穿件Socket工厂,将trustStore注入

SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);

//创建Scheme

Scheme sch = new Scheme("https", 8443, socketFactory);

//注册Scheme

httpclient.getConnectionManager().getSchemeRegistry().register(sch);

//创建http请求(get方式)

HttpGet httpget =

new HttpGet("https://localhost:8443/myDemo/Ajax/serivceJ.action");

System.out.println("executing request" + httpget.getRequestLine());

HttpResponse response = httpclient.execute(httpget);

HttpEntity entity = response.getEntity();

System.out.println("----------------------------------------");

System.out.println(response.getStatusLine());

if (entity != null) {

System.out.println("Response content length: " +

entity.getContentLength());

String ss = EntityUtils.toString(entity);

System.out.println(ss);

EntityUtils.consume(entity);

}

} finally {

httpclient.getConnectionManager().shutdown();

}

}

}

运行程序:

executing requestGET

https://localhost:8443/myDemo/Ajax/serivceJ.action HTTP/1.1

----------------------------------------

HTTP/1.1 200 OK

Response content length: 12

hello world!

服务器端的action方法不用多说:

public void serivceJ() {

try {

HttpServletResponse response =

ServletActionContext.getResponse();

System.out.println("request...serivceJ");

response.setCharacterEncoding("UTF-8");

response.getWriter().write("hello world!");

} catch (IOException e) {

e.printStackTrace();

}

}

到此,一个完整的httpClient 访问https的流程就走OK了;注意:生成keyStore的jdk和myEclipse的jdk要一致.否则可能出现错误;

抓包实验

:利用Wireshark软件进行数据包抓取 1.3.2 抓取一次完整的网络通信过程的数据包实验 一,实验目的: 通过本次实验,学生能掌握使用Wireshark抓取ping命令的完整通信过程的数据包的技能,熟悉Wireshark软件的包过滤设置和数据显示功能的使用。 二,实验环境: 操作系统为Windows 7,抓包工具为Wireshark. 三,实验原理: ping是用来测试网络连通性的命令,一旦发出ping命令,主机会发出连续的测试数据包到网络中,在通常的情况下,主机会收到回应数据包,ping采用的是ICMP协议。 四,验步骤: 1.确定目标地址:选择https://www.360docs.net/doc/9817984398.html,作为目标地址。 2.配置过滤器:针对协议进行过滤设置,ping使用的是ICMP协议,抓包前使用捕捉过滤器,过滤设置为icmp,如图 1- 1

图 1-1 3.启动抓包:点击【start】开始抓包,在命令提示符下键入ping https://www.360docs.net/doc/9817984398.html,, 如图 1-2

图 1-2 停止抓包后,截取的数据如图 1-3 图 1-3 4,分析数据包:选取一个数据包进行分析,如图1- 4

图1-4 每一个包都是通过数据链路层DLC协议,IP协议和ICMP协议共三层协议的封装。DLC协议的目的和源地址是MAC地址,IP协议的目的和源地址是IP地址,这层主要负责将上层收到的信息发送出去,而ICMP协议主要是Type和Code来识别,“Type:8,Code:0”表示报文类型为诊断报文的请求测试包,“Type:0,Code:0”表示报文类型为诊断报文类型请正常的包。ICMP提供多种类型的消息为源端节点提供网络额故障信息反馈,报文类型可归纳如下: (1)诊断报文(类型:8,代码0;类型:0代码:0); (2)目的不可达报文(类型:3,代码0-15); (3)重定向报文(类型:5,代码:0--4); (4)超时报文(类型:11,代码:0--1); (5)信息报文(类型:12--18)。

HTTPS请求工具类汇总

HTTPS请求 package com.sunzk.dreamsunlight.weixin.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import https://www.360docs.net/doc/9817984398.html,.ConnectException; import https://www.360docs.net/doc/9817984398.html,.URL; import https://www.360docs.net/doc/9817984398.html,.ssl.HttpsURLConnection; import https://www.360docs.net/doc/9817984398.html,.ssl.SSLContext; import https://www.360docs.net/doc/9817984398.html,.ssl.SSLSocketFactory; import https://www.360docs.net/doc/9817984398.html,.ssl.TrustManager; import net.sf.json.JSONException; import net.sf.json.JSONObject; import org.apache.log4j.Logger;

import com.sunzk.dreamsunlight.weixin.certificate.MyX509 TrustManager; import com.sunzk.dreamsunlight.weixin.model.Menu; import com.sunzk.dreamsunlight.weixin.token.AccessToken; /** * * @ClassName: WeiXinHttpsUtil * * @Description: TODO(微信HTTPS请求工具类) * * @author sunzk-dreamsunlight-QQ(1131341075) * * @date 2016-11-14 上午10:05:56 * */ public class WeiXinHttpsUtil {

使用wireshark分析HTTPS流程的建立

使用wireshark分析HTTPS流程的建立

使用wireshark分析HTTPS流程的建立 摘要: https流程 一、概要 为了网站以及用户的安全性,现在很多的网站都是https,大家都知道tcp通过三次握手建立连接,并且还有很多的同学对https连接建立的流程不太明白,包括我自己,通过借助于wireshark这种抓包工具,我们可以尝试着了解一下大概的流程。 (图1) 本图是客户端(10.0.45.103)访问服务端(114.215.88.85)通过wireshark 抓包显示出来的双方交互数据,访问是通过https访问服务器上的一台nginx 服务器服务。请关注第一列的No。下文中很多时候会用no表示一次交互。 图中可以很明显的看出tcp的三次握手以及之后的TLS加密流程的建立。二、tcp的三次握手 通过流程图可以看出(也可以看图1 的19368到19370这三个编号),首先客户端向服务端发起一个SYN的请求,序号(Seq)为0,确认号(ACK)也为0,这代表是本次是由客户端发起的首次请求。本次请求的数据长度为0 然后服务端给客户端响应,此时服务端的Seq也是0,值得是服务端的第一回应,并且给客户端说,你的请求我已经收到了(ACK=1),

最后返还给客户端以后,客户端的序号+1,并且对服务端的响应做出确认,最后回给服务端,此时ACK=1,Seq=1 tcp的握手过程建立成功。 三、ssl连接的建立 通过以上可以看出,SSL也是建立在TCP的基础上的,经过tcp的三次握手,接下来才是加密信道的建立。 客户端和服务端建立安全连接大致经过以下几个步骤 1.客户端:ClientHello 2.服务端:Server Hello,Server certificate,Server Exchange,Server Hello Done 3.客户端:client Exchange 4.客户端:Application Data 5.服务端:New Session 6.服务端:Application Data 接下来看这几个步骤中具体的每一个步骤传输的内容 ClientHello client首先给服务端打招呼,对服务端说hello 应用层没什么特别的

https请求的抓包方法

对于https协议的接口的抓包方法 一、使用fiddler 1.使用fiddler对浏览器访问的https接口抓包 默认设置下的fiddler是不能解密https协议的请求的内容的,在fiddler上抓到的https 协议的请求都是如下图所示,但是看不到其中的传参以及返回结果的内容: 如果想要用fiddler抓到浏览器访问的https接口,需要在fiddler做如下设置: a)进入菜单栏,Tools->Fiddler Options: b)切换到https选项卡,勾选如下选项: c)按照上面步骤勾选后,会弹出如下提示框,提示意思大概就是fiddler会生成 一个唯一的根证书,我们要配置Windows,使Windows信任这个CA证书,

所以点击Yes即可: d)点击Yes之后,Windows会马上弹出下面的弹窗,我们点击“是”,就能将 DO_NOT_TRUST_FiddlerRoot这个由fiddler生成的CA证书导入到浏览器,也就 完成了上面C步骤所述的配置Windows,使Windows信任这个CA证书的步 骤: 完成了上面的配置后,即可以在浏览器发起一个https协议的请求: 此时可以在fiddler抓到这个请求,并能看到传参内容和返回的内容

返回的内容: 2.使用fiddler对app访问的https接口抓包 首先要先在fiddler进行设置,步骤与上面的一样,但是不用导入证书到浏览器,这里不再赘述。 Android: 要使用fiddler抓到app发出的https请求,需要在app端安装fiddler生成的CA证书,在Android的app端安装fiddler生成的CA证书步骤如下: a)设置手机代理服务器,代理到自己的电脑:

http 使用curl发起https请求

http 使用curl发起https请求 今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed” 很明显,验证证书的时候出现了问题。 使用curl如果想发起的https请求正常的话有2种做法: 方法一、设定为不验证证书和host。 在执行curl_exec()之前。设置option $ch = curl_init(); ...... curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 方法二、设定一个正确的证书。 本地ssl判别证书太旧,导致链接报错ssl证书不正确。 我们需要下载新的ssl 本地判别文件 http://curl.haxx.se/ca/cacert.pem 放到程序文件目录 curl 增加下面的配置 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); ; curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem'); 大功告成 (本人验证未通过。。。报错信息为:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed) 如果对此感兴趣的话可以参看国外一大神文章。 https://www.360docs.net/doc/9817984398.html,/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected -sites/ 为了防止某天该文章被Q今复制过来。内容如下: Using cURL in PHP to access HTTPS (SSL/TLS) protected sites From PHP, you can access the useful cURL Library (libcurl) to make requests to URLs using a variety of protocols such as HTTP, FTP, LDAP and even Gopher. (If you’ve spent time on the *nix command line, most environments also have the curl command available that uses the libcurl library) In practice, however, the most commonly-used protocol tends to be HTTP, especially when usingPHP for server-to-server communication. Typically this involves accessing another web server as part of a web service call, using some method such as XML-RPC or REST to query a resource. For example, Delicious offers a HTTP-based API to manipulate and read a user’s posts. However, when trying to access a HTTPS resource (such as the delicious API), there’s a little more configuration you have to do before you can get cURL working right in PHP. The problem If you simply try to access a HTTPS (SSL or TLS-protected resource) in PHP using cURL, you’re likely to run into some difficulty. Say you have the following code: (Error handling omitted for brevity) // Initialize session and set URL. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // Set so curl_exec returns the result instead of outputting it. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Get the response and close the channel. $response = curl_exec($ch);

2.7 HTTP抓包分析

HTTP抓包分析 一:实验目的: 1、学习使用网络数据抓包软件Ethereal,对互连网进行数据抓包,巩固对所学知识的 理解 二:实验内容: 1、分析http协议请求的响应过程。 2、分析TCP的处理过程,HTTP,TCp的报文格式。 三:实验环境及工具 1、虚拟主机XP,虚拟网卡NAT,TCP/IP参数自动获取 2、安装Wireshark抓包软件 四:实验步骤 1、安装Wireshark,简单描述安装步骤。 2、打开wireshark,选择接口选项列表。或单击“Capture”,配置“option”选项。 3、设置完成后,点击“start”开始抓包,显示结果。 4、选择某一行抓包结果,双击查看此数据包具体结构 五:网络协议包数据分析 1:http请求报文分析(第8个包) 请求行:方法字段:GET,版本是http/1.1. 首部行:主机host:https://www.360docs.net/doc/9817984398.html,;Connection:Keep-Alive,即保持持久连接;Accept-language:zh-cn,即接收语言是中文。 2.http响应报文(第55个包)

状态行:http/1.1 200 OK;请求成功。 首部行:响应Date:sat,21,Apr 2012 04:58:18 GMT ;Content-Type:text/html 指示实体主体中的对象是text/html文本;Content-Length:35593 表明了被发送对象的字节数是35593个字节。 :3:TCP报文格式分析: 报文格式:

如截图可知:源端口号:80,目的端口号3968,序号:1,确认号:424,首部长度:20 bytes,Flags=0X10(URG=0,ACK=1,PSH=0,RST=0,SYN=0,FIN=0)接收窗口大小:65112;检验和:0x8a44。 4:TCP响应(3次握手)分析: 1)服务器应用启动,进入LISTEN状态; 2)客户端向服务器端发送一个TCP报文段,该段设置SYN标识,请求跟服务器端应用同步,之后进入SYN-SENT状态,等待服务器端的响应;(第5个包) 3)服务器端应用收到客户端的SYN 段之后,发送一个TCP段响应客户端,该段设置SYN和ACK标识,告知客户端自己接受它的同步请求,同时请求跟客户端同步。之后进入 SYN-RECEIVED状态;(第6个包)

HTTPS的3种实现方法

HTTPS的3种实现方法 . 分类:java 2010-04-30 10:17 164人阅读评论(0) 收藏举报 引用自:https://www.360docs.net/doc/9817984398.html,/blog/289650 文章如下:HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解密,因此,所传送的数据不容易被网络黑客截获和破解。本文介绍HTTPS的三种实现方法。 方法一静态超链接这是目前网站中使用得较多的方法,也最简单。 在要求使用SSL进行传输的Web网页链接中直接标明使用HTTPS协议,以下是指向需要使用SSL的网页的超链接:SSL例子需要说明的是,在网页里的超链接如果使用相对路径的话,其默认启用协议与引用该超链接的网页或资源的传输协议相同,例如在某超链接“HTTPS://192.168.100.100/ok/l ogin.jps”的网页中包含如下两个超链接:SSL链接非SSL链接那么,第一个链接使用与“HTTPS://192.168.100.100/ok/login.jsp”相同的传输协议HTTPS,第二个链接使用本身所标识的协议HTTP。 使用静态超链接的好处是容易实现,不需要额外开发。然而,它却不容易维护管理; 因为在一个完全使用HTTP协议访问的Web应用里,每个资源都存放在该应用特定根目录下的各个子目录里,资源的链接路径都使用相对路径,这样做是为了方便应用的迁移并且易于管理。但假如该应用的某些资源要用到HTTPS协议,引用的链接就必须使用完整的路径,所以当应用迁移或需要更改URL中所涉及的任何部分如:域名、目录、文件名等,维护者都需要对每个超链接修改,工作量之大可想而知。再者,如果客户在浏览器地址栏里手工输入HTTPS 协议的资源,那么所有敏感机密数据在传输中就得不到保护,很容易被黑客截获和篡改! 方法二资源访问限制为了保护Web应用中的敏感数据,防止资源的非法访问和保证传输的安全性,Java Serv let 2.2规范定义了安全约束(Security-Constraint)元件,它用于指定一个或多个We b资源集的安全约束条件;用户数据约束(User-Data-Constraint)元件是安全约束元件的子类,它用于指定在客户端和容器之间传输的数据是如何被保护的。 用户数据约束元件还包括了传输保证(Transport-Guarantee)元件,它规定了客户机和服务器之间的通信必须是以下三种模式之一:None、Integral、Confidential。None表示被指定的Web资源不需要任何传输保证;Integral表示客户机与服务器之间传送的数据在传送过程中不会被篡改; Confidential表示数据在传送过程中被加密。大多数情况下,Integral或Co nfidential是使用SSL实现。 这里以BEA的WebLogic Server 6.1为例介绍其实现方法,WebLogic是一个性能卓越的J2 EE 服务器,它可以对所管理的Web资源,包括EJB、JSP、Servlet应用程序设置访问控制条款。 假设某个应用建立在Weblogic Server里的/mywebAPP目录下,其中一部分Servlets、JSPs要

wireshark怎么抓包、wireshark抓包详细图文教程

wireshark怎么抓包、wireshark抓包详细图文教程 wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark 了。 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。 wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler,其他协议比如TCP,UDP 就用wireshark. wireshark 开始抓包 开始界面 wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。 点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

Wireshark 窗口介绍 WireShark 主要分为这几个界面 1. Display Filter(显示过滤器),用于过滤 2. Packet List Pane(封包列表),显示捕获到的封包,有源地址和目标地址,端口号。颜色不同,代表 3. Packet Details Pane(封包详细信息), 显示封包中的字段 4. Dissector Pane(16进制数据) 5. Miscellanous(地址栏,杂项) 使用过滤是非常重要的,初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。

利用AndroidHttpCapture网络抓包说明

利用AndroidHttpCapture网络抓包说明 一、目的: 抓取主流APP的访问目标IP地址和请求 二、方法: 在安卓手机上安装AndroidHttpCaptureAPP上传相应日志,再统一分析每个APP的特征。 三、使用方式: 1.设置手机代理 2.关闭其他无关APP进程 3.运行AndroidHttpCaptureAPP程序 4.运行需要抓取的APP 5.正常使用APP 6.分享日志到微信 7.重命名日志文件 四、具体步骤:

(一)设置手机代理 选择相应的网络接入点WIFI 点击修改网络,添加HTTP代理 服务器输入127.0.0.1 服务器端口8888 添加安装SSL证书,点击重新安装证书,根据提示操作即可。

第一次进入程序需要安装CA证书以便进行HTTPS抓包(原理同fiddler,MITM中间人)不安装证书的话无法抓取HTTPS的请求 预览页面可以查看从APP启动起所有网络请求数据,实现了按分页过滤、URL搜索功能,并可清空所有数据包

预览的内容包括Request Header、Request Cookie、Request Content、Response Header、Response Cookie、Response Content Content内容如果为JSON将会自动格式化显示 (二)关闭其他无关APP进程 利用系统关闭APP功能,关闭其他前台APP进程。 (三)运行AndroidHttpCaptureAPP http Interceptor (四)运行需要抓取的APP 运行相应的APP,注意不要开启其他的APP,避免分析结果不正常。

omnipeek无线空口抓包分析

目录 1. 目的 (2) 2.认证方式 (2) 1.WEB用户接入流程 (2) 2. PEAP认证流程 (4) 3. WEB认证抓包分析 (5) 1.关联过程 (5) 2.DHCP地址分配过程 (5) 3.Portal推出以及WEB认证 (6) 1.强制Portal (6) 2.认证报文 (6) 3下线报文 (7) 4.PEAP认证抓包分析 (7) 1. 用户关联 (7) 2. 认证过程 (7) 5.抓包建议 (9) 1.过滤 (9) 1) 抓包前的过滤 (9) 2) 抓包后的过滤 (9) 2.Omnipeek使用问题 (9)

1.目的 802.11协议工作在物理层和数据链路层,为STA和AP之间建立数据连接。通过使用omnipeek来进行空口抓包能抓取到STA和AP之间802.11报文交互情况,快速的进行故障定位和分析。 本次主要是完成了WEB认证的抓包和PEAP认证的抓包,将两种认证方式的流程中STA 与AP之间数据交互信息进行了抓取分析。 2.认证方式 WLAN现网主要的认证方式有 1)WEB认证 通过强制Portal的方式将用户的http请求重定向到Portal服务器,通过Portal页面上完成认证过程。 2)PEAP(Protected EAP)是EAP认证方法的一种实现方式,网络侧通过用户名/密码对终端进 行认证,终端侧通过服务器证书对网络侧进行认证。用户首次使用PEAP认证时,需输入用户名和密码,后续接入认证无需用户任何手工操作,由终端自动完成。 1.WEB用户接入流程

2.PEAP认证流程

3.W EB认证抓包分析 1.关联过程 一个完整的关联过程包括Probe request(探测请求)、Probe response(探测响应)、Authentication(身份验证)、Association request(关联请求)、Association response(关联响应)。 图1、关联过程 1)Probe request和Probe response。首先STA广播探测请求,AP收到后返回Probe response告知用户自己的信息。如图1,STA的MAC为24:77:03:60:47:28,AP的MAC为5C:0E:8B:CD:E3:70 2)Authentication(身份验证),认证是STA 在扫描到合适的AP 之后,只有通过认 证该STA 才能通过AP 使用WLAN 。现有的认证方式有: a、open ,即不需要认证,只要交互一个null 帧 b、shared key ,需要一个4 次握手的过程(3)802.11i ,需要到认证服务器认证 3)Association.完成鉴权之后,STA发送Association request,AP返回Association response. 建立连接。 2.DHCP地址分配过程 DHCP租约过程就是DHCP客户机动态获取IP地址的过程。 DHCP租约过程分为4步: 1)客户机请求IP(客户机发DHCPDISCOVER广播包); 2)服务器响应(服务器发DHCPOFFER广播包); 3)客户机选择IP(客户机发DHCPREQUEST广播包); 4)服务器确定租约(服务器发DHCPACK/DHCPNAK广播包)。

fiddler抓包快速实战

Fiddler抓包快速实战 一、Fiddler介绍与安装 Fiddler介绍 1、Fiddler是一款HTTP协议调试代理工具,它能够抓取记录本及所有HTTP(S)请求。 其运行机制其实就是本机127.0.0.1上监听8888端口的HTTP带理。 2、Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。 3、更多介绍见百度百科 Fiddler下载与安装 1、官网地址:https://www.360docs.net/doc/9817984398.html,/fiddler 2、先安装FiddlerXXX.exe 3、再安装Fiddlercertmaker.exe(类似安全证书) 4、然后就可以启动Fiddler了 5、启动之后的界面包括: 工具栏区、请求列表区、请求详情区、响应详情区、命令行区。 二、WEB端抓包 初次安装是不可以抓HTTPS的包的 开启/关闭抓包 快捷键:F12 左下角的开关

初次配置 点击工具栏区Tools ---> Fiddle Options 选择Fiddle Options 的Connections 在Connections 界面选择Captrue FTP requests、Allow remote computers to connect、Reuse client connections、Reuse server connections,并输入端口号。 点击“OK” 这样我们就可以捕捉到大部分的请求。 验证是否可以正常抓包 启动IE浏览器 输入https://www.360docs.net/doc/9817984398.html, 观察左侧请求列表区是否有百度的请求 如果有则证明当前配置是成功的,可以正常抓取数据包了。

网络抓包实验Http

网络抓包实验 之 利用WireShark分析Http协议 —1116120209夏丽一.实验目的 学习使用网络抓包软件WireShark,理解网络协议实体之间的交互,巩固所学知识。 二.实验内容 分析Http协议请求及响应过程,掌握Tcp报文的格式。 三.实验工具 WireShark抓包软件 四.实验步骤 1.打开WireShark软件,选“Capture”—>“Interfaces”中,选择一个网卡(以以太网为例),点击“start”按钮,开始。 2.随便打开一个网站,然后在 Filter中填入“Http”过滤,点击“Apply”,即可看到与Http相关的所要抓的包。五.实验分析 选中Get /Http/1.1的这条记录,右击“Follow Tcp Stream”,就会看到下图的打开浏览器相关的数据包,同时我们还可以看到Tcp三次握手的数据包,之后才是Http的请求数据包。

Tcp第一次握手的数据包: 第1710个包为TCP的第一次握手。

客户端发送一个TCP,标志位为SYN,序列号为0,代表客户端请求建立连接。 由截图可知:源端口号:34301目的端口号:80,序号:0,首部长度:32ytes,Flags=0X002,接受窗口大小:8192;检验和:0x10ce。 Tcp第二次握手的数据包: 第19188个包为TCP的第二次握手。 服务器发回确认包,标志位为SYN,ACK,将确认序号设置为0+1=1。 由截图可知:源端口号:80,目的端口号:34301,序号:,0,确认号:1,首部长度:32bytes,Flags=0X012,接受窗口大小:5840;检验和:0x1a2c。 Tcp第三次握手的数据包:

fiddler使用方法

抓包工具fiddler,工作中不少人都在用。它默认抓取http请求,在大多数情况下完全够用,但在需要查看https请求的时候就需要通过一些设置来让它同时抓取到http和https请求。 首先要让fiddler能够抓取移动端的请求:打开fiddler--Tools--Options...--Connection-->选中Allow remote computers to connect(允许其他设备连接)

保存之后,需要重启fiddler配置才能生效,如果只需要连接手机测试,重启之后设置手机的wifi代理,就可以愉快的测试啦~ 那如果要抓取https请求呢,不要着急重启,打开隔壁的“HTTPS”面板。把 下面的选项都勾选上,保存设置,然后重启fiddler。 重启后配置生效,接下来就需要在手机上安装Fiddler根证书,因为fiddler是通过自己生成的证书对网络请求重新签名进行https会话解密的。 先修改手机网络配置,设置代理,再在手机浏览器上访问FiddlerServer地址,如图则在浏览器中访问10.240.128.142:8888,出现Fiddler Echo Service页面,点击FiddlerRoot certificate,然后允许安装证书。

成功证书安装后,安卓手机的朋友们就可以成功用fiddler抓取https请求了~,但是ios的手机还需要多一步: 首先,在设置--通用--描述文件与设备管理(或者设备管理)中,能找到对应fiddler证书,点进去,确保它是已验证状态; 然后,再去设置--通用--关于本机--证书信任设置中打开对fiddler证书的信用;(为什么叫DO_NOT_TRUST_FiddlerRoot嘞?嗯,我也不造~)

抓包分析SSL通信过程实验报告

SSL通信过程分析 一、SSL建立握手连接目的 1.身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现。 2.client与server交换session key,用于连接后数据的传输加密和hash校验。 二、简单的SSL握手连接过程 (仅Server端交换证书给client): 1.client发送ClientHello,指定版本,随机数(RN),所有支持的密码套件(CipherSuites) 2.server回应ServerHello,指定版本,RN,选择CipherSuites,会话ID(Session ID) 3.server发送Certificate 4.Server发送ServerHelloDone 5.Client发送ClientKeyExchange,用于与server交换session key 6.Client发送ChangeCipherSpec,指示Server从现在开始发送的消息都是加密过的 7.Client发送Finishd,包含了前面所有握手消息的hash,可以让server验证握手过程是否被第三方篡改 8.Server发送ChangeCipherSpec,指示Client从现在开始发送的消息都是加密过的 9.Server发送Finishd,包含了前面所有握手消息的hash,可以让client验证握手过程是否被第三方篡改,并且证明自己是Certificate密钥的拥有者,即证明自己的身份 三、抓包实际分析连接过程 下面从抓包数据来具体分析这一过程并说明各部分数据的作用以及如实现前面列出的握手的目标,当然了,最重要的还是说明为何这一过程是安全可靠的,第三方无法截获,篡改或者假冒。 1.client发送ClientHello

浅谈三种最常规的HTTPS流量解密方法及原理

浅谈三种最常规的HTTPS流量解密方法及原理 Web 安全是一项系统工程,任何细微疏忽都可能导致整个安全壁垒土崩瓦解。拿 HTTPS 来说,它的「内容加密、数据完整性、身份认证」三大安全保证,也会受到非法根证书、服务端配置错误、SSL 库漏洞、私钥被盗等等风险的影响。很多同学认为只要访问的网站地址前有一把小绿锁就绝对安全,其实不然。本文通过介绍三种最常规的 HTTPS 流量解密方法及原理,浅谈一下 HTTPS 的安全风险。 Man-in-the-middle Man-in-the-middle(中间人,简称为 MITM),能够与网络通讯两端分别创建连接,交换其收到的数据,使得通讯两端都认为自己直接与对方对话,事实上整个会话都被中间人所控制。简而言之,在真正的服务端看来,中间人是客户端;而真正的客户端会认为中间人是服务端。 实现中间人攻击有各种各样的手段,这里不展开讨论。一些常见的 HTTP/HTTPS 抓包调试工具,都是通过创建本地 Proxy 服务,再修改浏览器 Proxy 设置来达到拦截流量的目的,他们的工作原理与中间人攻击一致。我用过的这一类工具有:Fiddler、Charles 和 whistle。我在「HTTP 代理原理及实现(一)」一文中介绍的 HTTP 普通代理,扮演的就是 HTTP 中间人角色。 本文主要讨论 HTTPS 中间人,简单示意如下:

上述 HTTPS(1) 连接,是中间人冒充客户端,与服务端建立的连接,由于 HTTPS 服务端一般不认证客户端身份,这一步通常没有问题。而对于 HTTPS(2) 连接来说,中间人想要冒充服务端,必须拥有对应域名的证书私钥,而攻击者要拿到私钥,只能通过这些手段: 1. 去网站服务器上拿; 2. 从 CA 处签发证书; 3. 自己签发证书。 要防范前两点,需要网站做好各个方面的安全防护,从主机安全到网站安全(避免私钥被盗),从域名解析安全到域名邮箱安全(避免攻击者重签证书)。而攻击者自己签发的证书,无法通过系统内置根证书的验证,默认无法用于中间人攻击。 对于 Fiddler 这一类调试工具来说,能够解密 HTTPS 流量的关键在于他们会往系统受信任的根证书列表导入自己的证书,这样他们的自签证书就能被浏览器信任。进入 Fiddler 设置中的「HTTPS」Tab,勾选相关功能后,就可以顺利解密和修改 HTTPS 流量。这时在浏览器中可以看到这样的证书链: fiddler root RSA Private Key

抓包分析HTTP

计算机网络实践报告 一、 实践名称: 网络抓包分析HTTP 协议请求、响应过程。 二、 实践内容和目的: 内容:网络抓包分析HTTP 协议请求、响应过程以及请求、响应的报文 格式。 目的:了解、熟悉网络抓包软件,掌握HTTP 请求、响应的报文格式,分析、掌握HTTP 请求、响应的过程。 三、 实践器材(设备、元件): PC 机一台、网络抓包软件Wireshark 。 四、 实践数据及分析结果: 1、HTTP 的请求报文格式和响应报文格式: HTTP 请求报文: 通用格式 URI 版本sp cr lf sp 方法值 sp cr lf 首部字段名:值sp cr lf 首部字段名:cr lf 请求行 首部行 空行实体主体 注:URI=Uniform Resource Identifiers Entity Body

HTTP 响应报文: 通用格式 状态码 短语sp cr lf sp 版本值 sp cr lf 首部字段名:值sp cr lf 首部字段名:cr lf 状态行 首部行 空行实体主体 Entity Body 2、网络抓包截获的数据: HTTP 的请求报文数据: 所截获的HTTP 的请求报文如下图所示:(编号22134) 主要的报文段为: Internet Protocol, Src: 10.20.60.49 (10.20.60.49), Dst: 220.168.129.75

(220.168.129.75) Transmission Control Protocol, Src Port: 27935 (27935), Dst Port: http (80), Seq: 1, Ack: 1, Len: 594 GET /Files/download/icon3/2380.rar HTTP/1.1\r\n Accept: */*\r\n Cache-Control: no-cache\r\n Connection: Keep-Alive\r\n Cookie:rtime=1;ltime=1334408026756;cnzz_eid=8195232-1334323245-http%3 A//https://www.360docs.net/doc/9817984398.html,/s%3Fwd%3D%25E6%2596%2587%25E4%25BB%25B6%2 5E5%25A4%25B9%25E5%259B%25BE%25E\r\n Host: https://www.360docs.net/doc/9817984398.html,\r\n Pragma: no-cache\r\n Range: bytes=203903-293887\r\n Referer: https://www.360docs.net/doc/9817984398.html,/Files/download/icon3\r\n User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; Media Center PC 6.0; .NET4.0E)\r\n \r\n 分析:用GET方法向主机Host: https://www.360docs.net/doc/9817984398.html,请求对象/Files/download/icon3/2380.rar ,浏览器实现的是版本HTTP/1.1 (可打开数据包1查看更多报文)。 HTTP的响应报文数据: 所截获的百度的HTTP响应报文如下图所示(编号为:7594)

wireshark抓包实验之HTTP(陕师大)

1. Is your browser running HTTP version 1.0 or 1.1? What version of HTTP is the server running? 我的浏览器运行的HTTP版本是1.1 服务器运行的HTTP版本是1.1 2.What languages (if any) does your browser indicate that it can accept to the server? 我的浏览器能接受服务器的中文。 3. What is the IP address of your computer? Of the https://www.360docs.net/doc/9817984398.html, server? 我的电脑的IP地址是192.168.139.53; 服务器https://www.360docs.net/doc/9817984398.html,的IP是128.119.245.12; 4. What is the status code returned from the server to your browser? 状态码是200 5. When was the HTML file that you are retrieving last modified at the server? 最后修正的时间是:Sat, 20 Oct 2012 15:22:01 GMT 6. How many bytes of content are being returned to your browser? 482字节

7. By inspecting the raw data in the packet content window, do you see any headers within the data that are not displayed in the packet-listing window? If so, name one.? 8. Inspect the contents of the first HTTP GET request from your browser to the server. Do you see an “IF-MODIFIED-SINCE” line in the HTTP GET? 无,因为IE 浏览器选择工具-Internet 选项-删除文件, 钩选“删除全部文件”从你的浏览器中移除缓存 的文件 9. Inspect the contents of the server response. Did the server explicitly return the contents of the file? How can you tell? Yes 10. Now inspect the contents of the second HTTP GET request from your browser to the server. Do you see an “IF-MODIFIED-SINCE:” line in the HTTP GET? If so, what informati on follows the “IF-MODIFIED-SINCE:” header? 有 显示的内容:If-Modified-Since: Fri, 05 Oct 2012 05:25:01 GMT\r\n 11. What is the HTTP status code and phrase returned from the server in response to this second HTTP GET? Did the server explicitly return the contents of the file? Explain. 状态码是304;没有显示返回文件的具体内容,而是返回304 告诉客户端其本地cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。

相关文档
最新文档