Code : Tout sélectionner
#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icon.ico
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Description=téléchargements de malwares chez différents devs / analyseurs.
#AutoIt3Wrapper_Res_Fileversion=1.0.0.4
#AutoIt3Wrapper_Res_LegalCopyright=Batch_Man - 2010 / 2011
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <Date.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <INet.au3>
#include <GuiImageList.au3>
#include <GuiRichEdit.au3>
; Regarder la taille du fichier, si 0 alors ne pase lister
; ============================ Vérifie la connexion internet ============================
#cs
Func _TestInternet()
$StartupTCP = TCPStartup()
Global $IP = TCPNameToIP("www.google.fr")
Global $SOCKET = TCPConnect($IP, 80)
If $SOCKET = -1 Then
$IDMsgbox = MsgBox(52, "Erreur", @CRLF & "Aucune connexion internet n'est disponible." & @CRLF & @CRLF & _
"Ce programme à besoin d'internet pour fonctionner correctement." & @CRLF & @CRLF & _
"Voulez-vous re-essayer ?")
If $IDMsgbox = 6 Then
$IDMsgbox = _TestInternet()
Else
Exit
EndIf
EndIf
EndFunc ;==>_TestInternet
_TestInternet()
#ce
; ============================ Variables ============================
; >>>>>> Variables générales
Global $ScriptDir = @ScriptDir, $NombreUP, $End, $Auteurtelechargements, $Fichiertelechargements, $FichierUP = "Aucun", $FichierSend = 0, $Boundary
Global $Fichiertelechargements = "", $NombreUP = "", $NbLien = "-1"
FileInstall("C:\Users\Thomas\Desktop\Dévellopement\AutoIT\MalwaresDownloader\titre.bmp", $ScriptDir & "\titre.bmp")
FileInstall("C:\Users\Thomas\Desktop\Dévellopement\AutoIT\MalwaresDownloader\aide.bmp", $ScriptDir & "\aide.bmp")
; >>>>>> Devs / adresses
Global $ListeDev[4][4] = [["MalwareDomainList", "http://www.malwaredomainlist.com", "/mdl.php", "search"], _
["VXvault.Siri-urz", "http://vxvault.siri-urz.net", "/ViriList.php", "MD5"], _
["Malc0de Database", "http://malc0de.com", "/database/", "search"], _
["Malekal", "http://www3.malekal.com", "/malwares/index.php", "file"]]
Global $NbSites = 3
; >>>>>> Outils Quarantaine
If @OSArch = "X86" Then
$ProgramFilesDir = @ProgramFilesDir
Else
$ProgramFilesDir = @ProgramFilesDir & "(x86)"
EndIf
Global $OutilsList[17][2] = [["AD-Remover", $ProgramFilesDir & "\Ad-Remover\Quarantine"], _
["ComboFix", @HomeDrive & "\Qoobox"], _
["Comodo", $ProgramFilesDir & "\Comodo\Comodo Internet Security\Quarantine"], _
["Dr.web", @UserProfileDir & "\DoctorWeb\Quarantine"], _
["eScan", $ProgramFilesDir & "\eScan\Infected"], _
["FindyKill", @HomeDrive & "\FyK\Quarantine"], _
["FixLop", $ProgramFilesDir & "\FixLop\Quarantaine"], _
["Hijackthis", $ProgramFilesDir & "\Trend Micro\HijackThis\backups"], _
["KillBox", @HomeDrive & "\Killbox"], _
["MBAM", @AppDataDir & "\Malwarebytes\Malwarebytes' Anti-Malware\Quarantine"], _
["Navilog1", @HomeDrive & "\Navilog1\Backupnavi"], _
["OTL", @HomeDrive & "\OTL\MovedFiles"], _
["OTM", @HomeDrive & "\OTM\MovedFiles"], _
["RogueKiller", @DesktopDir & "\RK_Quarantine"], _
["USBFix", @HomeDrive & "\UsbFix\Quarantine"], _
["VundoFix", @HomeDrive & "\VundoFix Backups"], _
["ZHPFix", $ProgramFilesDir & "\ZHPFix\Quarantine"]]
; ============================ Interface ============================
; >>>>>> Gui: Téléchargement des malwares
Global $GUI = GUICreate("MalwaresDownloader - Téléchargements de malwares semi-automatiques.", 750, 520)
Global $TitreImage = GUICtrlCreatePic($ScriptDir & "\titre.bmp", 10, 10, 455, 58)
Global $InformationGroupe = GUICtrlCreateGroup("Informations", 246, 96, 494, 170)
Global $RechercheGroupe = GUICtrlCreateGroup("Rechercher", 10, 215, 230, 70)
Global $UPEnCoursText = GUICtrlCreateLabel("Téléchargements: Aucun", 256, 136, 483, 20)
Global $NombreUPText = GUICtrlCreateLabel("Nombre de fichiers téléchargés: 0/0", 256, 176, 483, 20)
Global $FichierUpText = GUICtrlCreateLabel("Fichier: " & $FichierUP, 256, 216, 483, 20)
Global $RechercheEdit = GUICtrlCreateInput("", 20, 250, 210, 20, $WS_EX_CLIENTEDGE)
Global $OuvrirRapport = GUICtrlCreateCheckbox("Ouvrir le rapport lorsque tous les téléchargements sont terminés.", 246, 274, 454, 20)
Global $AideButton = GUICtrlCreateButton("", 695, 15, 45, 45, $BS_BITMAP)
GUICtrlSetImage($AideButton, $ScriptDir & "\Aide.bmp")
Global $Rechercher = GUICtrlCreateButton("Rechercher", 10, 480, 120, 30)
Global $telechargements = GUICtrlCreateButton("Télécharger !", 620, 480, 120, 30)
; >>>>>> Liste des sites de téléchargements
Global $Liste_Dev = GUICtrlCreateListView("Liste des sites de téléchargements", 10, 101, 230, 104)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200 - 5)
_GUICtrlListView_SetExtendedListViewStyle($Liste_Dev, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES))
For $i = 0 To $NbSites
_GUICtrlListView_AddItem($Liste_Dev, $ListeDev[$i][0])
Next
$Liste_DevNb = _GUICtrlListView_GetItemCount($Liste_Dev) - 1
_GUICtrlListView_SetItemChecked($Liste_Dev, -1)
; >>>>>> Liste des liens de téléchargements
Global $ListMalwares = GUICtrlCreateListView("", 10, 300, 730, 170, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($ListMalwares, $LVS_EX_CHECKBOXES)
Global $Liste_MalNb = _GUICtrlListView_GetItemCount($ListMalwares) - 1
GUISetState()
_GUICtrlListView_AddColumn($ListMalwares, "Statut", 120)
_GUICtrlListView_AddColumn($ListMalwares, "Lien du fichier", 400)
_GUICtrlListView_AddColumn($ListMalwares, "Nom de l'infection", 150)
_GUICtrlListView_AddColumn($ListMalwares, "Taille du fichier", 51)
$ListMalwaresNb = _GUICtrlListView_GetItemCount($ListMalwares) - 1
; >>>>>> Gui Aide / Support
$WinPosAide = WinGetPos("MalwaresDownloader - Téléchargements de malwares semi-automatiques.")
Global $GUI_Aide = GUICreate("MalwaresDownloader - Aide / Support", 500, 436, $WinPosAide[0], $WinPosAide[1], $WS_EX_WINDOWEDGE)
Global $AideTitre = GUICtrlCreateLabel("Aide / Support", 130, 10, 483, 100)
Global $InfoTitre = GUICtrlCreateLabel("Informations:", 10, 90, 483, 40)
Global $InfoTexte = GUICtrlCreateLabel("Cet outil permet de télécharger des fichiers infectieux." & @CRLF & _
"Cela va vous permettre de mieux comprendre les infections en les testants sur une machine virtuelle ou un PC dédié.", 10, 120, 483, 100)
Global $TutoTitre = GUICtrlCreateLabel("Aide:", 10, 180, 483, 40)
Global $TutoTexte = GUICtrlCreateLabel("• Dans le cadre de gauche sont listés les sites de téléchargements, vous devez cocher celui(ceux) où vous voulez télécharger les malwares." & @CRLF & _
"• Le bouton Recherche permet de lister, dans le cadre du bas, les malwares trouvés." & @CRLF & _
"• Le bouton téléchargements permet de télécharger les malwares dans le dossier de téléchargement.", 10, 210, 483, 100)
Global $ContactTitre = GUICtrlCreateLabel("Me contacter:", 10, 290, 483, 40)
Global $ContactTexte = GUICtrlCreateLabel("Pour plus d'informations, renseignements, vous avez détecté un bug, vous voulez ajouté un site à la", 10, 320, 483, 15)
Global $ContactTexte2 = GUICtrlCreateLabel("liste de téléchargements...", 10, 335, 247, 15)
Global $ContactTexte3 = GUICtrlCreateLabel("Vous pouvez me contacter à l'adresse email suivante: ", 10, 350, 255, 15)
Global $MailTexte = GUICtrlCreateLabel("thomas.libe@wanadoo.fr", 265, 350, 122, 15)
Global $FermerBouton = GUICtrlCreateButton("Fermer cette fenêtre", -2, 385, 498, 25)
GUICtrlSetFont($AideTitre, "30")
GUICtrlSetFont($InfoTitre, "11", "", 4, "Arial")
GUICtrlSetFont($TutoTitre, "11", "", 4, "Arial")
GUICtrlSetFont($ContactTitre, "11", "", 4, "Arial")
GUICtrlSetFont($MailTexte, "8.5", "", 4, "Arial")
GUICtrlSetColor($AideTitre, 0x000099)
GUICtrlSetColor($MailTexte, 0x000099)
GUICtrlSetColor($InfoTitre, 0xff0000)
GUICtrlSetColor($TutoTitre, 0xff0000)
GUICtrlSetColor($ContactTitre, 0xff0000)
; ============================ Fonctions ============================
; ********************************************************
; Affiche l'aide de l'outil
; ********************************************************
Func _AfficheAide()
GUISetState(@SW_SHOW, $GUI_Aide)
EndFunc ;==>_AfficheAide
; ********************************************************
; Fait le tri des liens pour Malc0de Database
; ********************************************************
;http://malc0de.com/database/index.php?search=7b04fe26c3db90ee0bf31085cea3e15d&MD5=on
Func _MalwareCode($Lien)
$Source = _INetGetSource($Lien)
$Source = StringReplace($Source, "<br/>", "")
$SourceSplit = StringSplit($Source, @CRLF)
For $i = 1 To $SourceSplit[0]
If StringInStr($SourceSplit[$i], "&IP=on'>") Then
$LienFichier = StringSplit($SourceSplit[$i - 1], ">")
$LienFichier = StringSplit($LienFichier[2], "<")
$InfosFichier = $LienFichier[1]
EndIf
Next
EndFunc ;==>_MalwareCode
; ********************************************************
; Fait le tri des liens pour Malekal
; ********************************************************
;http://www3.malekal.com/malwares/index.php?malware=rogue%20fake
Func _Malekal()
EndFunc ;==>_Malekal
; ********************************************************
; Fait le tri des liens pour MalwareDomainList
; ********************************************************
;http://www.malwaredomainlist.com/mdl.php?inactive=&sort=IP&search=rogue&colsearch=All&ascordesc=DESC&quantity=50&page=0
Func _MalwareDomainList($Lien, $ListMalwares)
$Source = _INetGetSource($Lien)
$Source = StringReplace($Source, "<wbr>", "")
$SourceSplit = StringSplit($Source, @CRLF)
For $i = 1 To $SourceSplit[0]
If StringInStr($SourceSplit[$i], "<td><nobr>20") Then
$SourceDecoupe = StringSplit($SourceSplit[$i], "<")
$LienFichier = StringSplit($SourceDecoupe[7], ">")
$NomMalware = StringSplit($SourceDecoupe[13], ">")
$NbLien += 1
_GUICtrlListView_AddItem($ListMalwares, "Trouvé: ", 0)
GUICtrlSetColor(-1, 0x004000)
_GUICtrlListView_AddSubItem($ListMalwares, $NbLien, $LienFichier[2], 1)
GUICtrlSetColor(-1, 0x000040)
_GUICtrlListView_AddSubItem($ListMalwares, $NbLien, $NomMalware, 2)
GUICtrlSetColor(-1, 0xAB1418)
_GUICtrlListView_AddSubItem($ListMalwares, $NbLien, "1500Kb", 3, 2)
GUICtrlSetColor(-1, 0x800080)
EndIf
Next
EndFunc ;==>_MalwareDomainList
; ********************************************************
; Fait le tri des liens pour VXvault.Siri-urz
; ********************************************************
;http://vxvault.siri-urz.net/ViriList.php?MD5=AD3AC277FD099BDBF764BF133094A1D1
Func _SiriURZ($Lien)
$LienSplit = StringSplit($Lien, "=")
$MD5 = $LienSplit[2]
$LienFichier = "http://vxvault.siri-urz.net/files/" & $MD5 & ".zip"
$Source = _INetGetSource($Lien)
$SourceSplit = StringSplit($Source, @CRLF)
For $i = 1 To $SourceSplit[0]
If StringInStr($SourceSplit[$i], "ViriFiche.php?ID=") Then
$InfosFichier = StringSplit($SourceSplit[$i], "=")
$InfosFichier = StringSplit($InfosFichier[4], "'")
$InfosFichier = "http://vxvault.siri-urz.net/ViriFiche.php?ID=" & $InfosFichier[1]
EndIf
If StringInStr($SourceSplit[$i], "ViriList.php?size=") Then
$TailleFichier = StringSplit($SourceSplit[$i], ">")
$TailleFichier = StringSplit($TailleFichier[3], "<")
$TailleFichier = $TailleFichier[1]
EndIf
Next
$Source = _INetGetSource($InfosFichier)
$SourceSplit = StringSplit($Source, @CRLF)
For $i = 1 To $SourceSplit[0]
If StringInStr($SourceSplit[$i], "'Virus.png' style='vertical-align:middle'>") Then
$NomMalware = StringSplit($SourceSplit[$i], " ")
$NomMalware = StringSplit($NomMalware[4], "<")
$NomMalware = $NomMalware[1]
EndIf
Next
EndFunc ;==>_SiriURZ
; ********************************************************
; Adresse courte du fichier en fonction du lien
; ********************************************************
Func _NomFichierLien($Lien)
$LienSplit = StringSplit($Lien, "/")
$NombreSlash = $LienSplit[0]
If StringInStr($Lien, "http://") Then
Return "http://" & $LienSplit[3] & "/.../" & $LienSplit[$NombreSlash]
Else
Return $LienSplit[1] & "/.../" & $LienSplit[$NombreSlash]
EndIf
EndFunc ;==>_NomFichierLien
; ********************************************************
; Fait le tri des fichiers à lister ou non
; ********************************************************
Func _TriFichiers($Lien)
$TailleFichier = InetGetSize($Lien, 1)
If $TailleFichier <> "" Or $TailleFichier <> "0" Then
$Fichiertelechargements &= $Lien & "|" & $TailleFichier / 1024 & " Kb"
$NombreUP += 1
EndIf
GUICtrlSetData($NombreUPText, "Nombre de fichiers téléchargés: 0/" & $NombreUP)
EndFunc ;==>_TriFichiers
; ********************************************************
; Fait le tri des site de téléchargements
; ********************************************************
Func _TriDev()
$Auteurtelechargements = ""
For $i = 0 To $Liste_DevNb
$DevText = _GUICtrlListView_GetItemText($Liste_Dev, $i)
$DevState = _GUICtrlListView_GetItemChecked($Liste_Dev, $i)
If $DevState = 1 Then
For $n = 0 To $Liste_DevNb
If $DevText = $ListeDev[$n][0] Then
$Auteurtelechargements &= $ListeDev[$n][0] & "|"
EndIf
Next
EndIf
Next
EndFunc ;==>_TriDev
; ********************************************************
; Pre-téléchargements des fichiers
; ********************************************************
Func _Pretelechargements()
Global $TelechargementsSucces = ""
Global $TelechargementsEchec = ""
Global $TelechargementsError = ""
For $i = 0 To 5
For $j = 1 To $NombreUP
GUICtrlSetData($UPEnCoursText, "téléchargements: " & $ListeDev[$i][0])
GUICtrlSetData($FichierUpText, "Fichier: " & $Fichiertelechargements[$j])
GUICtrlSetData($NombreUPText, "Nombre de fichiers téléchargés: " & $j & "/" & $NombreUP)
If Not StringInStr($TelechargementsSucces, $Fichiertelechargements[$j] & " " & "[" & $ListeDev[$i][0] & "]") Or Not StringInStr($TelechargementsEchec, $Fichiertelechargements[$j] & " " & "[" & $ListeDev[$i][0] & "]") Then
If StringInStr($Auteurtelechargements, $ListeDev[$i][0]) Then
EndIf
EndIf
Next
Next
EndFunc ;==>_Pretelechargements
; ********************************************************
; Recherche des fichiers
; ********************************************************
Func _Telechargements($SITE, $PAGE, $FormData)
$StartupTCP = TCPStartup()
Global $IP = TCPNameToIP($SITE)
Global $SOCKET = TCPConnect($IP, 80)
If $SOCKET <> -1 Then
TCPSend($SOCKET, "POST " & $PAGE & " HTTP/1.0" & @CRLF & _
"Host: " & $SITE & @CRLF & _
"Content-Type: multipart/form-data; boundary=---------------------------" & $Boundary & @CRLF & _
"Content-Length: " & StringLen($FormData) & @CRLF & _
@CRLF & $FormData)
Else
TCPSend($SOCKET, "GET " & $PAGE & " HTTP/1.0" & @CRLF & _
"HOST: " & $SITE & @CRLF & @CRLF)
EndIf
Global $recv = ""
Do
$recv &= TCPRecv($SOCKET, 1024)
Until @error
Return $recv
TCPShutdown()
EndFunc ;==>_Telechargements
; ********************************************************
; Génère un numéro aléatoire
; ********************************************************
Func _GenNumero()
$a = _Date_Time_GetSystemTime()
$a = _Date_Time_SystemTimeToDateTimeStr($a)
$a = StringSplit($a, " ")
$b = StringSplit($a[2], ":")
$Heures = $b[1]
If $Heures = 00 Then $Heures = 24
$Minutes = $b[2]
$Secondes = $b[3]
$FinTemps = 1096 + $b[3]
Return $Heures & "8" & $Minutes & "2" & $Secondes & "1" & $FinTemps
EndFunc ;==>_GenNumero
; ********************************************************
; Génère le rapport
; ********************************************************
Func _RapportFunc($TelechargementsEchec, $TelechargementSucces)
GUICtrlSetData($FichierUpText, "Fichier: Aucun")
GUICtrlSetData($NombreUPText, "Nombre de fichiers téléchargés: 0/0")
$Rapport = "MalwareDownloader 1.0 de Batch_Man" & @CRLF & _
"Utilisateur: " & @UserName & @CRLF & _
"Date et Heure: " & @MDAY & "/" & @MON & "/" & @YEAR & " à " & @HOUR & ":" & @MIN & "," & @SEC & @CRLF & @CRLF & _
"=========================[Resultats]======================" & @CRLF & @CRLF & _
$TelechargementsEchec & $TelechargementSucces & @CRLF & _
"============================[End]========================="
GUICtrlSetData($UPEnCoursText, "Téléchargements: Aucun")
FileWrite($ScriptDir & "\Rapport-" & @MDAY & "." & @MON & "." & @YEAR & "_" & @HOUR & "." & @MIN & "." & @SEC & ".txt", $Rapport)
If GUICtrlRead($OuvrirRapport) = $GUI_UNCHECKED Then
MsgBox(64, "Terminé !", "Tous les téléchargements sont terminés !")
Else
Run("notepad " & $ScriptDir & "\Rapport-" & @MDAY & "." & @MON & "." & @YEAR & "_" & @HOUR & "." & @MIN & "." & @SEC & ".txt")
EndIf
EndFunc ;==>_RapportFunc
; ============================ Corps du programme ============================
Do
$Msg = GUIGetMsg()
Switch $Msg
Case $AideButton
_AfficheAide()
Case $MailTexte
_INetMail("thomas.libe@wanadoo.fr", "A propos de MalwaresDownloader", "Bonjour," & @CRLF & @CRLF & @CRLF & @CRLF & "@+")
Case $FermerBouton
GUISetState(@SW_HIDE, $GUI_Aide)
Case $Rechercher
_MalwareDomainList("http://www.malwaredomainlist.com/mdl.php?search=bagle&colsearch=All&quantity=3", $ListMalwares)
Case $telechargements
Global $AfficherFichiers, $TelechargementsEchec, $TelechargementSucces, $FichierAfficher, $End = 0, $Auteurtelechargements = ""
Do
$Boundary = _GenNumero()
_Pretelechargements()
_RapportFunc($TelechargementsEchec, $TelechargementSucces)
$End = 1
Until $End = 1
EndSwitch
Until $Msg = $GUI_EVENT_CLOSE