เพื่อให้เข้าใจถึงรหัสเหล่านี้ส่วนใหญ่จะเข้าใจวัตถุของข้อมูลไบนารีใน ASP, ADODB.Stream! โปรแกรมนี้ใช้ AdoDB.Stream เป็นหลัก ยังไม่มีเอ็นจิ้นการระบุตัวตนที่ดี ระบุ 4321 ถึง 89910 ดังนั้นรหัสรูปภาพยังคงปลอดภัยกว่า ฉันเห็นวิธีการแคร็กอย่างรุนแรงบนอินเทอร์เน็ต หน้าจะถูกห้ามไม่ให้ส่งจากภายนอก ไฟล์ asp: code.asp ไฟล์ข้อมูล: body.fix, head.fix การใช้งาน: <img src = "code.asp"> - response.buffer = true Numcode ฟังก์ชัน numcode () Response.expires = -1 Response.addheader "Pragma", "No-Cache" Response.addheader "Cache-Clm", "No-Cache" Dim znum, i, j Dim Ados, Ados1 สุ่มจับเวลา สร้างตัวเลขสี่หลักสุ่ม: znum = cint (8999*rnd 1000) ผ่านเซสชัน เซสชัน ("getCode") = znum สำหรับลูปคือการใส่หมายเลขสุ่มลงในอาร์เรย์ของ 3 การตั้งถิ่นฐาน 3 ซึ่งสะดวกสำหรับการให้การแปลงอาร์เรย์ที่ตามมา Dim Zimg (3), NSTR NSTR = CSTR (ZNUM) สำหรับ i = 0 ถึง 3 zimg (i) = cint (mid (nstr, i 1,1))))) ต่อไป สลัว pos 'กำหนดวัตถุไบนารี AdoDB.Stream สองรายการสำหรับการใช้การทำงานของข้อมูลภาพ: ตั้งค่า ADOS = Server.CreateObject ("ADODB.STREAM")) Ados.Mode = 3 Ados.type = 1 Ados.open ตั้งค่า ados1 = server.createObject ("adodb.stream") ADOS1.MODE = 3 Ados1.type = 1 ADOS1.OPEN 'โหลด 0 ~ 9 ข้อมูลดิจิตอล 10x100, ข้อมูลอาร์เรย์ GBR, แต่ละ 320 ไบต์, 10 ตัวเลข 3200BYTE 'BGR หนึ่งจุด 10x10 คะแนนหนึ่งจุดสามไบต์ (ไบนารี 8 บิต, เฮกซาเด็ค 00 00 ~ ff) 'บรรทัด 10 คะแนน 30 ไบต์สิ้นสุด 00 00 00 สอง -byte 32 ไบต์ดังนั้น 10x100 น้อยกว่าภาพยาวแต่ละหมายเลข 10x10 คือ 320 ไบต์ 'ผู้ที่เติบโตมากกว่ากว้างไม่มีวิธีที่จะจบ Mark 0000 มันคือ 300 ไบต์โดยตรง นี่คือข้อมูลของ BMP 24 บิต 'สำหรับหัวมันก็ง่ายมากรวมถึงความยาวและความกว้างการเริ่มทำเครื่องหมายและอื่น ๆ Ados.loadFromFile (Server.Mappath ("body.fix"))) ADOS1.WRITE ADOS.READ (1280) 'ครั้งแรกสำหรับลูปและตัวเลขสี่ตัวที่สอดคล้องกันจะถูกสกัดจากจำนวนตัวเลขสุ่มที่สร้างจาก 10x100 แต่อาร์เรย์หมายเลขแนวตั้ง สำหรับ i = 0 ถึง 3 Ados.Position = (9-zimg (i))*320 Ados1.position = i*320 ADOS1.WRITE ADOS.READ (320) ต่อไป 'ล้างข้อมูลของ ADO ที่ใช้แล้วและปรับภาพหัวใหม่ 54 ไบต์ของไฟล์ส่วนหัวใหม่ Ados.loadFromFile (Server.Mappath ("head.fix")))))))))))))))) pos = lenb (ados.read ()) Ados.Positation = POS 'ระบุตำแหน่ง POS คุณสามารถเพิ่มข้อมูลกราฟิกลงในตำแหน่ง 54 ไบต์ ที่สองสำหรับลูปจำนวนตัวเลขของตัวเลขจากบล็อกแนวตั้งไปจนถึงบล็อกตัวเลขแนวนอน วิธีนี้คือการแยก 4 ครั้ง 320 ไบต์เพื่อเขียน 30 ไบต์ไปยังวัตถุ ADOS จากนั้นแยกข้อมูลภาพที่เลื่อนบรรทัดที่สอง 30 ไบต์เกิดจากฉลากสุดท้ายที่มีแถว 00 00 ใน BMP สำหรับ i = 0 ถึง 9 ขั้นตอนที่ 1 สำหรับ j = 0 ถึง 3 Ados1.position = i*32 J*320 Ados.Positation = pos 30*ji*120 ADOS.WRITE ADOS1.READ (30) ต่อไป ต่อไป Ados.Positation = 0 Response.BinaryWrite ส่งข้อมูลรูปภาพโดยตรงไปยังไคลเอนต์ Response.contentType = "image/bmp" Response.binaryWrite Ados.read () Ados.Close: ตั้งค่า ADOS = ไม่มีอะไร ADOS1.CLOSE: SET ADOS1 = ไม่มีอะไร ฟังก์ชันสิ้นสุด |