|
作者: Muddy [muddy] 论坛用户 | 登录 |
在病毒的传播中,有些是利用MIME漏洞的,但是MIME漏洞需要将可执行文件转化为base64编码的文本文件,有谁知道base64码的构成,最好有直接进行转换的程序。 |
地主 发表时间: 07/23 21:18 |
回复: ricky [ricky] 版主 | 登录 |
BASE64就是把一个字节8位的编码,搞成7位,最高为填0,我给你贴一段源码吧 void CBase64Code::OnOK() { BYTE Base64Code[64]; CString b64= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; FILE *S_File,*D_File; BYTE fbuf[3],buf[4],dbuf[4]; memcpy(Base64Code,b64,64); int ret; int count = 0; S_File = fopen(m_SFileName,"rb"); D_File = fopen(m_DFileName,"wb"); do{ fbuf[0] = 0; fbuf[1] = 0; fbuf[2] = 0; ret = fread(fbuf,1,3,S_File); buf[0] = fbuf[0]>>2; buf[1] = ((fbuf[0]&0x03)<<4)|(fbuf[1]>>4); buf[2] = ((fbuf[1]&0x0f)<<2)|(fbuf[2]>>6); buf[3] = (fbuf[2]&0x3f); dbuf[0] = *(Base64Code+buf[0]); dbuf[1] = *(Base64Code+buf[1]); dbuf[2] = *(Base64Code+buf[2]); dbuf[3] = *(Base64Code+buf[3]); switch(ret) { case 1: dbuf[2] = '='; case 2: dbuf[3] = '='; case 3: fwrite(dbuf,1,4,D_File); case 0: break; } count++; if (count==19) { count = 0; dbuf[0] = 0x0d; dbuf[1] = 0x0a; fwrite(dbuf,1,2,D_File); } }while (ret == 3); dbuf[0] = 0x0d; dbuf[1] = 0x0a; fwrite(dbuf,1,2,D_File); fclose(S_File); fclose(D_File); AfxMessageBox("转换完成"); CDialog::OnOK(); } |
B1层 发表时间: 07/24 17:31 |
回复: ricky [ricky] 版主 | 登录 |
这是我写的一段程序,你随便改改就可以用了 |
B2层 发表时间: 07/24 21:32 |
回复: Muddy [muddy] 论坛用户 | 登录 |
楼上的说"BASE64就是把一个字节8位的编码,搞成7位,最高为填0",可是这样不就有128个代码了? 就我所知,Base64码只有64个啊~,是不是应该将8位变成6位,将三个字节变为四个最高两位为零的字节才对吧??? 不过你的代码的意思我看懂了,比我的要简单清楚多了,谢谢了. |
B3层 发表时间: 07/27 10:28 |
回复: ricky [ricky] 版主 | 登录 |
哈哈,凭着记忆写的,以程序为准,不好意思,是6位,就是串表里的64个可显示代码 |
B4层 发表时间: 07/30 08:47 |
回复: Muddy [muddy] 论坛用户 | 登录 |
没关系啦,代码都写出来了,出现点打字错误没什么。再次谢谢了。 |
B5层 发表时间: 07/30 18:38 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号