`
ybbkd2
  • 浏览: 33156 次
社区版块
存档分类
最新评论

java 提取微信、手机QQ 等 diskcache 目录文件中的JPG图片数据

    博客分类:
  • Java
 
阅读更多
java 提取微信、手机QQ 等 diskcache 目录文件中的缩略图 代码。



import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

/**
 *
 * @author chenping
 */
public class test {

    public static void main(String[] args) throws Exception {
        String file = "D:\\documentation\\bak\\xiaolajiao\\tencent\\MicroMsg\\f8745e0b163c24aed78341bab9ffa4f4\\sfs\\sns.block.00000";
        byte tag[] = {(byte) 0xFF, (byte) 0xD8, (byte) 0xFF, (byte) 0xE0, (byte) 0x00, (byte) 0x10, (byte) 0x4A, (byte) 0x46, (byte) 0x49, (byte) 0x46};

        File cache = new File(file);
        FileInputStream fis = new FileInputStream(cache);
        byte buf[] = new byte[tag.length];

        byte ct[] = covertToByteArray(fis);

        int start = 0, end = 0;

        for (int i = 0; i < ct.length; i++) {
            boolean t = false;
            try {
                System.arraycopy(ct, i, buf, 0, tag.length);

            } catch (Exception ex) {
                t = true;
            }

            if (t || Arrays.equals(buf, tag)) {
                if (t) {
                    end = ct.length - 1;
                } else {
                    end = i;
                }

                // save to file
                int len = end - start;
                if (len != 0) {
                    System.out.println("len=" + len);
                    byte data[] = new byte[len];
                    System.arraycopy(ct, start, data, 0, len);
                    System.out.println("start: "  + start+ " , end: " + end + " , len=" + len);
                    saveToFile(data, i);
                    start = end;
                }
                
            }

            if (t) {
                break;
            }
        }

    }

    private static byte[] covertToByteArray(InputStream stream) throws IOException {
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        byte[] buff = new byte[1024];
        int rc = -1;
        while ((rc = stream.read(buff, 0, 1024)) != -1) {
            swapStream.write(buff, 0, rc);
        }
        byte[] in2b = swapStream.toByteArray();
        return in2b;
    }

    private static void saveToFile(byte[] ct, int idx) throws IOException {
        File f = new File("d:/cac_sns_5/img_" + idx + ".jpg");
        if (!f.exists()) {
            f.createNewFile();
        }
        FileOutputStream fos = new FileOutputStream(f);
        fos.write(ct);
        fos.close();
    }

}

分享到:
评论

相关推荐

    微信DAT文件转图片工具

    总的来说,这个“微信DAT文件转图片工具”为那些想要查看微信缓存中图片的用户提供了便利,特别是当他们无法直接在微信应用中找到或打开这些图片时。通过JAVA的强大功能,它能够解析和还原隐藏在DAT文件中的图像,...

    Java解密微信小程序手机号的方法

    Java解密微信小程序手机号的方法 本文主要介绍了Java解密微信小程序手机号的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 AES解密工具类 Java解密微信小程序手机号的方法主要通过创建AES解密工具类...

    基于JAVA的微信接口开发—语音识别源码

    在本文中,我们将深入探讨如何基于Java实现微信接口的语音识别功能。首先,我们要了解语音识别的基本原理,然后探讨微信接口的使用,接着是Java语言在处理此任务中的角色,最后我们将简要介绍提供的源码内容。 语音...

    Java企业微信群机器人发送消息

    将企业微信群机器人发送 文字、图片、MarkDown、文件消息 封装成了一个工具类: 1.可以用于自建的群,即不是使用企业微信api创建的群,不需要群id; 2.主要使用 okhttp3 调用机器人api和上传文件到临时素材api; 3.有...

    java实现微信H5支付方法详解

    本篇文章主要介绍了java实现微信H5支付方法详解,非常具有实用价值,需要的朋友可以参考下

    java模拟微信浏览器访问.rar

    这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...

    java 抓取微信公众号文章

    java抓取微信公众号最近10篇文章,基于微信搜狗搜索实现。java源码.git 仓库 http://git.oschina.net/hcxy/WechatSpider

    java实现上传网络图片到微信临时素材

    微信临时素材是指微信服务器上的一种临时存储形式,用户可以上传图片、视频、音频等多种类型的文件到微信临时素材中。微信临时素材的生命周期为 3 天,超出此时间后,微信服务器将自动删除临时素材。 知识点 2:...

    微信消息通知例子java springboot微信消息通知例子java springboot微信消息通知例子java sprin

    微信消息通知例子java springboot微信消息通知例子java springboot微信消息通知例子java springboot

    java springmvc实现微信运动数据解密

    ### Java SpringMVC 实现微信运动数据解密 在当今社会,随着移动互联网技术的不断发展,各类应用程序(App)及小程序成为了人们生活中不可或缺的一部分。其中,微信作为一个集社交、支付、生活服务等功能于一体的...

    Java企业微信机器人实现.pdf

    Java企业微信机器人实现主要涉及到如何通过编程方式与企业微信的群机器人进行交互,发送不同类型的交互消息。在Java代码中,我们看到有三个关键的实体类:`GroupRobotMsgType`、`NewArticle`和`...

    java实现微信退款

    java实现微信支付的退款,根据微信用户的openid和订单号进行退款

    Java实现微信公众号获取临时二维码功能示例

    主要介绍了Java实现微信公众号获取临时二维码功能,结合实例形式分析了java调用微信公众号接口实现临时二维码生成功能相关操作技巧,需要的朋友可以参考下

    java实现微信公众号发送模版消息

    以订单推送为例,主要为大家详细介绍了java实现微信公众号发送模版消息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java开发微信支付源码

    2. **商户平台配置**:在使用微信支付前,开发者需要在微信商户平台上注册并获取必要的认证,如AppID、商户号、支付密钥等,这些信息在源码中通常以配置文件的形式存在。 3. **签名机制**:微信支付要求所有请求都...

    java获取微信用户信息

    在Java开发中,获取微信用户信息通常涉及到微信官方提供的OAuth2.0授权协议。OAuth2.0是一个开放标准,允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供者上的信息。这种方式允许用户授权第三...

    微信dat文件转换成jpg格式图片 工具

    微信聊天记录中包含了大量的图像、文字、音频等信息,这些数据通常存储在`.dat`文件中,这是一种由微信客户端自动生成的二进制文件。`.dat`文件并不是标准的图片格式,因此无法直接预览或打开。为了查看或管理这些...

    亲测可用exe小工具-电脑版微信dat文件批量转化为jpg图片

    标题中的“亲测可用exe小工具-电脑版微信dat文件批量转化为jpg图片”指的是一个用于将微信聊天记录中dat格式的图片转换成jpg格式的小型应用程序。在微信的聊天记录中,图片通常以dat文件的形式存储,这些文件是经过...

    手机java版微信下载压缩包

    【标题】"手机Java版微信下载压缩包"指的是专为非智能手机设计的微信应用程序的Java版本,这种版本的微信能够适应那些不支持最新操作系统,如Android或iOS的老款手机。这些设备通常运行着Java ME(Java Micro ...

    java 微信发送消息

    java 微信发送消息 http://ip地址/ajie-wechat/checkWechat

Global site tag (gtag.js) - Google Analytics