半眼阴阳

道可道也,非恒道也。名可名也,非恒名也。

致我逝去的学生时代

大部分人在二三十岁上就死去了,因为过了这个年龄,他们只是自己的影子,此后的余生则是在模仿自己中度过,日复一日,更机械,更装腔作势地重复他们在有生之年的所作所为,所思所想,所爱所恨。——罗曼·罗兰 此刻离开了大学校园,离开了学习和生活了四年的地方(其实只有两年…)。我闭眼回想大学生活的点点滴滴,发现并没有太多留恋,可当离别发生时,心中还是有种莫名的失落感。虽然还在上海,以后还可以回学校看看,可是我知道这一别,以前的人和事都将不再,只会永远定格为一段回忆,一段我以后回想时最美好的记忆。 在最后的时光里,和室友吃遍了学校周边的店,也和同学一起进行了毕业旅行,一起通宵玩剧本杀、一起通宵打麻将、一起体验了电竞酒店、吃了凌晨的海底捞、吃了心心念的波斯龙虾…在最后的时光里,大家都格外地珍惜彼此在一起的时间,也许大家都知道有的人一旦错过,就是陌路。 人的一生是漫长的,我们总在不停遇见与离别之间徘徊、反复。很荣幸地遇见某些人,彼此相识、熟悉、牵挂、思念,到了最后,随着时光的推移,有一些人来了,又去了;有一些人留下,又走了;然而,我们要懂得珍惜每一次的遇见,珍惜所有踏过生命里的足迹。离开了大学校园也表示着我人生第二篇章的正式结束,接下来我将开启人生的第三篇章。我怀念过去,也憧憬未来,但我们总会随着时间往前走,时间会冲淡现在的一切,而我此刻想对陪我走过这段时光的人说:谢谢你们在我的人生中留下足迹,你们给我留下的回忆是我一生中最宝贵的财富,祝大家一切安好,永远幸福健康!!!
2023-06-18

周记 - 独居生活

独居生活终于慢慢步入正轨,也开始慢慢习惯新的城市。一个人生活除了无所事事时会有孤独感,其他时候都很不错。可以按照自己的想法来做,如想几点睡就几点睡,想学习时也很安静。可以静下心做很多事情,独居真的很适合想静心做事的人。目前的独居感受就是,除了偶尔的孤独感,其他一切安好。 吃了很久的外卖,终于可以自己做做饭吃了,我总觉得外卖不好而且并不好吃。购买厨具唯一让我感到很满意的就是买了一个很方便携带的电煮杯,可以煮饭、煮粥、火锅、煮茶,一个人煮煮饭还是可以,质感也很不错,很小巧精致。 足迹简记 阅读了Frida逆向与抓包实战,为app分析做知识储备 整理知识库,发现钉钉上的知识库也很不错,计划把一些笔记迁移至钉钉 反思忏悔 小视频刷的时间有点长,要节制了 起床有点晚,虽然现在天气冷了,还是要克制懒床习惯 锻炼很少了,身体还是要保持好呀!!!
2022-12-05

周记 - 新的冒险

暂时告别了上海,又来到了一座苏北城市——盐城。来到盐城第一天吃了有名的苏北菜,个人感觉味道还行,没有很惊艳也没有很难吃(也许是没有当地人做向导,没吃到最正宗的苏北菜,哈哈😶)。来到盐城的第一印象是这个城市真平坦,马路很宽,车很少,人也很少,晚上五点多在周边的一个商城外基本没什么人,让我恍惚间觉得来到了人类消失后的世界! 后面的一段时间,估计要在盐城开启一段真正的独居生活,既期待又忐忑。以前从来没有想过要来盐城,生活就是这样令人琢磨不透,你永远不知道未来会走向何处,总有一股力量引导着你前进。 足迹简记 和大学同学游览了上海中心大厦,也就这样,花了一百九十几块钱看风景😢 在微信读书上重读了余华的“兄弟”,希望这次能看完 调整了博客评论和访问统计的数据库 反思忏悔 心态上还是比较懒惰比较消极,要积极起来呀! 做事有点乱,还是需要规划规划每天的任务 虽然不能再考四六级,但是英语学习不能落下,提升自己最重要
2022-11-24

多种抓包工具联合分析app流量

前言 最近需要经常对app进行抓包分析,有时单一的抓包工具对流量的分析不够全面。偶然间看到了一篇先知社区上的文章: https://xz.aliyun.com/t/11817,这篇文章讲述了多种工具联合对app抓包的方法,但根据作者的思路,我没能成功,最后我根据作者的思路换了一下代理顺序,最后成功抓到了app流量,特此记录一下以便后期回顾,同时也希望帮助到有需要的朋友。 工具 Burpsuite:抓包工具。下载地址、破解:谷歌或百度 Charles:抓包工具。下载地址、破解工具 Proxifier:流量代理工具。下载地址、破解:谷歌或百度 adb:安卓调试工具,下载地址 kali虚拟机:用于转换证书 Postern(非必须):一款转发手机流量的app,是一个Android下的全局代理工具。不用这个app也行,直接在网络设置中配置代理也可以。下载地址1、下载地址2 v2rayN(非必须):这里主要是有些app需要科学上网才可以打开,在这种场景下,最终我们需要一款科学上网工具将流量出口进行代理,选择其他喜欢的科学上网工具也是可以的。 配置过程 参考先知上的这篇文章即可,配置过程大致一样,但不同的是我将burpsuite做为第一次代理,charles做为第二层代理。我主要记录的是遇到的难点。 代理结构 主要难点 根据先知上那个作者的思路,使用charles作为第一层代理始终导致手机不能联网,这个问题我也不清楚为甚么!按理来说应该是可以的。最后我发现将charles证书导入burpsuite后,从burpsuite导出的证书其实是charles的。 本来使用charles可以直接将流量出口到外部的服务器,但是我也是服了,charles这个鬼东西就是转不出去,所以使用了Proxifier代理了Charles的流量。
2022-11-11

周记 - 国学浅悟

又燃起对国学的学习欲望,在前几个月的空闲时间里又学了一遍李九龙道长的八字快速入门。重新回顾一遍的起因竟是因为家里的亲戚要我给她看一看八字,我也很无奈……。经过温习,我发现自己对所谓算命的理解又多了一点,在当下的社会意识形态下,把算命拿上台面上来说只能被认为是封建迷信,不过,当你系统地去学习过相关知识后,可能你的想法会有所改变。就目前我认为算命并非是什么封建迷信,算命是认识事物的一种方式或者说是从不同角度去认识事物,算命就像是在玩一种沙盘游戏,把你的生辰使用天干地支抽象成八个符号(四个天干和个地支的组合),这八个符号就代表了你出生时的时空信息,再把身边的事物(包括时间、空间、物体等)也使用天干地支抽象出来,最后推演各天干地支的关系就可知祸福。这种世界观和现代科学的世界观最明显的区别是,现代科学更强调的是我们客观地去观察周围的环境,而在算命的世界观里更强调把人也融合到周围环境中,把人也作为一个影响环境的变量,这和现代科学中的量子力学有相似之处。 我学习这些国学知识,完全是满足自己的好奇心,以前我总是很疑惑从古至今为什么大家对算命总是这么的着迷?这真的算得很准吗?我想知道这其中到底有什么奥秘。经过学习,我开始有点明白古人强调的天人合一到底是什么意思,不得不感叹我国古代人民的对这个世界的理解是多么的透彻,也许我们已经以另外一种方式认清了这个世界,只是我们不自知而已! 足迹简记 机缘巧合来到齐安盘古,工作了两天感觉还不错,唯一不好的就是没食堂。 学习了使用adb、tcpdump进行手机抓包,tshark、parse-pcap进行流量数据解析。 学习了多进程爬虫。 反思忏悔 上班效率还是有点低,还是要改进一下效率。 表达能力不足,要多与人沟通相关专业知识,让自己的表述更专业。 书面表达不够清晰,还是要多看多想多写。
2022-11-05

周记 - 新的开始

又来补作业啦!上周的周记因为一些原因给耽误了,上一周在为新的征程做出发前准备。和要好的朋友道了别,家人也在从他们的角度为我做一些力所能及的事情,我总是在要出门远行前才可以感受出深深的亲情,这份亲情更多的是家人对我的担心,怕我在外面吃不好住不暖。有时候距离像是一把无形的“美工刀”,能在无意中把人与人之间的情感雕刻出原本美丽的模样。🌹 足迹简记 换了新装备,redmi k50 至尊版。目前体验一般,就是内存比较大。 终于买到了一个比较满意的小背包,就是有点小贵😭 看了几集“咒术回战”。 开启了一个新的团队项目,希望最后能做出理想的模样。 反思忏悔 github有好几天没push了。 算法题也好久没刷了。 运动锻炼变少了。 睡得太晚。
2022-11-02

周记 - 重拾记录习惯

这周开始打算每周写一写总结,记录一下一周内做了些什么,无论是学习还是生活。以前有写过日记,最开始是用一个小本手写,后来改用便签软件写,但最终都没能坚持下来。自己有反思过不能坚持的原因,觉得主要的原因是因为写日记这种日更的记录频率对我来说太过频繁,也没必要,有时会为了写日记而写日记,这样往往失去了写日记的意义,逐渐消磨了记录的乐趣。如果一周写一次的话,对我来说灵活性更高,记录频率不快不慢。 从模仿开始 无意间看到了一个很优秀的独立博客"pseudoyu",可以发现我现在的博客和这个博主的很像,其实我就是模仿这个博主做了一个新的博客系统。我在这位博主这里学习到了很多新的东西 ,如怎样搭建umami统计系统、cusdis评论系统、saas相关服务平台的现实使用等,这里由衷感谢这位博主的分享🙏。 我们一直以来都是以模仿的方式去学习新的知识、认识新的事物,可以说学习的本质就是模仿。从我小时候开始写字到现在编写程序,都是在不断地模仿前人的研究成果、思考方式。
2022-10-23

2022年过去10月的总结

前言 2022年过去大半时间了,最近又感觉很焦虑,所以打算写写总结,回顾一下今年过去的10月里做了什么、还有哪些没做、最近心里的感受和想法。就当是整理一下自己的心情,梳理一下思路,下文可能有负能量,如果正在阅读本文的朋友不想感染负能量,请迅速撤离!☺️ 每月足迹 1月~3月:回家过春节,春节期间回顾了一下前端的一些基础知识 3月~5月:上课,线下上了接近一个月的课,之后转为线上上课,从4月一直待在寝室,每日的户外活动是下楼做核酸,这段时间说实话挺丧。 6月~8月:5月底的时候梦幻般地从上海回到了重庆,回来的路上享受了重点看护人员的待遇,也感受到了重庆人民的热情,到家乡后先隔离了14天。之后每天待在家里准备秋招,但是效率很差,学不进去东西,8月时又看到有人已经在投递提前批了,自己准备不充分心里感到很焦虑。 9月~10月:亲人离世,9月的大半个月都没心思准备秋招了,之后在投递简历,但是网安的岗位真的有点少。偶然的机会面了一家公司的实习,经过这次面试深深感受到自己的很多不足,感觉到网安这个东西没多年的积累真的是很难走下去。大环境又不好,想出去实习,但目前疫情防控有点严格,随时有封控的风险,进退维艰! 心态变化 过去的10个月感觉什么都没做,又感觉什么都做了,做得很杂吧,最大的感受是焦虑。经过最近投简历的经历,我现在对“选择大于努力”这句话有点感触了吧,面对当下的现实环境,可能也不得不暂时选择自己以前不屑的工作吧。面对现实生活也是有许多无奈,唯有静下心认真做点事情,以便安抚烦躁的心情,至于以后会发生什么?谁知道呢! 我又来到了人生的“岔路口”,每次到这个时候总会将我折磨一番,过去高中的时候,为了去理想的城市上大学,也是让我几经波折,但终究是基本达到自己的目标。现在又到了抉择的时候,但现在的我没有以前高中时候的决心,现在更多的是迷茫。 收拾心情 目前大环境不好,各行各业都不行,投简历感受到了互联网寒冬,我估计秋招算是凉了。9月一位亲人的离世,也给了我很大的触动,一位36岁美丽的女士,在她生日那天离开了这个世界,没有任何遗言,没有任何征兆,倒是走得洒脱……。人生无常,我们永远不知道自己的生命还剩下多少时间,生命不过几十载,真正属于自己的时间又有多少?降低自己的欲望,平静自己的内心,坚持学习和锻炼。 无论诡计图谋,还是壮志未酬,终究都做了土,唯有山川风月依旧!
2022-10-11

Java安全之RMI

如何理解RMI RMI全称是Remote Method Invocation,即远程方法调用,和RPC(Remote Procedure Call)即远程过程调用类似。RMI的作用就是让某个Java虚拟机中的对象调用另外一个Java虚拟机中对象的方法,RMI是Java独有的一种机制。 现在我们模拟一下RMI的过程,编写一个RMI服务端,一个RMI客户端,让客户端去调用服务端上的方法。 RMI服务端: public class RMIServer { public interface IRemoteHelloWorld extends Remote { public String hello() throws RemoteException; } public class RemoteHelloWorld extends UnicastRemoteObject implements IRemoteHelloWorld { protected RemoteHelloWorld() throws RemoteException { super(); } @Override public String hello() throws RemoteException { System.out.println("call from"); return "Hello world"; } } private void start() throws Exception { RemoteHelloWorld h = new RemoteHelloWorld(); LocateRegistry.createRegistry(1099); Naming.rebind("rmi://127.0.0.1:1099/Hello", h); } public static void main(String[] args) throws Exception { new RMIServer().
2022-07-22

Java安全之反射

反射的理解 在Java中我们通常是通过类示例化一个对象,然后通过对象使用类中的方法。反射就是将顺序反过来,对象通过反射获取相应的类,类通过反射获取类中的所有方法,从而可以使用这个类中的其他方法。这样通过反射我们给Java这种静态语言赋予了动态特征,P神对动态特征的定义“一段代码,改变其中的变量,将会导致这段代码产生功能性的变化,我称之为动态特征”。 反射里几个重要的方法 获取类的方法:forName 实例化类对象的方法:newInstance 获取函数的方法:getMethod 执行函数的方法:invoke 获得类的三种方法 获得类其实就是获得java.lang.Class对象。 1.通过上下文中的某个类的实例化对象获得类: System.out.printf("Empty block initial %s\n", this.getClass()); 2.通过已经加载的类的class属性获得,这个其实不算是反射 System.out.printf("Static initial %s\n", TrainPrint.class); 3.当我们知道某个类的名字时,可以通过forName来获取 Class clazz = Class.forName("java.lang.Runtime"); 类初始化的顺序 这个问题由forName有两个重载函数引出。 # forName的两个重载函数 public static Class<?> forName(String className) public static Class<?> forName(String name, boolean initialize, ClassLoader loader) 第一个重载函数算是第二个重载函数的封装 在第二个重载函数中,name:要获得的类的类名,initialize:是否初始化,loader:jvm加载类的方式 上面的initialize变量表示的初始化为类的初始化,那么类什么时候发生初始化呢? 现有如下代码: public class TrainPrint { { System.out.printf("Empty block initial %s\n", this.getClass()); } static { System.out.printf("Static initial %s\n", TrainPrint.class); } public TrainPrint(){ System.out.printf("Initial %s\n", this.getClass()); } public static void main(String[] args) { TrainPrint trainPrint = new TrainPrint(); } } 运行结果:
2022-07-20