Mehmet Posted March 10, 2012 Share Posted March 10, 2012 biz bu konuda hiç bir çalışma yapmadık veya örnekler görmedim forumda. bunun için DriveMapAdd ve DriveMapDel Komutlarıylamı çalışıyoruz.? daha doğrusu autoitde böyle bir fonksiyon varmı ağ üzerinden diğer bilgisayara müdahale etme gibi bir özelliği varmı örneğin ben bu komutu ProcessClose("IEXPLORE.exe") ağda bulunan diğer bilgisayarım için çalıştırmak istiyorum bunun için udfmi kullanmam gerekiyor yoksa diğer bilgisayarıma client olarak bazı kodlarmı yazmamız lazım iletişimi sağlayabilmemiz açısından nasıl bir yol izlemeliyim. Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted March 10, 2012 Share Posted March 10, 2012 Ağ işlemleri için TCP Fonksiyonları ve kodları var.Yapmak isteğini client/server şeklinde yapabilirsin.[color=#445563][font=verdana, tahoma, sans-serif]DriveMapAdd[/font][/color] komutları sürücü ile ilgili kodlardır. Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 10, 2012 Author Share Posted March 10, 2012 burada bir örnek var ama mantığı tam anlamıyla kavrayamadım client/server olayında takılıyorum http://www.autoitscript.com/forum/topic/61107-make-a-program-remotely-managable/ Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted March 10, 2012 Share Posted March 10, 2012 [font="'Times New Roman"][size="3"]Verdiğin sitede işine yarayacak komut yok gibi, autoit forumlarında takılmadığım için yol gösterme konusunda pek yardımcı olamıyacağım. Bu tarz konular daha önce açıldı fakat pek rağbet görülmedi ve tam anlamıyla bilen veya kullanan yok zannediyorum.Zaten autoit forumlarında arayacağıma help dosyasını iyi araştırıp TCP komutlarını bakarım daha çok işime yarar en azından ben öyle düşünüyorum Ama sen yine bluelife sor o sana yardımcı olacağını düşünüyorum.[/size][/font] Quote Link to comment Share on other sites More sharing options...
MostWanted Posted March 10, 2012 Share Posted March 10, 2012 (edited) Aslında attığın kod tam yapmak istediğini anlatıyor.Programının içinde mesela şöyle bi send yaparsın serverdan "PrcTerm -explorer.exe" client bunu okuduğunda PrcTerm 'in işlemi sonlandıran fonksiyon olduğunu geri kalanın sonlandırılmak istenen şey olduğunu anlar.İllaki direk kod göndermene gerek yok.Veri akışını sağlayabilmek içinde o attığın sayfadaki örneği kullanabilirsin zaten. Edit: Ve şu blue_life'ın da yakasını bırakın adamın işi gücü var arkadaş sizle mi uğraşsın Zaten konuları görünce fikri varsa burda yazıyor iyi niyetini suistimal etmeyin. Edited March 10, 2012 by MostWanted Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 10, 2012 Author Share Posted March 10, 2012 (edited) @MostWanted anladım yani cliendeki kodlarımızı udf olarak düşünelim serverden giden komut artık herne ise client ona göre cevap verir gibi.[img]http://www.tnctr.com/public/style_emoticons/default/dusun.gif[/img] orada bir kaç bölüm kod var hangisi serverde hangisi clientde olması gerekiyor.? sanırım TCP.au3 clientde bulunması gereken kodlar doğrumu[img]http://www.tnctr.com/public/style_emoticons/default/dusun.gif[/img] Edited March 10, 2012 by MeHMeTBeN Quote Link to comment Share on other sites More sharing options...
MostWanted Posted March 10, 2012 Share Posted March 10, 2012 Evet doğru.Ama server kodlarını göremedim.Aslında daha bir örnek vardı şu olabilir sanırım önceden araştırmıştım. http://www.autoitscript.com/forum/topic/74325-tcp-udf-event-driven/ Aslında bu değil ama nasıl kod yazacağına örnek teşkil etmesi açısından verdim kolay gelsin. Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 10, 2012 Author Share Posted March 10, 2012 teşekkürler MostWanted bi bakayım bu konuda bir UDF bile yazmışlar kurcalayıp bakayım biraz ama türkçe kaynak vede ufak bir örnek olmadan bu işi yapamıycam gibime geliyor Quote Link to comment Share on other sites More sharing options...
MostWanted Posted March 10, 2012 Share Posted March 10, 2012 İki bilgisayara sahip olamadığım için denemiyorum ama takıldığın yerlerde yardımcı olmaya çalışırız. Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 10, 2012 Author Share Posted March 10, 2012 bende şuan aynı ağda olan 2 bilgisayar var yanlız ilişkilendirmeyi yapamadım örnek bir ıp girip yukarıdada belirttiğim gibi ProcessClose komutu gibi bir fonksiyon yazıp cliente göndermek için hangisinde hangi fonksiyonu yazacağımı şaşırdım yada bana çok karmaşık geldi bir butona bu görevi atamak için ayrı bir guimi oluşturmamız gerekir ufak bir örnek yazarsan tabi eğer zamanın varsa ben denerim üstad kusura bakma senide uğraştırdım Fonksiyonlar [codebox] TCP_Server_Create($iPort, $sIP="0.0.0.0") _TCP_Server_Broadcast($sData) _TCP_Server_ClientList() _TCP_Server_ClientIP($hSocket) _TCP_Server_DisconnectClient($hSocket) _TCP_Server_Stop() _TCP_Client_Create($sIP , $iPort) _TCP_Client_Stop($hSocket) _TCP_Send($hSocket, $sText) _TCP_RegisterEvent($hSocket, $iEvent, $sFunction) [/codebox] örnek client [codebox] #include "TCP.au3" ToolTip("CLIENT: Connecting...",10,10) $hClient = _TCP_Client_Create(@IPAddress1, 88); Create the client. Which will connect to the local ip address on port 88 _TCP_RegisterEvent($hClient, $TCP_RECEIVE, "Received"); Function "Received" will get called when something is received _TCP_RegisterEvent($hClient, $TCP_CONNECT, "Connected"); And func "Connected" will get called when the client is connected. _TCP_RegisterEvent($hClient, $TCP_DISCONNECT, "Disconnected"); And "Disconnected" will get called when the server disconnects us, or when the connection is lost. While 1 ; just to keep the program running WEnd Func Connected($hSocket, $iError); We registered this (you see?), When we're connected (or not) this function will be called. If not $iError Then; If there is no error... ToolTip("CLIENT: Connected!",10,10); ... we're connected. Else; ,else... ToolTip("CLIENT: Could not connect. Are you sure the server is running?",10,10); ... we aren't. EndIf EndFunc Func Received($hSocket, $sReceived, $iError); And we also registered this! Our homemade do-it-yourself function gets called when something is received. ToolTip("CLIENT: We received this: "& $sReceived, 10,10); (and we'll display it) EndFunc Func Disconnected($hSocket, $iError); Our disconnect function. Notice that all functions should have an $iError parameter. ToolTip("CLIENT: Connection closed or lost.", 10,10) EndFunc [/codebox] server [codebox] #include "TCP.au3" ToolTip("SERVER: Creating server...",10,30) $hServer = _TCP_Server_Create(88); A server. Tadaa! _TCP_RegisterEvent($hServer, $TCP_NEWCLIENT, "NewClient"); Whooooo! Now, this function (NewClient) get's called when a new client connects to the server. _TCP_RegisterEvent($hServer, $TCP_DISCONNECT, "Disconnect"); And this,... this will get called when a client disconnects. While 1 WEnd Func NewClient($hSocket, $iError); Yo, check this out! It's a $iError parameter! (In case you didn't noticed: It's in every function) ToolTip("SERVER: New client connected."&@CRLF&"Sending this: Bleh!",10,30) _TCP_Send($hSocket, "Bleh!"); Sending: "Bleh!" to the new client. (Yes, that's right: $hSocket is the socket of the new client.) EndFunc [/codebox] UDF [code]http://www.autoitscript.com/forum/index.php?app=core&module=attach§ion=attach&attach_id=27297[/code] Alternatif UDF [spoiler][codebox] #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.0.0 Author: Kip Script Function: TCP UDF v3 #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #cs Functions: _TCP_Server_Create($iPort, $sIP="0.0.0.0") _TCP_Server_Broadcast($sData) _TCP_Server_ClientList() _TCP_Server_ClientIP($hSocket) _TCP_Server_DisconnectClient($hSocket) _TCP_Server_Stop() _TCP_Client_Create($sIP , $iPort) _TCP_Client_Stop($hSocket) _TCP_Send($hSocket, $sText) _TCP_RegisterEvent($hSocket, $iEvent, $sFunction) Register event values: $TCP_SEND ; Function ($hSocket, $iError) $TCP_RECEIVE ; Function ($hSocket, $sReceived, $iError) $TCP_CONNECT ; Function ($hSocket, $iError) => Client only $TCP_DISCONNECT ; Function ($hSocket, $iError) $TCP_NEWCLIENT ; Function ($hSocket, $iError) => Server only #ce Global Const $FD_READ = 1 Global Const $FD_WRITE = 2 Global Const $FD_OOB = 4 Global Const $FD_ACCEPT = 8 Global Const $FD_CONNECT = 16 Global Const $FD_CLOSE = 32 Global $hWs2_32 = -1 Global Const $TCP_SEND = 1 Global Const $TCP_RECEIVE = 2 Global Const $TCP_CONNECT = 4 Global Const $TCP_DISCONNECT = 8 Global Const $TCP_NEWCLIENT = 16 TCPStartup() Global Const $__TCP_WINDOW = GUICreate("Async Sockets UDF") Global $__TCP_SOCKETS[1][7] ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Server_Create ; Description ...: Initializes the server. ; Syntax.........: _TCP_Server_Create($iPort, $sIP="0.0.0.0") ; Parameters ....: $iPort - The port number the server should listen to. ; $sIP - IP address. (Default = "0.0.0.0") ; Return values .: The socket handle. ; Author ........: Kip ; Modified.......: ; Remarks .......: Only 1 server can be created per script. ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Server_Create($iPort, $sIP="0.0.0.0") Local $hListenSocket = ___ASocket() ___ASockSelect( $hListenSocket, $__TCP_WINDOW, 0x0400, $FD_ACCEPT) GUIRegisterMsg( 0x0400, "___TCP_OnAccept" ) ___ASockListen( $hListenSocket, $sIP, $iPort ) $__TCP_SOCKETS[0][0] = $hListenSocket $__TCP_SOCKETS[0][1] = 0x0400 Return $hListenSocket EndFunc Func ___TCP_OnAccept($hWnd, $iMsgID, $WParam, $LParam) Local $hSocket = $WParam Local $iError = ___HiWord( $LParam ) Local $iEvent = ___LoWord( $LParam ) Local $hClient, $uBound Abs($hWnd) ; Stupid AU3Check... If $iMsgID = $__TCP_SOCKETS[0][1] Then If $iEvent = $FD_ACCEPT Then If Not $iError Then ReDim $__TCP_SOCKETS[UBound($__TCP_SOCKETS)+1][7] $uBound = UBound($__TCP_SOCKETS) $hClient = TCPAccept($hSocket) ___ASockSelect($hClient, $__TCP_WINDOW, 0x0400 + $uBound - 1, BitOR($FD_READ, $FD_WRITE, $FD_CLOSE)) GUIRegisterMsg(0x0400 + $uBound - 1, "___TCP_Server_OnSocketEvent" ) $__TCP_SOCKETS[UBound($__TCP_SOCKETS)-1][0] = $hClient $__TCP_SOCKETS[UBound($__TCP_SOCKETS)-1][1] = 0x0400 + $uBound - 1 Call($__TCP_SOCKETS[0][6], $hClient, $iError) Else Call($__TCP_SOCKETS[0][6], 0, $iError) EndIf ElseIf $iEvent = $FD_CONNECT Then Call($__TCP_SOCKETS[0][4], $hSocket, $iError) EndIf EndIf EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Client_Stop ; Description ...: Stops the client. ; Syntax.........: _TCP_Client_Stop($hSocket) ; Parameters ....: $hSocket - Client socket. ; Return values .: Success - True ; Failure - False ; Author ........: Kip ; Modified.......: ; Remarks .......: The client socket is the return value of _TCP_Client_Create(). ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Client_Stop($hSocket) Local $iElement, $i $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] = $hSocket Then $iElement = $i ExitLoop EndIf Next If $iElement Then ___ASockShutdown($__TCP_SOCKETS[$iElement][0]) TCPCloseSocket($__TCP_SOCKETS[$iElement][0]) ___ArrayDelete($__TCP_SOCKETS, $iElement) Return True EndIf Return False EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Server_Stop ; Description ...: Stops the server, and closes all client connections. ; Syntax.........: _TCP_Server_Stop() ; Parameters ....: ; Return values .: True ; Author ........: Kip ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Server_Stop() Local $i ___ASockShutdown($__TCP_SOCKETS[0][0]) TCPCloseSocket($__TCP_SOCKETS[0][0]) $__TCP_SOCKETS[0][0] = "" $__TCP_SOCKETS[0][1] = "" $__TCP_SOCKETS[0][2] = "" $__TCP_SOCKETS[0][3] = "" $__TCP_SOCKETS[0][4] = "" $__TCP_SOCKETS[0][5] = "" $__TCP_SOCKETS[0][6] = "" For $i = UBound($__TCP_SOCKETS)-1 to 1 Step -1 ___ArrayDelete($__TCP_SOCKETS, $i) Next Return True EndFunc Func ___TCP_Server_OnSocketEvent( $hWnd, $iMsgID, $WParam, $LParam ) Local $hSocket = $WParam Local $iError = ___HiWord( $LParam ) Local $iEvent = ___LoWord( $LParam ) Local $sDataBuff, $iElement, $i Abs($hWnd) $hSocket = 0 $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][1] = $iMsgID Then $hSocket = $__TCP_SOCKETS[$i][0] $iElement = $i ExitLoop EndIf Next If $hSocket Then Switch $iEvent Case $FD_READ $sDataBuff = TCPRecv($hSocket, 1024) Call($__TCP_SOCKETS[0][2], $hSocket, $sDataBuff, $iError) Case $FD_WRITE Call($__TCP_SOCKETS[0][3], $hSocket, $iError) Case $FD_CLOSE ___ASockShutdown($hSocket) TCPCloseSocket($hSocket) Call($__TCP_SOCKETS[0][5], $hSocket, $iError) ___ArrayDelete($__TCP_SOCKETS, $iElement) EndSwitch EndIf EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Server_DisconnectClient ; Description ...: Disconnects a client of the server. ; Syntax.........: _TCP_Server_DisconnectClient($hSocket) ; Parameters ....: $hSocket - Client socket. ; Return values .: Success - True ; Failure - False ; Author ........: Kip ; Modified.......: ; Remarks .......: The client socket is the $hSocket parameter of a _TCP_RegisterEvent callback function. ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Server_DisconnectClient($hSocket) Local $iElement, $i $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] = $hSocket Then $iElement = $i ExitLoop EndIf Next If $iElement Then ___ASockShutdown($hSocket) TCPCloseSocket($hSocket) ___ArrayDelete($__TCP_SOCKETS, $iElement) Return True EndIf Return False EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Server_ClientList ; Description ...: Returns the sockets of all connected clients. ; Syntax.........: _TCP_Server_ClientList() ; Parameters ....: ; Return values .: An 1 dimensional array of all connected clients. ; Author ........: Kip ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Server_ClientList() Local $aReturn[1], $i For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] Then ReDim $aReturn[UBound($aReturn)+1] $aReturn[UBound($aReturn)-1] = $__TCP_SOCKETS[$i][0] EndIf Next $aReturn[0] = UBound($aReturn)-1 Return $aReturn EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Server_Broadcast ; Description ...: Sends data to all connected clients. ; Syntax.........: _TCP_Server_Broadcast($sData) ; Parameters ....: $sData - The data to send. ; Return values .: True ; Author ........: Kip ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Server_Broadcast($sData) Local $i For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] Then TCPSend($__TCP_SOCKETS[$i][0], $sData) Next Return True EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Client_Create ; Description ...: Creates a new client. ; Syntax.........: _TCP_Client_Create($sIP , $iPort) ; Parameters ....: $sIP - The IP address to connect to. ; $iPort - Port on which the created socket will be connected. ; Return values .: Client socket handle. ; Author ........: Kip ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Client_Create($sIP , $iPort) ReDim $__TCP_SOCKETS[UBound($__TCP_SOCKETS)+1][7] local $hSocket = ___ASocket() $__TCP_SOCKETS[UBound($__TCP_SOCKETS)-1][0] = $hSocket $__TCP_SOCKETS[UBound($__TCP_SOCKETS)-1][1] = 0x0400 + (UBound($__TCP_SOCKETS)-1) ___ASockSelect( $hSocket, $__TCP_WINDOW, 0x0400 + (UBound($__TCP_SOCKETS)-1), BitOR( $FD_READ, $FD_WRITE, $FD_CONNECT, $FD_CLOSE ) ) GUIRegisterMsg( 0x0400 + (UBound($__TCP_SOCKETS)-1), "___TCP_Client_OnSocketEvent" ) ___ASockConnect( $hSocket, $sIP, $iPort ) Return $hSocket EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_RegisterEvent ; Description ...: Registers an event. ; Syntax.........: _TCP_RegisterEvent($hSocket, $iEvent, $sFunction) ; Parameters ....: $hSocket - Socket of the server or a client. ; $iEvent - Event number. It can be any these values: ; * $TCP_SEND ; * $TCP_RECEIVE ; * $TCP_CONNECT => Client only ; * $TCP_DISCONNECT ; * $TCP_NEWCLIENT => Server only ; Return values .: Success - True ; Failure - False ; Author ........: Kip ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_RegisterEvent($hSocket, $iEvent, $sFunction) Local $iSelected = 0 Local $i If $__TCP_SOCKETS[0][0] Then $iSelected = 0 Else For $i = 0 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] = $hSocket Then $iSelected = $i ExitLoop EndIf Next If Not $iSelected Then Return 0 EndIf Switch $iEvent Case $TCP_SEND $__TCP_SOCKETS[$iSelected][3] = $sFunction Case $TCP_RECEIVE $__TCP_SOCKETS[$iSelected][2] = $sFunction Case $TCP_CONNECT $__TCP_SOCKETS[$iSelected][4] = $sFunction Case $TCP_DISCONNECT $__TCP_SOCKETS[$iSelected][5] = $sFunction Case $TCP_NEWCLIENT $__TCP_SOCKETS[$iSelected][6] = $sFunction Case Else Return False EndSwitch Return True EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Server_ClientIP ; Description ...: Converts a client socket handle to IP address. ; Syntax.........: _TCP_Server_ClientIP($hSocket) ; Parameters ....: $hSocket - Client socket handle. ; Return values .: A string with the IP address. ; Author ........: Unknown ; Modified.......: Kip ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Server_ClientIP($hSocket) Local $pSocketAddress, $aReturn $pSocketAddress = DllStructCreate("short;ushort;uint;char[8]") $aReturn = DllCall("Ws2_32.dll", "int", "getpeername", "int", $hSocket, "ptr", DllStructGetPtr($pSocketAddress), "int*", DllStructGetSize($pSocketAddress)) If @error Or $aReturn[0] <> 0 Then Return 0 $aReturn = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($pSocketAddress, 3)) If @error Then Return 0 $pSocketAddress = 0 Return $aReturn[0] EndFunc ; #FUNCTION# ;=============================================================================== ; ; Name...........: _TCP_Send ; Description ...: Sends data to a server or client. ; Syntax.........: _TCP_Send($hSocket, $sText) ; Parameters ....: $hSocket - Client or server socket handle. ; $sText - Data to send. ; Return values .: ; Author ........: Kip ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; ; ; ;========================================================================================== Func _TCP_Send($hSocket, $sText) Return TCPSend($hSocket, $sText) EndFunc Func ___TCP_Client_OnSocketEvent( $hWnd, $iMsgID, $WParam, $LParam ) Local $iError = ___HiWord( $LParam ) Local $iEvent = ___LoWord( $LParam ) Local $hSocket, $iElement, $i, $sDataBuff Abs($hWnd) Abs($WParam) $hSocket = 0 $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][1] = $iMsgID Then $hSocket = $__TCP_SOCKETS[$i][0] $iElement = $i ExitLoop EndIf Next If $hSocket Then Switch $iEvent Case $FD_READ; Data has arrived! $sDataBuff = TCPRecv( $hSocket, 1024) Call($__TCP_SOCKETS[$i][2], $hSocket, $sDataBuff, $iError) $sDataBuff = "" Case $FD_WRITE Call($__TCP_SOCKETS[$i][3], $hSocket, $iError) Case $FD_CONNECT Call($__TCP_SOCKETS[$i][4], $hSocket, $iError) Case $FD_CLOSE ___ASockShutdown( $hSocket ) TCPCloseSocket( $hSocket ) Call($__TCP_SOCKETS[$i][5], $hSocket, $iError) ___ArrayDelete($__TCP_SOCKETS, $iElement) EndSwitch EndIf EndFunc ;================================================================================================================== ; ; Zatorg's Asynchronous Sockets UDF Starts from here. ; ;================================================================================================================== Func ___ASocket($iAddressFamily = 2, $iType = 1, $iProtocol = 6) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $hSocket = DllCall($hWs2_32, "uint", "socket", "int", $iAddressFamily, "int", $iType, "int", $iProtocol) If @error Then SetError(1, @error) Return -1 EndIf If $hSocket[ 0 ] = -1 Then SetError(2, ___WSAGetLastError()) Return -1 EndIf Return $hSocket[ 0 ] EndFunc ;==>_ASocket Func ___ASockShutdown($hSocket) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall($hWs2_32, "int", "shutdown", "uint", $hSocket, "int", 2) If @error Then SetError(1, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then SetError(2, ___WSAGetLastError()) Return False EndIf Return True EndFunc ;==>_ASockShutdown Func ___ASockClose($hSocket) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall($hWs2_32, "int", "closesocket", "uint", $hSocket) If @error Then SetError(1, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then SetError(2, ___WSAGetLastError()) Return False EndIf Return True EndFunc ;==>_ASockClose Func ___ASockSelect($hSocket, $hWnd, $uiMsg, $iEvent) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall( _ $hWs2_32, _ "int", "WSAAsyncSelect", _ "uint", $hSocket, _ "hwnd", $hWnd, _ "uint", $uiMsg, _ "int", $iEvent _ ) If @error Then SetError(1, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then SetError(2, ___WSAGetLastError()) Return False EndIf Return True EndFunc ;==>_ASockSelect ; Note: you can see that $iMaxPending is set to 5 by default. ; IT DOES NOT MEAN THAT DEFAULT = 5 PENDING CONNECTIONS ; 5 == SOMAXCONN, so don't worry be happy Func ___ASockListen($hSocket, $sIP, $uiPort, $iMaxPending = 5); 5 == SOMAXCONN => No need to change it. Local $iRet Local $stAddress If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) $stAddress = ___SockAddr($sIP, $uiPort) If @error Then SetError(@error, @extended) Return False EndIf $iRet = DllCall($hWs2_32, "int", "bind", "uint", $hSocket, "ptr", DllStructGetPtr($stAddress), "int", DllStructGetSize($stAddress)) If @error Then SetError(3, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then $stAddress = 0; Deallocate SetError(4, ___WSAGetLastError()) Return False EndIf $iRet = DllCall($hWs2_32, "int", "listen", "uint", $hSocket, "int", $iMaxPending) If @error Then SetError(5, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then $stAddress = 0; Deallocate SetError(6, ___WSAGetLastError()) Return False EndIf Return True EndFunc ;==>_ASockListen Func ___ASockConnect($hSocket, $sIP, $uiPort) Local $iRet Local $stAddress If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) $stAddress = ___SockAddr($sIP, $uiPort) If @error Then SetError(@error, @extended) Return False EndIf $iRet = DllCall($hWs2_32, "int", "connect", "uint", $hSocket, "ptr", DllStructGetPtr($stAddress), "int", DllStructGetSize($stAddress)) If @error Then SetError(3, @error) Return False EndIf $iRet = ___WSAGetLastError() If $iRet = 10035 Then; WSAEWOULDBLOCK Return True; Asynchronous connect attempt has been started. EndIf SetExtended(1); Connected immediately Return True EndFunc ;==>_ASockConnect ; A wrapper function to ease all the pain in creating and filling the sockaddr struct Func ___SockAddr($sIP, $iPort, $iAddressFamily = 2) Local $iRet Local $stAddress If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) $stAddress = DllStructCreate("short; ushort; uint; char[8]") If @error Then SetError(1, @error) Return False EndIf DllStructSetData($stAddress, 1, $iAddressFamily) $iRet = DllCall($hWs2_32, "ushort", "htons", "ushort", $iPort) DllStructSetData($stAddress, 2, $iRet[ 0 ]) $iRet = DllCall($hWs2_32, "uint", "inet_addr", "str", $sIP) If $iRet[ 0 ] = 0xffffffff Then; INADDR_NONE $stAddress = 0; Deallocate SetError(2, ___WSAGetLastError()) Return False EndIf DllStructSetData($stAddress, 3, $iRet[ 0 ]) Return $stAddress EndFunc ;==>__SockAddr Func ___WSAGetLastError() If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall($hWs2_32, "int", "WSAGetLastError") If @error Then ;ConsoleWrite("+> _WSAGetLastError(): WSAGetLastError() failed. Script line number: " & @ScriptLineNumber & @CRLF) SetExtended(1) Return 0 EndIf Return $iRet[ 0 ] EndFunc ;==>_WSAGetLastError ; Got these here: ; http://www.autoitscript.com/forum/index.php?showtopic=5620&hl=MAKELONG Func ___MakeLong($LoWord, $HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)); Thanks Larry EndFunc ;==>_MakeLong Func ___HiWord($Long) Return BitShift($Long, 16); Thanks Valik EndFunc ;==>_HiWord Func ___LoWord($Long) Return BitAND($Long, 0xFFFF); Thanks Valik EndFunc ;==>_LoWord ; ========================================= Array functions ; #FUNCTION# ==================================================================================================================== ; Name...........: _ArrayDelete ; Description ...: Deletes the specified element from the given array. ; Syntax.........: _ArrayDelete(ByRef $avArray, $iElement) ; Parameters ....: $avArray - Array to modify ; $iElement - Element to delete ; Return values .: Success - New size of the array ; Failure - 0, sets @error to: ; |1 - $avArray is not an array ; |3 - $avArray has too many dimensions (only up to 2D supported) ; |(2 - Deprecated error code) ; Author ........: Cephas <cephas at clergy dot net> ; Modified.......: Jos van der Zande <jdeb at autoitscript dot com> - array passed ByRef, Ultima - 2D arrays supported, reworked function (no longer needs temporary array; faster when deleting from end) ; Remarks .......: If the array has one element left (or one row for 2D arrays), it will be set to "" after _ArrayDelete() is used on it. ; Related .......: _ArrayAdd, _ArrayInsert, _ArrayPop, _ArrayPush ; Link ..........; ; Example .......; Yes ; =============================================================================================================================== Func ___ArrayDelete(ByRef $avArray, $iElement) If Not IsArray($avArray) Then Return SetError(1, 0, 0) Local $iUBound = UBound($avArray, 1) - 1 If Not $iUBound Then $avArray = "" Return 0 EndIf ; Bounds checking If $iElement < 0 Then $iElement = 0 If $iElement > $iUBound Then $iElement = $iUBound ; Move items after $iElement up by 1 Switch UBound($avArray, 0) Case 1 For $i = $iElement To $iUBound - 1 $avArray[$i] = $avArray[$i + 1] Next ReDim $avArray[$iUBound] Case 2 Local $iSubMax = UBound($avArray, 2) - 1 For $i = $iElement To $iUBound - 1 For $j = 0 To $iSubMax $avArray[$i][$j] = $avArray[$i + 1][$j] Next Next ReDim $avArray[$iUBound][$iSubMax + 1] Case Else Return SetError(3, 0, 0) EndSwitch Return $iUBound EndFunc ;==>_ArrayDelete [/codebox][/spoiler] Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted March 11, 2012 Share Posted March 11, 2012 @MostWanted; Dediğin doğrudur.BluLife in illaki işi vardır fakat ben buraya yazar diye düşünmüştüm adama ısrar edip yardım etsin diye bir anlam cıkarmayın yani Zaten yardım konusunda cömerttir işi olmasa yazardı niyetiyle ben bluelife sor dedim Quote Link to comment Share on other sites More sharing options...
Byogulcan Posted March 11, 2012 Share Posted March 11, 2012 Bi nevi rat yazılımları gibi bişey yapmaya calışıyosun sanırım mehmet abi? Bende cok uğraştımda daha ileri düzey olmadığından bilgim sadece onun keyloggerini yazabildim sana şunu tavsiye edeyim belki bi faydası olur 2 tane konu daha önce gözüme çarpmıştı. http://www.autoitscript.com/forum/topic/72298-radical-2-beta/ http://www.autoitscript.com/forum/topic/31604-remote-administration-suite/ Birazdan benim üzerinde çalıştığım tcp sent ile keyloggeride paylaşayım.Düzenliyorum kodlarımı bozmuştum düzenlersem koyucam Quote Link to comment Share on other sites More sharing options...
MostWanted Posted March 11, 2012 Share Posted March 11, 2012 Byogulcanında böyle bir çalışması vardı ona da bakabilirsin ama bu verdiğim udf den gitmek istiyorsan şöyle gidebiliriz.İlk önce yolladığım linkdeki TCP.au3 dosyasını indirmen gerekiyor.Fonksiyonlar kısmı bir işine yaramaz (Konunun sonunda) Server.au3: [code]#include "TCP.au3" ToolTip("SERVER: Creating server...",10,30) $hServer = _TCP_Server_Create(88); Server oluşturma _TCP_RegisterEvent($hServer, $TCP_NEWCLIENT, "NewClient"); Client bağlandığında çalışacak olan fonksiyon _TCP_RegisterEvent($hServer, $TCP_DISCONNECT, "Disconnect"); Client koptğunda çalışacak fonksiyon While 1 Sleep(250) WEnd Func NewClient($hSocket, $iError); Yo, check this out! It's a $iError parameter! (In case you didn't noticed: It's in every function) ToolTip("SERVER: New client connected."&@CRLF&"Sending this: Bleh!",10,30) _TCP_Send($hSocket, "Bleh!");Client bağlandığında gönderilecek veri.İşte buraya PrcTerm gibi komutlar ile cliente veri gönderebilirsin. EndFunc [/code] Client.au3: [code] #include "TCP.au3" ToolTip("CLIENT: Connecting...",10,10) $hClient = _TCP_Client_Create(@IPAddress1, 88); Create the client. Which will connect to the local ip address on port 88 _TCP_RegisterEvent($hClient, $TCP_RECEIVE, "Received"); Cliente bir veri ulaştığında çalışacak fonksiyon _TCP_RegisterEvent($hClient, $TCP_CONNECT, "Connected"); Bağlandığında çalışacak fonksiyon _TCP_RegisterEvent($hClient, $TCP_DISCONNECT, "Disconnected"); Server ile irtibat kesildiğinde çalışacak fonksiyon While 1 ; just to keep the program running WEnd Func Connected($hSocket, $iError); We registered this (you see?), When we're connected (or not) this function will be called. If not $iError Then; If there is no error... ToolTip("CLIENT: Connected!",10,10); ... we're connected. Else; ,else... ToolTip("CLIENT: Could not connect. Are you sure the server is running?",10,10); ... we aren't. EndIf EndFunc Func Received($hSocket, $sReceived, $iError); And we also registered this! Our homemade do-it-yourself function gets called when something is received. ToolTip("CLIENT: We received this: "& $sReceived, 10,10); Ne ulaştığını $sReceived değişkeniyle alabilirsin. EndFunc Func Disconnected($hSocket, $iError); Our disconnect function. Notice that all functions should have an $iError parameter. ToolTip("CLIENT: Connection closed or lost.", 10,10) EndFunc [/code] Umarım daha iyi olmuştur.Tcp.au3 yanına koyarak bunları kendi bilgisayarında exe yaptığında çalıştığını görebilirsin Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 11, 2012 Author Share Posted March 11, 2012 [quote name='Byogulcan' date='11 March 2012 - 18:31 ' timestamp='1331483465' post='1167924'] Bi nevi rat yazılımları gibi bişey yapmaya calışıyosun sanırım mehmet abi? Bende cok uğraştımda daha ileri düzey olmadığından bilgim sadece onun keyloggerini yazabildim sana şunu tavsiye edeyim belki bi faydası olur 2 tane konu daha önce gözüme çarpmıştı. http://www.autoitscript.com/forum/topic/72298-radical-2-beta/ http://www.autoitscript.com/forum/topic/31604-remote-administration-suite/ Birazdan benim üzerinde çalıştığım tcp sent ile keyloggeride paylaşayım.Düzenliyorum kodlarımı bozmuştum düzenlersem koyucam [/quote] amaç keylogger veya rat yazılımlarına benzeyen birşey yapmak değil ne işim var ratla keyloggerle zaten bilgisayarların hepsi elimin altında istediğimi yapıyorum akınsoftla buradaki düşüncemiz farklı amacımız farklı karıştırma şimdi rat ve keyloggeri Quote Link to comment Share on other sites More sharing options...
Byogulcan Posted March 11, 2012 Share Posted March 11, 2012 [quote name='MeHMeTBeN' date='11 March 2012 - 20:19 ' timestamp='1331489980' post='1167987'] amaç keylogger veya rat yazılımlarına benzeyen birşey yapmak değil ne işim var ratla keyloggerle zaten bilgisayarların hepsi elimin altında istediğimi yapıyorum akınsoftla buradaki düşüncemiz farklı amacımız farklı karıştırma şimdi rat ve keyloggeri [/quote] Abi işte demek istediğim o değil demek istediğim ondan yola cıkarak yapılması onunla daha rahat yapıcağından eminim orda bilgisayarı kapat vs var bende suan üzerinde çalışıyorum.Amaç hack değil yani. Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 11, 2012 Author Share Posted March 11, 2012 ağdaki bilgisayar facebookda porno izlediği anda ben görüyorum o bilgisayarın chrome.exe veya IEXPLORE.EXEsini kapatabilim yeter bana arkadaş adamlar facebookda porno izliyor nasıl yapıyorlarsa artık 2 adet filtre kurulu ama facebookdan izlendiği için filtre kapatmıyor mecburen manuel akınsoftdan kapatıyorum ama bunu cumartesi pazar o kalabalıkta tek tek kapatması çok zor oluyor Quote Link to comment Share on other sites More sharing options...
blue_life Posted March 12, 2012 Share Posted March 12, 2012 Bu aralar biraz meşgulum ve bu tip komutları fazla kullanmadığım için konuya mesaj yazmadım. Ayrıca şuan ağımda yok. Buna rağmen, wmvaredeki sistemden ip vasıtasıyla kendi bilgisayarımda, kendi bilgisayarımdan wmvaredeki bilgisayara ip vasıtasıyla işlem yaptırabiliyorum. Mantık olarak, server programından client programına mesaj gönderiyoruz ve client programı bu mesaja göre işlem yapıyor. Ben size bir örnek vereyim. Örnekte önce clientin çalışması lazım. Ayrıca mesajlaşmak istediğiniz bilgisayarın iplerini yazarsınız... Biraz kurcalayın, kolay gelsin.... [codebox]; ========================================================== Global $SOCKET Global $PORT_NUM = 65432 Global $SERVER_IP = "192.168.2.2" Global $CLIENT_IP = "192.168.2.2" ; ========================================================== Local $Form1 = GUICreate("BlueLife Test", 161, 33, 192, 124) Local $Button1 = GUICtrlCreateButton("Server", 0, 0, 75, 25) Local $Button2 = GUICtrlCreateButton("Client", 75, 0, 75, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 Exit Case $Button1 GUIDelete($Form1) _Server($SERVER_IP, $PORT_NUM) Case $Button2 GUIDelete($Form1) _Client($CLIENT_IP, $PORT_NUM) EndSwitch WEnd ; ========================================================== Func _Server($IP, $Port) TCPStartup() ; Start The TCP Services $SOCKET = TCPConnect($IP, $Port) ;If $SOCKET = -1 Then Exit If @error Then MsgBox(0, "Server", "Unable to Contact Client!") Exit EndIf Local $SERVER_GUI = GUICreate("Server_Test_Blue_Life", 300, 200) GUISetOnEvent(-3, "_EXIT") Local $SERVER_INPUT = GUICtrlCreateInput("iexplore.exe", 0, 0, 253, 20) Local $SERVER_BTN = GUICtrlCreateButton("Gönder", 255, 0, 45, 20) GUICtrlSetBkColor(-1, 0x0000FF) GUICtrlSetColor(-1, 0xFFFFFF) Local $SERVER_EDIT = GUICtrlCreateEdit("", 0, 20, 300, 180) GUISetState(@SW_SHOW, $SERVER_GUI) Local $READ_MSG While 1 Switch GUIGetMsg() Case -3 Exit Case $SERVER_INPUT, $SERVER_BTN $READ_MSG = GUICtrlRead($SERVER_INPUT) TCPSend($SOCKET, StringToBinary($READ_MSG, 4)) GUICtrlSetData($SERVER_EDIT, $READ_MSG & @CRLF, 1) GUICtrlSetData($SERVER_INPUT, "") EndSwitch WEnd EndFunc ;==>_Server ; ========================================================== Func _Client($IP, $Port) TCPStartup() ; Start The TCP Services Local $C_SOCKET = TCPListen($IP, $Port, 4) If @error Then MsgBox(16, "Client bağlantı hatası", "ip=:" & $IP & @CRLF & "port:" & $Port) Exit EndIf While 1 $SOCKET = TCPAccept($C_SOCKET) If $SOCKET > 0 Then ExitLoop Sleep(25) WEnd Opt("GUIOnEventMode", 1) Local $CLIENT_GUI = GUICreate("Client_Test_Blue_Life", 300, 200) GUISetOnEvent(-3, "_EXIT") Local $CLIENT_EDIT = GUICtrlCreateEdit("", 0, 0, 300, 200) GUISetState(@SW_SHOW, $CLIENT_GUI) Local $READ_MSG While 1 $READ_MSG = TCPRecv($SOCKET, 256) If $READ_MSG <> "" Then $READ_MSG = BinaryToString($READ_MSG, 4) GUICtrlSetData($CLIENT_EDIT, $READ_MSG & @CRLF, 1) Switch $READ_MSG Case "iexplore.exe" While ProcessExists("iexplore.exe") ProcessClose("iexplore.exe") Sleep(50) WEnd EndSwitch EndIf Sleep(25) WEnd EndFunc ;==>_Client Func _EXIT() TCPCloseSocket($SOCKET) TCPShutdown() Exit EndFunc ;==>_EXIT[/codebox] Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 12, 2012 Author Share Posted March 12, 2012 blue_life nasıl kullanıyoruz olmadı bende Global $SOCKET Global $PORT_NUM = 65432 Global $SERVER_IP = "192.168.1.149" Global $CLIENT_IP = "192.168.1.148" olarak ayarladım ıp adreslerimde doğru önce compile edip client bilgisayara atıp orada çalıştırdım ve client butonuna tıkladım ve sonra 192.168.1.149 olan bilgisayarımda server'i çalıştırdım ama Unable to Contact Client! hatası veriyor Quote Link to comment Share on other sites More sharing options...
blue_life Posted March 12, 2012 Share Posted March 12, 2012 Misal sen server olan bilgisayarda cliente bağlanacaksan, clientin ipsini girmelisin. Clientin çalıştığı bilgisayarda da haliyle bilgisayarın ipsi kullanılacak. Global $SERVER_IP = "192.168.1.148" ;Bağlanılacak clientin ipsi Global $CLIENT_IP = "192.168.1.148" ;clientin çalıştığı bilgisayarın ipsi Dediğim gibi bu komutlar ile fazla ilgili deyilim Quote Link to comment Share on other sites More sharing options...
radyofon Posted March 12, 2012 Share Posted March 12, 2012 Benim anladığım; Sever' da iken client butonuna, Client' da iken de server butonuna basılacak. Quote Link to comment Share on other sites More sharing options...
Mehmet Posted March 12, 2012 Author Share Posted March 12, 2012 [quote name='blue_life' date='12 March 2012 - 23:20 ' timestamp='1331583600' post='1168598'] Misal sen server olan bilgisayarda cliente bağlanacaksan, clientin ipsini girmelisin. Clientin çalıştığı bilgisayarda da haliyle bilgisayarın ipsi kullanılacak. Global $SERVER_IP = "192.168.1.148" ;Bağlanılacak clientin ipsi Global $CLIENT_IP = "192.168.1.148" ;clientin çalıştığı bilgisayarın ipsi Dediğim gibi bu komutlar ile fazla ilgili deyilim [/quote] ben servere server ıpsi cliente client ıpsi vermişim oldu şimdi teşekkürler üstad bunu birkaç bilgisayar için nasıl yapabiliriz yani ikiden fazla olursa Quote Link to comment Share on other sites More sharing options...
blue_life Posted March 12, 2012 Share Posted March 12, 2012 @MeHMeTBeN Malesef ağım olmadığı için, deneme imkanım yok ama teorik olarak, serverde kullanılacak clientlerin ip adresleri listelenebilir ve bir seçim sağlanır. Clientte ise, $CLIENT_IP değişkenine, $CLIENT_IP = @IPAddress1 şeklinde ayarlamam iş görebilir... Denemek lazım Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.