• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java TcpPacket类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.pcap4j.packet.TcpPacket的典型用法代码示例。如果您正苦于以下问题:Java TcpPacket类的具体用法?Java TcpPacket怎么用?Java TcpPacket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



TcpPacket类属于org.pcap4j.packet包,在下文中一共展示了TcpPacket类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: onReceiveDataPacket

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
void onReceiveDataPacket(TcpPacket tcpPacket, TcpHeader tcpHeader, IpV4Header ipV4Header ){
	if(System.currentTimeMillis()-lastSendAckTime>1000){
		int rs=tcpHeader.getSequenceNumber()+tcpPacket.getPayload().getRawData().length;
		if(rs>remoteSequence_max){
			remoteSequence_max=rs;
		}
		Packet ackPacket=PacketUtils.createAck(
				capEnv.local_mac,
				capEnv.gateway_mac,
				localAddress,(short)localPort,
				ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
				remoteSequence_max, localSequence,getIdent());
		try {
			sendHandle.sendPacket(ackPacket);
		} catch (Exception e) {
			e.printStackTrace();
			
		}
		lastSendAckTime=System.currentTimeMillis();
		lastReceiveDataTime=System.currentTimeMillis();
	}
}
 
开发者ID:breakEval13,项目名称:NSS,代码行数:23,代码来源:TCPTun.java


示例2: onReceiveDataPacket

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
void onReceiveDataPacket(TcpPacket tcpPacket,TcpHeader tcpHeader,IpV4Header ipV4Header ){
	if(System.currentTimeMillis()-lastSendAckTime>1000){
		int rs=tcpHeader.getSequenceNumber()+tcpPacket.getPayload().getRawData().length;
		if(rs>remoteSequence_max){
			remoteSequence_max=rs;
		}
		Packet ackPacket=PacketUtils.createAck(
				capEnv.local_mac,
				capEnv.gateway_mac,
				localAddress,(short)localPort,
				ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
				remoteSequence_max, localSequence,getIdent());
		try {
			sendHandle.sendPacket(ackPacket);
		} catch (Exception e) {
			e.printStackTrace();
			
		}
		lastSendAckTime=System.currentTimeMillis();
		lastReceiveDataTime=System.currentTimeMillis();
	}
}
 
开发者ID:jonasxiao,项目名称:FinalSpeed,代码行数:23,代码来源:TCPTun.java


示例3: onReceiveDataPacket

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
void onReceiveDataPacket(TcpPacket tcpPacket, TcpHeader tcpHeader, IpV4Header ipV4Header) {
    if (System.currentTimeMillis() - lastSendAckTime > 1000) {
        int rs = tcpHeader.getSequenceNumber() + tcpPacket.getPayload().getRawData().length;
        if (rs > remoteSequence_max) {
            remoteSequence_max = rs;
        }
        Packet ackPacket = PacketUtils.createAck(
                capEnv.local_mac,
                capEnv.gateway_mac,
                localAddress, localPort,
                ipV4Header.getSrcAddr(), tcpHeader.getSrcPort().value(),
                remoteSequence_max, localSequence, getIdent());
        try {
            sendHandle.sendPacket(ackPacket);
        } catch (Exception e) {
            e.printStackTrace();

        }
        lastSendAckTime = System.currentTimeMillis();
        lastReceiveDataTime = System.currentTimeMillis();
    }
}
 
开发者ID:Bpazy,项目名称:finalspeed,代码行数:23,代码来源:TCPTun.java


示例4: testHandleDnsRequestNotUdpPacket

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
@Test
public void testHandleDnsRequestNotUdpPacket() throws Exception {
    TcpPacket.Builder payLoadBuilder = new TcpPacket.Builder()
            .srcPort(TcpPort.HTTP)
            .dstPort(TcpPort.HTTP)
            .srcAddr(InetAddress.getByAddress(new byte[]{8, 8, 4, 4}))
            .dstAddr(InetAddress.getByAddress(new byte[]{8, 8, 8, 8}))
            .correctChecksumAtBuild(true)
            .correctLengthAtBuild(true)
            .payloadBuilder(
                    new UnknownPacket.Builder()
                            .rawData(new byte[0])
            );

    IpPacket ipOutPacket = new IpV4Packet.Builder()
            .version(IpVersion.IPV4)
            .tos(IpV4Rfc791Tos.newInstance((byte) 0))
            .protocol(IpNumber.UDP)
            .srcAddr((Inet4Address) Inet4Address.getByAddress(new byte[]{8, 8, 4, 4}))
            .dstAddr((Inet4Address) Inet4Address.getByAddress(new byte[]{8, 8, 8, 8}))
            .correctChecksumAtBuild(true)
            .correctLengthAtBuild(true)
            .payloadBuilder(payLoadBuilder)
            .build();

    dnsPacketProxy.handleDnsRequest(ipOutPacket.getRawData());
    assertNull(mockEventLoop.lastOutgoing);
    assertNull(mockEventLoop.lastResponse);
}
 
开发者ID:julian-klode,项目名称:dns66,代码行数:30,代码来源:DnsPacketProxyTest.java


示例5: createSyncAck

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createSyncAck(
		MacAddress srcAddress_mac,
		MacAddress dstAddrress_mac,
		Inet4Address srcAddress,short srcPort,
		Inet4Address dstAddress,short dstPort,
		int ack_sequence,int sequence,short ident){

	TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
	//builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(new byte[0]));
	builder_tcp.correctChecksumAtBuild(true);
	builder_tcp.correctLengthAtBuild(true);
	builder_tcp.paddingAtBuild(true);
	builder_tcp.ack(true);
	builder_tcp.acknowledgmentNumber(ack_sequence);
	//builder_tcp.checksum(tcpHeader.getChecksum());
	//builder_tcp.dataOffset((byte) 8);
	builder_tcp.dstAddr(dstAddress);
	builder_tcp.dstPort(new TcpPort(dstPort,""));
	//builder_tcp.fin(tcpHeader.getFin());


	ArrayList<TcpOption> tcp_options=new ArrayList<TcpOption>();
	
	TcpNoOperationOption nop=TcpNoOperationOption.getInstance();

	TcpMaximumSegmentSizeOption seg_option=new TcpMaximumSegmentSizeOption.Builder().maxSegSize(mtu).correctLengthAtBuild(true).build();
	tcp_options.add(seg_option);
	
	tcp_options.add(nop);
	tcp_options.add(nop);

	TcpSackPermittedOption sack_permit_option=TcpSackPermittedOption.getInstance();
	tcp_options.add(sack_permit_option);
	
	tcp_options.add(nop);

	TcpWindowScaleOption win_option=new TcpWindowScaleOption.Builder().shiftCount(shiftCount).correctLengthAtBuild(true).build();
	tcp_options.add(win_option);

	builder_tcp.options(tcp_options);

	//builder_tcp.padding(tcpHeader.getPadding());
	builder_tcp.psh(false);
	builder_tcp.reserved((byte) 0);
	builder_tcp.rst(false);
	builder_tcp.sequenceNumber(sequence);
	builder_tcp.srcAddr(srcAddress);
	builder_tcp.srcPort(new TcpPort(srcPort,""));
	builder_tcp.syn(true);
	builder_tcp.urg(false);
	//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
	builder_tcp.window( window);

	IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
	builder_ipv4.correctChecksumAtBuild(true);
	builder_ipv4.correctLengthAtBuild(true);
	builder_ipv4.paddingAtBuild(true);
	builder_ipv4.dstAddr(dstAddress);
	builder_ipv4.dontFragmentFlag(true);
	builder_ipv4.fragmentOffset((short)0);
	//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
//	short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
	builder_ipv4.identification(ident);
	builder_ipv4.ihl((byte) 5);
	//builder_ipv4.moreFragmentFlag(ipV4Header.getMoreFragmentFlag());
	//builder_ipv4.options(ipV4Header.getOptions());
	//builder_ipv4.padding(ipV4Header.getPadding());

	builder_ipv4.protocol(IpNumber.TCP);
	//		builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
	builder_ipv4.srcAddr(srcAddress);
	builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
	//builder_ipv4.totalLength( 52);
	builder_ipv4.ttl(ttl);
	builder_ipv4.version(IpVersion.IPV4);
	builder_ipv4.payloadBuilder(builder_tcp);
	//
	Packet p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);
	return p;

}
 
开发者ID:RCD-Y,项目名称:FinalSpeed-X,代码行数:82,代码来源:PacketUtils.java


示例6: getSrcPort

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
 * Return source port
 *
 * @param packet
 * @return
 */
private String getSrcPort(Packet packet) {
    if (protocolType.equals("TCP")) {
        return packet.get(TcpPacket.class).getHeader().getSrcPort().toString();

    } else if (protocolType.equals("UDP")) {
        return packet.get(UdpPacket.class).getHeader().getSrcPort().toString();
    }

    return "80";
}
 
开发者ID:exalt-tech,项目名称:trex-stateless-gui,代码行数:17,代码来源:PacketUpdater.java


示例7: getDstPort

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
 * Return destination port
 *
 * @param packet
 * @return
 */
private String getDstPort(Packet packet) {
    if (protocolType.equals("TCP")) {
        return packet.get(TcpPacket.class).getHeader().getDstPort().toString();

    } else if (protocolType.equals("UDP")) {
        return packet.get(UdpPacket.class).getHeader().getDstPort().toString();
    }

    return "80";
}
 
开发者ID:exalt-tech,项目名称:trex-stateless-gui,代码行数:17,代码来源:PacketUpdater.java


示例8: getPacketTypeText

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
 *
 * @param packet
 * @return
 */
public PacketInfo getPacketTypeText(Packet packet) {
    PacketInfo packetInfo = new PacketInfo();

    String packetType = "";
    // Default values for packet info
    packetInfo.setType("Unknown");
    packetInfo.setLength(packet.length());
    if (packet != null) {
        // EthernetPacket
        if (packet.get(EthernetPacket.class) != null) {
            packetType += "Ethernet/";
        }
        // IPPacket
        if (packet.get(IpV4Packet.class) != null) {
            packetType += "IPV4/";
        }
        // TCPPacket
        if (packet.get(TcpPacket.class) != null) {
            packetType += "TCP/";
        }
        // UDPPacket
        if (packet.get(UdpPacket.class) != null) {
            packetType += "UDP";
        }
        if (packetType.endsWith("/")) {
            packetType = packetType.substring(0, packetType.length() - 1);
        }
        packetInfo.setType(packetType);
    }
    return packetInfo;
}
 
开发者ID:exalt-tech,项目名称:trex-stateless-gui,代码行数:37,代码来源:TrafficProfile.java


示例9: pack

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public static IpV6Packet pack(
  final Packet payload, Inet6Address src, Inet6Address dst, int hopLimit, short id
) {
  IpNumber nextHeader;
  if (payload instanceof UdpPacket) {
    nextHeader = IpNumber.UDP;
  }
  else if (payload instanceof IcmpV6CommonPacket) {
    nextHeader = IpNumber.ICMPV6;
  }
  else if (payload instanceof TcpPacket) {
    nextHeader = IpNumber.TCP;
  }
  else {
    throw new AssertionError();
  }

  IpV6Packet.Builder builder = new IpV6Packet.Builder();
  return builder.version(IpVersion.IPV6)
                .trafficClass(IpV6SimpleTrafficClass.newInstance((byte)0))
                .flowLabel(IpV6SimpleFlowLabel.newInstance(0))
                .nextHeader(nextHeader)
                .hopLimit((byte)hopLimit)
                .srcAddr(src)
                .dstAddr(dst)
                .payloadBuilder(new SimpleBuilder(payload))
                .correctLengthAtBuild(true)
                .build();
}
 
开发者ID:kaitoy,项目名称:sneo,代码行数:30,代码来源:IpV6Helper.java


示例10: pack

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public static IpV4Packet pack(
  final Packet payload, Inet4Address src, Inet4Address dst, int ttl, short id
) {
  IpNumber ipNum;
  if (payload instanceof UdpPacket) {
    ipNum = IpNumber.UDP;
  }
  else if (payload instanceof IcmpV4CommonPacket) {
    ipNum = IpNumber.ICMPV4;
  }
  else if (payload instanceof TcpPacket) {
    ipNum = IpNumber.TCP;
  }
  else {
    throw new AssertionError();
  }

  IpV4Packet.Builder builder = new IpV4Packet.Builder();
  return
    builder.version(IpVersion.IPV4)
           .tos(IpV4Rfc791Tos.newInstance((byte)0))
           .identification(id)
           .ttl((byte)ttl)
           .protocol(ipNum)
           .srcAddr(src)
           .dstAddr(dst)
           .payloadBuilder(new SimpleBuilder(payload))
           .correctChecksumAtBuild(true)
           .correctLengthAtBuild(true)
           .build();
}
 
开发者ID:kaitoy,项目名称:sneo,代码行数:32,代码来源:IpV4Helper.java


示例11: process_server

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public void process_server(final Packet packet, EthernetHeader ethernetHeader, IpV4Header ipV4Header, TcpPacket tcpPacket, boolean client){
	TcpHeader tcpHeader=tcpPacket.getHeader();
	
	if(!preDataReady){
		if(!connectReady){
			//第一次握手
			dstMacaAddress=ethernetHeader.getSrcAddr();
			if(tcpHeader.getSyn()&&!tcpHeader.getAck()){
				remoteStartSequence=tcpHeader.getSequenceNumber();
				remoteSequence=remoteStartSequence+1;
				remoteSequence_max=remoteSequence;
				MLog.println("接收第一次握手 "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" ident "+ipV4Header.getIdentification());
				MLog.println(""+packet);
				Packet responePacket=PacketUtils.createSyncAck(
						capEnv.local_mac,
						capEnv.gateway_mac,
						localAddress,(short)localPort,
						ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
						tcpHeader.getSequenceNumber()+1,localStartSequence,(short)0
						);
				try {
					sendHandle.sendPacket(responePacket);
				} catch (Exception e) {
					e.printStackTrace();
				}
				localSequence=localStartSequence+1;
				MLog.println("发送第二次握手 "+capEnv.local_mac+"->"+capEnv.gateway_mac+" "+localAddress+"->"+" ident "+0);

				MLog.println(""+responePacket);
			}

			if(!tcpHeader.getSyn()&&tcpHeader.getAck()){
				if(tcpPacket.getPayload()==null){
					//第三次握手,客户端确认
					if(tcpHeader.getAcknowledgmentNumber()==localSequence){
						MLog.println("接收第三次握手 "+" ident "+ipV4Header.getIdentification());
						MLog.println(packet+"");
						Thread t1=new Thread(){
							public void run(){
								//startSend(basePacket_server,syc_sequence_client+1);
							}
						};
						//t1.start();
						connectReady=true;
					}
				}
				//MLog.println("客户端响应preview\n "+packet);
				//MLog.println("request "+tcp.ack());
				sendedTable_server.remove(tcpHeader.getAcknowledgmentNumber());
				boolean selfAck=selfAckTable.contains(ipV4Header.getIdentification());
				//MLog.println("客户端确认 "+"selfack "+selfAck+" id "+ipV4Header.getIdentification()+" ack_sequence "+tcpHeader.getAcknowledgmentNumberAsLong()+" "+sendedTable_server.size()+"ppppppp "+tcpHeader);
			}
			
		}else {
			if(tcpPacket.getPayload()!=null){
				preDataReady=true;
				onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
				byte[] sim=getSimResponeHead();
				sendData(sim);
			}
		}
	}else {
		if(tcpPacket.getPayload()!=null){
			onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
			TunData td=new TunData();
			td.tun=this;
			td.data=tcpPacket.getPayload().getRawData();
			capEnv.vDatagramSocket.onReceinveFromTun(td);
		}
	}
	if(tcpHeader.getRst()){
		MLog.println("reset packet "+ipV4Header.getIdentification()+" "+tcpHeader.getSequenceNumber()+" "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" "+" ident "+ipV4Header.getIdentification());
	}

}
 
开发者ID:breakEval13,项目名称:NSS,代码行数:76,代码来源:TCPTun.java


示例12: onEvent

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
@Override
public void onEvent(PacketContainer container, long sequence, boolean endOfBatch) throws Exception {
    if (shouldSkipEvent(sequence)) {
        return;
    }
    IpV4Packet ipV4Packet = container.getIpV4Packet();
    if (ipV4Packet == null) {
        return;
    }
    buffer.clear();
    buffer.put(TYPE);
    buffer.put(VERSION);

    Timestamp timestamp = container.getTimestamp();
    buffer.putLong(timestamp.getTime());
    buffer.putInt(timestamp.getNanos());

    IpV4Packet.IpV4Header ipV4Header = ipV4Packet.getHeader();
    buffer.put(ipV4Header.getProtocol().value());

    Packet transportLayerPacket = ipV4Packet.getPayload();
    if (transportLayerPacket.getPayload() == null) {
        return;
    }

    if (transportLayerPacket instanceof UdpPacket) {
        UdpPacket.UdpHeader udpHeader = (UdpPacket.UdpHeader) transportLayerPacket.getHeader();
        buffer.put(ipV4Header.getSrcAddr().getAddress());
        buffer.putShort(udpHeader.getSrcPort().value());
        buffer.put(ipV4Header.getDstAddr().getAddress());
        buffer.putShort(udpHeader.getDstPort().value());
    } else {
        TcpPacket.TcpHeader tcpHeader = (TcpPacket.TcpHeader) transportLayerPacket.getHeader();
        buffer.put(ipV4Header.getSrcAddr().getAddress());
        buffer.putShort(tcpHeader.getSrcPort().value());
        buffer.put(ipV4Header.getDstAddr().getAddress());
        buffer.putShort(tcpHeader.getDstPort().value());
    }

    byte[] content = transportLayerPacket.getPayload().getRawData();
    SipContentReader.read(content, (i1, i2) -> {
        buffer.position(HEADER_LENGTH);
        buffer.limit(buffer.capacity());
        int length = i2 - i1;
        buffer.putShort((short) length);
        buffer.put(content, i1, length);
        buffer.flip();
        try {
            TimeUnit.MILLISECONDS.sleep(delay);
            channel.write(buffer);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    });
}
 
开发者ID:sip3io,项目名称:tapir,代码行数:56,代码来源:PacketSender.java


示例13: process_server

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public void process_server(final Packet packet,EthernetHeader ethernetHeader,IpV4Header ipV4Header,TcpPacket tcpPacket,boolean client){
	TcpHeader tcpHeader=tcpPacket.getHeader();
	
	if(!preDataReady){
		if(!connectReady){
			//第一次握手
			dstMacaAddress=ethernetHeader.getSrcAddr();
			if(tcpHeader.getSyn()&&!tcpHeader.getAck()){
				remoteStartSequence=tcpHeader.getSequenceNumber();
				remoteSequence=remoteStartSequence+1;
				remoteSequence_max=remoteSequence;
				MLog.println("接收第一次握手 "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" ident "+ipV4Header.getIdentification());
				MLog.println(""+packet);
				Packet responePacket=PacketUtils.createSyncAck(
						capEnv.local_mac,
						capEnv.gateway_mac,
						localAddress,(short)localPort,
						ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
						tcpHeader.getSequenceNumber()+1,localStartSequence,(short)0
						);
				try {
					sendHandle.sendPacket(responePacket);
				} catch (Exception e) {
					e.printStackTrace();
				}
				localSequence=localStartSequence+1;
				MLog.println("发送第二次握手 "+capEnv.local_mac+"->"+capEnv.gateway_mac+" "+localAddress+"->"+" ident "+0);

				MLog.println(""+responePacket);
			}

			if(!tcpHeader.getSyn()&&tcpHeader.getAck()){
				if(tcpPacket.getPayload()==null){
					//第三次握手,客户端确认
					if(tcpHeader.getAcknowledgmentNumber()==localSequence){
						MLog.println("接收第三次握手 "+" ident "+ipV4Header.getIdentification());
						MLog.println(packet+"");
						Thread t1=new Thread(){
							public void run(){
								//startSend(basePacket_server,syc_sequence_client+1);
							}
						};
						//t1.start();
						connectReady=true;
					}
				}
				//MLog.println("客户端响应preview\n "+packet);
				//MLog.println("request "+tcp.ack());
				sendedTable_server.remove(tcpHeader.getAcknowledgmentNumber());
				boolean selfAck=selfAckTable.contains(ipV4Header.getIdentification());
				//MLog.println("客户端确认 "+"selfack "+selfAck+" id "+ipV4Header.getIdentification()+" ack_sequence "+tcpHeader.getAcknowledgmentNumberAsLong()+" "+sendedTable_server.size()+"ppppppp "+tcpHeader);
			}
			
		}else {
			if(tcpPacket.getPayload()!=null){
				preDataReady=true;
				onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
				byte[] sim=getSimResponeHead();
				sendData(sim);
			}
		}
	}else {
		if(tcpPacket.getPayload()!=null){
			onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
			TunData td=new TunData();
			td.tun=this;
			td.data=tcpPacket.getPayload().getRawData();
			capEnv.vDatagramSocket.onReceinveFromTun(td);
		}
	}
	if(tcpHeader.getRst()){
		MLog.println("reset packet "+ipV4Header.getIdentification()+" "+tcpHeader.getSequenceNumber()+" "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" "+" ident "+ipV4Header.getIdentification());
	}

}
 
开发者ID:jonasxiao,项目名称:FinalSpeed,代码行数:76,代码来源:TCPTun.java


示例14: createDataPacket

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createDataPacket(
		MacAddress srcAddress_mac,
		MacAddress dstAddrress_mac,
		Inet4Address srcAddress,short srcPort,
		Inet4Address dstAddress,short dstPort,
		int sequence,int ack, byte[] data,short ident){
	Packet p=null;

	TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
	builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(data));
	builder_tcp.correctChecksumAtBuild(true);
	builder_tcp.correctLengthAtBuild(true);
	builder_tcp.paddingAtBuild(true);
	builder_tcp.ack(true);
	builder_tcp.acknowledgmentNumber(ack);
	//builder_tcp.checksum(tcpHeader.getChecksum());
	//builder_tcp.dataOffset((byte)8);
	builder_tcp.dstAddr(dstAddress);
	builder_tcp.dstPort(new TcpPort( dstPort,""));
	builder_tcp.fin(false);
	//builder_tcp.options(tcpHeader.getOptions());
	//builder_tcp.padding(tcpHeader.getPadding());
	builder_tcp.psh(false);
	builder_tcp.reserved((byte) 0);
	builder_tcp.rst(false);
	builder_tcp.sequenceNumber(sequence);
	builder_tcp.srcAddr(srcAddress);
	builder_tcp.srcPort(new TcpPort( srcPort,""));
	builder_tcp.syn(false);
	builder_tcp.urg(false);
	//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
	builder_tcp.window( window);

	IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
	builder_ipv4.correctChecksumAtBuild(true);
	builder_ipv4.correctLengthAtBuild(true);
	builder_ipv4.dontFragmentFlag(true);
	builder_ipv4.paddingAtBuild(true);
	builder_ipv4.dstAddr(dstAddress);
	builder_ipv4.fragmentOffset( (short)0);
	//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
	//short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
	//identification=ident;
	builder_ipv4.identification(ident);
	builder_ipv4.ihl((byte) 5);
	builder_ipv4.moreFragmentFlag(false);
	//builder_ipv4.options(ipV4Header.getOptions());
	//builder_ipv4.padding(ipV4Header.getPadding());

	builder_ipv4.protocol(IpNumber.TCP);
	//builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
	builder_ipv4.srcAddr(srcAddress);
	builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
	//builder_ipv4.totalLength( 52);
	builder_ipv4.ttl(ttl);
	builder_ipv4.version(IpVersion.IPV4);
	builder_ipv4.payloadBuilder(builder_tcp);

	p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);

	return p;
}
 
开发者ID:jonasxiao,项目名称:FinalSpeed,代码行数:63,代码来源:PacketUtils.java


示例15: createAck

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createAck(
		MacAddress srcAddress_mac,
		MacAddress dstAddrress_mac,
		Inet4Address srcAddress,short srcPort,
		Inet4Address dstAddress,short dstPort,
		int ack_sequence,int sequence,short ident){

	TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
	//builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(new byte[0]));
	builder_tcp.correctChecksumAtBuild(true);
	builder_tcp.correctLengthAtBuild(true);
	builder_tcp.paddingAtBuild(true);
	builder_tcp.ack(true);
	builder_tcp.acknowledgmentNumber(ack_sequence);
	//builder_tcp.checksum(tcpHeader.getChecksum());
	//builder_tcp.dataOffset((byte) 8);
	builder_tcp.dstAddr(dstAddress);
	builder_tcp.dstPort(new TcpPort( dstPort,""));
	//builder_tcp.fin(tcpHeader.getFin());

	builder_tcp.psh(false);
	builder_tcp.reserved((byte) 0);
	builder_tcp.rst(false);
	builder_tcp.sequenceNumber(sequence);
	builder_tcp.srcAddr(srcAddress);
	builder_tcp.srcPort(new TcpPort( srcPort,""));
	builder_tcp.syn(false);
	builder_tcp.urg(false);
	//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
	builder_tcp.window( window);

	IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
	builder_ipv4.correctChecksumAtBuild(true);
	builder_ipv4.correctLengthAtBuild(true);
	builder_ipv4.paddingAtBuild(true);
	builder_ipv4.dstAddr(dstAddress);
	builder_ipv4.dontFragmentFlag(true);
	builder_ipv4.fragmentOffset( (short) 0);
	//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
	//short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
	builder_ipv4.identification(ident);
	builder_ipv4.ihl((byte) 5);
	//builder_ipv4.moreFragmentFlag(ipV4Header.getMoreFragmentFlag());
	//builder_ipv4.options(ipV4Header.getOptions());
	//builder_ipv4.padding(ipV4Header.getPadding());

	builder_ipv4.protocol(IpNumber.TCP);
	//		builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
	builder_ipv4.srcAddr(srcAddress);
	builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
	//builder_ipv4.totalLength( 52);
	builder_ipv4.ttl(ttl);
	builder_ipv4.version(IpVersion.IPV4);
	builder_ipv4.payloadBuilder(builder_tcp);
	//
	
	Packet p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);
	//System.out.println("自定义确认 "+" identification "+identification+" ack_sequence "+ack_sequence+" # "+tcpPacket.getHeader());
	return p;

}
 
开发者ID:jonasxiao,项目名称:FinalSpeed,代码行数:62,代码来源:PacketUtils.java


示例16: process_server

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public void process_server(final Packet packet,EthernetHeader ethernetHeader,IpV4Header ipV4Header,TcpPacket tcpPacket,boolean client){
	TcpHeader tcpHeader=tcpPacket.getHeader();
	
	if(!preDataReady){
		if(!connectReady){
			//第一次握手
			dstMacaAddress=ethernetHeader.getSrcAddr();
			if(tcpHeader.getSyn()&&!tcpHeader.getAck()){
				remoteStartSequence=tcpHeader.getSequenceNumber();
				remoteSequence=remoteStartSequence+1;
				remoteSequence_max=remoteSequence;
				MLog.println("Receiving first handshake "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" ident "+ipV4Header.getIdentification());
				MLog.println(""+packet);
				Packet responePacket=PacketUtils.createSyncAck(
						capEnv.local_mac,
						capEnv.gateway_mac,
						localAddress,(short)localPort,
						ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
						tcpHeader.getSequenceNumber()+1,localStartSequence,(short)0
						);
				try {
					sendHandle.sendPacket(responePacket);
				} catch (Exception e) {
					e.printStackTrace();
				}
				localSequence=localStartSequence+1;
				MLog.println("Sending second handshake "+capEnv.local_mac+"->"+capEnv.gateway_mac+" "+localAddress+"->"+" ident "+0);

				MLog.println(""+responePacket);
			}

			if(!tcpHeader.getSyn()&&tcpHeader.getAck()){
				if(tcpPacket.getPayload()==null){
					//第三次握手,客户端确认
					if(tcpHeader.getAcknowledgmentNumber()==localSequence){
						MLog.println("Sending third handshake "+" ident "+ipV4Header.getIdentification());
						MLog.println(packet+"");
						/*new Thread(){
							public void run(){
								//startSend(basePacket_server,syc_sequence_client+1);
							}
						};
						//t1.start();*/
						connectReady=true;
					}
				}
				//MLog.println("客户端响应preview\n "+packet);
				//MLog.println("request "+tcp.ack());
				sendedTable_server.remove(tcpHeader.getAcknowledgmentNumber());
				//boolean selfAck=selfAckTable.contains(ipV4Header.getIdentification());
				//MLog.println("客户端确认 "+"selfack "+selfAck+" id "+ipV4Header.getIdentification()+" ack_sequence "+tcpHeader.getAcknowledgmentNumberAsLong()+" "+sendedTable_server.size()+"ppppppp "+tcpHeader);
			}
			
		}else {
			if(tcpPacket.getPayload()!=null){
				preDataReady=true;
				onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
				byte[] sim=getSimResponeHead();
				sendData(sim);
			}
		}
	}else {
		if(tcpPacket.getPayload()!=null){
			onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
			TunData td=new TunData();
			td.tun=this;
			td.data=tcpPacket.getPayload().getRawData();
			capEnv.vDatagramSocket.onReceinveFromTun(td);
		}
	}
	if(tcpHeader.getRst()){
		MLog.println("reset packet "+ipV4Header.getIdentification()+" "+tcpHeader.getSequenceNumber()+" "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" "+" ident "+ipV4Header.getIdentification());
	}

}
 
开发者ID:RCD-Y,项目名称:FinalSpeed-X,代码行数:76,代码来源:TCPTun.java


示例17: createAck

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createAck(
		MacAddress srcAddress_mac,
		MacAddress dstAddrress_mac,
		Inet4Address srcAddress,short srcPort,
		Inet4Address dstAddress,short dstPort,
		int ack_sequence,int sequence,short ident){

	TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
	//builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(new byte[0]));
	builder_tcp.correctChecksumAtBuild(true);
	builder_tcp.correctLengthAtBuild(true);
	builder_tcp.paddingAtBuild(true);
	builder_tcp.ack(true);
	builder_tcp.acknowledgmentNumber(ack_sequence);
	//builder_tcp.checksum(tcpHeader.getChecksum());
	//builder_tcp.dataOffset((byte) 8);
	builder_tcp.dstAddr(dstAddress);
	builder_tcp.dstPort(new TcpPort( dstPort,""));
	//builder_tcp.fin(tcpHeader.getFin());

	builder_tcp.psh(false);
	builder_tcp.reserved((byte) 0);
	builder_tcp.rst(false);
	builder_tcp.sequenceNumber(sequence);
	builder_tcp.srcAddr(srcAddress);
	builder_tcp.srcPort(new TcpPort( srcPort,""));
	builder_tcp.syn(false);
	builder_tcp.urg(false);
	//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
	builder_tcp.window( window);

	IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
	builder_ipv4.correctChecksumAtBuild(true);
	builder_ipv4.correctLengthAtBuild(true);
	builder_ipv4.paddingAtBuild(true);
	builder_ipv4.dstAddr(dstAddress);
	builder_ipv4.dontFragmentFlag(true);
	builder_ipv4.fragmentOffset( (short) 0);
	//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
	//short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
	builder_ipv4.identification(ident);
	builder_ipv4.ihl((byte) 5);
	//builder_ipv4.moreFragmentFlag(ipV4Header.getMoreFragmentFlag());
	//builder_ipv4.options(ipV4Header.getOptions());
	//builder_ipv4.padding(ipV4Header.getPadding());

	builder_ipv4.protocol(IpNumber.TCP);
	//		builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
	builder_ipv4.srcAddr(srcAddress);
	builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
	//builder_ipv4.totalLength( 52);
	builder_ipv4.ttl(ttl);
	builder_ipv4.version(IpVersion.IPV4);
	builder_ipv4.payloadBuilder(builder_tcp);
	//
	
	Packet p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);
	return p;

}
 
开发者ID:RCD-Y,项目名称:FinalSpeed-X,代码行数:61,代码来源:PacketUtils.java


示例18: buildPacket

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
 * Build packet
 */
public void buildPacket() {

    int calculatedLength = getPacketLength() - 14;

    String payloadString = payload.getPayloadType().getPadPayloadString(payload.getPayloadPattern(), calculatedLength * 2);

    UnknownPacket.Builder unknownb = null;
    if (calculatedLength != 0) {
        unknownb = new UnknownPacket.Builder();
        unknownb.rawData(payload.getPayloadPad(payloadString, calculatedLength));
    }
    ArrayList<TcpOption> options = new ArrayList<TcpOption>();

    options.add(TcpEndOfOptionList.getInstance());

    tcpBuilder = new TcpPacket.Builder();
    tcpBuilder.dstPort(dstPort)
            .srcPort(srcPort)
            .sequenceNumber(sequenceNumber)
            .acknowledgmentNumber(acknowledgmentNumber)
            .dataOffset(dataOffset)
            .reserved(reserved)
            .urg(urg)
            .ack(ack)
            .psh(psh)
            .rst(rst)
            .syn(syn)
            .fin(fin)
            .window(window)
            .checksum(checksum)
            .urgentPointer(urgentPointer)
            .options(options)
            .padding(new byte[]{(byte) 0xaa})
            .correctChecksumAtBuild(false)
            .correctLengthAtBuild(false)
            .paddingAtBuild(false);

    if (calculatedLength != 0) {
        tcpBuilder.payloadBuilder(unknownb);
    }
    this.packet = tcpBuilder.build();
}
 
开发者ID:exalt-tech,项目名称:trex-stateless-gui,代码行数:46,代码来源:TrexTcpPacket.java


示例19: extractPacketInfo

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
 * Extract packet info
 *
 * @param packet
 * @return
 */
private PacketInfo extractPacketInfo(Packet packet) {

    if (packet != null) {
        packetInfo.setPacketHex(formatHex(DatatypeConverter.printHexBinary(packet.getRawData())));
        packetInfo.setPacketRawData(formatPayLoad(new String(packet.getRawData())));
    }

    // defien whether packet has vlan or not
    if(packet.get(Dot1qVlanTagPacket.class) != null){
        packetInfo.setVlanPacket(true);
    }
    // If the packet has Ethernet
    if (packet.get(EthernetPacket.class) != null) {
        packetInfo.setEthernetHex(getHeaderOffset(packet.get(EthernetPacket.class).getHeader().toHexString().toUpperCase()));
        packetInfo.setEthernetRawData(new String());
        packetInfo.setDestMac(packet.get(EthernetPacket.class).getHeader().getDstAddr().toString());
        packetInfo.setSrcMac(packet.get(EthernetPacket.class).getHeader().getSrcAddr().toString());
    }

    // if the packet has IPV4
    if (packet.get(IpV4Packet.class) != null) {
        packetInfo.setIpv4Hex(getHeaderOffset(packet.get(IpV4Packet.class).getHeader().toHexString().toUpperCase()));
        packetInfo.setIpv4RawData(new String());
        packetInfo.setDestIpv4(packet.get(IpV4Packet.class).getHeader().getDstAddr().getHostAddress());
        packetInfo.setSrcIpv4(packet.get(IpV4Packet.class).getHeader().getSrcAddr().getHostAddress());
    }

    // if the packet has TCP
    if (packet.get(TcpPacket.class) != null) {
        packetInfo.setL4Name("TCP");
        packetInfo.setL4Hex(getHeaderOffset(packet.get(TcpPacket.class).getHeader().toHexString().toUpperCase()));
        packetInfo.setL4RawData(new String());
        if (packet.get(TcpPacket.class).getPayload() != null) {
            packetInfo.setPacketPayLoad(getHeaderOffset(spaceHex(Hex.encodeHexString(packet.get(TcpPacket.class).getPayload().getRawData()))));
        } else {
            packetInfo.setPacketPayLoad(null);
        }
    }

    // if the packet has UDP
    if (packet.get(UdpPacket.class) != null) {
        packetInfo.setL4Name("UDP");
        packetInfo.setL4Hex(getHeaderOffset(packet.get(UdpPacket.class).getHeader().toHexString().toUpperCase()));
        packetInfo.setL4RawData(new String());

        if (packet.get(UdpPacket.class).getPayload() != null) {
            packetInfo.setPacketPayLoad(getHeaderOffset(spaceHex(Hex.encodeHexString(packet.get(UdpPacket.class).getPayload().getRawData()))));
        } else {
            packetInfo.setPacketPayLoad(null);
        }
    }
    return packetInfo;
}
 
开发者ID:exalt-tech,项目名称:trex-stateless-gui,代码行数:60,代码来源:PacketParser.java


示例20: process_server

import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public void process_server(final Packet packet, EthernetHeader ethernetHeader, IpV4Header ipV4Header, TcpPacket
        tcpPacket, boolean client) {
    TcpHeader tcpHeader = tcpPacket.getHeader();

    if (!preDataReady) {
        if (!connectReady) {
            //第一次握手
            dstMacaAddress = ethernetHeader.getSrcAddr();
            if (tcpHeader.getSyn() && !tcpHeader.getAck()) {
                remoteStartSequence = tcpHeader.getSequenceNumber();
                remoteSequence = remoteStartSequence + 1;
                remoteSequence_max = remoteSequence;
                MLog.println("接收第一次握手 " + remoteAddress.getHostAddress() + ":" + remotePort + "->" + localAddress
                        .getHostAddress() + ":" + localPort + " ident " + ipV4Header.getIdentification());
                MLog.println("" + packet);
                Packet responePacket = PacketUtils.createSyncAck(
                        capEnv.local_mac,
                        capEnv.gateway_mac,
                        localAddress, localPort,
                        ipV4Header.getSrcAddr(), tcpHeader.getSrcPort().value(),
                        tcpHeader.getSequenceNumber() + 1, localStartSequence, (short) 0
                );
                try {
                    sendHandle.sendPacket(responePacket);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                localSequence = localStartSequence + 1;
                MLog.println("发送第二次握手 " + capEnv.local_mac + "->" + capEnv.gateway_mac + " " + localAddress +
                        "->" + " ident " + 0);

                MLog.println("" + responePacket);
            }

            if (!tcpHeader.getSyn() && tcpHeader.getAck()) {
                if (tcpPacket.getPayload() == null) {
                    //第三次握手,客户端确认
                    if (tcpHeader.getAcknowledgmentNumber() == localSequence) {
                        MLog.println("接收第三次握手 " + " ident " + ipV4Header.getIdentification());
                        MLog.println(packet + "");
                        Thread t1 = new Thread() {
                            public void run() {
                                //startSend(basePacket_server,syc_sequence_client+1);
                            }
  

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java UserAccessorProperty类代码示例发布时间:2022-05-22
下一篇:
Java TextDirectionHeuristic类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap