ImageVerifierCode 换一换
格式:DOC , 页数:31 ,大小:448.50KB ,
资源ID:3081644      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3081644.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于DCT的JSteg隐写及分析.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于DCT的JSteg隐写及分析.doc

1、 基于DCT的JSteg隐写及分析 一、摘要 1 二、引言 3 三、JSteg隐写 4 3.1 JSteg简介 4 3.2 JSteg算法 4 3.3 JSteg隐写过程 6 四、JSteg隐写检测 7 4.1基于小波特征函数统计矩的隐写分析 7 4.2基于支持向量机的多特征盲检测算法 9 五、总结 10 【参考文献】 10 附录 11 JSteg隐写代码(matlab) 11 一、摘要 JPEG是互联网上最为常见的一种图像格式,而DCT变换是JPEG压缩采用的重要技术之一,在DCT变换系数(DCT域)上隐藏信息是

2、常见的数字隐写方式。DCT(Discrete Cosine Transform,离散余弦变换)是一种实数域变换,其变换核为实数余弦函数。作为DCT变换的方法之一,JSteg是一种采用JPEG图像作为载体的隐写软件,其算法实际上就是将空域LSB替换隐写应用到JPEG图像上。主要思想是: 将一个二进制位的隐秘信息嵌入到量化后的DCT系数的LSB上,但对原始值为.1、0、1的DCT系数例外,提取隐秘信息时,只需将载密图像中不等于.1、O、l的量化DCT系数的LSB逐一取出即可。JSteg算法虽然简单易用,但由于其会引起系数直方图出现值对区域相等的特点,用卡方分析可以很容易的检测到秘密信息的

3、存在,因此其安全性较差。 关键词:JPEG DCT JSteg 实数余弦函数 Based on the analysis of DCT steganography Abstract JPEG is the Internet's most common image format, JPEG compression and the DCT is one of the key technology used in the DCT coefficients (DCT domain) on the hidden information is a common digital stegan

4、ography way. DCT (Discrete Cosine Transform, Discrete Cosine Transform) is a real domain transform, which is a real number cosine transform kernel functions. As one method of DCT, JSteg a JPEG image using steganography software as a carrier, the algorithm will actually replace airspace LSB steganogr

5、aphy applied to JPEG images. The main idea is: to embed a bit of secret information to the LSB of quantized DCT coefficients, but the original value. 1,0,1 DCT coefficients exception when extracting hidden information, simply stego image is not equal. 1, LSB O, l quantized DCT coefficients can be ta

6、ken out one by one. JSteg algorithm is simple and easy to use, but because it will cause the value of the coefficient equal to the regional characteristics of the histogram appears chi-square analysis can easily detect the presence of secret information, so the security is poor. Keywords: JPEG

7、 DCT JSteg real cosine function 二、引言 作为信息安全的分支,隐写技术主要是针对图片等外在特征较为明显的载体写入想要隐藏的信息,用以达到信息隐藏的目的。而JPEG是互联网上最为常见的一种图像格式,而DCT变换是JPEG压缩采用的重要技术之一,在DCT变换系数(DCT域)上隐藏信息是常见的数字隐写方式。DCT(Discrete Cosine Transform,离散余弦变换)是一种实数域变换,其变换核为实数余弦函数。对一幅图像进行离散余弦变换后,许多有关图像的重要可视信息都集中在DTC变换的一小部分系数中。因此,DTC是有损图像

8、压缩JPEG的核心,同时也是所谓的 “变换域信息隐藏算法”的主要“变换域”之一。因此图像处理运用二维离散余弦变换,所以直接介绍二维DCT变换。JSteg是最早在JPEG图像中进行隐写的方法之一,由于该方法使得系数直方图有明显的改变,随后即出现了F3隐写,F4隐写,F5隐写,OutGuess隐写和MB隐写等等。本文对JSteg的隐写做着重的分析和研究。 三、JSteg隐写 3.1 JSteg简介 ISO和前CCITT于1986年底成立“联合图像专家组”,研究静止图像压缩算法的标准化,至1992年正式完成了用于各种分辨率和格式的连续色调图像的ISO/IEC.10918标准(ITU.

9、TT.81建议),简称JPEG标准。JPEG压缩一般要经过四个步骤:颜色模式转换及采样、DCT、量化、编码,其中,DCT作为其中的一部分,是其重要的技术之一。它又包含JSteg隐写,F3隐写,F4隐写,F5隐写等等,JSteg是最早用于JPEG图像的隐写工具,该算法是由D。Upam提出的,是指将空域上LSB替换隐写到JPEG图像上。 3.2 JSteg算法 JSteg的算法,或称其主要思想是将秘密消息嵌入在量化后的DcT系数的最低比特位上,但对原始值为O、1的DCT系数不进行嵌入。提取秘密消息时,只需将载密图像中不等于0、l的量化DcT系数的LSB取出即可。如图1.1所示:

10、 图 1.1 秘密消息嵌入位置的选择方法有顺序嵌入法和随机间隔法。顺序嵌入的JSteg算法简单,易实现,但是有严重的安全问题,这是因为载体图像中修改了的部分和未修改的部分,具有不同的统计特性,很容易被检测出含有秘密消息。随机间隔法,首先要生成一个伪随机序列作为嵌入间隔,调整伪随机序列的均值,可以使得秘密消息随机地散布在整幅图像中,进而提高了安全性。其具体算法步骤如下: (1) 选择掩护图像,并将图像区分成不重迭的8*8区块 (2) 将每个区块利用离散余弦转换成频率域系数 (3) 利用用户选定的量化表对频率域进行量化

11、 (4) 对秘密信息进行Z字性扫描,并对除了0和1之外的DCT系数的最低位加以替换 (5) 进行熵编码,产生JPEG隐写图像 或者这样说,定义H为载体图像中DCT系数的数目,定义h(X=x)为载体图像中DCT系数等于x的数目。由算法的描述可知,两种Jsteg算法的最大容量均为H-h(x=0)-h(x=1)比特。定义h(Y=y)为载密图像中DCT系数等于y的数目。由于嵌入的秘密信息一般为密文,其O、l比特出现的概率近似相等,都为O.5左右,那么嵌入达到最大容量时,有 h(Y=2)=0.5h(X=3)=h(Y=3) 也就是说载密图像中DCT系

12、数为2的数目约等于DCT系数为3的数目,同理DCT系数为2i(i !=0)的数目与DCT系数为2i+1(i !=0)的数目也是大约相等的,所以载密图像的DcT系数直方图中会出现值对现象,与载体图像的直方图形成了明显的差异。利用这种特性,就可以很容易地检测出秘密消息的存在。 3.3 JSteg隐写过程 JSteg的具体嵌入过程如下: (1)部分解码JPEG图像,得到二进制存储的AC系数,判断该AC系数是否等于1或0,若等于则跳过该AC系数,否则,执行下一步。 (2)判断二进制存储的AC系数的LSB是否与要嵌入的秘密信息比特相同,若相同,则不对其进行修改,否则执行下一步。

13、 (3)用秘密信息比特替换二进制存储的AC系数的LSB,将修改后的AC系数重新编码得到隐秘JPEG图像。 JSteg的提取过程如下: 部分解码JPEG图像,得到二进制存储的AC系数,取出不等于1和0的AC系数的LSB,排列后组成秘密信息。 在JSteg中,关于DCT系数中0和1的处理 (1)DCT系数中“0”的比例最大(一般可达到60%以上,取决于图像质量和压缩因子),压缩编码是利用大量出现连零实现的,如果改变DCT系数中“0”的话,不能很好的实现压缩。 (2)DCT系数中的“1”若变成“0”,由于接受端无法区分未使用的“0”和嵌入消息后得到的“0”,从而无

14、法实现秘密信息的提取。 四、JSteg隐写检测 通用隐写分析算法的关键在于寻找对隐秘信息嵌入敏感的统计特征,设计合适的判别方案来区分载体图像和载密图像。JPEG图像具有两个基本统计特性:直方图特性和分块效应,大多针对JPEG图像的隐写分析算法都是利用这两个特性来设计的。研究者已提出了几种较有效的基于JPEG图像的通用隐写分析技术算法,下面我们主要研究讨论两种。 4.1基于小波特征函数统计矩的隐写分析 基于小波特征函数统计矩的隐写分析方法f62】是由Shi等提出的,是一种通用型隐写分析方法,它将小波子带的特征函数统计矩作为隐写分析的特征。该隐写分析系统涉及到两个主要问题: (

15、1)特征向量的确定。 首先对待检测图像进行两层Haar小波变换,包括图像本身在内(这里看做子带LLo), 将获得13个子带:然后计算每个子带对应直方图的DFT,即得到了特征函数。最后根据下列式子得到一阶、二阶和三阶矩: 其中,表示第j个频率成分的幅值,n取1,2,3。这样就构建了一个39维的特 征向量。 (2)分类器的选择。 Bayes分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。由于嵌入的隐秘信息一般服从高斯分布或近似于高斯分布,因此选用B

16、ayes分类器。 用表示第i幅图像的39维特征向量,分别表示原始图像集和隐秘图像集,其均值向量和协方差矩阵分别由和表示, Bayes分类描述如下: A最大后验概率 其中,N表示标准高斯分布 B.决策函数 大量实验证明,基于小波特征函数统计矩的隐写分析方法很有效,检测率很高。 4.2基于支持向量机的多特征盲检测算法 我们知道,现在研究的隐写分析都是唯载密攻击,即载体图像未知的检测,所以我们要构造一近似于载体图像的图像。由于JPEG图像在进行压缩时,其DCT变换和量化都是在sxs的子块上进行的,所以块与块之间存在一定的不连续性,即所谓的分块效应,

17、枝准图像的获得:首先将载密图像J1解压到空域,然后在每个方向上裁剪掉4个像素点,最后用与原图像相同的的量化矩阵重新压缩图像得到图像如J2,如图3.1所示,J2近似为原载体图像,称为校准图像。 图 3.1 标准图像的产生 定义图像的特征函数为F(如直方图函数,共生矩阵函数等),则特征值f由下式产生: 其中Ll范数定义为一个向量(或矩阵)所有元素的绝对值总和。 当然,最简单的还是基于JSteg的卡方检测,因为JSteg的隐藏本身就是和LSB隐写的构造差不多,只不过隐写的方法不一样而已,既然LSB隐写可以用

18、卡方检测,JSteg当然也可以,因为在前面提到过,所以在此就不再赘述。 五、总结 JSteg隐写算法是一种较为简单的算法,其主要是基于DCT系数的变换进行数字隐写,具有简单,易于实现,且其隐藏容量相当客观,其相对容量(嵌入容量与文件自身的大小比值)与空域LSB方法相当,很适合初学者使用。不过,对于其检测而言,由于其DCT系数在隐写前后统计直方图的异常,可以很容易的被卡方攻击方法检测出秘密信息的存在,因此,安全不具有一定的保障性,对于初学者而言,因为不会用其隐藏较为秘密的信息,故仍然可以采用JSteg来对DCT隐写来进行学习,掌握了这一种方法后,就可以向更高级的隐写方法跳转学习。

19、 【参考文献】 [1]王丽娜,张焕国.信息隐藏技术与应用.武汉:武汉大学出版社,2003,1-13 [2]Jan J K,Tseng Y M.On the security of image encryption method.Information Processing Letters,1996,60(2):261—265 [3] 李健乾. 图像隐藏信息检测[D]. 中山大学,2005 [4] 谢剑锋. 信息隐藏的算法研究[D]. 复旦大学,2004 [5] Bender W, Gruhl D, Morimoto N, et al. Techniques for

20、data hiding[J]. IBM System Journal, 1996, 35 (3&4): 313-336 [6] 王朔中,张新鹏,张开文. 数字密写和密写分析: 互联网时代的信息战技术[M]. 北京: 清华大学出版社, 2005 [7] 吴秋新,杨义先.信息隐藏技术——隐写术与数字水印[M].人民邮电出版社,2001,9:3-8 [8]王炳锡,陈琦,邓峰森.数字水印技术[M〕.西安电子科技大学出版社,2003. [9]Stefan Katzenbeisser,Fabien A..P. Peticolas编.吴秋新,钮心忻,杨义先,罗守山,杨晓兵,译.信息隐藏技术)

21、隐写术与数字水印=Ml.北京:人民邮电出版社,2001. [10]丁玮,齐东旭.数字图像变换及信息隐藏与伪装技术IJ].计算机学报,1998,21(9):839~843 附录 JSteg隐写代码(matlab) clc clear all;% clear all variables from previous sessions close all; covername = input('Enter image file name with extension: ', 's'); messagename = input('Enter message image

22、 file name with extension: ', 's'); cover = imread(covername); sz = size(cover); rows = sz(1,1); cols = sz(1,2); colors = max(max(cover)); %r=1; %for i=1:rows % for j=1:3:cols % rgb(r,1)=cover(i,j); % rgb(r,2)=cover(i,j+1); % rgb(r,3)=cov

23、er(i,j+2); % r=r+1; % end %end %gray=rgb2gray(rgb); %cover=gray; fd = fopen (messagename, 'r'); message = fgetl(fd); messagelength = length(message); figure(1), imshow(cover); title('Original Image (Cover Image)'); %disp(message); %cover=double(cover); %message=

24、double(message); message = uint8(message); coverzero = cover; %disp(coverzero); %coverzero=imread('GrayScale.bmp'); quant_multiple = 1; blocksize = 8; DCT_quantizer = ... [ 16 11 10 16 24 40 51 61; ... 12 12 14 19 26 58 60 55

25、 ... 14 13 16 24 40 57 69 56; ... 14 17 22 29 51 87 80 62; ... 18 22 37 56 68 109 103 77; ... 24 35 55 64 81 104 113 92; ... 49 64 78 87 103 121 120 101; ... 72 92 95 98 112 100 103 99 ]; %figure(1) %image(coverzero) figure(2);imsh

26、ow(coverzero); %colormap(map) title('Original image'); %figure(2) %coverzero = coverzero - ceil(colors/2); %figure(2);imshow(coverzero); pad_cols = (1 - (cols/blocksize - floor(cols/blocksize))) * blocksize; if pad_cols == blocksize, pad_cols = 0; end pad_rows = (1 - (rows/blocksize

27、 floor(rows/blocksize))) * blocksize; if pad_rows == blocksize, pad_rows = 0; end for extra_cols = 1:pad_cols coverzero(1:rows, cols+extra_cols) = coverzero(1:rows, cols); end cols = cols + pad_cols; % coverzero is now pad_cols wider for extra_rows = 1:pad_rows coverzero(row

28、s+extra_rows, 1:cols) = coverzero(rows, 1:cols); end rows = rows + pad_rows; % coverzero is now pad_rows taller for row = 1: blocksize: rows for col = 1: blocksize: cols DCT_matrix = coverzero(row: row + blocksize-1, col: col + blocksize-1); DCT_matrix = DCT2(DCT

29、matrix); % quantize it (levels stored in DCT_quantizer matrix): %DCT_matrix = floor (DCT_matrix ... % ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple) + 0.5); DCT_matrix = round(DCT_matrix ... ./ (DCT_quantizer(1:blocksize, 1:blocksize) * qu

30、ant_multiple)); %DCT_matrix=round(DCT_matrix); % place it into the compressed-image matrix: jpeg_img(row: row + blocksize-1, col: col + blocksize-1) = DCT_matrix; end end figure(3);hist(jpeg_img); figure(4);imshow(jpeg_img); bitlength=1; %messagebit=zeros(messagelengt

31、h*8); for i=1:messagelength %imbed=7; for imbed=1:8 messageshift=bitshift(message(i),8-imbed); showmess=uint8(messageshift); showmess=bitshift(showmess,-7); messagebit(bitlength)=showmess; bitlength=bitlength+1; %coverindex = coverindex+1; end end %embedding i=1; fo

32、r row=1:rows for col=1:cols x=jpeg_img(row,col); if (x~=0) && (x~=1) r=mod(x,2); if r==0 % if messagebit(i)==1 x=x+1; end else if

33、messagebit(i)==0 x=x-1; end end i=i+1; end jpeg_img(row,col)=x; if i==bitlength break; end end if i==bitlength

34、 break; end end figure(5);hist(jpeg_img); % Reconstructing image recon_img = coverzero - coverzero; % zero the matrix for the reconstructed image for row = 1: blocksize: rows for col = 1: blocksize: cols IDCT_matrix = jpeg_img(row: row + blocksiz

35、e-1, col: col + blocksize-1); %IDCT_matrix = floor(idct2(IDCT_matrix .* ((DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple))-0.5)); %IDCT_matrix = floor(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple))); IDCT_matrix = round(idct2(IDCT_matr

36、ix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple))); recon_img(row: row + blocksize-1, col: col + blocksize-1) = IDCT_matrix; end end %recon_img = recon_img + ceil(colors/2); %coverzero = coverzero + ceil(colors/2); % Clip off padded rows and columns rows = ro

37、ws - pad_rows; cols = cols - pad_cols; recon_img = recon_img(1:rows, 1:cols); figure(6);imshow(recon_img); %disp(recon_img); %recon_img = recon_img - ceil(colors/2); pad_cols = (1 - (cols/blocksize - floor(cols/blocksize))) * blocksize; if pad_cols == blocksize, pad_cols = 0; end

38、 pad_rows = (1 - (rows/blocksize - floor(rows/blocksize))) * blocksize; if pad_rows == blocksize, pad_rows = 0; end for extra_cols = 1:pad_cols recon_img(1:rows, cols+extra_cols) = recon_img(1:rows, cols); end cols = cols + pad_cols; % coverzero is now pad_cols wider for extra_rows

39、 1:pad_rows recon_img(rows+extra_rows, 1:cols) = recon_img(rows, 1:cols); end rows = rows + pad_rows; % coverzero is now pad_rows taller jpeg_img=jpeg_img-jpeg_img; for row = 1: blocksize: rows for col = 1: blocksize: cols DCT_matrix = recon_img(row: row + bloc

40、ksize-1, col: col + blocksize-1); DCT_matrix = DCT2(DCT_matrix); % quantize it (levels stored in DCT_quantizer matrix): %DCT_matrix = floor (DCT_matrix ... % ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple) + 0.5); DCT_matrix = round (DCT_matrix

41、 ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple)); %DCT_matrix=round(DCT_matrix); % place it into the compressed-image matrix: jpeg_img(row: row + blocksize-1, col: col + blocksize-1) = DCT_matrix; %disp(jpeg_img(row: row + blocksize-1, col: col +

42、 blocksize-1)); end end stego=jpeg_img; %stego = uint8(jpeg_img); %stego = int8(jpeg_img); %disp(stego(1:8,1:8)); %stego = uint8(jpeg_img); %disp(stego(1:8,1:8)); stegoindex=1; imbed=1; messagechar=0; messageindex=1; %for i=1:(messagelength*8) for row=1:rows for

43、col=1:cols stegomessage = stego(row,col); if (stegomessage~=0)&&(stegomessage~=1) r=mod(stegomessage,2); if (r==0) showmess=0; else showmess=1; end showmess=uint8(showmess); %showmess=bitshift(stegom

44、essage,7); showmess=bitshift(showmess,(imbed-1)); messagechar=uint8(messagechar+showmess); stegoindex = stegoindex+1; imbed=imbed+1; if (imbed==9) messagestring(messageindex)=messagechar; messageindex=messageindex+1;

45、 messagechar=0; imbed=1; end end if (stegoindex==messagelength*8) break; end end if (stegoindex==messagelength*8) break; end end %end disp(messagestring); (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服