Schlagwort: Technik

DNS-Blacklisten mit C# abfragen 👍 👎

Im früheren Beitrag zur DNS-Auflösung mit C# haben wir eine grundlegende Möglichkeit kennengelernt, IP-Adressen zu Domains zu ermitteln. Dies möchten wir uns zu Nutze machen, um DNS-Blacklisten abzufragen, welche von vielen eMail-Systemen genutzt werden, um potentiellen Spam zu erkennen (und ggf. abzuweisen).

Zu den bekannten Anbietern entsprechender Dienste gehören beispielsweise: Diese setze ich auch selbst ein und habe jeweils gute Erfahrungen damit gemacht. Bitte informiert euch jedoch vor einem Einsatz beim jeweiligen Anbieter über die genauen Konditionen, der kommerzielle Einsatz ist beispielsweise oftmals kostenpflichtig. Ebenso verhält es sich je nach Anbieter ab einem gewissen Abfragevolumen.

Um nun eine IP-Adresse gegen die entsprechenden Dienste prüfen zu können, müssen wir diese dem oben angegebenen Hostnamen in umgekehrter Reihenfolge voranstellen und eine Namensauflösung durchführen.

Konkret fragen wir also beispielsweise bei einer Prüfung der IP-Adresse 217.160.176.125 auf Spam-Aktivität laut Spamhaus das Ergebnis der Domain 125.176.160.217.zen.spamhaus.org ab (welches hoffentlich negativ beschieden werden sollte). Per C# könnte man dies nun beispielsweise (durchaus verbesserungsfähig) wie folgt durchführen:
IP-Adresse auf Blacklisting prüfen
010203040506070809101112131415161718192021222324
public static bool CheckBlacklisting(IPAddress ipAddress, string blacklist = "zen.spamhaus.org") {    string ipAddressReversed = String.Join(".", ipAddress.GetAddressBytes().Reverse());    string hostName = String.Concat(ipAddressReversed, ".", blacklist);
try { foreach(IPAddress hostAddress in Dns.GetHostAddresses(hostName)) { /** * Achtung: Diese Implementierung ist naiv und sollte nicht direkt * übernommen werden. Je nach Anbieter, so beispielsweise auch bei * Spamhaus, gilt nicht der gesamte Loopback-Adressbereich als Spam. * Daher bitte vorher beim Anbieter informieren und konkretisieren! **/ if(IPAddress.IsLoopback(hostAddress)) { return true; } }
return false; } catch { return false; }}
bool checkResult = CheckBlacklisting(IPAddress.Parse("217.160.176.125")); // false
Das Ergebnis der Namensauflösung, also die erhaltene IP-Adresse, gibt darüber hinaus Aufschluss über den genaueren Status. Spamhaus liefert dazu beispielsweise in ihren FAQ weiterführende Informationen.

Wake on LAN per C# 👍 👎

Wake on LAN ist ein Standard zum Starten eines deaktivierten Rechners über eine kompatible Netzwerkkarte. Dazu wird lediglich ein bestimmtes Paket im Netzwerk gesendet; mit C# lässt sich das beispielsweise so lösen:
Klasse implementieren
0102030405060708091011121314151617181920212223242526272829
public static class WakeOnLAN {    public static void SendMagicPacket(byte[] macAddress) {        using(UdpClient udpClient = new UdpClient()) {            udpClient.Connect(IPAddress.Broadcast, 9);
byte[] magicPacket = new byte[(6 + (16 * 6))];
for(int i = 0; i < 6; i++) { magicPacket[i] = 0xFF; }
for(int i = 1; i <= 16; i++) { for(int j = 0; j < 6; j++) { magicPacket[((i * 6) + j)] = macAddress[j]; } }
udpClient.Send(magicPacket, magicPacket.Length); } }
public static void SendMagicPacket(string macAddress) { SendMagicPacket(macAddress .Split(':', '-') .Select(m => Byte.Parse(m, NumberStyles.AllowHexSpecifier)) .ToArray() ); }}
Das Paket enthält sechs mal den Wert FF16, gefolgt von der 16-maligen Wiederholung der MAC-Adresse und wird per Broadcast im Netzwerk versendet. Durch die Methodenüberladung wird die Übergabe der MAC-Adresse sowohl per Zeichenkette als auch per Byte-Feld ermöglicht:
Klasse verwenden
01020304050607
WakeOnLAN.SendMagicPacket("11:22:33:44:55:66");
/* – oder – */
WakeOnLAN.SendMagicPacket(new byte[] { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66});

Ping per C# 👍 👎

Zwar könnte man hier ähnlich wie im Artikel Konsolenausgabe in C# verwenden für traceroute beschrieben vorgehen, jedoch bietet es sich an, die Ping-Klasse des .NET-Frameworks zu verwenden. Diese möchte ich mit diesem Beitrag kurz vorstellen, da sie interessanterweise zu den doch eher unbekannteren Funktionalitäten gehört.
Ping-Klasse verwenden
010203040506
using(Ping ping = new Ping()) {    PingReply reply = ping.Send("coders-online.net");
long time = reply.RoundtripTime; // 19 IPStatus status = reply.Status; // Success}
Es können durch entsprechende Überladungen weiterführende Optionen wie die zu übertragenden Daten festgelegt werden. Durch die seit .NET 4.5 verfügbare Methode SendPingAsync besteht außerdem auch die Möglichkeit, nach dem komfortablen und nicht-blockierenden async/await-Muster vorzugehen.

Podcast-Empfehlungen 👍 👎

Da ich sehr gerne Podcasts höre, möchte ich heute ein paar besonders erwähnenswerte Exemplare kurz vorstellen:

Alternativlos

In diesem Podcast sprechen Felix von Leitner und Frank Rieger über gesellschaftsrelevante Themen. Zu den bisherigen Themenbereichen gehörten beispielsweise Geheimdienste, Kernkraftwerke, Kryptographie, Verschwörungstheorien und Wirtschaft. Technische Details und Humor kommen dabei selten zu kurz, leider erscheinen die Folgen jedoch recht unregelmäßig und derzeit selten – aber das Warten lohnt sich, wie ich finde.

CRE

Als Chaosradio Express gestartet sicherlich einer der Klassiker des monothematischen Podcasts, bei dem die Gäste zusammen mit Tim Pritlove zu diversen Themen aus den Bereichen Kultur und Technik diskutieren. Die bisherigen Themenbereiche umfassten beispielsweise Computerspiele, Fernsehen, Kaffee, Nachrichtendienste, Programmiersprachen, Raumfahrt, Stadtplanung, Steuern und VoIP. Sehr detailreich und mit meist längeren Folgen, derzeit jedoch leider ebenfalls sehr selten neue Veröffentlichungen.

methodisch inkorrekt

Alle zwei Wochen treffen sich die Physiker Nicolas Wöhrl und Reinhard Remfort von der Universität Duisburg-Essen, um über meist aktuelle wissenschaftliche Veröffentlichungen zu sprechen. Bonus-Inhalte der meisten Sendungen sind das Experiment der Woche und das China-Gadget der Woche – mit interessanten Einsichten und mehr oder weniger nützlichen Gimmicks. Die Themen sind im naturwissenschaftlichen Bereich zu verorten. Derzeit auf jeden Fall einer meiner Favoriten, da nicht nur sehr lehrreich, sondern auch überaus unterhaltsam.

omega tau

Markus Völter und Nora Ludewig liefern hier einen ebenfalls monothematischen Podcast mit vielen Details zum jeweiligen Thema, wobei üblicherweise ein Gesprächspartner als Experte befragt wird. Zu den bisherigen Themen gehörten beispielsweise Eisenbahnsicherungstechnik, Evolution, Kohlenstoffschichten, Robotik, Seismologie, Strahltriebwerke und Wetterdatenerfassung. Besonders erwähnenswert ist außerdem, dass es Folgen auf Deutsch und Englisch gibt, wobei es sich um jeweils unterschiedliche Themen handelt.


Auf der Unterseite Links finden sich noch ein paar weitere erwähnenswerte Podcasts.

Farbcodes (Ergänzung) 👍 👎

Mein ehem. Ausbilder hat dem angedachten Gastbeitrag zugestimmt, ihr dürft also gespannt sein. Smiley: smiling

Als kleine Hilfe für die Praxis gibt es nun eine Seite benannter Farben mit zusätzlichen Informationen.

Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche