Pour comprendre ces codes, il s'agit principalement de comprendre l'objet des données binaires dans ASP, ADODB.stream! Ce programme utilise principalement Adodb.Stream. Hier, il n'y a pas encore de bon moteur d'identification. Identifiez 4321 à 89910, de sorte que le code d'image est encore plus sûr. J'ai vu la méthode de la fissuration violente sur Internet. La page sera interdite de soumettre une soumission externe. Fichier ASP: code.asp Fichier de données: body.fix, head.fix Utilisation: <img src = "code.asp"> <% Réponse.buffer = true Code num Fonction numcode () Response.expires = -1 Response.Addheader "Pragma", "No-Cache" Response.Addheader "Cache-Clm", "No-cache" Dim Znum, I, J ADOS DIM, ADOS1 Randomiser le tempsur Générer quatre chiffres aléatoires: Znum = Cint (8999 * RND 1000) Passer à la session Session ("getcode") = znum La boucle pour mettre le nombre aléatoire dans un tableau de 3 règlement 3, ce qui est pratique pour fournir à la transformation du tableau ultérieure Dim Zimg (3), NSTR Nstr = cstr (znum) Pour i = 0 à 3 zimg (i) = cint (mid (nstr, i 1,1)))) Suivant POS DIM «Définissez deux objets binaires Adodb.stream, pour l'utilisation de l'opération de données d'image: SET ADOS = Server.CreateObject ("Adodb.stream") Ados.Mode = 3 Ados.Type = 1 Ados.open Définir ADOS1 = Server.CreateObject ("Adodb.stream") Ados1.mode = 3 Ados1.type = 1 ADOS1.Open 'Charge 0 ~ 9 données numériques 10x100, données GBR du tableau, chacune 320 octets, 10 numéros 3200byte 'Bgr un point, 10x10 points par nombre, un point trois octets (binaire 8-bits, hexadécimal 00 ~ ff) 'Une ligne de 10 points 30 octets se terminant 00 00 00 00 deux octets de 32 octets, donc un 10x100 est inférieur à une image longue, chaque numéro 10x10 est de 320 octets 'Ceux de plus en plus larges que largement, il n'y a aucun moyen de mettre fin à la marque 0000, il est directement de 300 octets Ce sont les données du BMP 24bit. `` Quant à la tête, il est également très simple, y compris la longueur et la largeur, l'image commence le marquage et donc Ados.loadFromfile (server.mappath ("body.fix")) Ados1.write ados.read (1280) 'Le premier pour Loop, et les quatre nombres correspondants sont extraits du nombre de nombres aléatoires générés à partir de 10x100 Mais le tableau des nombres verticaux pour i = 0 à 3 Ados.Position = (9-zimg (i)) * 320 Ados1.position = i * 320 Ados1.write ados.read (320) suivant 'Effacez les données des ADO qui ont été utilisées et ajustez la nouvelle tête d'image 54 octets du fichier d'en-tête Ados.loadFromFile (server.mappath ("head.fix")) Pos = lenb (ados.read ()) Ados.Positation = pos 'Spécifiez la position POS, vous pouvez ajouter des données graphiques à la position de 54 octets La seconde pour Loop, le nombre de nombres de nombres, des blocs verticaux aux blocs numériques horizontaux La méthode consiste à extraire 4 fois 320 octets pour écrire 30 octets sur des objets ADOS, puis à extraire des données d'image qui changent la deuxième ligne. 30 octets sont dus à l'étiquette d'extrémité avec une ligne de 00 00 en BMP. pour i = 0 à 9 étape 1 pour j = 0 à 3 Ados1.position = i * 32 j * 320 Ados.positation = pos 30 * ji * 120 Ados.write ados1.read (30) suivant suivant Ados.positation = 0 Réponse.binarywrite envoie directement des données d'image au client Response.ContentType = "Image / BMP" Réponse.binarywrite ados.read () Ados.close: définissez les ados = rien Ados1.close: définissez ados1 = rien Fonction finale |