teamviwer 远程写代码 替代品

背景:
自己有几台电脑,有的时候一个项目在另外一个电脑(或者另外一台电脑配置好一些),就需要远程写代码,以前一直用teamviewer,但最近都出现弹出商用,本来想购买发现实在太贵,自己用的又不是那么多。

替代方案:
用国产远程控制向日葵,我自己买了永久,大概花费3000的样子,买的精英版本,送了一个开机棒(只能连接有线才可以,唤醒),速度基本不卡顿。写代码还是非常流畅,传送文件也比较方便。免费的速度貌似不错,我担心和别人共享网络,所以购买收费版本。不想担心不稳定

自己动手方案:
这个最近用了一下Frp 内网穿透工具,其实就是数据转发,但还是需要自己一台外网服务器,家用宽带一般不会给你分配独立IP,所以自己买一个便宜的服务器,速度就看外网服务器与你家里延迟,本质跟向日葵差不多的。
自己配置转发一下3389端口就可以了,但一般非技术人员可能不会配置,觉得太麻烦,还不与用免费或者收费

WebSocket资料整理

背景:

最近服务器与客户端交互要有任务系统,以前总喜欢用轮询,但这种含有太多的多余的HTPP字段,同时要反复的建立连接,对应性能来说肯定不是最优。如果开始研究websocket,整理一下资料,对于协议没有太多的说,就是规则,按照规则实现而已,我们用别人现在的库开发就可以了,原理了解一下就可以了。websocket对于我最大的好处就是不用自己切包,简单的就直接用json包起来就可以了,根本不用考虑大小字节。

 

整理:

https://zh.wikipedia.org/wiki/WebSocket(维基百科)

 

python库:websockets 里面有client和服务器例子

https://websockets.readthedocs.io/en/stable/intro.html

 

后面再补充,只是为了先占位,以后要多写文章,养成一个好的习惯。

服务器处理客户端上换行切割兼容性问题

背景:

用户可以上传文本,里面含有多条数据,每行一条数据。服务器解析数据然后处理数据。

问题;

windows 上传文件正常,mac电脑上传出现切割错误。

原因:

换行在windows 和 linux 和 mac 不统一

windows :\r\n  linux :\n   mac: 系统9之前是 \r  后面是\n

  同事说直接用

PHP  explode(EOL, XXXX) 进行对windows 用户上传切割会出现空格,所以改用explode(“\r\n”, xxxxx),这样子在windows 上传的用户确实没有问题,但mac 的是\n 那么就不会切割。我自己百度一下网上说处理换行要用explode(EOL, XXXX),如果你只是在自己电脑上测试,肯定没有问题,因为EOL对应是你自己电脑的换行,所以就没有问题。但我们放到服务器上面我们就要处理各种用户了。

解决方案:(前提是你的服务器是linux 以\n ,别的同理解决)

1: 如果含有\n 直接就把 \r 替换””.

2:如果不\n那么说明就是mac 9 以前的系统的用户,直接把\r 换成\n。

3:然后按照 explode(“\n”, xxxxx) 切割

 

 

项目感悟-2018年8月17日 19:59:16

自己做微信检测和微信域名防封项目一段时间了,产品目前越来越成熟,用户慢慢变多,认识很多玩互联网的人。渐渐明白技术很重要,也不重要,有些人一点技术不懂,但有自己套路,一样一个月赚10多W或者更多,但他们的局限也明显,不懂技术或者不认识懂技术的人,导致他们很多思路没法实现。

我自己认为做技术应该多动脑子,用自己的技术顺便赚点钱,然后赚钱同时又会对自己技术有要求,然后不断提升技术,然后又不断赚钱,这样良性循环下去。

 

广告时间:

微信域名检测和防封系统:

www.weixin136.com

www.weimice.com

mysql的show processlist命令大作用(转载)

mysql的show processlist命令大作用

 

不知道谁是原创是谁了。

这个是用分析是不是数据库问题,一个比较重要命令

1.当连接数据库时,报错“too many connections”,就可使用此命令查看有哪些线程正在执行

2.主要列解释
– command 列,显示当前连接的执行的命令,一般就是休眠( sleep ),查询( query ),连接( connect )
– time: 执行时间,单位秒
– state: 当前连接的sql语句的状态,很重要的列,state只是语句执行中的某一个状态,

这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:

Checking table
正在检查数据表(这是自动的)。

Closing tables
正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。

Connect Out
复制从服务器正在连接主服务器。

Copying to tmp table on disk
由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。

Creating tmp table
正在创建临时表以存放部分查询结果。

deleting from main table
服务器正在执行多表删除中的第一部分,刚删除第一个表。

deleting from reference tables
服务器正在执行多表删除中的第二部分,正在删除其他表的记录。

Flushing tables
正在执行FLUSH TABLES,等待其他线程关闭数据表。

Killed
发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。

Locked
被其他查询锁住了。

Sending data
正在处理SELECT查询的记录,同时正在把结果发送给客户端。

Sorting for group
正在为GROUP BY做排序。

Sorting for order
正在为ORDER BY做排序。

Opening tables
这个过程应该会很快,除非受到其他因素的干扰。例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。

Removing duplicates
正在执行一个SELECT DISTINCT方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。

Reopen table
获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表。

Repair by sorting
修复指令正在排序以创建索引。

Repair with keycache
修复指令正在利用索引缓存一个一个地创建新索引。它会比Repair by sorting慢些。

Searching rows for update
正在讲符合条件的记录找出来以备更新。它必须在UPDATE要修改相关的记录之前就完成了。

Sleeping
正在等待客户端发送新请求.

System lock
正在等待取得一个外部的系统锁。如果当前没有运行多个mysqld服务器同时请求同一个表,那么可以通过增加–skip-external-locking参数来禁止外部系统锁。

Upgrading lock
INSERT DELAYED正在尝试取得一个锁表以插入新记录。

Updating
正在搜索匹配的记录,并且修改它们。

User Lock
正在等待GET_LOCK()。

Waiting for tables
该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE,或OPTIMIZE TABLE。

waiting for handler insert
INSERT DELAYED已经处理完了所有待处理的插入操作,正在等待新的请求。
大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。
还有其他的状态没在上面中列出来,不过它们大部分只是在查看服务器是否有存在错误是才用得着。

PS:
命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;只列出前100条,如果想全列出请使用show full processlist;

钉钉自动打卡(无需root)

钉钉自动打卡工具,按照指定时间,模拟人工进行签到和签退,不是模拟定位,因为这种方式,目前市面所有沙箱都会被钉钉检测出来,所以采用自动模拟人工打卡,解决忘记打卡,或者某个特殊时刻。完美支持android 7.0以上(包括7.0) ,7.0 只能支持极速打卡版本。

##前提条件: 1:android 7.0 或者以上 2:手机不能设置密码。(不然屏幕锁屏之后,无法解锁) 3:小米手机要设置权限开启 锁屏显示。(其他手机如果有类似的权限,进行对应的设置,如果不知道,可以开启所有权限)

##使用说明: 1:开启辅助服务,找到钉钉盒子开启即可 —> 点击设置辅助服务 image

2:设置时间 —->点击设置时间 可以设置任意时间,可以添加多次,方便自己的忘记打卡。 可以设置签到和签退时间,没有先手顺序,都是根据时间点进行运行 image image

3:点击开始 点击开始,然后关闭屏幕就可以了,不需要一直亮屏幕。(建议保留钉钉盒子在前台,就是点击开始锁屏就可以了,就不要操作了)

点击下载(https://dingdinghezi.github.io/apk/app.apk)

PC微信多开工具代码-消息钩子+ZwQuerySystemInformation(8.20更新)

目录

  1. 效果图
  2. 分析借鉴别人的文章—>https://www.52pojie.cn/thread-608108-1-1.html
  3. 知识点分享
  4. 其他实现多开的方式
  5. 源代码下载
  6. 后续

 

2:分析思路

虽然我看的别人思路,但看时候其实自己也想了一些。

  • windows单例实现方法,CreateEvent CreateMutex FindWindow(不是很好,有可能出现多个,鼠标点的快的话) , 主流就这几个吧。作为单例标准:我认为是跟进程有关资源,当进程结束掉,就会释放资源。这是非常关键的,一旦不具备这样条件,程序异常退出,用户是打不开程序,因为资源还占用。所以写文件或者注册表这种方式是不合适的。根据这个条件那么命名管道,Socket Bind 理论上也可以作为单例方法,只是大家用的不多而已. 我们顺推就可以分析这些作为句柄。试着用工具ProcessXp关闭是否能多开
  • 上面方式算是黑盒,所以不一定能百分百分析,可以通过OD 给ExitProcess 通过堆栈分析到他们的单例代码?这样子无能用什么方法,都能分析出来。(前期需要有这个分析能力和经验)(IDA静态分析也可以)

 

3: 知识点

  • 前提选择关闭句柄的方式(引用为0情况下就会释放),开始我 注入 微信 CreateMutex 打开然后CloseHandle 能关闭句柄 ,发现都不可以,因为用CreateMutex引用计算就加1了,所以CloseHandle 也没有意义。
  • 我们要找到一个能拿到句柄,又不会引用计算增加,于是就用找到ZwQuerySystemInformation 函数,这个微软一个没有公开的函数,我把网上封装了一下,修改部分代码能够在我的win10 64系统上跑起来。貌似这个这个函数返回的句柄值,不知道这个跟原始句柄值是不是一样的,那么直接CloseHandle() 一下是不是可以(和微信同一个进程情况下,我没有测试)
  • 关闭句柄,用的DuplicateHandle  DUPLICATE_CLOSE_SOURCE 来关闭句柄。

4: 其他方式多开

  • IDA 找到合适代码,直接修改那端代码(可能会增加封号风险,因为改了文件,如果有检验就GG)
  • HOOK CreateMutex ,返回NULL 或者修改名字(每次随机生成),这种时机要对,必须在微信CreateMutex之前处理。
  • 其他待定

5: 自己源代码地址:https://github.com/xvsdf100/PCWeChatMore

执行程序下载:

https://github.com/xvsdf100/PCWeChatMore/releases/tag/1.1

 

6: 后续

有时间把多开合并到一个窗口里面再加上快速发言,然后加一个按钮升级来推广PC HOOK 微信机器人是不是很爽(虽然只开发了一半就没有写了(实现发送和接收和群的功能))

更新:增加tab功能,可以方便管理微信,暂时没有增加置顶菜单

小鱼博客:www.xiaoyutang.net