# skyscraper5 TODO * [DONE] LocalStreamReader (und rsr-server) ausgliedern, damit Main Assembly wieder in MSIL kompiliert werden kann. * [DONE] LocalStreamReader als eigene Assembly (Library) * [DONE] rsr-server als eigene eigene Assembly (Console Application) * [DONE] dvbtmagic als eigene Assembly, hat ja nicht wirklich was mit skyscraping zu tun. * AC3 Parser (kein Decoder) fur Ancillary Data * MP2 Parser (kein Decoder) fur Ancillary Data * AAC Parser (kein Decoder) fur Ancillary Data * MPEG-2 Parser (kein Decoder) fur Auxillary Data * H.264 Parser (kein Decoder) fur Auxillary Data * H.265 Parser (kein Decoder) fur Auxillary Data * [DONE] LNB Typen definieren, und in der UI einstellbar machen * [DONE] LNB Typen sollten pro Tuner-Anschluss, nicht pro Satellit definiert werden. * [DONE] Antennen Typen definieren, und in der UI einstellbar machen * [DONE] GPS Position sollte ermittelt werden konnen. * [DONE] manuell * [DONE] direkt angeschlossenes Gerat per SerialPort * [DONE] via TCP aus gpsd * [DONE] via UDP Broadcast/Multicast * [DONE] Blindscan-Jobs in Datenbank schreiben. (inkl. Tuner-ID/MAC, LNB-Typ, Antennen-Typ und GPS Daten) * [DONE] Blindscan-Ergebnisse in Datenbank schreiben * rudimanteren Java-Port * (inkl. Disketten-Image for the lulz - keine Abhangigkeiten außer vielleicht Apache Commons ;) ) * [DONE] uberlegen, ob sich satbeams.com scrapen lasst. * [DONE] Dabei einzelne Satelliten, Beams und Footprints dieser Beams in DB schreiben, * und dann in der UI Moglichkeit bieten, anhand von GPS-Daten, Antennen-Typ und LNB-Typ zu ermitteln welche Beams empfangbar sind. * [DONE] satbeams.com geht definitiv nicht. * [DONE] Aber das da: https://genmap.lyngsat.org/server2/kml * [DONE] Das ist ein JSON, welches eine Liste an KML-Files zuruckgibt. * [DONE] KML File parsen trivial - ist XML. * [DONE] mithilfe von https://gis.stackexchange.com/questions/42879/check-if-lat-long-point-is-within-a-set-of-polygons-using-google-maps/46720#46720 testen ob in shape * Blockstream parsen. Dazu Blog-Post "Anatomy of Blockstream Satellite" zur Hilfe nehmen. ( https://destevez.net/2022/10/anatomy-of-blockstream-satellite/ ) * Client/Server-Architektur fur ScraperStorage * [DONE] Architektur aufbauen, um Handler fur eingehende MPE/IP Pakete auszugliedern * [DONE] APRS in eben jenes ausgliedern * [DONE] Plugin-System so ausbauen, dass Assembly-Scanning nur noch an einer Stelle notwendig ist. * [DONE] T2MI Packet Types * [DONE] StreamTypeAutodetection * [DONE] Behandlung des Gewinners nicht im SkyscraperContext sondern im Contestant selber, sonst ist's witzlos. * [DONE] ScraperStorageFactoryConnectionManager * [DONE] TunerFactoryConnectionManager * [DONE] TsDescriptorUnpacker * [DONE] Mpeg2ExtensionDescriptorConverter * [DONE] UserDefinedDescriptorUnpacker * [DONE] bereits vorhandene PrivateDataSpecifiers in eigene Assemblys auslagern * [DONE] DvbExtensionDescriptorConverter * [DONE] DsmCcMessageUnpacker * [DONE] PushMacManagementMessage * [DONE] GPS in der UI auswählbar machen * [DONE] Optional Fenster mit GPS Daten einblenden lassen * [DONE] GPS via GeoIP simulieren * [DONE] Kabel-TV Frequenzlistengenerator * [DONE] sauberen Exception-Tree aufbauen, mit Vererbung und allem drum und dran. * Tests mit Code-Coverage * [DONE] TS-Generator als System.IO.Stream * [DONE] PAT-Generator * [DONE] PMT-Generator * [DONE] SDT-Generator * [DONE] CAT-Generator * [DONE] TDT-Generator * [DONE] TOT-Generator * [DONE] Namespaces aufräumen * [DONE] StreamReader Versionen prüfen. Eventuell eine KnownIssues Funktion zum Server hinzufügen? (Beispiel: StreamReader 1.2.4.101 sehr gut, StreamReader 1.2.5.176 doof) * [DONE] Dafür PE-Parser hinzufügen (um DLLs und EXEn zu parsen) * [DONE] DLL-Versionsinfo aus PE lesen. * [DONE] 1.2.5.194 -> bad * [DONE] 1.2.5.176 -> bad * [DONE] 1.2.4.101 -> good * Inhalte von einer Datenbank in eine andere kopieren. * [DONE] Im SDT Parser sollte der Message Descriptor geparst werden. * [DONE] Die Messages sollten natürlich auch in eine Datenbank geschrieben werden. * [DONE] In TestDrid: Kooperativer Blindscan. Scannen mit einer Karte, zappen mit einer anderen. * Tuning Retries * ExternalEsIdDescriptor implementieren. * Natürlich auch in die Datenbank schreiben. * Unbekanntes Text Encoding auf Eutelsat 7, 12648 H, MIS3 * [DONE] "Unknown Protocol" 50 * [DONE] "Unknown Protocal" 47 * [DONE] In MinioObjectStorage.cs bei Zeile 132 - behandeln dass nicht immer unbedingt eine MinioException rauskommt! * skyscraper5.Ietf.Rfc971.InternetHeader sollte Validatable implementieren. * In Testdrid: Einen Notizblock * Wenn ein Blindscan false zurückgibt, aber dennoch Ergebnisse geliefert hat, diese trotzdem abklopfen. * [DONE] Paketfiltersystem hinzufügen, statt Pakete manuell zu droppen. * [DONE] Aufzeichnungssystem in den Paketfilter verlagern. * [DONE] Scramble Paket Dropper * Tester ob zwischen Scramble und Non-Scramble geswitcht wird. * Den Screenshotter da dran hängen! * [DONE] TEI Paket Dropper * [DONE] Prioritätensystem da dran hängen. (Schließlich sollen die Pakete immer zuerst aufgezeichnet werden) * [DONE] Skip x (512) Packets Filter * PCR Monitor dorthin verlagern * TCP Proxy dorthin verlagern * Descriptor 0x2E (46) bei PMT (TsDescriptorUnpacker.cs, Zeile 81) * Netzwerkschnittstelle einbauen * PCAP Writer * UDPDump * TAP Adapter (siehe https://github.com/HBSnail/UniversalTunTapDriver/blob/master/README.md ) * /dev/null * IP-in-IP Encapsulation, new Socket(AddressFamily.InterNetwork, Socket.Raw, ProtocolType.IP) * [DONE] Intelsat Internet reverse engineeren. Gutes Beispiel auf Intelsat 68,5°E 12625/H. TS Header ist nicht 4 sondern 9 Bytes * [DONE] Oder auf Intelsat 72,1°E 12718/H * [DONE] Hängt möglicherweise mit Digital Devices BBFRAMES zusammen? * Ja, tut es, deshalb auch BBFRAME Header parsen * SeaweedFS als File-Storage implementieren * In GSE und MPE Paketen: * [DONE] DNS Responses parsen und daraus "lernen" * [DONE] DNS Type 39 * UDP L2TP & L2F Pakete parsen & reingucken. (z.B. in skyscraper_20240830_1254_0235E_11620_H_5931.ts) * NTP parsen (z.B. in 12551_h_intelsat_like_internet.ts) * [DONE] Von hier klauen: https://github.com/kapetan/dns * In IP-in-IP Pakete reingucken. * In IPv6 Encapsulation Pakete reingucken. * In GRE Pakete reingucken. * In RFC3652 Pakete (Type 253) reingucken. Ist in der Payload das Offset 6 = 0x45, so ist ein getunneltes IPv4 Paket. :) * [DONE] ServiceListDescriptor im BatParser * [DONE] ExtensionDescriptor 32, in DvbExtensionDescriptorConverter, Zeile 35 * [DONE] CAID 0x0649 in CaSystemNames * [DONE] DNS Record Type 48 [ {Z:\Freebies\Datasets\SkyscraperLibrarian\DVB-S\E0008_Ku_Thor\skyscraper_20230404_2125_0010W_11876_V_19999.ts}, {Z:\Freebies\Datasets\SkyscraperLibrarian\DVB-S August 2024\Telstar15\skyscraper_20240826_1530_0150W_12596_V_44999.ts} ] * [DONE] RCS Maps parsen * [DONE] RCS Maps in DB schreiben * [DONE] NuGet Caching Proxy * [DONE] DNS Record Type 49213 * HLS Stream * benötigt vorher einen PCR delayten Stream * benötigt vorher einen Rate-Limited Stream * [DONE] ScraperStorage ablösen, und stattdessen DataStorage und FileStorage einzeln setzen. * .tar/.tar.gz File mit FilesystemStorage Inhalt importieren * WGS84 zu Lat/Lon konvertieren - für RCS-Map. * Beispielcode in C# hier: https://stackoverflow.com/a/16660841 * Benötigt vorher eine Ermittelung der UTM-Zone: * Beispielcode zur Ermittelung der UTM-Zone (in R) hier: https://stackoverflow.com/a/68725547 * [DONE] IP-Protokoll 139 (skyscraper_20230408_1727_0390E_12739_H_3926_gse.ts) * [DONE] DNS Record Type 20366 (skyscraper_20230410_1450_0660E_12626_V_38329.ts) * [DONE] DNS IN ( {Z:\Freebies\Datasets\SkyscraperLibrarian\DVB-S August 2024\Telstar15\skyscraper_20240826_1530_0150W_12596_V_44999.ts} ) * [DONE] Für BigFiles: Gesplitteter Stream, für FAT32 und Freunde * [DONE] Einen "Forget Blindscan Job" Button in der UI * TransportProtocolDescriptor - unbekannte ProtocolIDs ohne Exception behandeln. (Vielleicht eine Warning?) * Weitere Datenbanktreiber * Microsoft SQL Server * Oracle * Cassandra * SQLite * MongoDB * Redis * IBM DB2 * Firebird * ScraperStorage: Big File * ScraperStorage: Big File mit Index