A. 如何实现java解析网络协议报文(类似Wireshark那样,或者有没有开源的包供调用)
从http://netresearch.ics.uci.e/kfujii/Jpcap/doc/index.html 找到JPcap。JPcap 是一个能够捕获、发送网络数据包的Java 类库包。这个包用到了LibPcap 和原始套接字API。
B. java中http:wireshark中抓出来手机端的post请求,但参数中含有json,如何用httpclient在pc上模拟抓数据
参数中有什么不重要。照样在PC上给就行了。如果你地址和参数都一样的话,出问题的两个可能:1.UA不对。
2.手机上做过login,电脑上没login所以不合法。
C. java怎么解析Wireshark抓包文件
Wireshark数据包解析:在Wireshark中关于数据包的叫法有三个术语,分别是帧、包、段。
注意:
如果链接另一个Web站点时,客户端将再次对下一个站点进行DNS查询(156、157帧),TCP三次握手(158、159、160帧)。
31帧是客户端请求网络,通过DNS服务器解析IP地址的过程。标识为“A”记录。
32帧是DNS服务器回应客户端请求的过程。标识为response。
D. 阿里云ECS服务器,安装好java服务环境后,怎么让我的java源代码在服务器上运行
只需要把本地写的代码原封不动的搬上去就可以,因为不清楚你具体是什么程序所以也无法告诉你迁移方法。
至于你提到的监视服务器和客户端通信情况其实那也是有很多办法监视的,例如使用linux下的curl可以知道http状态是什么样的,使用wireshark可以抓取http数据包来知道服务器和客户端之间交流是怎样的一种方式。
E. java怎么获取wireshark的抓包数据
仅提供大致思路,安装目录下有一个叫tshark的命令行程序,自己上网查下就懂了,学会调用它,就可以直接输出解析结果,然后你的程序只要显示显示这些结果即可
F. 如何解码分析wireshark捕获的数据包
如何解码分析wireshark捕获的数据包
做windows程序,核心是调用win32的类库创建窗口相关的对象。那么c和c++是可以直接调用win32类库的,所以可以开发,但是要写很多窗口事件处理等的方法,都要自己写。于是微软出了atl和mfc帮你快速编写windows程序。这些代码都是非托管的,也就是说直接访问系统调用或者库函数的,不安全,容易出现灾难性的结果(但运行效率高)。于是微软推出了.net再次封装,语言是c#,含义为c++++,这时代码是托管的,没有指针。这时开发效率高了,更安全了,但是运行效率相对就低一些。而java的虚拟机在底层调用win32的类库,用自己的一套awt和swt类库和java语言创建窗口,目的是为了可以移植到其它平台上。
G. wireshark 和 charles,burpsuite的区别
TcpIP协议,HTTP,DNS 实战:基于wireshark与BurpSuite抓包分析
使用 wireshark 前的基本配置
磨刀不误砍柴工。为了高效率的利用 wireshark 来帮助我们分析,学习网络协议,以及故障排除,需要对其进行一些使用前配置,大致内容如下:
1。将数据包摘要列表(packet list)中的“time”列的精度调整为 1 毫秒。
默认情况下,wireshark 的时间显示精度为 1 纳秒,但是在现实环境中通常用不到如此高的精度,一般用于评估站点响应速度,用户体验的性能指标,精确到毫秒级别就足够了,而且纳秒会多显示小数点后 6 位数字,造成数据包摘要列表中的显示空间的浪费。具体设置方法如下图:
2。根据应用场景选择时间列的显示格式。默认情况下,以抓取到的第一个数据包的时间为参考点,后续的数据包的抓取时间都是相对开始抓包(第一个)的时点计算的。但是在某些场景中,需要将显示格式调整为:与上一个抓取到的数据包的时间差,也就是相邻2个数据包的抓包时间间隔。
我们知道,某些网络应用,如即时通信,会议软件的视频,音频流量等,对于数据包的连续发送或接收时间间隔,非常敏感,如果相邻2个或多个包的间隔时间太长,就会造成应用的画面和声音延迟,一个更明显的例子是网络游戏的“卡”现象,由于收发包的间隔过长导致声音与画面的不一致和连续性问题。(通常与两端通信链路的负载和其中路由器的负载过高,导致丢包而引发的 TCP 分段重传有关)
这个时候,显示时间间隔就非常有用,可以对当前网络的稳定性,流畅性进行快速的检视,具体配置方法如下图:
3。修改并导出 wireshark 的默认数据包着色识别规则。通过数据包着色功能,用户可以迅速定位感兴趣的数据包分析,但是默认的着色规则太复杂,导致启用色彩识别时,一个包列表中显示“五颜六色”的信息,分散了我们的注意力,通常情况,我们仅对一种或两种类型的数据包感兴趣,或者进一步讲,我们每次只需要标识一种或两种类型的数据包颜色,这就需要修改其默认着色规则,具体配置方法参考下图:
依序选择菜单栏的“View”,“Coloring Rules”,打开配色规则对话框:
4。自定义数据包列表的显示列。默认的显示列从左至右依序为:数据帧编号,抓取时间,源地址,目标地址,协议,数据包(帧)长度,摘要信息。
在实战场景中,这些列提供的信息可能不够,例如,我想要快速浏览每个包的 IP 分组头部的生存期(TTL)字段值,而且不用在每个包的详细结构窗口(packet details)中查找该字段,以便节省时间,可以按照下图操作:
依序选择菜单栏的“Edit”,“Preferences”,打开首选项对话框:
5。根据实际需求配置 wireshark 的名称解析功能。
依序选择菜单栏的“Edit”,“Preferences”,切换到首选项对话框中的“Name Resolution”标签,参考下图解说进行配置:
通常只需要保持默认的不解析链路层,网络层地址以及传输层端口号即可,但是有些时候就需要开启相应的解析功能,还是那句老话:具体情况具体分析。上图中没有解释到的名称解析剩余的配置选项部分,各位可以自行研究。
6。隐藏 wireshark 主用户界面的数据包字节窗口(Packet Btyes)
默认的用户界面布局中,窗口被分隔成为3部分:数据包列表,数据包结构(详情),以及数据包字节,后者以16进制的字节显示数据包内容,通常是我们不必关心的,除非你有某种特殊的需求要修改原始的数据包;否则可以隐藏字节窗口,释放额外的显示空间。依序选择“View”,取消勾选“Packet Bytes”即可。
7。wireshark 中与 IPv4 协议相关的配置参数
配置各种协议的参数,实际上就是改变 wireshark 对该协议数据包的“捕获”与“呈现”方式。要配置 IPv4 协议,依序选择菜单栏的
“Edit”,“Preferences”,展开首选项对话框中的“Protocols”标签,定位到“IPv4”子标签。参考下图解说进行配置:
下面来比较一下,对于同一个数据包的 IP 分组头部的 ToS 字段,wireshark 用旧的服务质量标准(服务类型)与用新的服务质量标准(即差异化/区分 服务)解析之间的区别,可以看出,两者仅是对这个占一字节的头部字段中,每个比特位的解释不同而已:
8。wireshark 中与 TCP 协议相关的配置参数
要配置 TCP 协议,依序选择菜单栏的
“Edit”,“Preferences”,展开首选项对话框中的“Protocols”标签,定位到“TCP”子标签。参考下图解说进行配置:
(由于 TCP 协议规范相当复杂,而且各种操作系统有其不同的实现,下面的每个选项不一定在所有系统上都会产生描述中预期的结果,并且这里仅对一些重要,常见的 TCP 协议特性相关的选项配置进行说明,剩余的各位可以自行研究,理想情况下,在阅读完《TCP/IP详解》丛书后,应该能了解下图中绝大多数的配置参数的含义)
H. java用jpcap怎么识别出http和https的数据包
暂时的解决方法:
在抓到的tcp数据包的data字段里判断是否包含"HTTP"字符串。
不足:
1.与wireshark对比后发现,wireshark有的tcp包中data字段有HTTP也识别为tcp而非http(不知道wireshark是怎么解析的)。
2.感觉会漏判,不够准确。
继续寻找更好的解法,期待解答!
I. 急需Wireshark抓包软件的Java API
wireshark是基于winpcap或者libpcap的应用软件。如果你想自己开发抓包类的,应该用winpcap的api之类的。winpcap网站上faq提到这个问题了
Q-12: Does WinPcap work with Java?
A: We do not directly support Java. However you can find a Java wrapper at netresearch.ics.uci.e/kfujii/jpcap/doc/index.html 和 jnetpcap.com /.
J. 如何用Wireshark查看HTTPS消息里的加密内容
1. 配置Wireshark
选中Wireshark主菜单Edit->Preferences,将打开一个配置窗口;窗口左侧是一棵树(目录),你打开其中的Protocols,将列出所有Wireshark支持的协议;在其中找到SSL并选中,右边窗口里将列出几个参数,其中“RSA keys list”即用于配置服务器私钥。该配置的格式为:
<ip>,<port>,<protocol>,<key_file_name>
各字段的含义为:
<ip> ---- 服务器IP地址(对于HTTPS即为WEB服务器)。
<port> ---- SSL的端口(HTTPS的端口,如443,8443)。
<protocol> ---- 表示SSL里加密的是什么协议,对于HTTPS,这项应该填HTTP。
<key_file_name> ---- 服务器密钥文件,文件里的私钥必须是明文(没有密码保护的格式)。
例如: 192.168.1.1,8443,http,C:/myserverkey/serverkey.pem
若你想设置多组这样的配置,可以用分号隔开,如:
192.168.1.1,8443,http,C:/myserverkey/clearkey.pem;10.10.1.2,443,http,C:/myserverkey/clearkey2.pem
2. 导出服务器密钥(私钥)的明文格式(即前面提到的<key_file_name>)
大家当初在配置HTTPS服务器,服务器私钥时,一般都会输入一个保护私钥的密码。那如何导出明文形式的服务器私钥呢,需要视情况而定:
(1)若你是像《如何用Tomcat和Openssl构建HTTPS双向认证环境(HTTPS客户端认证)》里所述的那样,用类似于如下命令生成服务器私钥的:
openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out serverreq.pem /
-outform PEM -subj "/O=ABCom/OU=servers/CN=servername"M
而且你的服务器私钥文件serverkey.pem还在,则可以这样导出服务器私钥明文文件:
openssl rsa -in serverkey.pem > clearkey.pem
执行命令式需要输入私钥的保护密码就可以得到私钥明文文件clearkey.pem了。
(2)若你已把serverkey.pem丢了,但还有pkcs12格式的服务器证书库文件,该文件当初用类似于以下命令生成的:
openssl pkcs12 -export -in servercert.pem -inkey serverkey.pem /
-out tomcat.p12 -name tomcat -CAfile "$HOME/testca/cacert.pem" /
-caname root -chain
则,你可以用下面命令把服务器私钥从tomcat.p12(pkcs12格式)文件里导出来:
openssl pkcs12 -in tomcat.p12 -nocerts -nodes -out clearkey.pem
执行命令式需要输入pkcs12的保护密码。
然后编辑一下生成的clearkey.pem文件,把“-----BEGIN RSA PRIVATE KEY-----”之前的内容删掉就可以了。
(3)若你的服务器私钥是用java的keytool命令生成的keystore文件,则要弄出来比较麻烦,建议服务器keystore最好用《如何用Tomcat和Openssl构建HTTPS双向认证环境(HTTPS客户端认证)》里的openssl生成服务器公钥私钥和证书的方法,生成pkcs12格式的keystore。