博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】基于GSoap上Webservice服务GetFile获取文件不完整的调查
阅读量:6697 次
发布时间:2019-06-25

本文共 960 字,大约阅读时间需要 3 分钟。

Gsoap文件传输抓包分析

用网络抓取网络数据包,将数据包内容与实际的cid文件进行对比。

发现Gsaop进行文件传输时,将文件进行转义变换。

转义的内容有:

<

<

小于号

&gt;

>

大于号

&amp;

&

&apos;

'

单引号

&quot;

"

双引号

(详情可参考:)

可见GSoap和java框架在进行文件传输时,会对文件内容进行转义。

Gsoap源码分析

Gsoap支持特殊字符的自动转义。Gsoap是完全开源的。我们从中截取到了转义的代码:

const char * xstring(const char *s){size_t n;char *t;const char *r;for (n = 0, r = s; *r; n++, r++){ if (*r < 32 || *r >= 127)n += 4;else if (*r == '<' || *r == '>')n += 3;else if (*r == '&')n += 4;else if (*r == '"')n += 5;else if (*r == '\\')n += 1;}r = t = (char*)emalloc(n + 1);for (; *s; s++){ if (*s < 32 || *s >= 127){ sprintf(t, "&#%.2x;", (unsigned char)*s);t += 5;}else if (*s == '<'){ strcpy(t, "<");t += 4;}else if (*s == '>'){ strcpy(t, ">");t += 4;}else if (*s == '&'){ strcpy(t, "&");t += 5;}else if (*s == '"'){ strcpy(t, """);t += 6;}else if (*s == '\\'){ strcpy(t, "\\\\");t += 2;}else*t++ = *s;}*t = '\0';return r;}

 

解决方案

建议终端按从Gsaop中截取的代码对文件读取部份进行改造。

转载于:https://www.cnblogs.com/xiaole10368/p/5385857.html

你可能感兴趣的文章
各大互联网公司java开发面试常问问题
查看>>
程序员的核心竞争力
查看>>
如何重构“箭头型”代码
查看>>
19.C++-(=)赋值操作符、初步编写智能指针
查看>>
万能的JDBC工具类。通过反射机制直接简单处理数据库操作
查看>>
JDBC连接数据库(一)
查看>>
linux上mongodb的安装与卸载
查看>>
git使用问题
查看>>
Eclipse GBK批量转UTF-8插件(转)
查看>>
bootstrap table footerFormatter用法 统计列求和 sum、average等
查看>>
Docker 跨主机网络方案分析
查看>>
[转]自然语言处理中的Attention Model:是什么及为什么
查看>>
jsp+easyui+DataGrid 例子
查看>>
tomcat的class加载的优先顺序
查看>>
php课程 4-15 数组遍历、超全局数组、表单提交数据(多看学习视频)
查看>>
FindWindow用法
查看>>
Oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
查看>>
用反卷积(Deconvnet)可视化理解卷积神经网络还有使用tensorboard
查看>>
SuperMap iObject入门开发系列之五管线属性查询
查看>>
[转]简单的动态修改RDLC报表页边距和列宽的方法
查看>>