抓包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);