抓包java
‘壹’ 如何通过抓包工具fiddler获取java程序的http请求的代码详情
java程序需要设置proxy才能生效:
Stringurl="http://www.zuidaima.com/";
Proxyproxy=newProxy(java.net.Proxy.Type.HTTP,newInetSocketAddress("127.0.0.1",8888));
URLserverUrl=newURL(url);
HttpURLConnectionconn=(HttpURLConnection)serverUrl.openConnection(proxy);
‘贰’ web应用使用了java或silverlight组件怎么抓包
抓包跟组件没有关系比如使用fiddler进行抓包, 整个手机的网络请求都会被抓取到
首先android设备要跟电脑是同一个局域网, 即手机可以连接到你的电脑
然后在手机的wifi设置中设置代理, 即让 fiddler进行代理android的所有网络请问
这时候就可以抓包了, 本人经常用此方法修改手机游戏数据
‘叁’ 如何通过抓包工具fiddler获取java程序的http请求
如果你是抓浏览器的报,可以使用谷歌、火狐自带的开发者调试工具进行抓包,按f12调出抓包工具,选择“network” 或者是“网络”那一栏,就能看到每次请求。
‘肆’ 网络抓包,怎么用Java程序登录百度
一、实验内容描述
本实验是用java实现的网络抓包程序,在windows环境下安装winpcap4.0和jpcap6.0后,下载eclipse和jigloo插件(一种在eclipse底下作图形化开发的工具),将其安装好,然后就可以进行java的网络抓包图形化开发了。
二、原理与关键技术
网络抓包技术原理
网络层上有各种各样的数据包,它们以不同的帧格式在网络层上进行传输,但是在传输时它们都遵循相同的格式,即有相同的长度,如果一种协议的帧格式达不到这种长度,就让其补齐,以达到我们的要求。
网络抓包关键技术
无论是在windows操作系统下还是在linux操作系统下,要想捕获网络上的数据包,必须要对网卡进行控制,因为本机的数据报从网络上来到本机是通过网卡然后再保存到本地缓冲区上的,所以要抓获网包就必须调用网卡驱动中的对外函数,在linux系统中有net.h文件,可以调用net.h文件中的函数来操作网卡,可以直接编程实现,但为了更方便的使用,可以安装一个叫libpcap的软件,这样调用函数更好用,而在windows系统中,因为源代码不对外公开,所以要安装一个叫winpcap的软件,这样用C或VC++就可以实现了,但因为我用的是java语言来实现的,所以无论是在哪个系统都要安装一个叫jpcap的软件,它本身就把底层的函数又封装了一下,这样就可以让java来使用了。
三、设计与实现
1.基于java的设计方案
我的这个网络抓包程序是图形化操作界面,在菜单栏点击抓包按钮后选择网卡和过滤字还有最长字长,点击开始,然后就可以开始抓包了,在主界面中就会显示出一行又一行的数据,这些数据就是抓获到的数据包。
具体实现
安装winpcap4.0和jpcap6.0
2.下载eclipse3.3和jigloo,jigloo是eclipse底下的插件,是用来支持eclipse底下的java 图形化开发的。
3.编写java抓包程序:
4.建立三个文件,一个主程序,一个抓包程序,一个抓包选项程序对话框程序
5.第一个程序:主程序如下
packagenetcap;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JSeparator;
importjavax.swing.JMenuItem;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.table.*;
importnetcap.*;
importjpcap.*;
importjpcap.packet.*;
importjava.util.*;
importjava.sql.Timestamp;
/**
*'sJigloo
*SWT/SwingGUIBuilder,whichisfreefornon-commercial
*use.(ie,byacorporation,
*)thenyou
*.
*Pleasevisit
*.
*
*THISMACHINE,
*.
*/
.swing.{
privateJMenuItemexitMenuItem;
privateJSeparatorjSeparator2;
;
privateJMenuItemsaveMenuItem;
privateJMenuItemstopMenuItem;
privateJMenuItemstartMenuItem;
privateJMenuMenu;
privateJMenuBarjMenuBar1;
JTabletabledisplay=null;
Vectorrows,columns;
DefaultTableModeltabModel;
JScrollPanescrollPane;
JLabelstatusLabel;
Netcaptorcaptor=newNetcaptor();
/**
*Auto-
*/
publicstaticvoidmain(String[]args){
JFrameMaininst=newJFrameMain();
inst.setVisible(true);
}
publicJFrameMain(){
super();
initGUI();
}
privatevoidinitGUI(){
try{
setSize(400,300);
{
jMenuBar1=newJMenuBar();
setJMenuBar(jMenuBar1);
{
Menu=newJMenu();
jMenuBar1.add(Menu);
Menu.setText("/u6293/u5305");
Menu.setPreferredSize(newjava.awt.Dimension(35,21));
{
startMenuItem=newJMenuItem();
Menu.add(startMenuItem);
startMenuItem.setText("开始");
startMenuItem.setActionCommand("start");
startMenuItem.addActionListener(this);
}
{
stopMenuItem=newJMenuItem();
Menu.add(stopMenuItem);
stopMenuItem.setText("停止");
stopMenuItem.setActionCommand("stop");
stopMenuItem.addActionListener(this);
}
{
saveMenuItem=newJMenuItem();
Menu.add(saveMenuItem);
saveMenuItem.setText("保存");
}
{
saveAsMenuItem=newJMenuItem();
Menu.add(saveAsMenuItem);
saveAsMenuItem.setText("保存为...");
}
{
jSeparator2=newJSeparator();
Menu.add(jSeparator2);
}
{
exitMenuItem=newJMenuItem();
Menu.add(exitMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.setActionCommand("exit");
exitMenuItem.addActionListener(this);
}
}
}
rows=newVector();
columns=newVector();
columns.addElement("数据报时间");
columns.addElement("源IP地址");
columns.addElement("目的IP地址");
columns.addElement("首部长度");
columns.addElement("数据长度");
columns.addElement("是否分段");
columns.addElement("分段偏移量");
columns.addElement("首部内容");
columns.addElement("数据内容");
tabModel=newDefaultTableModel();
tabModel.setDataVector(rows,columns);
tabledisplay=newJTable(tabModel);
scrollPane=newJScrollPane(tabledisplay);
this.getContentPane().add(newJScrollPane(tabledisplay),BorderLayout.CENTER);
statusLabel=newJLabel("06610班张琛雨066100583");
this.getContentPane().add(statusLabel,BorderLayout.SOUTH);
}catch(Exceptione){
e.printStackTrace();
}
}
publicvoidactionPerformed(ActionEventevent){
Stringcmd=event.getActionCommand();
if(cmd.equals("start")){
captor.capturePacketsFromDevice();
captor.setJFrame(this);
}
elseif(cmd.equals("stop")){
captor.stopCapture();
}
elseif(cmd.equals("exit")){
System.exit(0);
}
}
publicvoiddealPacket(Packetpacket)
{
try
{
Vectorr=newVector();
Stringstrtmp;
Timestamptimestamp=newTimestamp((packet.sec*1000)+(packet.usec/1000));
r.addElement(timestamp.toString());//数据报时间
r.addElement(((IPPacket)packet).src_ip.toString());//源IP地址
r.addElement(((IPPacket)packet).dst_ip.toString());//目的IP地址
r.addElement(packet.header.length);//首部长度
r.addElement(packet.data.length);//数据长度
r.addElement(((IPPacket)packet).dont_frag==true?"分段":"不分段");//是否不分段
r.addElement(((IPPacket)packet).offset);//数据长度
strtmp="";
for(inti=0;i<packet.header.length;i++){
strtmp+=Byte.toString(packet.header[i]);
}
r.addElement(strtmp);//首部内容
strtmp="";
for(inti=0;i<packet.data.length;i++){
strtmp+=Byte.toString(packet.data[i]);
}
r.addElement(strtmp);//数据内容
rows.addElement(r);
tabledisplay.addNotify();
}
catch(Exceptione)
{
}
}
}
‘伍’ java如何抓包获取http中的响应信息
ava程序需要设置proxy才能生效:
[java] view plain
String url="http://www.zuidaima.com/";
Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("127.0.0.1", 8888));
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection(proxy);
‘陆’ 如何通过抓包工具fiddler获取java程序的http请求
抓包工具fidder是一个很轻巧的可以获取浏览器,程序的http,https请求的软件
firefox的fidder插件
而java程序需要设置proxy才能生效:
view sourceprint?
1 Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("127.0.0.1", 8888));
2 URL serverUrl = new URL(url);
3 HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection(proxy);
‘柒’ 如何可以用java实现后台抓包,然后提取想要的包
jPCAP在JAVA中,并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用winpcap/libpcap,给JAVA语言提供一个公共的接口,从而实现了平台无关性。
‘捌’ java怎么获取wireshark的抓包数据
仅提供大致思路,安装目录下有一个叫tshark的命令行程序,自己上网查下就懂了,学会调用它,就可以直接输出解析结果,然后你的程序只要显示显示这些结果即可
‘玖’ java怎么解析Wireshark抓包文件
Wireshark数据包解析:在Wireshark中关于数据包的叫法有三个术语,分别是帧、包、段。
注意:
如果链接另一个Web站点时,客户端将再次对下一个站点进行DNS查询(156、157帧),TCP三次握手(158、159、160帧)。
31帧是客户端请求网络,通过DNS服务器解析IP地址的过程。标识为“A”记录。
32帧是DNS服务器回应客户端请求的过程。标识为response。
‘拾’ java在抓包过程中如何打印应用层的数据内容
你打印的是抓到的数据包?
如果是这样说明就没有问题,因为数据包通常情况下在java中是byte[]形式的,你打印byte[]的内容的话 , 需要进行循环,但此时的数据是byte , 所以只能看到 -128~127 的数字 .
如果想输出byte[]的字符串就应该把byte[]转换成字符串再打印.
比如,你收到的byte[] rs;
那么你要打印成字符串的话,就应该是:
String str = new String(rs , "编码(比如utf-8)");
System.out.print(str);