SCode FTP Instant Messenger

  • Hi, ich wollte euch hier mein neustes Projekt vorstellen.

    [Blockierte Grafik: https://abload.de/img/scodemessengerpic1zfsay.png]

    Den SCode FTP Instant Messenger. Wie der Name schon sagt benutzt die Software einen FTP Server um alle Nachrichten zu verteilen.
    Die Idee dahinter war, dass somit jeder einen eigenen Server oder Instanz des Messengers erstellen kann und nicht auf öffentliche Server angewiesen ist.
    Somit wird auch die Sicherheit entsprechend erhöht.

    Der Messenger ist der Zeit in der Beta Phase. Er wurde mehrere Wochen in der Alpha Phase getestet.
    Die Sprache des Messengers ist Deutsch. Es wurden die Sprachen Englisch und Russisch (wegen der Nachfrage) teilweise übersetzt.

    Es wurde ein Testserver erstellt um die Software direkt testen zu können.

    Alle Daten und Hilfen in den Anhängen.


    Aktuellste Version: 1.2.0.Beta
    SHA-1: 43B3A876063F4134DC07EA0B158F90B51ABDD863


    Ich freue mich auf eure Kommentare ;)

    3 Mal editiert, zuletzt von SCode Germany (11. Mai 2017 um 10:51) aus folgendem Grund: - Scripte veröffentlicht

  • Hallo @SCode Germany,
    herzlich willkommen im Forum!
    Als ich Messenger per FTP las, war ich skeptisch, ob das die beste Messnger-Variante ist und wollte mir deinen Code ansehen. Übersehe ich etwas, oder lieferst du in einem Programmierer-Forum nur die Exe-Dateien? Das halte ich nicht für sinnvoll ;)

    Wenn du wirklich Input möchtest, solltest du (wenigstens aus meiner Sicht) den Code präsentieren - im Optimalfall kommentierten Code. Dann erhältst du auch Input/Kritik/Hilfe. Andernfalls solltest du deine Bewertungsanfrage eher bei chip.de oder so etwas stellen, denke ich.

    Ich hoffe das kam nicht zu böse rüber. War jedenfalls nicht böse gemeint. :thumbup:

    Grüße autoiter

  • Herzlich Willkommen im Forum,

    da du neu hier bist würde ich dir vorschlagen, dass du das Script zum Messenger veröffentlichst, da es verdächtig rüberkommt, dass du nur Exe-Dateien mitlieferst.
    Wenn du das nicht machen möchtest, musst du eher mit milder Resonanz rechnen.

    Des Weiteren eignet sich FTP eigentlich nicht dafür Live-Chats zu betreiben, da es eher für Datenaustausch ausgelegt ist.
    Warum habt ihr euch also für FTP entschieden und nicht für ein eigenes Server/Client-Protokoll?

  • Tut mir Leid die wollte ich natürlich euch nicht vorenthalten :D
    Habe alle Scripte, Icons und .au3 Include Dateien verpackt und hochgeladen.

    Entschuldigt noch das Chaos im Code. Ich bin gerade dabei aufzuräumen. Bis jetzt war die Funktion wichtig. ^^

  • Warum habt ihr euch also für FTP entschieden und nicht für ein eigenes Server/Client-Protokoll?

    Also ehrlich gesagt bin ich nur 1 Person :D und ich fand die Idee, dass man eigene Sachen erstellen kann (also in dem Fall einen eigenen Server für den Messenger) schon immer gut. So kann sich jeder selbst entscheiden ob er in ein großes Server Netzwerk möchte oder doch lieber mit einer eigenen Auswahl von Leuten/Gruppen/Netzwerken zusammen auf einem Server sein möchte.

  • Hauptsächlich haben @autoiter und @alpines bereits alles gesagt, was ich hierzu schreiben wollte.

    Hinzufügen möchte ich daher lediglich ein paar Randbemerkungen, die mir durch den Kopf gegangen sind.

    Mit Messenger assoziiere ich ein Programm, mit dem nicht nur Texte, sondern auch Bilder und Dateien ausgetauscht werden können. Deiner Beschreibung nach ist dein SCode FTP Instant Messenger demzufolge aus meiner Sicht lediglich ein Chat-Programm, von dem es zumindest bereits eines gibt, dass in AutoIt geschrieben wurde und zu dem auch, wie es sich gehört, der Quellcode verfügbar ist: CryptChat

    Somit wird auch die Sicherheit entsprechend erhöht.

    Was daran soll bitte sicher sein, wenn die Texte unverschlüsselt übertragen werden?

  • Ich finde die Idee gut.
    Ein FTP-Server ist zwar wirklich nicht ideal dafür, bietet aber den Vorteil, dass man nahezu überall an einen kostenlosen Webspace mit FTP-Zugriff rankommt. Die nächste Ausbaustufe wäre dann ein PHP-Skript, welches das Handling der Chatnachrichten auf dem Server übernimmt... Dann könnte man auch eine Benutzerverwaltung usw. sicher realisieren (nicht nur nach AutoIt-Maßstäben). Aber für pures AutoIt ist die Lösung völlig in Ordnung.

    Und in meinen Augen muss ein Messenger in erster Linie eines können: Messages, zu Deutsch Nachrichten, austauschen können. Und das kann dein Programm.

  • Also ehrlich gesagt bin ich nur 1 Person und ich fand die Idee, dass man eigene Sachen erstellen kann (also in dem Fall einen eigenen Server für den Messenger) schon immer gut. So kann sich jeder selbst entscheiden ob er in ein großes Server Netzwerk möchte oder doch lieber mit einer eigenen Auswahl von Leuten/Gruppen/Netzwerken zusammen auf einem Server sein möchte.

    Uiuiui, wenn ich mir den Code so ansehe dann könnte ich dir auf die Finger hauen!
    Hier mal ein paar Variablennamen die mir persönlich nicht gefallen (jeder hat 'nen anderen Geschmack!)

    $ArrayAlleIdentitaeten
    $LoginFormCombo
    $FormIdentitaetenEinstellungenButtonAusfuehren
    $FormIdentitaetenEinstellungenComboEinstellungen
    $datentransfervolumenZwischenSum1
    $FormIdentitaetSuchenInputNamenssuche

    Die ganzen Variablen die du im voraus erstellst will ich erst gar nicht ansprechen, das ist ein schlechter Stil.
    Variablen sollten erst dann erstellt werden, wenn sie gebraucht werden.

    Variablenliste
    • $Schriftqualli = 0
    • $verbindungsstatus = 0
    • $TimerStart = ""
    • $AFKStatus = ""
    • $msggesendet = 0
    • $HauptIcon = 0
    • $FunktionAFK = 0
    • $FunktionECO = 0
    • $NeueDatei = 0
    • $werbung1aktiv = 0
    • $werbung1timer = 0
    • $SaftylogText = ""
    • $Werbung1 = 0
    • Local $Verlauf
    • Local $ArrayAlleNeuennachrichten
    • Local $TimerOnlinestatusAnfragen
    • Local $TimerOnlinestatusAnfragenAntiD
    • Local $hFTPSessionSCodeMessenger
    • Local $hInternetSessionSCodeMessenger
    • Local $EmpfaengerName
    • Local $EmpfaengerSicherheitstoken
    • Local $onlinestatusanfrageAntiD


    Funktionsnamen die man besser hätte treffen können
    IdentitaetErstellen()
    IdentitaetPWaendern()
    IdentitaetLoeschen()
    SicherheitsverletzungStufe1()

    Des Weiteren würde ich dir dringend dazu raten, Dateien die du häufiger ansprichst in Variablen zu packen.
    Also aus IniWrite($SCodeMessengerOrdner & "\Identitaeten\SCode Messenger Eigener Kontakt.ini", "Info", "Name", $Identitaet)
    machst du sowas wie IniWrite($sCM_OwnContactFile, "Info", "Name", $sIdentity)

    Du solltest nämlich nicht die volle Breite deines Monitors ausnutzen, nur wenige Zeilen sollten - wenn überhaupt - über die Hälfte des Screens gehen.

    Ich garantiere dir, das du wenn du an dem Projekt mal für 2 Wochen eine Pause einlegst danach nicht mehr durchsteigen wirst (wenn du nicht ein paar dieser Tipps und Tricks umsetzt).

    Ich merke aber das du lieber deinen Source in Deutsch hältst, das ist eigentlich auch soweit in Ordnung auch wenn viele andere Englisch bevorzugen würden.
    Eigne dir aber dennoch einen einheitlichen Stil an und verwende z.B. die Ungarische Notation für deine Variablen.

    Statt IdentitaetErstellen() und IdentitaetPWaendern() schreibst du lieber in Zukunft _Identity_CreateNew() _Identity_ChangePassword().

    Und zieh mal deinen Code ein wenig auseinander, klatsch nicht alles untereinander, das sieht nicht schön aus. Versuch ihn wie einen Brief zu formatieren, Absätze zu bilden.

  • Hauptsächlich haben @autoiter und @alpines bereits alles gesagt, was ich hierzu schreiben wollte.

    Hinzufügen möchte ich daher lediglich ein paar Randbemerkungen, die mir durch den Kopf gegangen sind.

    Mit Messenger assoziiere ich ein Programm, mit dem nicht nur Texte, sondern auch Bilder und Dateien ausgetauscht werden können. Deiner Beschreibung nach ist dein SCode FTP Instant Messenger demzufolge aus meiner Sicht lediglich ein Chat-Programm, von dem es zumindest bereits eines gibt, dass in AutoIt geschrieben wurde und zu dem auch, wie es sich gehört, der Quellcode verfügbar ist: CryptChat

    Was daran soll bitte sicher sein, wenn die Texte unverschlüsselt übertragen werden?


    Man kann Daten übertragen. Mit dem Dateiicon nebem dem Sendeknopf.

    Die Software verschlüsselt alles. Jede Nachricht und auf Wunsch mit dem Schlüsselicon sogar doppelt mit einem eigenen Passwort. :)

  • Uiuiui, wenn ich mir den Code so ansehe dann könnte ich dir auf die Finger hauen!Hier mal ein paar Variablennamen die mir persönlich nicht gefallen (jeder hat 'nen anderen Geschmack!)

    ...


    Und noch mehr Infos zu mir :thumbup::party1:

    Ich habe keine Programmier Kenntnisse. Alles was du siehst habe ich aus Der AutoIt Hilfe und mit Logik zusammen gebastelt.
    Ich habe das Script in ca. 4 Tagen geschrieben und selten danach daran rum gebastelt.
    Es kamen dann Funktionen wie Datenaustausch, AFK, ECO Modus und weiter Spielereien hinzu.
    Ich habe den Code im Oktober geschrieben und kann dir jetzt immer noch sagen wo was steht ;)
    Aber für andere ist es natürlich nur Chaos 8o
    Deswegen "räume" ich jetzt gerade mal bisschen auf. Auch die langen Texte werden gekürzt.

    Ich habe den Code damals aus langer Weile geschrieben und nach langer Zeit wollte ich einfach nicht, dass es vollkommen umsonst ist. Vielleicht helfen ja paar Abschnitte manch anderen weiter, sobald Ordnung herscht.

    Aber hey es funktioniert ;) und versucht doch mal "ohne" den Code die Nachrichten zu entschlüsseln oder ein Konto zu knacken.
    Ich wollte auch Stark auf die Sicherheit wert legen.

    Gibt es denn eine Lösung, dass ich kein Passwort im Code verwenden muss?
    Beispiel Zeile 111:

    Code
    _Crypt_DecryptFile(@LocalAppDataDir & "\SCode Messenger\login.ini", @LocalAppDataDir & "\SCode Messenger\login_uc.ini", "Aa2i...", $CALG_AES_256)


    Die Konten werden ja doppelt mit dem selben Passwort verschlüssel. (Auch leider nicht sicher wie sicher dies ist)
    Beispiel Zeile 1112:

    Code
    $passwort = InputBox("SCode Messenger Identitaet", "Bitte neues Passwort eingeben:", "", "*")
    If Not @error Then
    	$passwort2 = InputBox("SCode Messenger Identitaet", "Bitte neues Passwort wiederholen:", "", "*")
    	If Not @error Then
    		If $passwort = $passwort2 Then
    			Local $RandomToken
    			Local $Letter
    			$passwort = _Crypt_EncryptData($passwort2, $passwort2, $CALG_AES_256)
  • Also wer es gerne mal testen möchte, ich bin unter "Sebi" zu erreichen :D
    Eigentlich ganz einfach:
    - Aktivieren mit dem mitgelieferten Login Cer
    - ID erstellen
    - Verbinden
    -> Einstellungen -> Kontakt suchen
    TADA :party1:


    Ach ja und im Login am Anfang oben rechts am besten auf Deutsch (de) stellen. Die anderen Sprachen sind noch nicht mit dem GUI angepasst ;)

  • Ist ja auch nicht böse gemeint nur solltest du, wenn du weiter programmieren willst dir einen Stil aneignen und versuchen von Anfang an sauberen code zu schreiben, dann kannst du dir die Aufräumarbeiten am Ende nämlich sparen.

    Deine Verschlüsselung ist leider nicht sehr viel wert wenn du die Passwörter im Code hinterlegst, mit einem einfachen String-Extractor kann man diese nämlich extrahieren und anschließend die Dateien entpacken. Es wäre viel besser wenn du das z.B. mit RSA machst und public und private Keys hast.

  • Ich nehme dies auch absolut nicht böse auf, ich wollte nur, dass ihr wisst, dass ich wirklich ein Anfänger bin :P
    Ich kenne die public und private Keys Methode, doch leider weiß ich noch gar nicht wie sie funktioniert und bin an diesem Punkt auch nicht sehr motiviert den Code komplett umzubauen. Dann wäre es neu anzufangen besser. :D
    Die Benutzer Daten werden ja auch mit eigenem Key verschlüsselt. Somit sind die ja sicher?!?
    Es geht eigentlich nur um die Login Daten für den Server die ich nicht weiß wie ich sie am besten verschlüssele oder sonst wie schützen kann. ?(