原创文章

WordPress被插入wp_cfg_popuplink恶意代码的分析与解决方案

今天@Lyphix告诉我在打开我的博客首页时,有一定几率会跳转到[crayon-5ba56cd8396f8164075413-i/]这个网页。

排查

经过几次试验之后,我也遇到几次跳转到上述网页的情况,但是并不能稳定复现。查看首页的源代码,我发现了如下的代码:

这段代码在网页中插入了一段JavaScript,控制网页跳转。

(更多…)

Frank
原创文章

Analysis of Abnormal Data Consumption and App Crashing on iOS Devices

点击这里前往中文版/Click here for Chinese version

This is the third knotty issue happened on my Apple devices.

By the end of June this year, my iPhone running iOS11.4 ran nearly 10G of mobile data during a single day. The log of Shadowrocket(An Network Extension app) revealed that my iPhone kept downloading unknown data from [crayon-5ba56cd839b57471477404-i/] at the rate of about 200kb/s. I tried switching the iCloud account, but the problem appeared again after a short period of time. I was busy dealing with the exams at that time, so I simply Rejected [crayon-5ba56cd839b5c737046497-i/] in Shadowrocket. No negative influence on daily use.

After some searching, I found some people claimed they have encountered a similar problems (22nd floor): https://www.v2ex.com/t/459452 . However, his solution of logging out of iCloud on macOS devices was not successful for me.

But the trouble didn't end. Since then, a large number of apps crashes while launching on my iPhone and iPad at a frequency of 2-3 times a week. When the problem occurs, most applications will hang at the Splash Screen and crash after about 10 seconds. Applications that crashed including TIM, Notability and all of the Google apps. WeChat and Apple's own applications are unaffected. During this time, the phone went hot, and will stuck when entering the iCloud settings. My iPhone runs iOS 11.4 and 12 Public Beta, and iPad running 11.4 and 12 Developer Beta.

Attempts

I tried rebooting, force rebooting, reinstalling affected apps, upgrading iOS, logging out and logging back in to iCloud, didn't work. A temporary solution is turning the iCloud Drive switch off and on, which has a chance to temporarily fix the problem. However, entering the iCloud settings at this time has a high probability of being stuck, so you need to try several times. The iPhone will recover from the problem after a while even if not doing anything.

(更多…)

Frank
原创文章

iOS异常流量消耗及大面积应用闪退问题的分析

Click here for English version/点击这里前往英文版

这是我遇见的第三个Apple设备上的疑难杂症。

大概是今年的6月底,我的iPhone(运行iOS11.4)一夜之间跑掉了将近10个G流量。经检查Shadowrocket日志发现,iPhone在以约200kb/s的速度持续从[crayon-5ba56cd839e06006238901-i/]下载不明数据。(根据其他受害者反映,如果没有安装Surge一类的软件,这些不明流量会在流量统计中显示为“文稿与同步”)我原来的iCloud使用的是日区账号,换成国区账号之后好了一段时间(一天多一点)之后,问题再次出现。由于我当时正被考试周搞得焦头烂额,将[crayon-5ba56cd839e0b227329850-i/]Reject掉之后就没有再管他,也不影响日常使用。

之后查找相关资料发现,也有网友遇到类似问题(22楼):https://www.v2ex.com/t/459452。但是他提出的登出macOS设备上的iCloud的方案,我试了之后并没有成功。

但是事情并没有结束,从那之后没多久,我的iPhone和iPad都出现了时不时发生应用大面积闪退的问题,频率基本维持在一周2-3次。当问题发生时,点开大多数应用都会卡在Splash Screen大约10秒后闪退。会闪退的应用包括但不限于知乎,TIM,Notability及所有Google应用。微信和苹果自带应用基本不受影响。此时手机会发热,并且进入iCloud界面时大概率会卡死。我的iPhone运行的iOS版本为11.4和12 Public Beta,iPad的iOS版本为11.4和12 Developer Beta。

尝试

我尝试了重启,强行重启,重新安装出现问题的应用,升级iOS及登出并重新登录iCloud,均没有效果。临时的处理方法是关闭并打开iCloud Drive开关,有一定几率暂时修复这个问题。(可能只是巧合)但是此时进入iCloud界面有大概率会卡死,所以需要多试几次才行。如果不进行任何处理,一段时间以后也会自行恢复。

分析

由于这个问题十分隐蔽,导致每个人的描述都不太一样,因而很难在网上搜索到。我整理了所有出现类似问题的贴子合集: https://www.v2ex.com/t/460089
https://www.v2ex.com/t/471491
https://cn0xroot.com/2018/07/17/2018-07-16/
https://www.v2ex.com/t/459452
https://discussionschinese.apple.com/thread/140132632
https://www.reddit.com/r/jailbreak/comments/8sf4u3/help_this_block_of_text_is_being_spammed_in_my/
https://forums.developer.apple.com/thread/105722
https://forums.macrumors.com/threads/excessive-data-consumption-for-documents-sync-and-constantly-high-cpu-load-on-iphone-and-ipad.2127349/
这个问题出现的时间很随机,我目前还没有找到其触发条件,难以手动复现。因为重新开关iCloud Drive有几率临时修复这个问题,我初步定位问题与iCloud有关。至于此前曾经出现过的iCloud持续下载数据问题,我猜测两者之间也有关联。

检查Console发现,在应用启动并闪退时,会出现[crayon-5ba56cd839e0e595066278-i/]信息。经搜索得知,这个报错是由于应用启动时间过长而被系统强行杀死。

(更多…)

Frank
原创文章

Oracle数据库安装与配置

这次的大数据小学期需要用到Oracle数据库。我在安装Oracle数据库的过程中费了很多周折,在此记录一下安装过程和配置上遇到的问题。

安装

Oracle数据库是重量级的企业级软件,安装相对麻烦。如果要在Linux上安装,Oracle官方仅提供了rpm安装包,并且需要图形界面。debian系发行版并不被官方支持,不建议使用。我选用的操作系统是Windows Server 2008。除此之外,使用Docker镜像或AWS云服务也是不错的方案。
我选用的Oracle Database版本是11g。11g版本分为Express Edition(XE),和Enterprise Edition(EE)。EE版拥有更多的功能(包括很实用的Enterprise Manager)。Oracle数据库虽然是商业软件,但是针对非商业使用是免费的,并且Oracle的收费策略是针对服务收费,而并非软件本身。
下载:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html
安装过程并不复杂,按照安装向导的提示操作即可。具体安装过程请参考:http://holowczak.com/installing-oracle-11g-release-2-windows-7-32-bit/本文不再赘述。
安装过程中其中一个步骤是选择Oracle数据库使用的编码。如果语言设置为简体中文,则默认的编码是GBK。为了避免出现乱码,请尽量选择UTF8编码。
(更多…)

Frank
原创文章

使用Flex和Bison制作编译器

这学期的编译原理课上,我们以C-Minus,一个C语言子集,作为源语言,实现词法分析、语法分析、三地址代码生成等功能的编译器(或解析器)。
代码见GitHub:https://github.com/nyanim/compiler

Flex与词法分析

进行词法分析之前首先对字符表进行定义。根据CMinus的语法定义,需要进行识别的字符集主要包括如下部分:
关键字:
if,else,while,int,void,return
运算符:
+,-,*,/
比较运算符:
<,<=,>,>=,==,!=,,
标识符:
ID
数字:
NUM
一个flex词法分析文件和bison一样分为声明,定义,规则4个部分。 其中,定义部分用来通过正则表达式定义单词,如数字可定义为[crayon-5ba56cd83a9a8923840333-i/]。[crayon-5ba56cd83a9ad033779580/](更多…)

Frank
原创文章

使用systemd

systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序,现在已成为大多数发行版的标准配置。
历史上,Linux 的启动一直采用init用于管理进程和服务。这种方法有两个缺点:一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程;二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。因此Systemd应运而生,Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),为系统的启动和管理提供一套完整的解决方案。
根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。

创建配置文件

在[crayon-5ba56cd83af57940962693-i/]创建一个以[crayon-5ba56cd83af5c819370971-i/]结尾的文件。例如[crayon-5ba56cd83af5d549702046-i/][crayon-5ba56cd83af5e342158679/](更多…)

Frank
原创文章

一次惨痛的GRE考试

经过两个月的(精心)准备,终于在今天上午迎来了我的第一场GRE考试。

考场在北大理教的计算中心。进场之后是例行的存包,签保密协议等等。等9点过的时候统一安检,入场,拍照片。

我分到的考位是一个靠墙的角落,感觉相当不错,不会有人进进出出。北大的机房很老旧,但是设备还可以。屏幕是16:9的宽屏,在考试时字体会被拉的很宽。键盘虽然不如北工商,但也还说得过去。等所有人都检录完成之后,整个考场几乎可以同时开始考试,这样也就无所谓先进或后进考场,当然也不会在读阅读的时候旁边突然钻出来一个人开始describe the city you live in。

(更多…)

Frank
原创文章

Padavan路由器安装Time Machine服务器

此前我的路由器一直使用OpenWrt。但是,近日在OpenWrt中继配置万能的过程中遇到了一系列问题后,了解到了Padavan这个固件。Padavan固件的功能十分强大,可以实现包括但不限于文件共享,Aria,Transmission,Web容器,Time Machine等强大功能。
源代码:padavan / rt-n56u — Bitbucket
论坛发布页:http://www.right.com.cn/forum/thread-161324-1-1.html

准备工作

  • 一台已经刷入Padavan固件的路由器,并妥善设置opt环境。设置opt环境请参考:像openwrt一样装更多的软件
  • 一块移动硬盘,格式化为ext4(虽然Padavan可以识别NTFS和exFAT分区,但是后期会引发一系列问题,所以请务必使用ext4)
  • 进入系统管理,修改管理员账号为[crayon-5ba56cd83b182057939244-i/]
(更多…)

Frank
原创文章

macOS High Sierra安装Caffe框架

英特尔杯人工智能挑战赛需要用到Caffe深度学习框架。Caffe框架在macOS上需要手动编译,然而官方的安装教程年久失修,并且编译过程中会遇到由不同版本或环境而引发的问题,我历时三天,踩了无数的坑之后,终于成功安装了Caffe框架。在此记录下安装的过程和遇到的错误,希望对你有所帮助。

系统环境及安装配置

  • Macbook Air 13' macOS High Sierra
  • Homebrew
  • Xcode
  • Miniconda Python2(Caffe建议使用Anaconda Python,另外我在尝试使用Python3编译Caffe时遇到了未知的错误,因此建议使用Python2.7)
  • openBLAS(Intel的MKL库会提供更高性能且更稳定的计算,在校学生可以通过这里申请:Intel® Math Kernel Library (Intel® MKL) | Intel® Software
  • CPU ONLY模式(MacBook Air没有NVIDIA GPU,因此使用CPU ONLY模式,不需要安装CUDA及cuDNN) (更多…)

Frank
原创文章

MySQL 权限管理

前段时间,我班有两个人的MySQL数据库被攻破,所有数据被清空。他们的MySQL实例有两个共同点:

  1. 暴露3306端口。
  2. 使用root用户登录且为弱密码。
MySQL的root用户权限过大,使用root登录是较危险的。因此我们应当避免在生产环境使用root登录,而是新建一个权限较小的用户,以确保安全。 (更多…)

Frank