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) public override void Introduce(ProgramContext programContext)
{ {
throw new NotImplementedException();
} }
public void OnEthernetFrame(int pid, PhysicalAddress destination, PhysicalAddress source, ushort etherType, byte[] contents) 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() private static void IntegrationTest()
{ {
} }
static void Main(string[] args) static void Main(string[] args)

View File

@ -2,7 +2,7 @@
"profiles": { "profiles": {
"skyscraper8": { "skyscraper8": {
"commandName": "Project", "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 "remoteDebugEnabled": false
}, },
"Container (Dockerfile)": { "Container (Dockerfile)": {

View File

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