1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Candyland

Beiträge von Candyland

  • Remote CMD mit Session Key

    • Candyland
    • 7. März 2017 um 18:33

    Ich habe das Script das ich hier mit euch ausgearbeitet habe etwas verändert & fehler freier geschrieben.
    @alpines meinte mal zu mir es sei wichtig eine art Formatierung über das script zu legen, damit es leichter zu lesen ist & ordentlicher erscheint.
    Ich habe versucht mir einen Kopf darüber zu machen wie ich den Code in absätze einteile. Soetwas habe ich vorher noch nie getan & hätte deshalb gerne ein paar tipps von euch.

    Beschreibung: Eine klassische Remote CMD die die versendeten daten verschlüsselt. Beim ersten verbinden vom Clienten zum Server wird ein Password abgefragt. Erkennt der Server das passwort als richtig wird ein Session key erstellt der an den Clienten zurück gesendet wird. Dieser key wird jetzt beim senden & empfangen immer mit versendet. Damit wollte ich vermeiden das sich irgendjemand so schnell in den Server einloggen kann & den computer hackt.

    Server:

    Spoiler anzeigen
    AutoIt: Server
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    AutoItSetOption("TrayAutoPause", 0)
    AutoItSetOption("TrayIconDebug", 1)
    Local $hWnd = WinGetHandle("[Class:ConsoleWindowClass]")
    WinSetTrans($hWnd, "", 200)
    Local $ip = "0.0.0.0"
    Local $port = 5051
    Local $iSocket = 0
    Local $trenner = "=ENDING"
    Local $setpass = "informatik"
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("3thaN0l-A|kOh0l", $iAlgorithm)
    Local $iPID = Run(@ComSpec & ' /K ', "C:\", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD + $STDIN_CHILD)
    ConsoleWrite("This is a computer Remote CMD for computer remote operations" & @CRLF & "Do not Close this Windows, you can Minimize or look at it" & @CRLF & @CRLF)
    
    
    $esta = 0
    $Ursprung = ""
    $cmdWindowOut_Buffer = ""
    sleep(100)
    $cmdWindowOut = StdoutRead($iPID)
    $cmdWindowErr = StderrRead($iPID)
    $cmdWindowOut_Buffer = $cmdWindowOut_Buffer & $cmdWindowOut & $cmdWindowErr
    $Ursprung = StringSplit ($cmdWindowOut, @CRLF, 1)
    $Ursprung = $Ursprung[$Ursprung[0]]
    $cmdWindowOut_Buffer = ""
    
    
    ConsoleWrite("Waiting for Connection Establishment... ")
    While 1
    	$cmdWindowOut_Buffer = ""
    	Local $iListenSocket = TCPListen($ip, $port, 999)
    	Do
    		$iSocket = TCPAccept($iListenSocket)
    		If @error Then
    			Exit
    		EndIf
    	Until $iSocket <> -1
    	if $esta = 0 Then
    		ConsoleWrite("Established." & @CRLF & "Waiting for Password.. ")
    		Do
    			$pass = TCPRecv($iSocket, 2048)
    		Until $pass <> ""
    		$dpass = BinaryToString(_Crypt_DecryptData(BinaryToString($pass), $g_hKey, $CALG_USERKEY))
    		if $dpass = $setpass Then
    			$setsession = BinaryToString(StringToBinary(Random(1000,2000, 1))) ;<=sieht blöd aus, aber ohne das bekam ich tatsächlich probleme
    			ConsoleWrite("Correct Password. Sessionkey is: " & $setsession & @CRLF & @CRLF)
    			if ProcessExists("cmd.exe") Then
    				$yesno = "1"
    			Else
    				$yesno = "0"
    			EndIf
    			$testsendandreceive = "If you can see this the the Encryption Mechanism works." & @CRLF & "Admin: " & IsAdmin() & "|CMD is running: " & $yesno
    			$testdecrypt = BinaryToString(_Crypt_DecryptData(BinaryToString($testsendandreceive), $g_hKey, $CALG_USERKEY))
    
    
    			TCPSend($iSocket, $testdecrypt & $setsession & "1")
    		Else
    			ConsoleWrite("Wrong Password" & @CRLF)
    			TCPSend($iSocket, BinaryToString(StringToBinary(Random(1000,2000,1))) & "0")
    			sleep(2000)
    			Exit
    		EndIf
    		$esta = 1
    	EndIf
    	Local $sReceived = ''
    	Do
    		$sReceived = TCPRecv($iSocket, 2048,1)
    	Until StringInStr($sReceived,StringTrimLeft(StringToBinary($trenner),2)) <> 0
    	$sReceivedE = StringTrimRight($sReceived,StringLen(StringTrimLeft(StringToBinary($trenner),2)))
    
    
    	$sessioncheck = StringRight($sReceivedE, 4)
    	if $sessioncheck <> $setsession Then
    		ConsoleWrite(@CRLF & "Someone try's to hack this CMD" & @CRLF & "CMD is now closing" & @CRLF);<=Keine Antwort über TCPSend, damit der vermeintliche angreifer darüber keine informationen bekommt
    		sleep(2000)
    		Exit
    	EndIf
    	$sReceivedE = StringTrimRight($sReceivedE, 4)
    
    
    	ConsoleWrite("Decrypt.. " & $sReceivedE & @CRLF)
    	$sDecryptedData = _Crypt_DecryptData(BinaryToString($sReceivedE), $g_hKey, $CALG_USERKEY) ;<=Befehl wird entschlüsselt
    	$sDecryptedData = BinaryToString($sDecryptedData)
    	if $sDecryptedData = "restart" Then
    		ShellExecute(@ScriptFullPath)
    		Exit
    	EndIf
    	if $sDecryptedData = "exit" then
    		ConsoleWrite("Bye Bye" & @CRLF)
    		$sDecryptedData = "echo exit"
    	EndIf
    	ConsoleWrite("Server receive: " & $sDecryptedData & @CRLF)
    
    
    	StdinWrite($iPID, $sDecryptedData & @CRLF)
    	while 1
    		$cmdWindowOut = StdoutRead($iPID)
    		$cmdWindowErr = StderrRead($iPID)
    		$cmdWindowOut_Buffer = $cmdWindowOut_Buffer & $cmdWindowOut & $cmdWindowErr
    		If @Error then Exit
    		$aktuell = StringSplit ($cmdWindowOut, @CRLF, 1)
    		$aktuell = $aktuell[$aktuell[0]]
    		if $aktuell <> $Ursprung Then
    			if StringRight ($aktuell, 1) = ">" or StringRight ($aktuell, 2) = "\>" Then
    				$Ursprung = $aktuell
    				ExitLoop
    			EndIf
    		Else
    			ExitLoop
    		EndIf
    	WEnd
    
    
    	If $cmdWindowOut_Buffer = "" Then
    		$cmdWindowOut_Buffer = "No Answer"
    	EndIf
    	ConsoleWrite("Encrypt.." & @CRLF)
    	$sEncryptedData = _Crypt_EncryptData($cmdWindowOut_Buffer, $g_hKey, $CALG_USERKEY) ;<=Verschlüssel die Antwort
    	sleep(400)
    	ConsoleWrite("Server send: " & $cmdWindowOut_Buffer & @CRLF)
    	TCPSend($iSocket, $sEncryptedData & $setsession & StringTrimLeft(StringToBinary($trenner),2))	;<=Sende Antwort
    ;~ 	FileWrite(FileOpen(@ScriptDir & "\ZS.txt",16+1),$sEncryptedData & StringTrimLeft(StringToBinary($trenner),2) & @CRLF & @CRLF)
    	TCPCloseSocket($iSocket)
    	TCPCloseSocket($iListenSocket)
    	if $sDecryptedData = "echo exit" then
    		ConsoleWrite("Bye Bye" & @CRLF)
    		Sleep(1000)
    		Exit
    	EndIf
    	ConsoleWrite("Waiting for the next Order" & @CRLF)
    WEnd
    
    
    
    
    Func OnAutoItExit()
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    	TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen


    Client:

    Spoiler anzeigen
    AutoIt: Client
    #Region
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    Local $hWnd = WinGetHandle("[Class:ConsoleWindowClass]")
    if @error then Exit
    Local $aPos = WinGetPos($hWnd)
    WinMove($hWnd, "", 0, 0, $aPos[2], 1000)
    WinSetOnTop($hWnd, "",1)
    Local $sIPAddress = InputBox("Ip Adress Set","Input IP","127.0.0.1")
    if @error Then Exit
    Local $iPort = 5051
    Local $trenner = "=ENDING" ;<=Damit enden die gesendeten daten. damit weiß sowohl der server, als auch der client, wann keine daten mehr kommen
    Local $ester = 0
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4 ;<=Verschlüsselungs methode ist RC4
    Local $g_hKey = _Crypt_DeriveKey("3thaN0l-A|kOh0l", $iAlgorithm) ;<=Hier wird das passwort gesetzt mit dem die daten verschlüsselst und ent.. werden
    While 1
    	Sleep(100)
    	Local $iSocket = TCPConnect($sIPAddress, $iPort);<=Verbinde zum server
    	If Not @error Then
    		if $ester = 0 Then
    			ConsoleWrite("Connection Established. Password?" & @CRLF)
    			$pass = InputBox("Password", "Password?", "informatik")
    			$epass = _Crypt_EncryptData(StringToBinary($pass), $g_hKey, $CALG_USERKEY)
    			TCPSend($iSocket, $epass)
    			Do
    				$recvsession = TCPRecv($iSocket, 2048)
    			Until $recvsession <> ""
    			if StringRight($recvsession,1) = "1" Then
    ;~ 			if StringLen(BinaryToString($recvsession)) = 4 Then
    				$sessionkey = StringRight(StringTrimRight($recvsession,1),4)
    				$recvsession2 = StringTrimRight($recvsession,5)
    				$recvsession2 = BinaryToString(_Crypt_DecryptData(BinaryToString($recvsession2), $g_hKey, $CALG_USERKEY))
    				ConsoleWrite("Server Responds: " & $recvsession2 & "|Sessionkey is: " & $sessionkey & @CRLF)
    			Elseif StringRight($recvsession,1) = "0" Then
    				ConsoleWrite("Server Responds: " & $recvsession & @CRLF & "Programm will now Exit" & @CRLF)
    				sleep(2000)
    				Exit
    			EndIf
    			$ester = 1
    		EndIf
    		$cmdinput = InputBox("Kommandoeingabe","","dir") ;<=Gib mirn befehl
    		If $cmdinput = "" Then
    			$cmdinput = "exit" ;<=Damit der Server auch herunterfährt & sich nicht aufhängt
    		EndIf
    		ConsoleWrite("Encrypt.. " & $cmdinput & @CRLF)
    		$sEncryptedData = _Crypt_EncryptData(StringToBinary($cmdinput), $g_hKey, $CALG_USERKEY) ;<=RC4 verschlüsselung des Befehls
    		ConsoleWrite("Client send: " & $cmdinput & @CRLF & "Waiting for Response.. This could take some time(tree)" & @CRLF) ;<=Anzeigen des zusendenen befehls
    		TCPSend($iSocket, $sEncryptedData & $sessionkey & StringTrimLeft(StringToBinary($trenner),2)) ;<=$trenner wird binär & das 0x vorne wird entfernt
    		If @error Then Exit
    		if $cmdinput = "restart" Then
    			Sleep(1000)
    			ShellExecute(@ScriptFullPath) ;<================noch zu überarbeiten
    			Exit
    		EndIf
    		Local $sReceived = '' ;<=Macht den Buffer leer
    		Do
    			$sReceived &= TCPRecv($iSocket, 2048,1) ;<=Empfange pakete binär - Beachte '&=' ohne das kommt bei größeren antworten nur das letzte paket an
    		Until StringInStr($sReceived,StringTrimLeft(StringToBinary($trenner),2)) <> 0 ;<=Sobald $sReceived den substring $trenner in binär ohne 0x findet wird die schleife beendet
    		$sReceived = "0x" & StringReplace($sReceived,"0x","");<=nach 2048 zeichen kam gerne wiederhohlt ein 0x, deshalb ließen sich ergebnisse wie tree nicht entschlüsseln, das wird hier gecounterd
    ;~ 		FileWrite(FileOpen(@ScriptDir & "\ZC.txt",16+1),$sReceived & @CRLF & @CRLF) ;<====================================müll
    		$sReceivedE = StringTrimRight($sReceived,StringLen(StringTrimLeft(StringToBinary($trenner),2)));<=hier wird der binäre $trenner entfernt damit die eigentliche antwort entschlüsselt werden kann
    
    
    		$sessioncheck = StringRight($sReceivedE, 4)
    		if $sessioncheck <> $sessionkey Then
    			ConsoleWrite(@CRLF & "Something went badly wrong" & @CRLF & "CMD is now closing" & @CRLF)
    			sleep(2000)
    			Exit
    		EndIf
    		$sReceivedE = StringTrimRight($sReceivedE, 4)
    
    
    		ConsoleWrite("Decrypt.. " & @CRLF)
    		sleep(200)
    		$sDecryptedData = _Crypt_DecryptData(BinaryToString($sReceivedE), $g_hKey, $CALG_USERKEY) ;<=Entschlüssele die Antwort
    		$sDecryptedData = BinaryToString($sDecryptedData) ;<=ist ja jetzt lesbar, also kann es auch zu einem string formatiert werden
    		ConsoleWrite("Client receive: " & $sDecryptedData & @CRLF) ;<=Anzeigen der Antwort
    		FileWrite(FileOpen(@ScriptDir & "\1.txt",16+1),$sDecryptedData & @CRLF & @CRLF) ;<=Logging
    	Else
    		MsgBox(0,"","No Connection Establishment")
    		Exit
    	EndIf
    	TCPCloseSocket($iSocket)
    WEnd
    Func OnAutoItExit()
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    	TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen
  • AutoIt - Das Multitalent

    • Candyland
    • 7. März 2017 um 02:30

    Ich finde es Gut das du erwähnt hast das die intigrierte Hilfe von Autoit gut verwendbar ist. Besonders für anfänger die sich dort beispielscripts & syntax herholen wollen. Das ist auch etwas das ich bei Eclipse für java sehr bemängle, da es diese dort nicht gibt. & es stimmt für anfänger ist Autoit ganz toll wegen ihrer schönen Calltips und übersichtlichkeit. Vielleicht bin ich aber auch nur kein fan von Klammern die das ende eines if's z.b angeben

    Nicht so praktisch fand ich das, der jenige der sich nach einer rentablen sprache umschaut garnicht wirklich sieht worauf Autoit aufbaut. Was ich meine ist wie die art des schreibens dort ist. Vielleicht hättest du ein paar vergleiche mit anderen sprachen machen können, die unterschiede klar stellen & dessen eventuelle vorteile.

    Find ich trotzdem gut mal was positives von dieser sprache zu hören. Bots für spiele habe ich viele gesehen in dieser sprache, aber schlechthin kaum eine malware.

  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 3. März 2017 um 21:29

    Das ist ja mal voll interessant, das habe ich ja noch gewusst dass, das geht mit &= O_O
    sehr schlau & danke. Ja das hilft mir super weiter. Ich habe mich gestern beim beobachten der verbindungen via Wireshark schon gefragt wie Autoit damit umgeht wenn mehere pakete gesendet werden.
    Sobald das Script ansehnlich ist werde ich es in der Script section veröffentlichen, damit jeder etwas davon hat!

    Ich hacke das Thema dann mal ab

  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 3. März 2017 um 16:50
    Zitat von alpines

    Du sendest die Daten glaube ich falsch. Sende und empfange sie ruhig mal als String und nich explizit als Binary beim TCPRecv.

    Hast du auch teilweise vollständige Übertragungen oder ist es immer nur halb?


    Gut das versuche ich mal.

    Ja mal so & mal so. Fehler treten häufiger bei nicht lokalen verbindungen auf

  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 2. März 2017 um 16:01

    So ich hab das script erweitert & alpines vorschlag mit eingebaut.

    Server:

    Spoiler anzeigen
    AutoIt: Server
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    Local $ip = "0.0.0.0"
    Local $port = 5051
    Local $iSocket = 0
    Local $trenner = "=ENDING"
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    Local $iPID = Run(@ComSpec & ' /K ', 'C:\', @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD + $STDIN_CHILD)
    ConsoleWrite("This is a computer Remote CMD for computer remote operations" & @CRLF & "Do not Close this Windows, you can Minimize or look at it" & @CRLF)
    
    
    $esta = 0
    $Ursprung = ""
    $cmdWindowOut_Buffer = ""
    sleep(100)
    $cmdWindowOut = StdoutRead($iPID)
    $cmdWindowErr = StderrRead($iPID)
    $cmdWindowOut_Buffer = $cmdWindowOut_Buffer & $cmdWindowOut & $cmdWindowErr
    $Ursprung = StringSplit ($cmdWindowOut, @CRLF, 1)
    $Ursprung = $Ursprung[$Ursprung[0]]
    $cmdWindowOut_Buffer = ""
    
    
    ConsoleWrite("Waiting for Connection Establishment" & @CRLF)
    While 1
    	$cmdWindowOut_Buffer = ""
    	Local $iListenSocket = TCPListen($ip, $port, 999)
    	Do
    		$iSocket = TCPAccept($iListenSocket)
    		If @error Then
    			Exit
    		EndIf
    	Until $iSocket <> -1
    	if $esta = 0 Then
    		ConsoleWrite("Connection Established" & @CRLF)
    		$esta = 1
    	EndIf
    
    
    	Local $sReceived = ''
    	Do
    		$sReceived = TCPRecv($iSocket, 32768,1)
    	Until StringInStr($sReceived,StringTrimLeft(StringToBinary($trenner),2)) <> 0
    	$sReceivedE = StringTrimRight($sReceived,StringLen(StringTrimLeft(StringToBinary($trenner),2)))
    	$sDecryptedData = _Crypt_DecryptData(BinaryToString($sReceivedE), $g_hKey, $CALG_USERKEY) ;<=Befehl wird entschlüsselt
    	$sDecryptedData = BinaryToString($sDecryptedData)
    	if $sDecryptedData = "restart" Then
    		ShellExecute(@ScriptFullPath)
    		Exit
    	EndIf
    	if $sDecryptedData = "exit" then
    		ConsoleWrite("Bye Bye" & @CRLF)
    		$sDecryptedData = "echo exit"
    	EndIf
    	ConsoleWrite("Server receive: " & $sDecryptedData & @CRLF)
    
    
    	StdinWrite($iPID, $sDecryptedData & @CRLF)
    	while 1
    		$cmdWindowOut = StdoutRead($iPID)
    		$cmdWindowErr = StderrRead($iPID)
    		$cmdWindowOut_Buffer = $cmdWindowOut_Buffer & $cmdWindowOut & $cmdWindowErr
    		If @Error then Exit
    		$aktuell = StringSplit ($cmdWindowOut, @CRLF, 1)
    		$aktuell = $aktuell[$aktuell[0]]
    		if $aktuell <> $Ursprung Then
    			if StringRight ($aktuell, 1) = ">" or StringRight ($aktuell, 2) = "\>" Then
    				$Ursprung = $aktuell
    				ExitLoop
    			EndIf
    		Else
    			ExitLoop
    		EndIf
    	WEnd
    
    
    	If $cmdWindowOut_Buffer = "" Then
    		$cmdWindowOut_Buffer = "No Answer"
    	EndIf
    	$sEncryptedData = _Crypt_EncryptData($cmdWindowOut_Buffer, $g_hKey, $CALG_USERKEY) ;<=Verschlüssel die Antwort
    	ConsoleWrite("Server send: " & $cmdWindowOut_Buffer & @CRLF)
    	TCPSend($iSocket, $sEncryptedData & StringTrimLeft(StringToBinary($trenner),2))	;<=Sende Antwort
    	FileWrite(FileOpen(@ScriptDir & "\ZS.txt",16+1),$sEncryptedData & StringTrimLeft(StringToBinary($trenner),2) & @CRLF & @CRLF)
    	TCPCloseSocket($iSocket)
    	TCPCloseSocket($iListenSocket)
    	if $sDecryptedData = "echo exit" then
    		ConsoleWrite("Bye Bye" & @CRLF)
    		Sleep(1000)
    		Exit
    	EndIf
    WEnd
    
    
    
    
    Func OnAutoItExit()
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    	TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen

    Client:

    Spoiler anzeigen
    AutoIt: Client
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    Local $sIPAddress = InputBox("Ip Adress Set","Input IP","127.0.0.1")
    if @error Then Exit
    ;~ Local $sIPAddress = "192.168.178.156"
    Local $iPort = 5051
    Local $trenner = "=ENDING"
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    While 1
    	Sleep(100)
    	Local $iSocket = TCPConnect($sIPAddress, $iPort)
    	If Not @error Then
    		$cmdinput = InputBox("Kommandoeingabe","","dir")
    		If $cmdinput = "" Then
    			$cmdinput = "exit"
    		EndIf
    		$sEncryptedData = _Crypt_EncryptData(StringToBinary($cmdinput), $g_hKey, $CALG_USERKEY) ;<=RC4 verschlüsselung des Befehls
    		ConsoleWrite("Client send: " & $cmdinput & @CRLF)
    		TCPSend($iSocket, $sEncryptedData & StringTrimLeft(StringToBinary($trenner),2))
    		If @error Then Exit
    		if $cmdinput = "restart" Then
    			Sleep(1000)
    			ShellExecute(@ScriptFullPath)
    			Exit
    		EndIf
    		Local $sReceived = ''
    		Do
    			$sReceived = TCPRecv($iSocket, 32768,1)
    		Until StringInStr($sReceived,StringTrimLeft(StringToBinary($trenner),2)) <> 0
    		FileWrite(FileOpen(@ScriptDir & "\ZC.txt",16+1),$sReceived & @CRLF & @CRLF)
    		$sReceivedE = StringTrimRight($sReceived,StringLen(StringTrimLeft(StringToBinary($trenner),2)))
    		$sDecryptedData = _Crypt_DecryptData(BinaryToString($sReceivedE), $g_hKey, $CALG_USERKEY) ;<=Entschlüssele die Antwort
    		$sDecryptedData = BinaryToString($sDecryptedData)
    		ConsoleWrite("Client receive: " & $sDecryptedData & @CRLF)
    ;~ 		FileWrite(FileOpen(@ScriptDir & "\1.txt",16+1),"Befehl: " & $sDecryptedData & @CRLF & @CRLF) ;<=Logging
    	Else
    		MsgBox(0,"","No Connection Establishment")
    		Exit
    	EndIf
    	TCPCloseSocket($iSocket)
    WEnd
    Func OnAutoItExit()
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    	TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen

    Als nächstes Plane ich eine einmalige Passwort abfrage, damit nicht jeder beliebige Port Sniffer auf den Computer zugriff bekommt.

    EDIT: ich habs nochmal verändert, jetzt habe ich versucht zu mir selbst übers internet zu verbinden & bekomme häufger nur die hälfte der abgesendeten Daten. Ich sehe nicht warum


    Server Sendet:

    Spoiler anzeigen
    Code
    0xD9B0DE3377DD763AD4D634F8D5D967C26C1DBD566CFC3189B6C8A4903F1A506BCDC1BA1D0B331E16226F50FE0BDBB3244323F6749A937F4939D14064CD2A64F80CA1065311F4335CF22B657331E2C56CF805C6D93FBE8DD20E1881CBC4A1FF08B0F33BC599D946A02CA1861C7C071756CCC37CF668FC82CA9BA74F9E082944444231E97E4F6149910716D48157C73FD67927E92CB71D8AB695C88B71E88615450D8B42B84B3095A054B20696BC9BE18B6C51BD68A0C37FCC2AF833791076DF4DF1DA90A059B25BF9A500B253A6F642002AD8BDA0B4D407FBA9BF6AF6195374F435DB423F05BD645919B2FCE91872E6580F05945185AE727A30B1D4DCEF2B9F975D3A80D6155B0E76AF25ADC4CDB42A9506E79F2E72F3960220E88C3A8A024D251C4836FCB388E6DA016D4106DF0B71A08F246BC09AF46E5C3E1829B7E96AED228528F215116FE7136A32314E03FF371424C5848331432C9A6FD49E60F50057F95C90B33E5993D5D19A5AD5C1B4ED4E4A76F7569A6B8744B0004EB0420CD79F37F8BCCC97BB2BB4E5CE47E8A9ED6A6CEB202FE935373331F5B32A8A3E8C43ED009FC55A05C87756CD998FDEC8A2F9D045FC77B05A2BF30BFFAB4E8AA5D8A0FA74E07FE64161B79A1C8AE7741932A7C00EB97473FB56893B0CB71FA2B0B261531E60EB288F3B654B6B1F91B61215F45FDBF59453755BB3B4F47DD4E4DCA670700DAE8371AB5831EFF826059F50A0B31D31CF8E877E4479BBAD783A18CD6BE2D1A7CE56ECFC83354856B3FFF54F090027847B6E7A9A6440AED8FF36A4F9A0E6E9A87106BC77C1EE4132390BEA3ABEB61C0A74F52A40496AE76683EA44A7E34CD07C065561C18810FB523E6F0D6A2C7D26C4EF43BC0ABDD292E718100C4580E7484765118EE811F4B8789C93344CE14A8B253BDA3A94F6B76D0F79C9BA84C3CD5F9D80139B8B4297EF14B01F20FA93EF782744C80936665BF66AA949EE69F5757D226C68ABF547FECA34D140678F361FBA23215B9DBBDCB3B50C497E050464BC1F6FD30E399BBC4C665AA8C71AE5B8866FC140340B52E5A0E12F02272DDED430E1093518B15665FBB32376D628A4125B640E7CAD91044F27F44B5548F1329BF1E717287F97BABBF31448DE0E92A30DC6362AF12FC68C397DA4A9BB730F512CDA75B4C1A33527807F314A87EF32007336F61908494A6B3AEC821AF9B248CF17DA9C5E688AEA095206626513A37F9295C635C148F34E5DFA231BB9F7E01F4E9A683C6801049FAE222E4F14766721379A24CD14ACFEBC72D9C79A81C348EFC511003963F1437605F1EBC7EC91B9083002A3456A3699DECC92D3104A6E03DF0FF652066F8F80F8E946C0B3FEB842D9E7F1543D5190F7BA8B81D03A94CF7D7C2C5115F45F227CA0AE228B8104AB713DB8519454F39B82718D233E2FE43538C7BB3274CDCCF9C612DEC7E4C67C487B277FF800DA32D7ACE6DB85FDC3561A404450E75D5013385AD63210EDE57E843AEE82B09C91EC63F79D3AE499C4987AEE14404189154D69D484BB41FC19327DDB8105DEF84B65EFE3052BD8D360F7429570BECB594AE0AADD00E676D4430234400D3C186170A670BF15A64652FE22F9CB88BF3C8BA5F41C622531FA2C6075DF61A233CB4819FA3A4B4260DD8DA8B8F6309FE05CC969F4145A9B49C564BDA1451384EEC5D47F41623327102181650A6FDE4268F15A6FA9053C0E3412C995A74BA1415610ABFE47199A04F4D9D9BBC27B849C8DD8AD159C1E7E2E9A19EBC80EFD491A074F5B069DD8B1466505F584FA1B4D17502B5922E5F0FFDD663B2E2DB48E7B58C74FABB69A6AE9232634215C7D78EAF2036DD4922F2894A5CA0165C544875383E08E604733563BCBC44BA34CD0D3CDDEA11DC242FACC224A692407126994437693A3D4A81069222D2EE4920ABC6200751BE1FE1B6F7D12CBCA165A79AE8D00EFA3938CE3AB47AB9B28BA5F4874D8B292DEDCC7986DE200BB9240E2F1CE58D2185658B0FFABA672C70A1E5298026448CE980CFA365C7AA48C15C20DF08125C029CB2484308E2DAEE4F67CF6A45617C08BC793A92F0C3DBD41C0F5E8376F05F47309E5F2DA08E5B4017A222294313792C9F2A48FD4AD55A5A315C79CD9F54EB135D040E91AFBF5D3E103BF8BD0D97B379DA7AD2713D666ABD32108EAAE171611A2335DC3AB2B4B1CB3955A6B5D27005FAE4D33D3690C762255CE28145284A7EB8EE0D579042592A44F71C00E2806CB81B3896CEC13FC805380CC1897D758E24C0F53137FCF1DC54E5866D7A406523FFA8E952B616A32D3474539430BE77A0AED044AC34424C7889716D784DE1493C6E7A44841F0AE0765FCA523043490871DD54C6E63C1EE1980566A587E539E5B3ED34033FEFBFDF87F1804A29AB738AA11F4FF9F1D7E8D5C04804343F909E33317AD6BCE46F9D9E92EF93A7C18A8267540D437C8291734D7C9A897E7D0B6DAF62C15ADE45BFB21F1448EA3883DCDB7308532D1602325839AA705F3E00A6AD654D643EB3814182417F0A99799897CE5F97981408E47C7E7EFD514A0F2F7E4E28DDD00C11DDFFE738EB49AED9104E4C09E403405536F45DEFACA4E616643CCB19C0D3B8E0891AF86CA8612EDA1D15EBB184A7CB06BD188B2107A611EB997A5FD9D223D10DE233F077366E83668F85DAF37FB9AEB45DC82A587B12936C720934638F1BE540D140CF10DDF28A9B79BDE15721F879F484380471F956D2C1AA82A74FE6C9F890D07E023B23EF859963E59BBE7EFDC76F5760091079FFBF9715576F13739E93CDAE43D1F77E69AE44D8EC8EA93C5E726F175141A8FDE51752470F3F376F2BFFF0B72F9774D4391E43EAA0A25E1256B7791540CBC977D1F1231F052C6EDCA26E15F0A11FE7597BFE69971416ADBCB8026C59723E23797C71909C683C6AE02465450192E090D364C5B26FE529E4850A47429255178CB21A4B2189C24A6ECB8F34EC0837F30E9F8F6021054C19AE8E4077D1E019220FDEF2C51701C2093DD547ADA5B49415DAA29047C38FFF66B94671ABCB244BB9B478941A6889EF0E8B83DF20FE73C68778FB04C5A1D2E97E4A163F5A06C3FD444E66F6A92B94018E9CEC53D292E384CAF0E00079AF132852C3FA0C26CDD136AD1EB4AEEC87DB5BA748E9EB6735F2A754818FD239E4175FFF81775049B247DFB5A9735F13C772ED5879F45315127D2915B9B45194AD4CDBF3BF8C3B0A01891CFA1818E0AEDE262FEBE817BB5462DE894785CB8B8566BA74476B00DCAA5A3D4EA25774AB4613E85AAAE312B5F3721802211BA1317927A1415C21EF87C480B33D47A657850AAAD9BCCB303DCC2EDFB51ED3983D9C3C856AD5E01156724FF9993A5BD8D0B5ECC42125D6193940EE242689EBE3D454E44494E47

    Cliengt Empfängt:

    Spoiler anzeigen
    Code
    0x2484308E2DAEE4F67CF6A45617C08BC793A92F0C3DBD41C0F5E8376F05F47309E5F2DA08E5B4017A222294313792C9F2A48FD4AD55A5A315C79CD9F54EB135D040E91AFBF5D3E103BF8BD0D97B379DA7AD2713D666ABD32108EAAE171611A2335DC3AB2B4B1CB3955A6B5D27005FAE4D33D3690C762255CE28145284A7EB8EE0D579042592A44F71C00E2806CB81B3896CEC13FC805380CC1897D758E24C0F53137FCF1DC54E5866D7A406523FFA8E952B616A32D3474539430BE77A0AED044AC34424C7889716D784DE1493C6E7A44841F0AE0765FCA523043490871DD54C6E63C1EE1980566A587E539E5B3ED34033FEFBFDF87F1804A29AB738AA11F4FF9F1D7E8D5C04804343F909E33317AD6BCE46F9D9E92EF93A7C18A8267540D437C8291734D7C9A897E7D0B6DAF62C15ADE45BFB21F1448EA3883DCDB7308532D1602325839AA705F3E00A6AD654D643EB3814182417F0A99799897CE5F97981408E47C7E7EFD514A0F2F7E4E28DDD00C11DDFFE738EB49AED9104E4C09E403405536F45DEFACA4E616643CCB19C0D3B8E0891AF86CA8612EDA1D15EBB184A7CB06BD188B2107A611EB997A5FD9D223D10DE233F077366E83668F85DAF37FB9AEB45DC82A587B12936C720934638F1BE540D140CF10DDF28A9B79BDE15721F879F484380471F956D2C1AA82A74FE6C9F890D07E023B23EF859963E59BBE7EFDC76F5760091079FFBF9715576F13739E93CDAE43D1F77E69AE44D8EC8EA93C5E726F175141A8FDE51752470F3F376F2BFFF0B72F9774D4391E43EAA0A25E1256B7791540CBC977D1F1231F052C6EDCA26E15F0A11FE7597BFE69971416ADBCB8026C59723E23797C71909C683C6AE02465450192E090D364C5B26FE529E4850A47429255178CB21A4B2189C24A6ECB8F34EC0837F30E9F8F6021054C19AE8E4077D1E019220FDEF2C51701C2093DD547ADA5B49415DAA29047C38FFF66B94671ABCB244BB9B478941A6889EF0E8B83DF20FE73C68778FB04C5A1D2E97E4A163F5A06C3FD444E66F6A92B94018E9CEC53D292E384CAF0E00079AF132852C3FA0C26CDD136AD1EB4AEEC87DB5BA748E9EB6735F2A754818FD239E4175FFF81775049B247DFB5A9735F13C772ED5879F45315127D2915B9B45194AD4CDBF3BF8C3B0A01891CFA1818E0AEDE262FEBE817BB5462DE894785CB8B8566BA74476B00DCAA5A3D4EA25774AB4613E85AAAE312B5F3721802211BA1317927A1415C21EF87C480B33D47A657850AAAD9BCCB303DCC2EDFB51ED3983D9C3C856AD5E01156724FF9993A5BD8D0B5ECC42125D6193940EE242689EBE3D454E44494E47
  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 1. März 2017 um 18:53

    Nützlich nützlich! o:
    ich habe zu danken. Alpines wie würdest du das lösen ohne Until $sReceived <> ""?
    Ich frage mich allerdings jetzt wie ich die cmd aktiv halten so das ich z.b. einen Ordner wechsel(cd ..) und dann Run dort einspringt.
    Einer eine idee?

  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 1. März 2017 um 14:49

    So hier Server & client

    ich habe das aus den beispiel scripts ausgearbeitet die Autoit3 bereitstellt.
    Server:

    Spoiler anzeigen
    AutoIt: Server
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    #include "_Base64.au3"
    
    
    Local $ip = "127.0.0.1"
    Local $port = 65432
    Local $iSocket = 0
    
    
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    
    
    Local $iListenSocket = TCPListen($ip, $port, 100)
    $iSocket = 0
    
    
    
    
    While 1
    Do
    	$iSocket = TCPAccept($iListenSocket)
    	If @error Then
    		$iError = @error
    ;~ 		MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not accept the incoming connection, Error code: " & $iError)
    ;~ 		ShellExecute(@ScriptFullPath)
    		Exit ;<=CUI kann/mag das nicht
    	EndIf
    Until $iSocket <> -1
    
    
    Local $sReceived = TCPRecv($iSocket, 2048)
    
    
    If $sReceived <> "" Then ;<=Wenn Befehl nicht leer ist
    	ConsoleWrite("Received: '" & StringToBinary($sReceived) & "'" & @CRLF) ;<=da ja nur Strings ankommen
    
    
    	_Crypt_Startup()
    	Local $iAlgorithm = $CALG_RC4
    	Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    	$sDecryptedData = _Crypt_DecryptData($sReceived, $g_hKey, $CALG_USERKEY) ;<=Befehl wird entschlüsselt
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    
    
    	$Base64De = _Base64Decode(BinaryToString($sDecryptedData)) ;<=&durch den BaseDecoder gejagt
    
    
    	Local $iPID = Run(@ComSpec & " /c " & $Base64De, @ScriptDir, @SW_HIDE, $STDOUT_CHILD) ;<=Führe aus
    	ProcessWaitClose($iPID) ;<=warte till close
    	Local $sOutput = StdoutRead($iPID) ;<=lese Stdout Stream aus
    	if $sOutput = "" Then
    		$sOutput = "No Answer" ;<=Damit der Client nicht ewig vergebens auf eine Antwort wartet
    	EndIf
    
    
    	$Base64En = _Base64Encode(BinaryToString($sOutput)) ;<=Encode die Antwort
    
    
    	_Crypt_Startup()
    	Local $iAlgorithm = $CALG_RC4
    	Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    	$sDecryptedData = _Crypt_DecryptData($Base64En, $g_hKey, $CALG_USERKEY) ;<=Verschlüssel die Antwort
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    
    
    ;~ 	if StringLen($sDecryptedData) > 2048 Then
    ;~ 		$1 = StringLeft($sDecryptedData, 2048)
    ;~ 		$1trim = StringTrimLeft($sDecryptedData, 2048) ;<=nichts ausgereiftes
    ;~ 	EndIf
    
    
    	ConsoleWrite("Send: " & $sDecryptedData & @CRLF)
    	TCPSend($iSocket, $sDecryptedData) ;<=Sende Antwort
    EndIf;<=Ende $sReceived
    
    
    
    
    TCPCloseSocket($iSocket)
    WEnd
    
    
    
    
    ;~ TCPCloseSocket($iListenSocket)
    ;~ TCPCloseSocket($iSocket)
    
    
    Func OnAutoItExit()
        TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen


    Client

    Spoiler anzeigen
    AutoIt: Client
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    #include "_Base64.au3"
    
    
    
    
    $sIPAddress = "127.0.0.1"
    $iPort = 65432
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    While 1
    	sleep(100)
    	Local $iSocket = TCPConnect($sIPAddress, $iPort)
    	if Not @error Then
    ;~ 		$cmdinput = InputBox("1","2","dir") ;<=tausche & TCPSend hat dich nicht mehr lieb
    		$cmdinput = 'del 1.vbs | echo Msgbox"Test",64,"Teste Mich!" >1.vbs | start 1.vbs' ;<=noproblemo
    
    
    		$Base64En = _Base64Encode(BinaryToString($cmdinput));<=BaseEncode
    
    
    		_Crypt_Startup()
    		Local $iAlgorithm = $CALG_RC4
    		Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    		$sDecryptedData = _Crypt_DecryptData($Base64En, $g_hKey, $CALG_USERKEY) ;<=RC4 verschlüsselung des Befehls
    		_Crypt_DestroyKey($g_hKey)
    		_Crypt_Shutdown()
    
    
    		ConsoleWrite("Befehl: " & $cmdinput & @CRLF)
    		TCPSend($iSocket, $sDecryptedData) ;<=Der Befehl der herum stinkert
    		if @error then Exit
    		Do
    			$sReceived = TCPRecv($iSocket, 327680) ;<=Warte hier auf Antwort, 327680 = übertriebene zahl. Ich muss also die daten aufspliten vom server damit ich bei 'tree C:\' alles bekomme
    		Until $sReceived <> ""
    
    
    		_Crypt_Startup()
    		Local $iAlgorithm = $CALG_RC4
    		Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    		$sDecryptedData = _Crypt_DecryptData($sReceived, $g_hKey, $CALG_USERKEY) ;<=Entschlüssele die Antwort
    		_Crypt_DestroyKey($g_hKey)
    		_Crypt_Shutdown()
    
    
    		$Base64De = _Base64Decode(BinaryToString($sDecryptedData)) ;<=BaseDecode
    		ConsoleWrite($Base64De & @CRLF)
    		FileWrite(FileOpen(@ScriptDir & "\1.txt",16+1),"Befehl: " & $cmdinput & @CRLF & $Base64De & @CRLF & @CRLF) ;<=Logging
    	Else
    		MsgBox(0,"","No Connection Establishment") ;<=wen TCPConnect fehlschlägt
    		Sleep(5000)
    	EndIf
    
    
    	TCPCloseSocket($iSocket)
    	Exit ;<= Nur solange bis InputBox funktioniert, danach möchte ich wieder & wieder gefragt werden
    WEnd
    
    
    Func OnAutoItExit()
        TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen
  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 28. Februar 2017 um 21:17
    Zitat von Oscar

    Also irgendwie schreibst Du wirr!
    Erstens braucht man für TCP nicht unbedingt eine Internetverbindung und zweitens kannst Du Variablen nicht in einer Inputbox deklarieren. Du kannst ihnen vielleicht den Wert aus der Inputbox zuweisen, aber deklarieren geht nicht.
    Schreib erstmal zwei Scripte (Server- und Client-), die sich miteinander verbinden. Während das eine sendet, muss das andere auf Empfang sein, sonst klappt das nicht.


    hmm ich weiß schon was du meinst, ich werde mal versuchen das script hier morgen zu präsentieren.
    ich habe wie gesagt keine internetverbindung auf dem pc wo das script(server/client) sich befindet. & der server empfängt auch ohne ein problem den gesendeten Befehl, jedoch akzeptiert wie schon gesagt TCPSend die var aus der InputBox nicht.

    Danke für eure Antworten!

  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 28. Februar 2017 um 19:35
    Zitat von alpines

    Weil der Server grad nicht empfängt? Zeig uns doch mal das ganze Script


    Ich kann euch das script deshalb nicht zeigen weil mir die erforderliche internetverbindung fehlt.

    Der server läuft zu dem zeitpunkt & das script sendet immer nur dann wenn die variable aus dem script selbst kommt, wird sie durch sagen wir mal Inputbox oder FileRead declariert erkennt TCPSend sie nicht an.

  • TCPSend($socket, $data) data von inputbox

    • Candyland
    • 28. Februar 2017 um 17:53

    Ich wünschte ich könnte heute ein beispiel script mit hinzufügen, das ist mir aber nicht möglich da ich nicht an meinem heimpc bin.

    Ich versuche mich an einer Remote CMD, einfach um etwas über TCP zu lernen. Bisher habe ich lediglich einen einfachen server der die daten empfängt & dann die ausgabe von der cmd wieder absendet. Und einen Clienten der einen befehl wie "dir" sendet & natürlich die das ergebnis empfängt. Jetzt wollte ich aber nicht ständig in der source den befehl eintragen sondern mich per inputbox danach fragen lassen. Irgendwie mag das TCPSend nicht & sendet einfach nichts. ich habe also etwas herumprobiert die $data vorher testweise verschlüsselt, nichts. Wenn der wert vorher in der source gesetzt wurde reagiert TCPSend darauf indem er die daten sendet, Kommt der Befehl allerdings von außerhalb des programs dann passiert nichts, kein fehler nur ein nichts. Leider kann ich von meinem HomePc zurzeit nicht aufs internet zugreifen & bin deshalb auch hier auf eure hilfe angewiesen. Ich sehe keinen sinn darin warum TCPSend mir da einen streichspielt :huh:

    kurzes freihand beispiel
    $data = inputbox("","Befehl","dir")
    TCPSend($socket, $data)

    EDIT: also kurz gesagt wenn ich versuche $data mit einer Inputbox zu setzen dann kommt bim server nichts an.

  • UPDATE: FileBinder/Hider

    • Candyland
    • 26. Februar 2017 um 10:23
    Zitat von alpines

    Locker dein Script ein wenig auf.
    Schreib ihn wie ein Brief, nutz Absätze, Zeilenumbrüche um nicht in die nächste automatisch zu rutschen und nenn deine Variablen besser.

    Du magst jetzt vielleicht wissen wofür alles steht und dich auskennen aber in 2 Wochen hast du davon absolut keine Ahnung mehr.

    Hm ja das kann ich mir vorstellen das ich eventuell in 1-2 wochen da nicht mehr durchsehe
    Ich schau mal wie ich einen schon geschriebenen brief umarbeiten kann

  • GDI+ Rotating Earth build 2017-03-17

    • Candyland
    • 26. Februar 2017 um 00:06

    Find ich gut, ist sicher ein schöner Zeitvertreib gewesen! c:

  • UPDATE: FileBinder/Hider

    • Candyland
    • 25. Februar 2017 um 23:58

    ich hab mich die letzten tage etwas mit cryptographie beschäftigt & zu übung textdatein miteinander verbunden & dabei mitbekommen das soetwas nützlich sein kann wenn man tatsächlich versucht jemanden eine Botschaft zukommen zu lassen die nu er entschlüsseln kann. Also habe ich das Script vervollständigt & es gleich mal veröffentlicht.
    Vielleicht sieht jemand einen sinn darin soetwas zu nutzen.

    Ich denke in der script beschreibung ist alles erklärt, kann es aber gerne nocheinmal erleutern wenn es von euch auf deutsch gewünscht wird. :rock:


    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Change2CUI=y
    #AutoIt3Wrapper_Res_Description=Binder by Candyland
    #AutoIt3Wrapper_Res_Fileversion=0.2.1.0
    #AutoIt3Wrapper_Res_LegalCopyright=CC-BY-NC
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------
    
    
    	AutoIt Version: 3.3.15.0 (Beta)
    	Author:        Candyland
    	Licens: 		CC-BY-NC readable here: https://creativecommons.org/licenses/by-nc/3.0/de/
    
    
    	Description: 	This Program Binds an file onto another. The file will be encrypted via RC4 and copied to another files end.
    					This is may usefull to sent suspicious information to another people.
    
    
    	Example:		You bind a suspicious information(myaddress.txt) to an .jpg and sent it through dropbox to the recipient.
    
    
    	Usage:			Encrypt:
    					Start the Program, Press Yes for Encode. First Choose the file you want to run when the user clicks it.
    					Second choose the file to encrypt and hide. Third choose a Password or use the predefined. Click OK.
    					After some time a Beep appears(right after it the program end) now the file is binded.
    					Runtimefiles=max300Mb, Hiddenfile=max20mb.
    					the Result will be saved to the same directory as the executable runs under the name Binded.*
    
    
    					Decrypt:
    					Start the Program, Press No for Decode. First Choose the file you know from its binded.
    					Second Enter the correct(Case-Sensitive) Password. Click OK.
    					The Hidden file will be decrypted and saved under Result.* Same Directory.
    
    
    					Does not Work with [..] as runtime. everything that shows its own source. [.txt .html .bat .vbs etc.]
    
    
    	PS:				The technique could be used in crypters. But there is no legitimate reason for. Dont market my script.
    
    
    
    
    	Executable could be downloaded here: --Nothing to see here--
    #ce ----------------------------------------------------------------------------
    
    
    #include <crypt.au3>
    #include "_Base64.au3" ;<=https://www.autoitscript.com/forum/topic/21399-base64-converter/
    #include <MsgBoxConstants.au3>
    
    
    Local $iAnswer = MsgBox(BitOR($MB_YESNO, $MB_SYSTEMMODAL), "Bind program by Candyland", "Yes=Add an Encode file to an Working File" & @CRLF & "No=Decode an Binded file")
    If $iAnswer = 7 Then ;<=On No
    	$O_Choose = FileOpenDialog("Choose File to decode", @ScriptDir, "(*.*)", 1) ;<=Give me something to works with, exspecially some binded stuff
    	If @error Then Exit
    
    
    	$R_Choose = FileRead(FileOpen($O_Choose, 16))
    	$Seperate_Choose = StringMid($R_Choose, StringInStr($R_Choose, StringTrimLeft(StringToBinary("-=TESTME=-"), 2)) + StringLen(StringToBinary("-=TESTME=-")) - 2, -1) ;<=Search for the Binded
    
    
    	$NumberOfChar_Choose = BinaryToString("0x" & StringLeft($Seperate_Choose, 2)) ;<=give me the leng of the chars via number
    	$NumberOfChar_ChooseTrimm = StringTrimLeft($Seperate_Choose, 2) ;<=Trimm it
    
    
    	$CharsGetting_Choose = StringLeft($NumberOfChar_ChooseTrimm, $NumberOfChar_Choose * 2) ;<=give me the (file.***) (whatever that word was)
    	$CharsToString_Choose = BinaryToString("0x" & $CharsGetting_Choose)
    	$Specify_Result = @ScriptDir & "\Result." & $CharsToString_Choose ;<=Specify what the Result.**** <= was
    	$Specify_ResultTrimm = "0x" & StringTrimLeft($NumberOfChar_ChooseTrimm, $NumberOfChar_Choose * 2) ;<=Trimm it. $Specify_ResultTrimm has now the binded binary and can Decrypt it
    
    
    	$Decode_Password = InputBox("Password getting", "The file is protected by a password." & @CRLF & "Warning it's Visible" & @CRLF & @CRLF & "The extracted will be Named Result." & $CharsToString_Choose, "\6sdx'sJX&,n21ads*")
    	If @error Then Exit ;<=Everyone likes long lines. You could click on Cancel on every Question to end the Programm.
    
    
    	_Crypt_Startup()
    	Local $EnDecrypt_Algo = $CALG_RC4
    	Local $Derive_Decode_Password = _Crypt_DeriveKey($Decode_Password, $EnDecrypt_Algo)
    	Local $Decrypt_Binary = _Crypt_DecryptData($Specify_ResultTrimm, $Derive_Decode_Password, $CALG_USERKEY) ;<=Decrypt the Binded
    	_Crypt_DestroyKey($Derive_Decode_Password)
    	_Crypt_Shutdown()
    
    
    	$Base64EnDecode_String = _Base64Decode(BinaryToString($Decrypt_Binary)) ;<=To make it not as easy for the hacker to crack this, it is =>Base64=>
    
    
    	FileDelete($Specify_Result) ;<=Make room for the new Result file
    	$Write_FileOpen = FileOpen($Specify_Result, 16 + 1)
    	FileWrite($Write_FileOpen, $Base64EnDecode_String) ;<=Write The Decrypted,Decoded file down.
    
    
    	Beep(500, 500) ;<=Booop(s)
    
    
    	Exit
    
    
    ElseIf $iAnswer = 6 Then ;<= On Yes
    	$C_Choose_Runtime = FileOpenDialog("Choose File for Runtime", @ScriptDir, "(*.*)", 1) ;<=Choose a file which should be running when clicked on file(runtime)
    	If @error Then Exit
    
    
    	$ExtractFileName = StringTrimLeft($C_Choose_Runtime, StringInStr($C_Choose_Runtime, "\", 1, -1)) ;<=Get Filename and (.***)
    
    
    	$C_Choose_Bind = FileOpenDialog("Choose File to Bind", @ScriptDir, "(*.*)", 1) ;<=Choose the File to be Encrypted and binded!
    	If @error Then Exit
    
    
    	$ExtractEndung_Bind = StringMid($C_Choose_Bind, StringInStr($C_Choose_Bind, ".") + 1, -1) ;<=Binded (file.***)
    	$GetLengOf_ExtractEndung = StringLen($ExtractEndung_Bind) ;<=Leng of $ExtractEndung_Bind
    
    
    	$Specify_Result = @ScriptDir & "\Binded_" &  $ExtractFileName
    
    
    	$Encode_Password = InputBox("Password giving", "The file will be encrypted" & @CRLF & "Choose Password. Warning it's Visible" & @CRLF & @CRLF & "The binded file will be Named Binded_" & $ExtractFileName, "\6sdx'sJX&,n21ads*")
    	If @error Then Exit ;<=Remember it ^^
    
    
    	$O_Choose_Bind = FileOpen($C_Choose_Bind, 16) ;<=Open In binary
    	$R_Choose_Bind = FileRead($O_Choose_Bind) ;<=Read it
    	$Base64EnDecode_String = _Base64Encode(BinaryToString($R_Choose_Bind)) ;<=Encode it =>Base64=>
    
    
    	_Crypt_Startup()
    	Local $EnDecrypt_Algo = $CALG_RC4
    	Local $Derive_Decode_Password = _Crypt_DeriveKey($Encode_Password, $EnDecrypt_Algo)
    	Local $Encrypt_Binary = _Crypt_EncryptData($Base64EnDecode_String, $Derive_Decode_Password, $CALG_USERKEY) ;<= Encrypt the Base64 string with a algorithm for RC4
    	_Crypt_DestroyKey($Derive_Decode_Password)
    	_Crypt_Shutdown()
    
    
    	$O_Choose_Runtime = FileOpen($C_Choose_Runtime, 16) ;<=Open In binary
    	$R_Choose_Runtime = FileRead($O_Choose_Runtime) ;<=Read it
    	FileDelete($Specify_Result) ;<=Make room for the new Result file
    	$O_Result = FileOpen($Specify_Result, 16 + 1)
    	FileWrite($O_Result, $R_Choose_Runtime) ;<=First Write the Runtimefile
    	FileWrite($O_Result, StringToBinary("-=TESTME=-" & $GetLengOf_ExtractEndung & $ExtractEndung_Bind)) ;<=Then write a "Trenner", the Leng of $ExtractEndung_Bind & the (.***)
    	FileWrite($O_Result, $Encrypt_Binary) ;<=Nooow write to the end the encrypted file
    	FileClose($O_Result)
    	FileClose($O_Choose_Runtime)
    
    
    	Beep(500, 500) ;<= boop booooop boooooop(s)
    
    
    	Exit
    
    
    	;Programm is here, couple of lines and chars big
    	;Then there is in the mid of nothing coming a line like -=TESTME=-3jpg 3 stands for the leng of the chars behind =-3=>
    	;So the program now knows how much chars he has to read and trim. After it it has 3 chars which is in this case jpg
    	;Now it knows that the binded file is a .jpg which could be usefull when sending file with special(.***)(not knowing the word)
    	;and all after it is the binded encrypted file.
    
    
    	;File looks like this:
    	;Here is the Source of the Runtime File, like a .mp3
    	;Then there comes on the end of the .mp3 => -=TESTME=-6ascipq
    	;All after it is the Encrypted file!
    
    
    EndIf
    Exit
    Alles anzeigen

    EDIT: vielleicht hätte ich erwähnen sollen wo _Base64.au3 zu bekommen ist

    Dateien

    _Base64.au3 14,27 kB – 362 Downloads
  • Verwirrung bei X:\ProgramData\Key-Base\05202499.051\CODE.PKD/CODE.PK_

    • Candyland
    • 25. Februar 2017 um 11:39

    Ist tatsächlich nicht von Windows sondern soweit ich das sehe von einer früheren GNUPGP version, wenn man in eine Portable version umwandeln wollte musste man über die kommandokonsole die daten extrahieren dabei wird dann irgendwas ausgelagert das sich in CODE.PKD befindet.
    Ich versuche es mal nachzustellen. Allerdings ist das nur eine vage vermutung.

    EDIT:
    Nichts da, ich weiß weder welche version das war noch ob der Hinweis gültig ist, egal weiter suchen.
    Wobei bei google & co nichts weiter zufinden ist. einige leute haben lediglich ebenfalls diesen ordner auf dem computer aber das zu verschiedenen JahresZahlen z.b 2012 wobei mein ordner 2016 angelegt wurde.

    ich lade die daten mal mit nem passwort verschlüsselt hier hoch.(PW: 753)

    Dateien

    Key-Base.7z 656 Byte – 364 Downloads
  • StringMid return Binär? o_O

    • Candyland
    • 25. Februar 2017 um 11:27
    Zitat von alpines

    Klappt das bei den großen Dateien auch?

    entschudlige für die späte antwort, aber Absolut c:

  • Verwirrung bei X:\ProgramData\Key-Base\05202499.051\CODE.PKD/CODE.PK_

    • Candyland
    • 25. Februar 2017 um 11:20
    Zitat von alpines

    Hast du selber mal dein System gescannt?

    Ja klaro, ich schau routine mäßig rüber, nur rootkits würden mir wohl nicht auffalen. den folder haben aber wohl viele auf dem rechner. Ist also wohl eher was system technisches dessen zweck ich gerne wüsste

  • Verwirrung bei X:\ProgramData\Key-Base\05202499.051\CODE.PKD/CODE.PK_

    • Candyland
    • 25. Februar 2017 um 11:09

    Mir ist dieser mit System Atributen versehene Ordner noch nie aufgefallen, hat jemand eine ahnung für was die daten gut sind?
    wirklich gesehen habe ich sie erst mit 7z als ich dalang geschlendert bin um nach vermeintlichen viren ausschau zuhalten. Ich habe also ein wenig gegoogled, jedoch nur antivirus scans gefunden wo diese ordner angezeigt wurden(allerdings nicht malicious).
    Mir ist auch aufgefallen das sich die daten als archiv öffnen lassen, allerdings wird ein passwort abgefragt was mich echt stutzig macht. vielleicht hat jemand schonmal was dazu gehört, wäre mal cool das zu erfahren.

    Pfad: C:\ProgramData\Key-Base\0502499.051
    Daten: CODE.PKD 512Bytes | CODE.PK_ 512Bytes


    niederländisch aber mit nem translator zu verstehen, sagt allerdings nicht darüber aus was das ist:
    https://mscengineering.freshdesk.com/support/soluti…an-key-base-map

  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 23:30
    Zitat von alpines

    Schau dir mal VarGetType von einem StringToBinary-Rückgabewert an. Das ist "Binary", das was du machst ist ein String.
    Das ist natürlich optisch vielleicht dasselbe, aber AutoIt mag das nicht.

    Bei deinem sparta Beispiel würde ich nicht mit Binary arbeiten sondern die Stringfunktionen auch wirklich auf Strings anwenden und anschließend zu Binary kodieren wenn es funktioniert.

    das wollte ich vermeiden & ich hab jetzt glaube ich ein paar glückhormone im Körper, denn ich habe eine lösung

    AutoIt
    #include <MsgBoxConstants.au3>
    ;~ $1 = FileRead(FileOpen(@ScriptDir & "\this.txt",16))
    $1 = StringToBinary("thisis_sparta")
    $trennwand = "sis_"
    $2 = "0x" & StringMid($1,StringInStr($1,StringTrimLeft(StringToBinary($trennwand),2)) + StringLen(StringToBinary($trennwand))-2,-1)
    ConsoleWrite(BinaryToString($2) & @CRLF)
  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 22:05
    Zitat von alpines

    Sorry aber ich blick durch den Code echt nicht durch. Mir kräuseln sich die Fingernägel.
    Kannst du bitte das sauber formatieren und einigermaßen kommentieren?

    ich verstehe das!
    ich habe mich also direkt daran gemacht, denn so wie dir da sich dir die Fingernägel kräuseln, so kräuseln sich mir die nackenharre.

    hier bitte sehr ich bin dir echt dankbar für deine hilfe!


    EDIT: wie ich das sehe liegt der Fehler bei StringMid. ich probiere damit herum & ich bekomme echt komische werte ich habe mal ein example geschrieben damit ihr vielleicht versteht was ich meine


    AutoIt
    ;~ $1 = FileRead(FileOpen(@ScriptDir & "\this.txt",16))
    $1 = StringToBinary("thisis_sparta")
    $trennwand = "sis_"
    $2 = "0x" & StringMid($1,StringInStr($1,StringToBinary($trennwand)) + StringLen(StringToBinary($trennwand)),-1) ;"0x" & <=????
    ConsoleWrite($trennwand & " = " & StringToBinary($trennwand) & @CRLF) ;sis_ = 0x7369735F
    ConsoleWrite($1 & " = " & BinaryToString($1) & @CRLF) ;0x7468697369735F737061727461 = thisis_sparta
    ConsoleWrite($2 & " = " & BinaryToString($2) & @CRLF) ;0x369735F737061727461 = 0x369735F737061727461
    ConsoleWrite(BinaryToString("0x737061727461") & " = " & StringToBinary("sparta") & " = " & StringLen(StringToBinary("sparta"))-2&@CRLF)

    ich versuche lediglich sparta von thisis_sparta zu separieren. das würde auch im nicht binary mode gehen, jedoch möchte ich das ganze auch für größere dateien zum laufen bekommen weshalb binary also benutzt werden sollte.

    Dateien

    test.zip 169,35 kB – 328 Downloads
  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 21:21
    Zitat von alpines

    @Candyland

    Dann funktioniert es jetzt oder wie? Hab den Edit zu spät gesehen.

    Mit kleines Text dateien schon. Bei größeren dingen bekomme ich wieder ungleiche ergebnisse

    EDIT: ich hab das script ein klein wenig modifiziert und versuche jetzt einfach nen jpg anzuhängen & wieder zu extrahieren.. vergebens

    Dateien

    test.zip 168,24 kB – 284 Downloads

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™