public PanasonicDiscovery(PhysicalAddress macAddress, IPAddress _ip) { byte[] ipBytes; UInt32 ipUInt32; _uint32_04 = NetworkUtils.bigEndian32(0x000d0000); _uint32_08 = NetworkUtils.bigEndian32(0x00000000); headerMagic = NetworkUtils.bigEndian32(0x00010000); mac = macAddress.GetAddressBytes().GetStruct <MacAddress>(); ipBytes = _ip.GetAddressBytes(); ipUInt32 = (UInt32)((ipBytes[0] << 24) | (ipBytes[1] << 16) | (ipBytes[2] << 8) | (ipBytes[3])); ip = NetworkUtils.bigEndian32(ipUInt32); _uint32_16 = NetworkUtils.bigEndian32(0x00012011); _uint32_1A = NetworkUtils.bigEndian32(0x1e11231f); _uint32_1E = NetworkUtils.bigEndian32(0x1e191300); _uint32_22 = NetworkUtils.bigEndian32(0x00020000); _uint32_26 = NetworkUtils.bigEndian32(0x00000000); _uint32_2A = NetworkUtils.bigEndian32(0x00000000); _uint32_2E = NetworkUtils.bigEndian32(0x0000ffff); checksum = NetworkUtils.bigEndian16(0x0000); }
public NiceVisionRequest(UInt16 transactionId, UInt16 answerToPort) { magic = NetworkUtils.bigEndian32(NiceVision.magic); transaction = NetworkUtils.bigEndian16(transactionId); payload = NetworkUtils.bigEndian32(NiceVision.payload); answerPort = NetworkUtils.bigEndian16((UInt16)answerToPort); }
public override void reciever(IPEndPoint from, byte[] data) { VivotekHeader header; int headerSize; int position; string model, mac; IPAddress IPv4; header = data.GetStruct <VivotekHeader>(); headerSize = typeof(VivotekHeader).StructLayoutAttribute.Size; if (NetworkUtils.bigEndian32(header.magic) != magic) { Logger.LogWarning("Warning: Vivotek.reciever(): Wrong packet magic value"); return; } mac = ""; model = ""; IPv4 = null; position = headerSize; while (position < data.Length) { byte variable; byte[] value; variable = readNextValue(data, ref position, out value); switch (variable) { case (byte)VivotekValue.typeNull: Logger.LogWarning("Warning: Vivotek.reciever(): Invalid packet, variable type null"); return; case (byte)VivotekValue.IPAddress: IPv4 = new IPAddress(value); break; case (byte)VivotekValue.longName: Logger.LogDebug("longName"); Logger.WriteData(LogLevel.Debug, value); break; case (byte)VivotekValue.macAddress: mac = String.Format("{0:X2}:{1:X2}:{2:X2}:{3:X2}:{4:X2}:{5:X2}", value[0], value[1], value[2], value[3], value[4], value[5]); break; case (byte)VivotekValue.shortName: model = Encoding.UTF8.GetString(value); break; } } if (IPv4 != null) { viewer.deviceFound(name, 1, IPv4, model, mac); } }
public override byte[] sender(IPEndPoint dest) { BoschRequest request; byte[] result; DateTime date; date = DateTime.UtcNow; request = new BoschRequest(); request.magic = NetworkUtils.bigEndian32(answerMagic); request.transactionID = NetworkUtils.bigEndian32((UInt32) ((date.Hour << 24) | (date.Minute << 16) | (date.Second << 8) | (date.Millisecond / 10) )); request.requestMagic = NetworkUtils.bigEndian32(requestMagic); result = request.GetBytes(); return(result); }
public override byte[] sender(IPEndPoint dest) { Dahua2Header header; byte[] headerArray; string bodyStr; byte[] bodyArray; byte[] result; int headerSize; header = new Dahua2Header { headerSize = NetworkUtils.littleEndian32((UInt32)typeof(Dahua2Header).StructLayoutAttribute.Size), headerMagic = NetworkUtils.bigEndian32(magic), _reserved_08 = 0, _reserved_0C = 0, packetSize1 = 0, _reserved_14 = 0, packetSize2 = 0, _reserved_1C = 0 }; bodyStr = "{ \"method\" : \"DHDiscover.search\", \"params\" : { \"mac\" : \"\", \"uni\" : 1 } }\n"; bodyArray = Encoding.UTF8.GetBytes(bodyStr); headerSize = typeof(Dahua2Header).StructLayoutAttribute.Size; result = new byte[headerSize + bodyArray.Length]; header.packetSize1 = (UInt32)bodyArray.Length; header.packetSize2 = (UInt32)bodyArray.Length; headerArray = header.GetBytes(); headerArray.CopyTo(result, 0); bodyArray.CopyTo(result, headerSize); return(result); }
public override void reciever(IPEndPoint from, byte[] data) { string deviceModel, deviceSerial; // xml is much bigger if (data.Length == typeof(BoschBinaryAnswer).StructLayoutAttribute.Size) { BoschBinaryAnswer binary; UInt32 ip; binary = data.GetStruct <BoschBinaryAnswer>(); if (NetworkUtils.bigEndian32(binary.magic) != answerMagic) { Logger.getInstance().WriteLine(Logger.DebugLevel.Warn, "Warning: Bosch.reciever(): Packet with wrong header."); return; } ip = NetworkUtils.littleEndian32(binary.ipv4); deviceSerial = binary.mac.ToString(); deviceModel = name; viewer.deviceFound(name, 1, new IPAddress(ip), deviceModel, deviceSerial); } else { string xml; string deviceIPv4Str, deviceIPv6Str; Regex type, ipv4, ipv6, mac, serial; Match m; IPAddress ip; xml = Encoding.UTF8.GetString(data); type = new Regex("<friendlyName>([^<]*)</friendlyName>"); ipv4 = new Regex("<unitIPAddress>([^<]*)</unitIPAddress>"); ipv6 = new Regex("<unitIPv6Address>([^<]*)</unitIPv6Address>"); mac = new Regex("<physAddress>([^<]*)</physAddress>"); serial = new Regex("<serialNumber>([^<]*)</serialNumber>"); deviceIPv4Str = ""; m = ipv4.Match(xml); if (m.Success) { deviceIPv4Str = m.Groups[1].Value; } deviceIPv6Str = ""; m = ipv6.Match(xml); if (m.Success) { deviceIPv6Str = m.Groups[1].Value; } deviceModel = ""; m = type.Match(xml); if (m.Success) { deviceModel = m.Groups[1].Value; } deviceSerial = ""; m = serial.Match(xml); if (m.Success) { deviceSerial = m.Groups[1].Value; } else { m = mac.Match(xml); if (m.Success) { deviceSerial = m.Groups[1].Value; } } if (!IPAddress.TryParse(deviceIPv4Str, out ip)) { Logger.getInstance().WriteLine(Logger.DebugLevel.Warn, String.Format("Warning: Bosch.reciever(): Invalid ipv4 format: {0}", deviceIPv4Str)); ip = from.Address; } viewer.deviceFound(name, 2, ip, deviceModel, deviceSerial); if (IPAddress.TryParse(deviceIPv6Str, out ip)) { viewer.deviceFound(name, 2, ip, deviceModel, deviceSerial); } else { Logger.getInstance().WriteLine(Logger.DebugLevel.Warn, String.Format("Warning: Bosch.reciever(): Invalid ipv6 format: {0}", deviceIPv6Str)); } } }
public VivotekHeader(byte sessionId) { session = sessionId; magic = NetworkUtils.bigEndian32(Vivotek.magic); }