예제 #1
0
        /// <summary> Generate a pseudo-random ARP header.
        /// </summary>
        public static byte[] generateRandomARPHeader()
        {
            byte[] bytes = new byte[Packets.ARPFields.ARP_HEADER_LEN];

            ArrayHelper.insertLong(bytes, Packets.ARPFields.ARP_ETH_ADDR_CODE, Packets.ARPFields.ARP_HW_TYPE_POS, Packets.ARPFields.ARP_ADDR_TYPE_LEN);
            ArrayHelper.insertLong(bytes, Packets.ARPFields.ARP_IP_ADDR_CODE, Packets.ARPFields.ARP_PR_TYPE_POS, Packets.ARPFields.ARP_ADDR_TYPE_LEN);
            ArrayHelper.insertLong(bytes, IPAddress.WIDTH, Packets.ARPFields.ARP_HW_LEN_POS, Packets.ARPFields.ARP_ADDR_SIZE_LEN);
            ArrayHelper.insertLong(bytes, MACAddress.WIDTH, Packets.ARPFields.ARP_PR_LEN_POS, Packets.ARPFields.ARP_ADDR_SIZE_LEN);
            ArrayHelper.insertLong(bytes, test(Settings.PROB_ARP_REQUEST)?Packets.ARPFields.ARP_OP_REQ_CODE:Packets.ARPFields.ARP_OP_REP_CODE, Packets.ARPFields.ARP_OP_POS, Packets.ARPFields.ARP_OP_LEN);
            ArrayHelper.insertLong(bytes, MACAddress.random(), Packets.ARPFields.ARP_S_HW_ADDR_POS, MACAddress.WIDTH);
            int srcAddress = IPAddress.random(Settings.SIM_NETWORK, Settings.SIM_NETMASK);

            ArrayHelper.insertLong(bytes, srcAddress, Packets.ARPFields.ARP_S_PR_ADDR_POS, IPAddress.WIDTH);
            ArrayHelper.insertLong(bytes, MACAddress.random(), Packets.ARPFields.ARP_T_HW_ADDR_POS, MACAddress.WIDTH);

            int dstAddress = srcAddress;
            int count      = 0;

            // cheezy way to make sure that the source and dest address aren't the same
            while (dstAddress == srcAddress && count++ < randomRetryCount)
            {
                dstAddress = IPAddress.random(Settings.SIM_NETWORK, Settings.SIM_NETMASK);
            }
            ArrayHelper.insertLong(bytes, dstAddress, Packets.ARPFields.ARP_T_PR_ADDR_POS, IPAddress.WIDTH);

            return(bytes);
        }
예제 #2
0
        /// <summary> Generate a pseudo-random ethernet header.
        /// </summary>
        public static byte[] generateRandomEthernetHeader()
        {
            byte[] bytes = new byte[Packets.EthernetFields.ETH_HEADER_LEN];

            long dst = MACAddress.random();

            ArrayHelper.insertLong(bytes, dst, Packets.EthernetFields.ETH_DST_POS, MACAddress.WIDTH);

            long src = MACAddress.random();

            ArrayHelper.insertLong(bytes, src, Packets.EthernetFields.ETH_SRC_POS, MACAddress.WIDTH);

            int type = randomEthernetProtocol();

            ArrayHelper.insertLong(bytes, type, Packets.EthernetFields.ETH_CODE_POS, Packets.EthernetFields.ETH_CODE_LEN);

            return(bytes);
        }