1.Nodejs偶发性 Read ECONNRESET
2.史上最全测试开发工具推荐(含自动化、写抓性能、包源包工稳定性、写抓抓包)
3.浅谈k8s网络之Calico网络
4.微信小程序反编译
5.小程序逆向分析 (一)
Nodejs偶发性 Read ECONNRESET
我司应用服务器频繁出现Read ECONNRESET情况,包源包工涉及mysql和tidb数据库访问。写抓异常发生频率不高,包源包工sonala公链源码但过年回来首日出现频次激增。写抓问题仅在使用Nodejs的包源包工应用服务器上出现,Java项目未受影响。写抓应用通过阿里云SLB中转数据库访问,包源包工SLB超时机制未被怀疑。写抓
起初,包源包工团队猜测SLB在超时后不向客户端与数据库服务器发送FIN或Reset包,写抓导致连接误判。包源包工通过验证后发现这一猜想不成立。写抓接着,基于tidb在特定时间发送心跳包保持连接的特性,团队推测连接可能在秒后被主动断开。但实验证明这一猜想同样错误。
团队进一步怀疑在发送请求时,连接可能被瞬间重置。通过抓包分析,最终揭示了问题原因。解决办法随之而来,但具体方案需基于分析结果详细实施。
史上最全测试开发工具推荐(含自动化、性能、稳定性、抓包)
本文将为你全面推荐款在测试开发工作中不可或缺的工具,涵盖了自动化测试、APP性能、wordpress商业源码稳定性及抓包工具,帮助提升效率和质量。UI自动化测试工具
uiautomator2: 由openatx开源的Python工具,适用于Android和iOS,设计简洁,社区支持好。安装方法:pip install uiautomator2。
Appium: 以Node.js为基础的成熟工具,流行且多语言支持,是UI自动化测试的代表产品。
ATX-Test: 基于uiautomator2封装的框架,封装底层和日志功能,易于使用且支持monkey测试。
Airtest: 网易开源,支持多种平台,图像识别技术让游戏测试更便捷。
ATXServer2: 设备管理平台,支持远程操控,方便兼容性测试。
STF: 功能强大的远程设备管理平台,支持Android和iOS真机管理。
Appetizer: 易用性极强,支持UI自动化和稳定性测试,部分开源。
APP稳定性与性能测试工具
UICrawler: 基于Appium的App UI遍历工具,支持iOS和Android。
Maxim: 智能Monkey工具,封装了更多功能和易解析的日志。
AppCrawler: 灵活的app遍历工具,支持真机和模拟器。worldwind源码分析
SoloPi: 无线自动化工具,专注于性能测试,节省开发时间。
GT: 腾讯开源的APP性能调试平台,功能全面且支持API扩展。
抓包工具
AnyProxy: 阿里开源的Node.js抓包工具,适用于app爬虫和接口分析。
mitmproxy: 基于Python的抓包工具,便于数据分析。
这些工具是软件测试领域的宝贵资源,它们在不同阶段都能提供帮助。尽早掌握这些技能,对于技术成长至关重要。浅谈k8s网络之Calico网络
Calico 是一种容器之间互通的网络方案。在虚拟化平台中,例如 OpenStack、Docker 等,都需要实现工作负载之间的互连,同时也需要对容器进行隔离控制,类似于互联网中的服务仅开放 端口、公有云的多租户提供隔离和管控机制。然而,多数虚拟化平台实现中,通常使用二层隔离技术来实现容器网络,这些二层技术存在一些弊端,例如依赖 VLAN、bridge 和隧道等技术。其中,bridge 带来复杂性,vlan 隔离和 tunnel 隧道消耗更多资源并有物理环境要求。openstack 源码分析随着网络规模的增大,整体变得越加复杂。Calico 提出将主机视为互联网中的路由器,使用 BGP 同步路由,并结合 iptables 安全访问策略,设计出了一种新的方案。 Calico 适用场景:在 k8s 环境中,pod 之间需要隔离。 设计思想:Calico 不采用隧道或 NAT 来实现转发,而是将所有二三层流量转换为三层流量,并通过主机上的路由配置完成跨主机转发。 设计优势:更优的资源利用:三层路由方法完全抑制二层广播,减少资源开销。此外,无需 vlan 或 vxlan 技术,资源利用率更高。
可扩展性:类似于互联网方案,Calico 具有天然的可扩展性。
简单而更容易调试:没有隧道的存在,使得工作负载之间的路径更短、配置更少,在主机上更容易进行调试。
更少的依赖:仅依赖三层路由可达,减少对其他技术的依赖。
可适配性:能够适应所有 VM、容器、白盒或混合环境场景。
Calico 架构: Calico 网络模型主要工作组件包括 Felix 和 BIRD。Felix 监听 ECTD 中心的存储,获取事件,复利拆分源码如用户在主机上添加 IP 或创建容器等。用户创建 pod 后,Felix 负责为其配置网卡、IP 和 MAC,并在内核路由表中写入路由信息。同时,如果用户制定了隔离策略,Felix 会创建 ACL 来实现隔离。BIRD 是标准的路由程序,从内核中获取路由变化信息,并通过标准 BGP 协议扩散到其他宿主机,让外界知道 IP 存在,便于路由。 Calico 网络 Node 之间有两种模式:IPIP 和 BGP。IPIP 是将 IP 数据包封装在另一个 IP 包中,实现类似基于 IP 层的网桥功能。BGP 是边界网关协议,通过维护 IP 路由表来实现自治系统之间的可达性,更适合大型网络环境。 在测试环境中,一个 master 节点与一个 node 节点之间通过 IPIP 工作模式进行通信。创建 daemonset 应用,将 pod 分布在 master 和 node 节点上。在 master 节点上 ping node 节点的 pod,经过 master 节点的路由、通过 tunl0 设备到达 node 节点,再通过 node 节点的路由直接到达目的 pod。查看路由信息和抓包分析,验证数据包的封装和传输过程。 通过修改配置,将 CALICO_IPV4POOL_IPIP 值设置为 "off",可以将 Calico 网络模式从 IPIP 更改为 BGP。在 BGP 网络中,数据包直接从网卡发送到目的地,无需经过 tunl0 设备,效率更高。 对比 IPIP 和 BGP 网络,IPIP 网络使用隧道设备 tunl0 来封装数据包,而 BGP 网络直接使用路由信息导向流量。IPIP 网络适用于跨网段访问的场景,而 BGP 网络更适合大型网络环境,效率更高。 Calico 面临的问题:租户隔离问题:使用同一个 CIDR 网络时,多租户可能面临地址冲突。
路由规模问题:路由项与 pod 分布有关,分散分布可能产生较多路由项。
iptables 规则规模问题:单个主机可能虚拟化多个容器实例,过多的 iptables 规则可能带来复杂性和性能损耗。
跨子网时的网关路由问题:对端网络不为二层可达时,需要通过三层路由机进行跨三层转发,可能需要额外的网关支持。
总结了 Calico 网络方案的设计优势、架构、工作模式、网络对比以及可能面临的问题,旨在提供一个直观且易于理解的网络解决方案。微信小程序反编译
微信小程序反编译及抓包流程详解 反编译微信小程序的主要工具是wxappUnpacker,以下为具体步骤: 一、环境及工具准备Node.js:访问 /download/ 下载并安装。
wxappUnpacker:从 /xuedingmiaojun/wxappUnpacker 获取,注意安装。
微信开发者工具:访问 /miniprogram/dev/devtools/download.html 下载,直接安装。
二、小程序包提取使用模拟器或安卓手机,确保手机已root,安装文件管理器如re文件管理器或MT管理器。
在模拟器或手机中使用adb或夜神模拟器的nox_adb进行以下操作:
执行`adb shell ls -l /data/data/com.tencent.mm/MicroMsg/`查看目录。
在用户目录下查找exapkg包,执行`adb shell ls /data/data/com.tencent.mm/MicroMsg/db3beb9ebe0b5edab8d1/appbrand/pkg/`。
删除小程序目录下所有文件,执行`adb shell rm -f /data/data/com.tencent.mm/MicroMsg/db3beb9ebe0b5edab8d1/appbrand/pkg/*`。
三、使用微信开发者工具将提取的包发送到PC端,使用`adb pull`命令将整个pkg目录发送到PC的指定目录。
四、配置wxappUnpacker安装wxappUnpacker依赖:`npm install`。
五、运行wxappUnpacker执行`node wuWxapkg.js D:\tmp\tmp\pkg\_-_.wxapkg`。
反编译后的文件将生成同名的文件夹,包含反编译的js文件。
六、使用微信开发者工具打开源码点击“使用测试号创建”,即可查看反编译后的源码。
抓包流程使用Proxifier或Charles抓包,具体步骤如下:
对于Proxifier:安装Proxifier,添加代理指向burp/fuddler监听的端口。
设置代理规则匹配微信小程序相关进程。
对于Charles:下载并激活Charles代理软件。
在Windows选项卡中设置默认不开启window代理,配置代理规则匹配所有流量,通过代理转发。
最后提示:- 使用微信开发者工具和反编译工具进行微信小程序开发和研究。
- 使用安全工具如Proxifier或Charles抓包,确保遵守法律和伦理规范。
- 本教程仅用于学习和研究,避免非法用途。
小程序逆向分析 (一)
李老板:奋飞呀,最近耍小程序的比较多,而且貌似js好耍一点?要不咱们也试试?
奋飞:你是老板,你说了算喽。
第一次搞小程序,得找个软柿子捏,就找个以前分析过的某段子App的小程序吧。
app下载回来就是apk包,那么小程序在哪里?小程序是一个以wxapkg为后缀的文件,在android手机的/data/data/com.tencent.mm/MicroMsg/用户id/appbrand/pkg/里面找。可是下面一堆数字命令的文件,哪个才是我们要找的某段子App的小程序呢?
两个办法:把所有的小程序都删除,就留一个,那这个文件就是了。或者把某段子App的小程序删除,然后再重装一下。看文件日期,最新的就是了。
wxapkg文件肯定没法直接分析的了,我敢打赌它一定可以反编译出js文件。从github.com/ezshine/wxa...下载他编译好的wxapkg-convertor可执行程序。把wxapkg文件拖到wxapkg-convertor的界面里面可以反编译出js源码出来。我们先试试分析一下这个websign的来历。
首先搜索一下websign字符串,很幸运,看上去就在这个js里面的i(d)函数里。
既然反编译出来了js源码,能否动态调试下,这样分析起来更方便了?答案是可以的,下载微信开发者工具,把刚才反编译的工程导入进来。记得在设置->项目设置中把“不校检合法域名...”这一项勾上。这样代码貌似可以跑起来,我们在i函数下个断点,发下它可以进来了。
我们调试的时候发现它并没有生成websign,t.h_m为空,导致后面没有生成,这个难不倒我们,从抓包结果里面找一个h_m的值,写死一下,就顺利跑出结果了。从js代码里看,i函数里面最后调用了o(n),这么明显的md5,我们来试试,在i函数里面加一个代码。首先在Mac下我们算下结果,然后再调试下这个工程,看看t1Use的值。确认过眼神,就是MD5。
搞个新玩意的时候,先找个软柿子捏,不要一下就想放个大卫星。能反编译,然后再动态调试,那么曙光就在眼前。这个样本运气好,肉眼就可以看出是md5,复杂的js算法,可以考虑PyExecJS、js2py或Node.js来跑。所有的故事都会有结局,只有生活跟你没完。TIP:本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系。本文涉及到的代码项目可以去奋飞的朋友们知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx:fenfei讨论下。无偿领取网络安全入门到进阶学习籽料可点击这个链接:瓜子:零基础学网络安全有什么建议?如何入门?——来自一位年薪W的网工倾情讲解。