安卓相册中有一个隐藏目录,里面有一个thumbdata后缀的文件,经常会非常大(几个G),这就是类似于电脑的thumb.db一样是图片的缩略图缓存文件,用于加速相册等应用显示的。
如果相册里面的照片删除后,这个缓存里面的是不会自动清理的,所以经常被利用来恢复照片,缺点是缩略图,太小了。
这个缓存数据结构是块的,具体也不解释了,直接贴代码好了:
import os from struct import * currpath = "D:\\recovery" filename = ".thumbdata4--1967290299" offset=0 file_size=os.path.getsize(filename) f=open(filename, "rb") while(offset<file_size): f.seek(offset) tmp=f.read(10000) if tmp[0]=="\x01": #print offset #normal mode and xiaomi mode if tmp[21]!="\xFF": #normal mode tmp_magic_code=tmp[1:9] tmp_jpg_size=tmp[9:13] #magic_code=unpack("i",tmp_magic_code[::-1]) jpg_size=unpack("I",tmp_jpg_size[::-1]) #print jpg_size f2=open(currpath + "\\" + str(offset/10000) + ".jpg","wb") f.seek(offset + 13) f2.write(f.read(int(jpg_size[0]))) #print "extracting " + str(offset/10000) + ".jpg" else: tmp_magic_code = tmp[1:17] tmp_jpg_size = tmp[17:21] jpg_size=unpack("I",tmp_jpg_size[::-1]) #print jpg_siz f2 = open(currpath + "\\" + str(offset / 10000) + ".jpg", "wb") f.seek(offset + 21) f2.write(f.read(int(jpg_size[0]))) #print "extracting " + str(offset / 10000) + ".jpg" offset+=10000 print "All Done!"
有些人在程序嵌入一个webbrowser,然后里面打开网页,其中的声音不知道怎么屏蔽。
其实很简单,通过API HOOK干掉以下几个函数就行:
DirectSoundCreate
waveOutWrite
midiStreamOpen
API HOOK的类推荐使用Detours,微软官方推荐的库。HOOK掉,然后直接返回一个0即可。
据说WIN7下不可用,谁测试了给我反馈一下,继续跟进研究。
...
最近工作中要用到截屏,都知道使用BitBlt截取到的数据是BMP编码,一个1024x*的桌面就要2M多,转换为jpg编码大小是100K左右,gif根据quality也会很小。
但是网上找到的转码都会生成一个临时文件,比如将BMP保存成文件后,建立编码器然后对文件编码,还有的就是编码器编码完后直接就生成了文件,这个明显不符合我们的需求,我们需要的就是内存中截取,内存中转换。
经过一上午的资料查询,搞定了这个玩意。大致流程是先BitBlt到内存BMP编码的数据,然后转换为数据流(Stream),建立一个编码器直接对流进行编码,最后将流转换为buffer,最后生成的buffer可以直接保存成jpg后缀的文件,直接打开即可查看。
...
网上找到的这份代码,添加IE的可信站点和受限站点有两种方法,一种是调用IE COM的某某,没细看,再了就是这个方法,直接写注册表。。。
不多说了 ,直接上代码:
/************************************************************************/
...
由于工作关系,最近转投VC的开发了。。。当然,还是要从最近本做起的。最近跟网络这块接触较多,写了两段小函数。
获取本机MAC,网上的代码都写烂了,但是异常处理不太好,比如多网卡等情况,于是自己写了一段简单明了靠谱的代码。
具体流程为先获取自己程序所在的网络的网络名,然后根据网络名获取IP,最后sendarp得到MAC。思路清晰。。。。
代码如下:
CString GetLocalIP()
...