AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Joh,
Zitat:
Zitat:
Im Anhang ist das Programm "Decrypter" mit dem man unter anderem die $03-Datei entschlüsseln kann. Schade dass es bei dir jetzt nicht zum Einsatz kommen kann. Die $02-Datei, um die sich alles dreht, ist leider immer noch nicht zu entschlüsseln und die anderen Dateien sind unwichtig, da der Virus die nur zum abspeichern der Paycodeeingabe und ähnliches benutzt. Tut mir leid - es gibt momentan nichts was dich auch nur den kleinsten Schritt weiterbringen würde. @Alle Mit RC4 beschäftige ich mich momentan sehr viel. Immerhin lässt sich ja durch Auslesen einer unveränderten Opferfestplatte der Inhalt der $02-Datei zu einem sehr großen Teil rekonstruieren. Die Größe des Anteils ist individuell, aber bei normalem Benutzerverhalten ist dieser höher als 70%. (Ein nicht normales Benutzerverhalten wäre in diesem Zusammenhang das Abspeichern aller Dokumente, Bilder etc. im Root-Verzeichniss - also direkt unter "c:\") Die Frage ist ob man mit einer Plaintext-Attacke auf RC4 die Bruteforce-Suche so begrenzen kann, dass man doch noch in vernünftiger Zeit ein Ergebnis bekommt. Damit man darüber nachdenken kann ist es sinnvoll direkter mit RC4 umzugehen als es die CryptApi erlaubt. Im Quellcode von Decrypter habe ich RC4 auf möglichst leicht lesbare und verständliche Weise implementiert. Die vom Trojaner eingesetzte CryptApiverschlüsselung ist zu dieser Implementation kompatibel. Ich war bereits viele, viele Stunden auf der Suche nach einer Lösung, aber ich lande ständig wieder in einer Sackgasse. Um zu erkennen ob und wie man 70% bekannten Inhalt ausnutzen kann, braucht es einen der schlauer ist als ich es bin. :) Der RC4-ALgorithmus ist sehr einfach und kurz. Im angehängten Decrypter habe ich alles zusammengeschrieben was man zum Einstieg brauchen könnte. Im Anhang befindet sich auch eine $02-Datei (verschlüsselt und unverschlüsselt + dazugehöriges Passwort und andere Testdateien). Falls sich jemand damit beschäftigen möchte, würde ich mich sehr freuen und alles zuarbeiten was mir möglich ist. Viele Grüße Marcu |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
hi
nur als kurze warnung, nach langer ruhephase rollt der spam jetzt wieder dan, also vorsicht, und malware samples bitte auch an mich: http://markusg.trojaner-board.de |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
hmmm,
Gedanken bzgl. Originaldateinamen ich habe mir gestern mal die Auslagerungsdatei (Pagefile.sys) vorgenommen. Dort findet man massenhaft Verweise auf alte Dateinamen (vor der Verschlüsselung) und neue Dateinamen (syLAoqLgsUVxda). Hat irgendwer ne Ahnung, wie die Datei aufgebaut ist? IMHO ist es ja so, das die verschiedenen gespeicherten Pages völlig wirr gespeichert werden, also müsste es doch irgendwo Verwaltungsinformationen geben, welche Page (von welcher Größe) an welcher Position der datei steht? Oder standen diese Infos nur zur Laufzeit im RAM? Gruß Joh |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Mal so ne allgemeine Frage, wann verschlüsselt das Ding denn die Dateien?
Sobald man sich den eingefangen hat oder wenn das System neu Startet? Und wie lange braucht er dann so je Datei? Hat man da noch ne Chance den "Stecker zu ziehen" um das ganze abzubrechen oder ist man da Chancenlos? Gruß Torsten |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Hi JohX
Zitat:
Der Aufbau der pagefile.sys wird hier erklärt: http://jessekornblum.com/publications/di07.pdf Hi Torsten Zitat:
Nachdem ich jetzt weiß wie dieser Trojaner tickt, habe ich mir fest vorgenommen künftig sehr geistesgegenwärtig zu sein und bei einem Anzeichen von Malware dem betroffenen Computer so schnell wie möglich das Stromkabel rauszureißen. VG Marcu |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Habe leider viel zu wenig Zeit um mich noch auseinanderzusetzen, sorry @Marcu, das ich noch nichtmals die PM beantworten konnte. :(
Es gibt wieder eine neue Version, die 4000002 laut C&C Request, heute morgen in meinen Spam Ordner gelangt. Kann sie auf Anfrage zur Verfügung stellen. Interessant ist das ich mit meinem persönlichen Vornamen in der Mail angesprochen wurde und der Dateianhang den auch enthält: Sehr geehrte/r Adalbert, unsere Buchhaltungs Büro hat Ihre Bestellung überprüft und uns gerade darüber informiert, dass die noch nicht bezahlte Rechnung von 492,38 Euro immer noch nicht beglichen wurde. Mit dieser Email bitten wir Sie Ihrer Zahlungsverpflichtung nachzukommen. Da dies die zweite Forderung ist, sehen wir uns gezwungen Ihnen leider die Gebühren von 16,00 Euro dazu zu der noch offenen Forderung als Mahngebühr in Rechnung stellen. Wir bitten Sie, den fälligen Betrag bis zum 20.07.2012 auf das angegebene Bankkonto zu begleichen. Im anderen Fall sehen wir uns gezwungen, unsere Forderung durch ein Inkassobüro geltend zu machen. Ihren Überweisungsschein und Artikel Liste finden Sie in dem angefügten Dokument. Folgen Sie unverzüglich unserer Bitte und sparen Sie sich weitere Kosten. Mit verbindlichen Grüßen [snip] Attachment: Mahnung 15.06.2012 Adalbert.zip |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Kurze Zwischenfrage:
Ich habe aus dem Beitrag weiter oben den Firmen-Namen entfernt. Wie verhält es sich damit? Die Firma gibt es ja grundsätzlich mal - erweckt mir jedoch nicht mal im Ansatz den Eindruck, etwas mit dem Schädling zutun zu haben. Werden die gegen ihren Willen als vermeintlicher Absender genannt und sind demzufolge auch eher als Opfer zu betrachten? Bevor deren Rolle nicht klar ist, möchte ich darum bitten, konkrete Namen und Adressen nicht zu veröffentlichen. Zu schnell könnte so Dinge fälschlicherweise in Verbindung gebracht werden. Ich bitte um Verständnis. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Ich hatte es gedacht.
In dem Fall möchte ich darum bitten, diese Firmen nicht auch nicht in diesem und andren Foren im Kontext des Trojaners zu nennen. Die werden womöglich schon mehr als genug Ärger haben - den sie nicht selbst verschuldet haben. Ich will lieber nicht wissen, wie viele Opfer sich an die genannte Adresse wenden, sich im Recht glauben und sehr ungehalten losschimpfen. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
die version 4.02 bietet aber nichts neues.
wegen den firmen, schaut euch da einfach die adresse an, da siet man schon, alles fake |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
Ich bitte um nicht mehr, als dies zu respektieren und die Situation für die Betroffenen durch Foren-Beiträge nicht noch zu verkomplizieren. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
Bisher bei mir bei einem Kunden (den anderen wars unwichtig; partitioniert und neu installiert): - Wichtige Dateien waren - OpenOffice-Rechnungen => glücklicherweise war ein Bild als Briefkopf; das Bild stand in der OO-Zip unter Pictures und war verschlüsselt, zwei *unwichtige* Verwaltungsdateien waren verschlüsselt (zip\Configurations2\accelerator\current.xml und zip\mimetype), die wichtigen Daten nicht. Den Dateinamen habe ich nicht wiederhergestellt, glücklicherweise gab es 2 Tags in den Dateien: Datum und Betreff, die in 99,5% aller Dateien vorhanden waren, deshalb konnte ich dieses als Dateinamen setzen. Gruß Joh |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Falls jemand aktuelle Verschlüsselungs-Trojaner testen möchte;
auf meta$-t$v.$ru kann man sich mit dem Ungeziefer anstecken. Aus Sicherheitsgründen habe ich das $-Zeichen mehrfach in den Link gesetzt. Warnung :!: :!: Diese Seite infiziert einen Windows-Rechner über Java Drive-By Exploit. Virenscanner und Firewall nützen nichts weil die Viren noch nicht bekannt sind. Nur aus einer virtuellen Maschine heraus kann man das Wagnis eingehen die Seite zu laden. Die Seite einhält einen unsichtbaren Frame der wiederum ein Java-Applet enthält was ohne Rückfrage gestartet wird. Das Jar-Archiv (=Zip-Datei) wurde anscheinend mit einem Obfusikator bearbeitet. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
Wenn man nun versucht mit Bruteforce die Datei(en) zu entschlüsseln, wie kann man dann während der Suche erkennen, ob die Datei richtig entschlüsselt wurde? Man weiss ja prizipiell nicht für jede Datei genau, obs nun eine doc, jpg, odt, ... ist. Es müsste doch nach jedem Schlüssel versucht werden die Datei zu öffnen, oder? Oder hat die RC4-Routine einen Rückgabewert, der den Erfolg anzeigt, dass der richtige Schlüssel gefunden wurde? Michael |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Michael
Zitat:
In diesem Fall muss man darauf hoffen, dass man nach der Entschlüsselung etwas bekommt das ungefähr so aussieht wie das Beispiel im Posting #247. Anfangs hatte ich eine sehr kleine Funktion die ungefähr so aussah:
Delphi-Quellcode:
Der Ausdruck prüft einfach, ob nach der Entschlüsselung etwas vorliegt was mit "C:\\" oder mit "D:\\" oder mit ... oder mit "Z:\\" anfängt.
Result := (Size >= 4)
and (p[1] = ':') and (P[2] = '\') and (P[3] = '\') and (P[0] >= 'C') and (P[0] <= 'Z'); Es stellte sich aber heraus, dass die Funktion zu ungenau war. Es gab viele "False Positives" und viel Adrenalin wurde bei den Programmierern verschwendet die an einer Brute-Force-Methode arbeiten. Deshalb habe ich eine genauere Funktion geschrieben:
Delphi-Quellcode:
Damit gab es soweit ich weiß noch keine False Positives - aber leider auch noch kein True Positive.
function IsCatalogDecrypted(P: PAnsiChar; Size: DWORD): Boolean;
function HasDriveSignature: Boolean; begin Result := (Size >= 4) and (p[1] = ':') and (P[2] = '\') and (P[3] = '\') and (P[0] >= 'C') and (P[0] <= 'Z'); end; function HasValidCharacters: Boolean; var n: DWORD; begin Result := True; for n := 0 to Size - 1 do if ((P[n] < #32) and not (P[n] in [#10, #13])) or (P[n] in ['*', '?', '<', '>', '|', '"', '/', #127]) then begin Result := False; break; end end; function IsRndString(s: string; minlen, maxlen: Integer): Boolean; const // Thanks Martin! A = ['q', 'e', 't', 'u', 'o', 'a', 'd', 'g', 'j', 'l', 'x', 'v', 'n', 'p', 'f', 'r', 'y', 's', 'Q', 'E', 'T', 'U', 'O', 'A', 'D', 'G', 'J', 'L', 'X', 'V', 'N']; var i, l: Integer; begin l := length(s); Result := (l >= minlen) and (l <= maxlen); if Result then for i := 1 to l do if not (s[i] in A) then begin Result := False; Break; end; end; function HasCatalogFormat: Boolean; var sl: TStringList; i: Integer; begin sl := TStringlist.create; sl.text := copy(p, 1, size); result := sl.count mod 4 = 0; if result then begin i := 0; while i < sl.count - 4 do begin Result := (ExtractFilePath(sl[i]) = ExtractFilePath(sl[i + 1])) and IsRndString(ExtractFilename(sl[i + 1]), 14, 21) //Neuname and IsRndString(sl[i + 2], 30, 61) //Passwort and (sl[i + 3] = ''); //Leerzeile if not Result then break; inc(i, 4); end; end; sl.free; end; begin Result := HasDriveSignature and HasValidCharacters and HasCatalogFormat end; Die genauere Funktion prüft sehr viel mehr ab. Es wird z.B: geprüft ob die Passwörter nur aus genau den Zeichen bestehen, die Hofmar im Beitrag #181 ermittelt hat. Viele Grüße Marcu |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Wieso wird erst nach dem Entschlüsseln geprüft, ob das Passwort möglich ist? Warum generiert ihr nicht nur mögliche Passwörter und lasst alle nicht möglichen weg?
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Hallo Luckie,
Zitat:
Bei der Berechnung gehe ich davon aus, dass die Länge des Passwortes auf 61 Zeichen begrenzt ist, dies ist die Länge des längsten Passwortes, welches in den weiter oben als Anhang zu findenden Dateien enthalten ist, 31 ist die Anzahl der "erlaubten" Zeichen. Da die Passwörter aber auch kürzer sein können, kommen hier noch ca. 1^31 bis 60^31 Passwörter hinzu. Wird dürften es damit mit grob 61^32 Passwörtern zu tun haben. Wenn Du unter diesen Bedingungen pro Sekunde 1.000.000.000 Passwörter überprüfst, bist Du "schon" in 4,28e+40 Jahren fertig. Dies entspricht in etwa dem 10e+30-fachen Zeitraum der Existenz unserer Erde. Schaltjahre sind dabei nicht berücksichtigt ;-) Auch bei der zur Verfügungstellung sämtlicher Rechner der Forumsmitglieder und einer deutlichen Steigerung des Sekundendurchsatzes, dürfte die Berechnung insgesamt noch ein paar Jahre dauern ;-) PS.: Bitte weise mir jemand die Fehler in meiner Berechnung nach, da mir der Aufwand zum Knacken der Passwörter doch deutlich zu hoch erscheint. :-( PPS.: Wie lange braucht man, um eine Liste der Passwörter zu erstellen? Die Datei für alle Passwörter bis zur Länge von fünf Zeichen ist bereits 200 MB groß (Erstellzeit ca. 70 Sekunden für 29.583.456 Passwörter), bei sechs Zeichen sind es 7,3 GB (Erstellzeit ca. 55 Minuten für 917.087.137 Passwörter) (Rechner: ein in die Jahre gekommener Latitude D810) Ein Programm zum Erstellen einer Datei mit allen möglichen Passwörten hängt an. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zu dieser Thematik eine kleine Annekdote:
Eine Bekannte hatte sich den Freund eingefangen (Mahnungs-Anhang.zip geöffnet, wie üblich). Die "böse Seite" mit der Zahlungsaufforderung erschien auch brav. Aber: War der Compi NICHT mit dem Internet verbunden, so konnte sie ihn normal benutzen. Die encrypted files waren vorhanden, die alten, unverschlüsselten, jedoch auch noch. So konnte sie offline ihre Daten retten (falls eine Neuinstallation angestanden hätte) und dann den Trojaner per AVirProg in Quarantäne schicken. Sie hat uraltes Zeug am Start: WIN XP der ersten Stunde, und ein Toshiba Laptop aus dem vorigen Jahrhundert. Da fehlte vielleicht was, um den Schaden vollständig anzurichten? LG Uli |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
@nahpets: Danke für die Ausführungen, aber das beantwortet meine Frage irgendwie nicht. ;)
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
@Luckie
Zitat:
Übrigens habe ich doch einen gigantischen Rechenfehler eingebaut. :oops: Es muss nicht 61^31 heißen, sondern 31^61, das sind dann ungefähr 9,4e+90 mögliche Passwörter, also noch vielvielvielviel mehr. Das ergibt dann ungefähr so was um die 3e+74 Jahre zum durchprobieren der Passwörter, pro verschlüsselter Datei! Bei einer Normalverteilung der Passwörter dürfte sich dies allerdings halbieren. ;-) Der erforderliche Plattenplatz für die Liste der möglichen Passwörter dürfte sich auf etwas über 3,52e+68 Yottabyte belaufen. Bisher habe ich keine Information finden können, die eine gezielte Einschränkung dieser Passwortmenge möglich erscheinen ließe. ;-) Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Hallo zusammen,
ich bin neu hier, habe aber das Thema schon einige Zeit verfolgt. Einen Bekannten hat es auch erwischt, aber da war der Dateiverlust nicht so schlimm. Es wurde schon viel über die Verschlüsselung geschrieben, aber was ich noch nicht gesehen habe oder auch möglicherweise überlesen habe ist, dass der Zufallsgenerator für die Passwörter/Dateinamen nicht untersucht wurde. Hat sich jemand mal mit dem Zufallsgenerator beschäftigt, mit dem die Dateinamen erzeugt werden bzw. die Dateien verschlüsselt werden ? Ich vermute, dass zuerst der Dateiname und dann das Passwort erzeugt werden. Alles mit der selben Funktion. Wenn man jetzt wüsste, wie der Generator funktioniert kann man ihn mit dem Dateinamen füttern (SOGDHHsdjsh usw.) und dann eine limitierte Anzahl von Passörtern bekommen. Damit wäre theoretisch eine Brute-Force Attacke denkbar, die man noch erleben könnte. Wie denkt ihr darüber ? Wäre das ein Weg ? Viele Grüße, Robert |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Sorry das ich mich so extrem spät zurückmelde, habe so viel auf der Arbeit zu tun ... :(
habe eine neue Version "eingefangen" die hoch interessant ist: sie macht nun einiges mehr und erstellt u.a. ein Memdump und lädt ihn hoch. Wer Interesse hat, dem kann ich sie zukommen lassen. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
also ich hab immer interesse an aktueller malware
http://markusg.trojaner-board.de |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Es geht wieder los :-(
Habe hier einen Rechner mit neuem Verschlüsselungstrojaner, Datum vom 27.08.2012, Detection Ratio 5/42 IPs u.a. seneesamj.com 203.91.113.6 A 92.50.171.166 A 123.101.2.10 A 195.198.124.60 LG aus Berlin |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
Mit mehr Infos seitens Intel liesse sich das eventuell gar auf 56bit eingrenzen. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
N'Abend zusammen.
Zunächst einmal möchte ich allen, die sich hier mit sehr viel Zeit und Herzblut in die Trojaner-Materie einarbeiten (inbs. Marcu) einen großen Respekt aussprechen! Ein Freund hat mir eine Festplatte mit den entsprechend verschlüsselten Daten gebracht, daher bin ich auf das Thema gestossen und habe mir gerade alle 31 Seiten durchgelesen, da mich die Geschichte ziemlich gepackt hat. Zunächst einmal möchte ich die für meine Fragen relevanten Informationen zusammenfassen. Bitte korrigiert mich sofort, sollte ich irgendetwas missinterpretiert haben. 1. Alle zum Entschlüsseln der Dateien benötigten Informationen sind in der $02-Datei (verschlüsselt) gespeichert. 2. Die $02-Datei ist mit dem RC4-Algorithmus verschlüsselt. 3. Der Schlüssel ist lokal auf dem infizierten PC erzeugt worden und NICHT von den CC-Servern beeinflusst worden. Was ich leider noch nicht ganz verstehe, ist folgendes: Zitat:
Evtl. kann man das ganze noch mit einer plain text attack (wie Marcu auch versucht) kombinieren - hat da mal jemand die einschlägigen Papers konsultiert? Würde mich über alle zusätzlichen Infos den kryptographischen Teil betreffend freuen! Beste Grüße, ichi |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
Der vorherige Wert des Zufallsgenerators ist hier nur ein Faktor der über den nächsten ausgelesenen Wert entscheidet. Die Anzahl der benötigten CPU-Takte bis zum nächsten Abruf eines Wertes wird in die Berechnung mit einbezogen. Diese Anzahl wird nicht nur durch den Prozessor sondern auch dessen Umgebung (Speicher usw.) beeinflusst. Die einzelnen CPU-Befehle werden intern auf mehrere Recheneinheiten verteilt und laufen zum Teil parallel ab. Auf einem Windowssystem laufen viele Threads parallel, die natürlich die selben Einheiten und Warteschlangen nutzen und damit die Laufzeit beeinflussen. Diverse Hardware insbesondere OnBoard-Soundkarten oder Grafikkarten nutzen ebenfalls Teile des Prozessors. Zwischen den einzelnen Abfragen konnte ich Werte für die CPU-Takte messen die häufiger auftraten, aber dazwischen waren immer auch viele Abweichungen. Das Passwort wird aus einer ganzen Reihe von Abfragen dieses Generators zusammengebaut. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Verstehe, der Programmierer scheint wohl tatsächlich ziemlich gut zu wissen, was er tut.
Traurig, dass solche intelligenten Leute nicht mit legalen Jobs ihr Geld verdienen :( |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Für die, die es interessiert, hier gibt es eine ausführliche Analyse des Trojaners:
hxxp://malware.lu/Pro/RAP001_malware_rannoh_matsnu_1.1.pdf |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Hallo in die Runde!
Hab mich im Mai mit dem Trojaner infziert und diverse wichtige files verschösselt bekommen. Hab nun vor ca 2 Monaten aufgehört die Forschung zu verfolgen, gibts denn neue Erkenntnisse? ODer ist die Verschlüsselung nach wie vor unlösbar? Hab die encrypteten files gebackupt mitsamt der hier im Thread erwähnten .$xx files des trojaners. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
und einfach mal 1-2 seiten von diesem thema lesen, ist zu schwierig? das würde deine frage schon beantworten.
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
hallo!
Ich schätze hier gibt es nichts neues oder? Oder tüftelt noch irgendwer an dem virus? |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
ich denke, die meisten werden aufgegeben haben ...
sowohl die rettenden Programmierer (Rever....psst) hier, als auch die Opfer. Daten weg. Selbst bei Zahlung. aber interessiern tät's mich auch. |
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Selbst Behörden zahlen inzwischen, um wieder an ihre Daten zu kommen.
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
AW: Verschlüsselungs-Trojaner, Hilfe benötigt
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz