Bonjour. Voici la suite de mon tutoriel sur le binaire.
Comme vous le savez déja, le type de codage utilisé par l'ordinateur pour stocker des informations et les exploiter est le binaire. Mais il faut savoir que le binaire à deux aspects : la base de commandes en binaire, et aussi le stockage de fichiers en binaire. C'est cette deuxième option que nous allons aborder maintenant.
DEFINITON
Vous ne vous êtes jamais demandés ce que contenait vos fichiers à l'état pur (j'entends par là le dernier format traduisible par l'ordinateur) ? Rien de plus simple ! Une suite de 1 et de 0 ! Le binaire est aussi utilisé en informatique pour stocker des fichiers, et récemment pour stocker des sons et des images grâce aux travaux de nombreux mathématiciens. Nous voyons alors l'image non pas continue comme nous l'offre nos yeux, mais échantillonnée, tout comme n'importe quelle source d'information.
Nous allons voir ce que nous offre AutoIt par rapport à la numérisation de fichiers. Tlem, un excellent programmeur de l'AutoIt French Team à mis au point une fonction "magique" qui permet d'intégrer toutes sortes de fichiers dans un code. Oui, vous avez bien entendu ! Pas de FileInstall, pas de Database, pas de skin, pas de dossiers à part ! En un seul exécutable, vous pouvez contenir tous vos fichiers !
Nous allons l'identifier et tenter de nous en servir en live. Voilà le code :
#cs ----------------------------------------------------------------------------
AutoIt Version(s) : 3.2.12.0 - 3.3.2.0
Auteur : Tlem
Fonction du Script :
Script adapté de l'UDF ConvertImageToBinary.au3 qui permet de transformer
un fichier en code binaire qui peut être inclus tel quel dans un code AutoIt.
L'appel de la fonction permet de re-générer le fichier.
#ce ----------------------------------------------------------------------------
$file = FileOpenDialog("Fichier à convertir", @DesktopDir, "All Files (*.*)")
If @error Then Exit
$Fname = StringTrimLeft($file, StringInStr($file, "\", 1, -1))
$Path = StringTrimRight($file, StringLen($Fname))
$f = FileOpen($file, 16)
$t = FileRead($f)
FileClose($f)
$z = StringRegExp($t, "(.{1,128})", 3)
$Ubound = UBound($z)
$FuncName = StringReplace($Fname, ".", "_")
$FuncName = StringRegExpReplace($FuncName, '[^\w]', '')
$FuncName = StringRegExpReplace($FuncName, '[^\D]', '')
$String = '; Ici RedBust ;) Voici le code adéquat pour re-générer votre fonction. Pour cela, décommentez la ligne qui suit : cela va regénérer le fichier dans un dossier à spécifier. Enjoy ;).' & @CRLF
$String &= '; ' & $FuncName & '("' & $Path & $Fname& '")' & @CRLF & @CRLF
If $Ubound = 1 Then
$String &= 'Func ' & $FuncName & '($Name)' & @CRLF & ' $FileBin = "' & $z[0] & '"'
ElseIf $Ubound > 1 Then
$String &= 'Func ' & $FuncName & '($Name)' & @CRLF & ' $FileBin = "' & $z[0] & '"' & @CRLF
For $i = 1 To $Ubound - 2 Step 1
$String &= ' $FileBin &= "' & $z[$i] & '"' & @CRLF
Next
$String &= ' $FileBin &= "' & $z[$Ubound - 1] & '"' & @CRLF
EndIf
If $Ubound > 0 Then
$String &= @CRLF
$String &= ' $hFile = FileOpen($Name, 17)' & @CRLF
$String &= ' If $hFile = -1 Then' & @CRLF
$String &= ' MsgBox(0, "Erreur", "Impossible de re-créer le fichier.")' & @CRLF
$String &= ' Exit' & @CRLF
$String &= ' EndIf' & @CRLF
$String &= ' FileWrite($hFile, $FileBin)' & @CRLF
$String &= ' FileClose($hFile)' & @CRLF & @CRLF
$String &= 'EndFunc'
EndIf
FileDelete(@TempDir & "\FicTmp.au3")
FileWrite(@TempDir & "\FicTmp.au3", $String)
ShellExecute(@TempDir & "\FicTmp.au3", '', '', "edit")
Oui, je confirmes, c'est du lourd ^^
Bien. Trouvez vous un fichier, n'importe lequel, à coder (attention, ne me trouvez pas quelque chose à 160 Gigas !).
Ensuite, lancez ce script.
Vous devez voir apparaître une fenêtre de navigation (de style "Ouvrir"). Selectionnez alors le fichier à intégrer. Il vous sera donné alors un bout de code. Enregistrez le en au3. Cela devrait vous donner quelque chose comme cela :
Cliquez pour révéler
Cliquez pour masquer
; Ici RedBust ;) Voici le code adéquat pour re-générer votre fonction. Pour cela, décommentez la ligne qui suit : cela va regénérer le fichier dans un dossier à spécifier. Enjoy ;).
; backblue_gif("chemin d'accès, puis : \Cadernis\backblue.gif")
Func backblue_gif($Name)
$FileBin = "0x474946383961F501C801A20000CCCCDDC7C7DAC4C4D7BEBED3BDBDD2B9B9D0FE010200000021F904FD140006002C00000000F501C8014003FF08BADCFE30CA"
$FileBin &= "49ABBD38EBCDBBFF60288E64699E68AAAE6CEBBE702CCF746DDF62200843E1FFC0A070482C1A8FC8A4D238680602B8A8744AADC27484A576CBED7ABFE030D869"
$FileBin &= "2D9BCFE8404FCC6EBBDFF0B89C4D2040D1F8BC793DEFFBFF424D3B777A124F3B4D806D0302858E8F0F028A939443028490991F5895058D9AA024929DA46E03A1"
$FileBin &= "A8A13C739FA98E59A5B15BADAEB5B62002B062B4B728BAB2C043A7BDC4C5367C5DC3C610C8C1CE98CBD1D267A35CBC8ED5CEC0D7D3DDDEA101BF49DC3301DAC1"
$FileBin &= "DFE9EAE9E14B7629D9E79DEBF4143ACDF27182D0C4F146E413C4E503A4AC5E3F810313CA6184CD88047C0AE7F033A8C75CC471007B711A3391FFCA458214F120"
$FileBin &= "4CD831E4895C4B329680F8D194C92923B5957C8947CD91821B5AFA514933454C60337B2E6B47841C4B9D62700A854772A9D3073D181C450A86E7530E3F4B05BD"
$FileBin &= "CA752AD52F5C490C541AB66C83AF72CC7AF0874EADDB0759D15A7B9B612CDDBB0BD8CAAD8A978257525BFB3AD5BB17AC6066760FDF2D0C47B183B8A41CD3B5C8"
$FileBin &= "B88D55B594F349A65BF94D60B51137BB25DC990BD9BE110988364BBAF4ACCDADB7AD0EEBFACDE6CC0A3FCF6657DB8D6AC9B8159EDE4D2F786F30BAC3C63E979C"
$FileBin &= "78B1E5C79734EFFAF5B77375D0A32B198ED778CB77D7A741D6BE847BDFBF17CD87CFE49D3CDFDD444BAB5F7F06BDFB2DF30567973B603AFD17FFE3DD87DF7FF1"
$FileBin &= "09180443FFC1B09F815AE4279A4D0CCE21C80E973C61A121161EC2431353D1B460845A5C761D4A208616568125C6E11F7D10A638C76128BAA8CF8A0952B04380"
$FileBin &= "D15DD79E8C728858E38F4BD9C7631C3E0269243D1F0EC9CA914CBE94A49294F4D7E494D33C09E5396450A92524565EE91A874F1477A3615B3ED2A29768A259E6"
$FileBin &= "3467A6E9666D6B5E45E29B749E13277173D6A9271877F699579E7B42E9E7A0291C2264A07D304223A18CAA93E1A39046FA68A394566AE9941952B821878984C1"
$FileBin &= "E984146678E9A843018AA836FB90EAA70EA7B65A4496AA52D4A6ABB402434091B1B67068AD3E283ADB3DBB2E846BAC3B228A60AE1C6C94E8A2FF23BA3A2CB236"
$FileBin &= "AC620AB34BE19822B5D0DA22ED7B1ED2E960B69305FB03B65574191DB9E0EEF621786758EB1EBAE96E392B133298EB1ABCF1666021859F0AF9A9A6177295DDB7"
$FileBin &= "865C4970AEF3F2DAEBB353641794BD9D650BB1708C5C1283869DCA71AB190546E0EE7195C6F811C3F5289B52141FD776308B2D911C9EA99698307161F2A6966F"
$FileBin &= "04533958AC814DCE6CDBCD24882C95922EDFB5736440D720AECA350E645DD235F82C57D165A52C21D452488DD6CA6E2D7D35D6521C2D20D54E250676D606C367"
$FileBin &= "F6D951883DF66C567FCDB6145EF746F64B752F3937DD68E26B50DC7DEC8D369A77CB1A91DF826B9037C89BA59778B46F22BECE475C3F0E02E0FFD13D0DE37796"
$FileBin &= "C7B0B876A2610E52E72C68FDA5689F2BA239E9A2ECB9FA61A6FB2179E26EF358F953B103323BD8A90BB83B92F2FD0E6EEEE73A477C2985672B3A88B7ABD5FB45"
$FileBin &= "16EFFD3C88C2D3347D65B05A2AB2B34C1EAF70104F2D4FF49ADB7EAFC564E2A71D32CC74AE763DE173EBB02152A902E9BD97C9B39EEDFBA7E6AFFFA5B5335F79"
$FileBin &= "FCF7BF3EF14F80AFAA5E0159943E04BE217BEBB9C70F163801F639D05BFD3AE08B2898030D5EF0830EE1200D1206C21226418499B0A0096985C275487085436A"
$FileBin &= "21705408433BC9905418F320F67C75C31EFAF087400CA2108748C422762E870C0255988C88B517D61009F56362784CF6C46040508A25D36115FF6551070562B1"
$FileBin &= "0424DCA29B76F0C57A89518CC72A2306C278C606816A10935AE3A334B5292D5262635FBC5F9AA2D81343D931445EA4D4F60478AB403AC5899DC023D80258A7E8"
$FileBin &= "E58B8A7D20207DFE581B458A10922E89D320E92449D2B1B10B9D0CD2A99AA74605D03044A10B9421D558BE2F84D2160DACCD2B4BC981531A815D21A124525649"
$FileBin &= "CB11D8B228E9E0642FA5F12452528191BE1B264592644C19B88997CAD443B066C9015D0A279A7D5950333F003F6CAE663FB85C811E1DE7CDFF08299C2218A789"
$FileBin &= "7A283F6B7A81438EC44E7970A1BEC7211283D04441768A54CFA4FDF28257CCC372FC02A56D52499D84A4A6072032812B21CC9DFA88A7238035FFAD72F92002C8"
$FileBin &= "EC8D41235818898604934990924595944FB520F40B2215CD3F0B90D2189C541E83CA6825368A975616219432BD97262937AA53DE0D4A25ED094491F0BAFD1D61"
$FileBin &= "5843B5A2965E4AD4CE4D4525392D4D500D1255BD719030BC60AA338A4A1FADDE7488C818DA90685A16AF12A1974995CD8F12A2CC82D6C8AC4250A8E0D20A8C04"
$FileBin &= "D1350853F52750BB3A907256157B1CCD875C2D77D758E4D518859D603901F0D7CA84676DDE846B5D9D03596F26B614CEB96C0116CB002FE1692083659D970E6B"
$FileBin &= "8BA6705601B1DCDAAFD87A5A056816692A35ED69250B0CB2962C21B69561371B275BCED21628A853486B159026D2A2629D9C6D6C69426B0CE4FF2EF6B76A758C"
$FileBin &= "72E1C05CC2BA493417312ED45E6BD8CD70F7A2BE7DD36D3EA2DD9B4D77B9B019D962852999EFFA80ABACA4537933E1DE5E79B391E96D496E59075D548D5727F0"
$FileBin &= "65627D63115BA4543769A945AF77BF72E07C05CA7D686930B802B55F79CA65BE944AF0E956A3E13EA0F38703AEED6A192361ED9D2AC0DD51700F3B5C1B0C8722"
$FileBin &= "C45094E179DD53E17AF497231484B1334A6C8C1B27C5C5EBD1F133A6C8E2DA0299C3BC3A722A7CCC0A25DF45C8DAE07195A0D4C55C41591B285ECD2795548741"
$FileBin &= "58C1C96014A094D371E518E612816376549905249419BB28CD362E729D04F6C11A4F66A5B51A4D09E1DC663CA7299B2BE4F3896CEA50C73019FFB08F44049B7F"
$FileBin &= "25671E091A48FBE2D7A79240807F856A89713AB42C876BC036B214CC9C96C69A19D3D2501B69D42A36F55B3D7D1350AB5A135B66F5A75F4D9C4DCA9A0869A4B5"
$FileBin &= "606C7DEB90BA5AD73840B59B020A6C93F8B9D749E1E16440AAD8166A1AD93F50A28B73A841221E1BDAC82EE5B3B1EDA2E7369ADBD75575ACC1ADB0623B60DCE4"
$FileBin &= "6E9FB92F80EE74A768DDBEFCB6BB610AEF16EC60DEA0AB77DB088D6FE1EA7BA2FCEEF724FE1D8D7B0A1C3F1E25384DDA79C68A297C55F2DB14A92B56A1875BFC"
$FileBin &= "E218CFB8C637CEF18E7BFCE3200FB9C8474E72FD6948E2DF81271C4B7E273F62D009BF66F9145CFE443ECADC850107B7CD6F0EEB6B0BBCCB31FFEF78CE0F6E8A"
$FileBin &= "84F3FC046A10F619AB7C740FB49BE85BFD70D34D296FA82B22D723F7B9D50B83758B6B7DEBDA2975B1950EF649747DB14F2F3B9D2CD9CBB46FB10EB7AA907123"
$FileBin &= "3DBFC2B0BD88DB264FC582DE018C518EEF35E2F505816E348347778179E78FD1E153F758887D6E64C712E0879274523C3E5F91DFC6E43FFAF5066DDE7A08BCFC"
$FileBin &= "CD866E9958255EB014BCF74E1AE56601895E84A47FE7E76D9179403CFA52B19F0B935AAF9DDB0F6F7AAFFF66ABEC2CC3CE477BF655A8FA85F5EDF6984946F954"
$FileBin &= "217E7CD9E0FB32F03ED51F8758F551A627E90FB7F93FD8BE0CA0FF912C971CFCC1F746ED4B3F751B59CDFB0D5B7BFB37D07CF183E0FA7BB13FFFAD97967E5090"
$FileBin &= "3F37F377125EA07F36123901583AC93079FF3710C8076F4942808CF54C077803C1027FD5545C133873BBD27F33902610C87378465AF88714E69781C1F61A9033"
$FileBin &= "5A26C82538C25CEBD70525B8826570280AB580322183B5B01FA16483CE8083C420783EE03F5E6281C882448E477198262B0172373C7878A9977BF4A36CDD2024"
$FileBin &= "CCD284B2D08046637C9DB173B5601F521710578285836685247877A0601FDFF2825BC036AC52434CA709F65101A7971649037E0EC481619315F61086F9A2852B"
$FileBin &= "64865F560414C0871253226F242A15902992F6478038384030016A7832B9E287A8B27837C07070707614D86C91E056AAA27452E80A14B50BC7FF045F857629A3"
$FileBin &= "F68123C06CE3800691A804628858FC118BA2202E8D580E50A28AE93087BAB86FD6828728F08A27C42830068C77B152A13582D01353067624E3464DC28804ABA2"
$FileBin &= "13B4A809D0D149B9D8722D518DB5B065C933878DB126CAE84AA697155F880164D809BDD80BEEC58D64268DC9B2574B653358E315CD018E3F4325E9F803316854"
$FileBin &= "5F5501D1F80F54328E5BD08F89F62A0D455253E263EEA86744804E04C95A4CF25A44482947C100F8E8064DB28F05D09086260418A924151912FE3644D52056B6"
$FileBin &= "7324B88545981090080924FB389240E392C0F4239A259333393EAB960F3809341C3909EBF80812D94B3F797535B28FD84493C2902011D98AD1FFA49443902048"
$FileBin &= "999482C232A8874D19D9061E790C7DE54D4D79958F0596D8446581250F5BC92445A9086769469AB158501957E171593D793659D90661290F73793684481C95F5"
$FileBin &= "949EC8973C395B7B391B7D194DFDB41A43594E75C9066BE9029AD55A5F1998EAC280ADF59642D098082899C9E559BB9198E5649907B21B9A159496A282C2D795"
$FileBin &= "82798AD8055AC33584B37163C3B598D44798AC5999A6995FF980994CA22688E99991C59BB88997C3059A20195C85194D69390906C9150A419A95822679990A91"
$FileBin &= "8904CED928B2C906D1890A3E569D8C729D495160B5C959C4199A0BB692A7959C94609CC7394CE83970E5E99B86F967EF49999C2581ED1511DCFF392863149CF9"
$FileBin &= "B09C45346CFC999BF5196ED2454EE56480CF975D8BD59E40399F4EB3A0E2051CEA655908EA18C9A99BFFE19D8B10A0A8A94C1AAA95BC7511FEF943D3899F1CAA"
$FileBin &= "99C334679B819ED9992EE3896B278AA2DA562718BA123AD1A2D052A2F498A09C4394F825A1BB444B1FEA0635DA3ACD584A7A32A2A2443FA5F4A2FF789F5451A4"
$FileBin &= "40FAA350CAA45FC4A080A19E412A453A2AA210561D58E4A445A0A44B018E382A4814A665F9674462FA92B781A540909FF4612CB3B16672DA2C697A9A7B71A67D"
$FileBin &= "02A796B71B7E0A04E7B8405DDAA37ADA513E34A47140A64F216CC63857AD22A52650A8DFD942814A0A777A03DEC9A7CEE82A9CFA621A957AAEFFC2A857517B8F"
$FileBin &= "3A7AB422A9C1D87BACD3A64E9959E4718BDB452B83AA18AF28ABF972A9B190A98E781F96082EBA5A0AB5AA1894083DAADA0BC18A3CE6E422A7EA27AE2A1D192A"
$FileBin &= "92BC3A0DCFBA1D3522A65D868ADF33AD5550ADBDD21FC71A7FDF13AE2C608786B80F5EE477E0B58B0244AEE5EAAD1F715BE633ACA209762191AC22D63DF8EA1E"
$FileBin &= "78137A07356F3DA1A833E5AE1703AFE9D966FB6A2B042B03E6CA2BA5FA410B4B03C5AA6E5741A9D8272F023B596561B0A64128ACD82A6F91B15A412950089C6F"
$FileBin &= "C1B1C9D053222B06BB0643119B0663A29AE701439FEA16F293B04AF0A635C4AD25338A1B069E30C4B34B6184A530214918AD5524B43E088962FFA4B44BFB0040"
$FileBin &= "88664F5B1C9E56B3531B6655FBB237B7B209E1B44FCBB50981AB57AB9DD0D6AC635B13DC66B6676B7D384B6A5E3B81285B096F3B7F60FB159AB8B60275706A8B"
$FileBin &= "B73410B746C6B78550B79D5148807B060D5BB5739B7D6A1704845BB851E0B7FAB5B78EDB77906BB7BFCA2289EB216D5B2730F72B8426AA8B8B9DA1B870862788"
$FileBin &= "2824B8C387AEB7D04EBD93A8A18B2A878888F7A7887544604134B1AF0BB24574B8B97B2A6554B9BDDB05BD84BBC1CB23145ABC02345BC08BBC9B156AC4CBBCAE"
$FileBin &= "016CCF0BBD72516FD34BBDF1AA70258BBD119371BCCBBD1DCA71DB0BBECE1572D74BBE74C8731F8BBE3D3881E3CBBE7EB0B4EB0BBF1B74B6955847BF7F30B90A"
$FileBin &= "30BFF8BB04FA1B01EFDBBFCDFBBF8978BF027C5604EC748D47BF56DB7486D2BBA39BC00CAB68694B4612DC730BFC3D5C78C1DD40B4CCB3775ACBC1FA727275F4"
$FileBin &= "479C0230472BC22ABCC22CDCC22E0C6F0900003B"
$hFile = FileOpen($Name, 17)
If $hFile = -1 Then
MsgBox(0, "Erreur", "Impossible de re-créer le fichier.")
Exit
EndIf
FileWrite($hFile, $FileBin)
FileClose($hFile)
EndFunc
Bon. Ce code est à mettre dans votre script principal.
A la deuxième ligne du code, vous devriez voir cela :
; backblue_gif(chemin d'accès puis :
"\Cadernis\backblue.gif")
Effacez le point-virgule, puis spécifiez l'endroit ou le fichier devra être régénéré au moment du lancement de la fonction. Ensuite, placez la fonction ou vous voulez dans votre script (en #include, si vous voulez, à la compilation le fichier sera donc automatiquement intégré). Maintenant, vous pouvez appeler à touts moments la fonction afin de ré-générer votre fichier.
On a donc binarisé un fichier en transformant une image par exemple, en une suite totalement numèrisée. Étonnant, non ?
Loading Image
Si vous n'y -êtes pas arrivés, par grave ! Tenez, essayez ce bout de code, ça vous donner a un aperçu (fichier d'arrivée dans votre bureau) :
; Ici RedBust ;) Voici le code adéquat pour re-générer votre fonction. Pour cela, décommentez la ligne qui suit : cela va regénérer le fichier dans un dossier à spécifier. Enjoy ;).
Nouveaudocumenttexte_txt("C:\Users\Desktop\Nouveau document texte.txt")
Func Nouveaudocumenttexte_txt($Name)
$FileBin = "0x436563692065737420756E206578656D706C652064277574696C69736174696F6E20706F737369626C6520706F7572206C6120666F636E74696F6E2046496C"
$FileBin &= "65546F42696E6172792E6175330D0A0D0A526564427573742E"
$hFile = FileOpen($Name, 17)
If $hFile = -1 Then
MsgBox(0, "Erreur", "Impossible de re-créer le fichier.")
Exit
EndIf
FileWrite($hFile, $FileBin)
FileClose($hFile)
EndFunc
Bravo à tous de m'avoir suivi dans ces deux parties de tuto.
J'espère que vous avez tout compris ! Pour ceux qui veulent aller plus loin dans le calcul en binaire par exemple, je vous renvoie à un lien très intéressant :
Le Site Du Zero : Les calculs en binaire
Enjoy ;)
RedBust.