Category Archive: C#

SMTP Walker

Ich habe immer wieder mit SMTP Verbindungen zu tun, und diese per telnet zu durchzuführen ist
auf Dauer ziemlich müssig. Es gab damals ein einfaches Tool („smtpexp.exe“), das mittlerweile
allerdings sehr „alt“ geworden ist. Daher hatte ich vor ein paar Jahren mal was in C# neu zusammen-
gehackt. Das Tool („SMTP Walker“) funktioniert grundsätzlich, hat aber an allen Ecken und Enden
noch Bugs und Fehler. Außerdem ist der Funktionsumfang noch nicht so groß, wie ich ihn mir
wünsche, ich möchte mit dem Tool auch noch POP3 und IMAP debuggen können.

Nichtsdestotrotz stelle ich das hier jetzt mal online, über Kommentare würde ich mich freuen,
ich werde das Tool in unregelmäßigen Abständen aktualisieren.

Installierbar ist das Tool von hier: SMTP Walker

Weiterlesen >>

C#, SMTP

log4net und rsyslog

Zum Logging nutze ich innerhalb meiner Programm das hervorragende log4net.
Dieses bietet auch die Möglichkeit, die Logausgaben remote an einen rsyslogd zu senden.
Hiefür muss in der log4net.config des Programms um diesen Appender ergänzt werden:

<appender name="RemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
  <identity value="programmname" />
  <layout type="log4net.Layout.PatternLayout" value="%-5p %type: %m%n"/>
  <remoteAddress value="remote.syslog.server.addresse" />
</appender>

Und natürlich der Appender aktiviert werden:

<root>
  <level value="ALL" />
  <appender-ref ref="RemoteSyslogAppender" />
</root>

Damit die Daten auf dem rsyslog Server ankommen, und entsprechend zugeordnet werden können
muss dort eine passende Config angelegt werden, in meinem Beispiel

if $source == 'server' and $programname == 'programmname' then /var/log/programmname.log

Wichtig ist, dass der Wert der „identity“ am rsyslog als „$programname“ ankommt.
Wenn jetzt Port 514 UDP zu dem rsyslog Server in der Firewall geöffnet ist, sollten die Log-Daten sauber
im passenden Logfile ankommen.

C# – Custom Exception

Immer wieder benötige ich in Programmen meine eigenen Exceptions, um z.B. im Logging schneller die entsprechenden Fehler zu finden. Und weil ich es leid bin, immer wieder danach zu suchen packe ich hier mal den Code dazu hin.

Weiterlesen >>

Passwörter speichern in C#

Immer mal wieder muss ich Passwörter von Benutzern in der Datenbank speichern.
Da es immer populärer wird, Passwörter aus Datenbank-Dumps „so zum Spaß“ herauszufinden, sollte man heutzutage davon Abstand nehmen, das Passwort wie damals einfach einmal mit MD5 zu hashen und in die Datenbank zu schreiben. Das ist zwar schön einfach, aber auch schön einfach gehackt.

Daher wird jetzt immer fleißig gesalzen, und in C# mache ich das so (frech geklaut von http://crackstation.net/hashing-security.htm)

Auf der Seite finden sich auch Klassen für andere Sprachen, falls man das mal braucht.

Weiterlesen >>