Compare commits

...

2 Commits

Author SHA1 Message Date
feyris-tan
49fa6790fa Plumbed some holes in the ULE parser. 2025-07-25 21:34:22 +02:00
feyris-tan
0981ec5291 Discard some proprietary EtherTypes. 2025-07-24 22:43:22 +02:00
4 changed files with 29 additions and 4 deletions

View File

@ -30,7 +30,7 @@ namespace skyscraper8.Ietf.Rfc4236_ULE
public override void Introduce(ProgramContext programContext)
{
throw new NotImplementedException();
}
public void OnEthernetFrame(int pid, PhysicalAddress destination, PhysicalAddress source, ushort etherType, byte[] contents)

View File

@ -40,7 +40,6 @@ namespace skyscraper5
private static void IntegrationTest()
{
}
static void Main(string[] args)

View File

@ -2,7 +2,7 @@
"profiles": {
"skyscraper8": {
"commandName": "Project",
"commandLineArgs": "file-live \"C:\\Temp\\sky-uk-000000.ts\"",
"commandLineArgs": "\"Z:\\Freebies\\Datasets\\SkyscraperLibrarian\\DVB-S Juli 2025\\movistar-000000.ts\"",
"remoteDebugEnabled": false
},
"Container (Dockerfile)": {

View File

@ -66,6 +66,7 @@ using skyscraper8.yo3explorer;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
@ -1683,7 +1684,10 @@ namespace skyscraper5.Skyscraper.Scraper
IPAddress sourceAddress = new IPAddress(ipv6Stream.ReadBytes(16));
IPAddress destinationAddress = new IPAddress(ipv6Stream.ReadBytes(16));
InternetHeader ipv6Header = new InternetHeader(trafficClass, flowLabel, payloadLength, nextHeader, hopLimit, sourceAddress, destinationAddress);
OnIpv4PacketArrival(ipv6Header, ipv6Stream.ReadBytes(payloadLength));
if (ipv6Stream.GetAvailableBytes() >= payloadLength)
{
OnIpv4PacketArrival(ipv6Header, ipv6Stream.ReadBytes(payloadLength));
}
return;
}
else
@ -2709,6 +2713,8 @@ namespace skyscraper5.Skyscraper.Scraper
public void OnEthernetFrame(int pid, PhysicalAddress destination, PhysicalAddress source, ushort etherType, byte[] contents)
{
if (Array.TrueForAll(contents, x => x == 0))
return;
if (etherType <= 1500)
{
OnLlcFrame(etherType, contents);
@ -2723,6 +2729,10 @@ namespace skyscraper5.Skyscraper.Scraper
//This is related to G.9961, a PowerLine standard specified by ITU-T T-REC-G.9961
//I don't think we need this.
return;
case 0x2f00:
//This is something proprietary.
//Quite possibly related to Extron hardware?
return;
case 0x0806:
//This is an ARP Frame. We don't need it.
return;
@ -2748,6 +2758,22 @@ namespace skyscraper5.Skyscraper.Scraper
//3Com(Bridge) XNS Sys Mgmt
//Can't say anything about these. I don't have any 3Com equipment.
return;
case 0x94ce:
//Something proprietary. No idea.
return;
case 0xb69d:
//Something proprietary. No idea.
return;
case 0xf67f:
if (contents[20] == 0xaa && contents[21] == 0xaa && contents[22] == 0x03 && contents[23] == 0x00 && contents[24] == 0x00 && contents[25] == 0x00)
{
(contents[26], contents[27]) = (contents[27], contents[26]);
ushort newEtherType = BitConverter.ToUInt16(contents, 26);
byte[] newPacket = new byte[contents.Length - 28];
Array.Copy(contents, 28, newPacket, 0, newPacket.Length);
OnEthernetFrame(pid, destination, source, newEtherType, newPacket);
}
return;
default:
throw new NotImplementedException(String.Format("EtherType: 0x{0:X4}", etherType));
}