Exemple #1
0
        private void btnImportMultis_Click(object sender, EventArgs e)
        {
            string inp = Microsoft.VisualBasic.Interaction.InputBox("Paste the raw, colon-delimited packet data here: ", "Enter packet data");

            if (inp.Length == 0)
                return;

            inp = inp.Replace(":", "");
            if (inp.Length%2 != 0) return;
            inp = inp.Substring(4);
            byte[] data = new byte[inp.Length / 2];
            for (int i = 0; i < inp.Length; i += 2)
                data[i/2] = Convert.ToByte(inp.Substring(i, 2), 16);

            //no need to decrypt since it's init data
            Packet pkt = new Packet(data);
            pkt.Skip(3);
            txtDMulti.Text = pkt.GetByte().ToString();
            txtEMulti.Text = pkt.GetByte().ToString();
            m_processor.RecvMulti = pkt.Get()[5];
            m_processor.SendMulti = pkt.Get()[6];
        }
Exemple #2
0
        private void _checkRequiredInputs()
        {
            txtOutput.Text = "";

            if (txtDMulti.TextLength == 0 || txtEMulti.TextLength == 0 || txtOffset.TextLength == 0)
                return;

            if (txtLength.TextLength == 0 && m_type == DataTypes.FixedString)
                return;

            string inputData = txtInputData.Text;
            if (inputData.Length == 0)
                return;

            //input data is copied from wireshark. colon delimited.
            string bytes = inputData.Replace(":", "");
            string len = bytes.Substring(0, 4);//first 2 bytes are the length!
            bytes = bytes.Substring(4);
            byte[] data = new byte[bytes.Length / 2];

            byte[] lenDat = new byte[2];
            for (int i = 0; i < len.Length; i += 2)
            {
                lenDat[i/2] = Convert.ToByte(len.Substring(i, 2), 16);
            }
            lblPacketLength.Text = "Packet Length: " + Packet.DecodeNumber(lenDat).ToString();

            for (int i = 0; i < bytes.Length; i += 2)
            {
                data[i/2] = Convert.ToByte(bytes.Substring(i, 2), 16);
            }

            m_processor.Decode(ref data);
            Packet pkt = new Packet(data) {ReadPos = m_packetOffset};

            lblFamily.Text = pkt.Family.ToString();
            lblAction.Text = pkt.Action.ToString();

            string decoded = "";
            for (int i = 0; i < data.Length; i++)
            {
                decoded += string.Format("{0} ", data[i].ToString("D3"));
            }
            txtDecoded.Text = decoded;

            switch ((DataTypes) cmbOutputFmt.SelectedIndex)
            {
                case DataTypes.None:
                    txtOutput.Text = pkt.GetEndString();
                    break;
                case DataTypes.PacketFamily:
                    txtOutput.Text = ((PacketFamily) pkt.PeekByte()).ToString();
                    break;
                case DataTypes.PacketAction:
                    txtOutput.Text = ((PacketAction)pkt.PeekByte()).ToString();
                    break;
                case DataTypes.Byte:
                    txtOutput.Text = pkt.PeekByte().ToString();
                    break;
                case DataTypes.Char:
                    txtOutput.Text = pkt.PeekChar().ToString();
                    break;
                case DataTypes.Short:
                    txtOutput.Text = pkt.PeekShort().ToString();
                    break;
                case DataTypes.Three:
                    txtOutput.Text = pkt.PeekThree().ToString();
                    break;
                case DataTypes.Int:
                    txtOutput.Text = pkt.PeekInt().ToString();
                    break;
                case DataTypes.BreakString:
                    txtOutput.Text = pkt.PeekBreakString();
                    break;
                case DataTypes.EndString:
                    txtOutput.Text = pkt.PeekEndString();
                    break;
                case DataTypes.FixedString:
                    txtOutput.Text = pkt.PeekFixedString(m_dataLength);
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            int selLen;
            if (m_dataLength > 0) selLen = m_dataLength;
            else
                switch (m_type)
                {
                    case DataTypes.EndString:
                        selLen = 3*(pkt.Length - pkt.ReadPos) - 1;
                        break;
                    case DataTypes.BreakString:
                        int oldPos = pkt.ReadPos;
                        while (pkt.GetByte() != 255) ;
                        selLen = pkt.ReadPos - oldPos;
                        pkt.ReadPos = oldPos;
                        break;
                    default:
                        selLen = 0;
                        break;
                }
            txtDecoded.Select(4 * m_packetOffset, 4 * selLen - 1);

            if (m_type == DataTypes.EndString || m_type == DataTypes.BreakString)
            {
                m_suppressEvent = true;
                txtLength.Text = selLen.ToString();
                m_suppressEvent = false;
            }
        }