V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cage111
V2EX  ›  程序员

求助, mysql 中的照片如何提取

  •  
  •   cage111 · 2021-02-05 13:41:52 +08:00 · 1886 次点击
    这是一个创建于 1173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    十六进制如图显示
    [url=https://imgchr.com/i/y8WOc6][img]
    里面好像有 utf-8 编码 efbf bdef bfbd,直接提取打不开。

    14 条回复    2021-02-05 15:33:57 +08:00
    wqhui
        1
    wqhui  
       2021-02-05 13:54:44 +08:00
    这有点像二进制流,存进去前怎么处理的,取出来逆向处理一下也变不了图片吗
    ShinChven
        2
    ShinChven  
       2021-02-05 13:54:58 +08:00
    我们是存的 base64,从在相应请求的时候转成二进制。
    当然这样性能很低。
    于是加了一个缓存,文件被第一次读取的时候同时会生成一个缓存文件放在磁盘上(容器内,重建容器即清空)。
    下次再请求这个文件的时候会优先去读缓存。
    cage111
        3
    cage111  
    OP
       2021-02-05 14:08:10 +08:00
    @wqhui 历史版本遗留的数据,没人怎么存的,想试着解析下
    cage111
        4
    cage111  
    OP
       2021-02-05 14:09:01 +08:00
    @wqhui 历史版本遗留的数据,没人知道怎么存的,想试着解析下
    lllllliu
        5
    lllllliu  
       2021-02-05 14:13:15 +08:00
    能丢给我一份二进制么。
    debuggerx
        6
    debuggerx  
       2021-02-05 14:19:14 +08:00
    难道不是 jfif 格式很多软件打不开的问题么……
    Flymachine
        7
    Flymachine  
       2021-02-05 14:21:25 +08:00
    @cage111
    ** 1. 先解析文件头,找找文件类型标识:

    ```
    (以下百度)
    1.JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件结束标识 (2 bytes): $ff, $d9 (EOI)
    2.TGA - 未压缩的前 5 字节 00 00 02 00 00 - RLE 压缩的前 5 字节 00 00 10 00 00
    3.PNG - 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
    4.GIF - 文件头标识 (6 bytes) 47 49 46 38 39(37) 61 G I F 8 9 (7) a
    5.BMP - 文件头标识 (2 bytes) 42 4D B M
    6.PCX - 文件头标识 (1 bytes) 0A
    7.TIFF - 文件头标识 (2 bytes) 4D 4D 或 49 49
    8.ICO - 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20
    9.CUR - 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20
    10.IFF - 文件头标识 (4 bytes) 46 4F 52 4D F O R M
    11.ANI - 文件头标识 (4 bytes) 52 49 46 46 R I F F
    ```
    ** 2. 有符合的标识就说明没做其他操作,提取出来按相应格式处理即可。

    ** 3. 没标识就是二次加工过了。先试试自己加文件头标识,看看能不能还原。不行就要自己去找解码方式了

    *** 1. 如果有原处理程序,可以自己存一张纯色图片,根据编码结果的差异,检索确定解码方式。或者读取里面的图片,来检索确定解码方式

    *** 1. 如果没有原处理程序。那就只能靠规律去猜了。猜测图片的大致内容,通过大色块(比如`2C2C 2C2C`这段),猜测它原本指的是哪种颜色,从而找出解码方式。这就比较麻烦了。
    cage111
        8
    cage111  
    OP
       2021-02-05 14:23:07 +08:00
    debuggerx
        9
    debuggerx  
       2021-02-05 14:25:44 +08:00
    难道不是 jfif 格式很多软件打不开的问题么……
    @debuggerx 只看到 jfif 没看到前面的错误编码,大意了,打搅了。。。
    kiracyan
        10
    kiracyan  
       2021-02-05 14:30:14 +08:00
    这图片从来没人用到吗?
    debuggerx
        11
    debuggerx  
       2021-02-05 14:38:10 +08:00
    看上去是二进制数据被 utf 强转保存 已经被破坏了 没救
    jtnwm
        12
    jtnwm  
       2021-02-05 14:43:05 +08:00 via Android
    锟斤拷
    learningman
        13
    learningman  
       2021-02-05 14:44:43 +08:00
    可以拿来当 CTF 的题(
    lllllliu
        14
    lllllliu  
       2021-02-05 15:33:57 +08:00
    11 楼说的对,utf 强转的已经丢失掉很多东西了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5733 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:25 · PVG 10:25 · LAX 19:25 · JFK 22:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.