12306 of the dynamic verification code is changed to static, and 12306 of the verification code is static.
I thought that the dynamic verification code of 12306 was very powerful this time, and I could not do anything about the ticket flushing software. After reading it, I found it was not very complicated. It is estimated that the ticket flushing software will come back in less than two days, it is difficult to curb the scalability of the ticket.
The dynamic verification code for this change uses the GIF format output on the client. To obtain this gif file, splice the images of the Dynamic Graph together to obtain the complete static verification code, the next step is to identify the static verification code.
For example, this dynamic verification code
Its static effect is
The following is the handwritten code, which is a bit confusing.
123456789101112131415161718192021222324252627282930 |
Image imgGif = Image.FromFile(Application.StartupPath + @"\getPassCodeNew.gif" ); FrameDimension ImgFrmDim = new FrameDimension(imgGif.FrameDimensionsList[0]); System.Drawing.Bitmap bp = new Bitmap(imgGif.Size.Width, imgGif.Size.Height); int nFrameCount = imgGif.GetFrameCount(ImgFrmDim); for ( int i = 0; i < nFrameCount; i++) { imgGif.SelectActiveFrame(ImgFrmDim, i); System.Drawing.Bitmap nbp = new Bitmap(imgGif); Color dd = nbp.GetPixel(1, 1); if (i == 0) { for ( int x = 0; x < nbp.Width; x++) { for ( int y = 0; y < nbp.Height; y++) { bp.SetPixel(x, y, dd); } } } for ( int x = 0; x < nbp.Width; x++) { for ( int y = 0; y < nbp.Height; y++) { Color c = nbp.GetPixel(x, y); if (c == dd) continue ; bp.SetPixel(x, y, c); } } } bp.Save(Application.StartupPath + @"\Frame.jpg" , ImageFormat.Bmp); |