在 android 9 以上版本,很多 app 都使用certificate pinning技术来防止 https 中间人攻击,当 app 检测到证书不正确时,会自动断开网络请求,导致抓取不到 https 网络请求包。

要顺利抓到 https 请求包,需要借助VirtualXposed来避开certificate pinning检测。

More

pip 国内源

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

More

入住万科小区后,每次出入都要经过两次门禁,导致虽然装了智能锁,但还是要带门禁卡,所以一直想着怎样把门禁复制到手机 NFC 上。一加7 pro 在 11 月已推送了门禁卡功能,但只支持未加密的门禁卡,万科的一卡通都是加密过的,所以直接复制不了。

加密卡也分半加密或全加密,属于哪种类型,可以手机下载 MifareClassicTool (MCT) 查看,部分扇位可以看到内容的就是半加密,所有扇位内容都看不到的就是全加密卡,全加密卡的话,建议直接放弃,破解密钥需要太多时间了。

经过在酷安浏览 NFC 相关内容,发现是有方法可以实现复制的,但需要一个 PN532 的 NFC 解密设备和 CUID 空白卡,复制流程如下:

  1. 使用 PN532 解密半加密的原卡内容
  2. 把门禁卡的 0 扇区的 0 块的 UID 和厂商号写入 CUID 空白卡(这样空白卡就变成未加密卡了)
  3. 使用手机 NFC 模拟 CUID 空白卡
  4. 使用 PN532 或另一带 NFC 功能的手机把余下加密的所有扇区信息写下手机模拟的门禁卡
More

使用最新的 node v12 安装 electron 时,发现每次跑到下面的语句就会挂住,无法继续安装:

> electron@7.1.7 postinstall /Users/cxf/Dev/CapsIndicator/node_modules/electron
> node install.js

查看网上相关解决方案,发现是因为 npm 需要连接 github 下载 electron 安装包导致,安装包有 60M 左右,但从 github 下载却只有几 KB,所以感觉是卡住了。但改使用淘宝的 cnpm 发现还是会卡住,这是因为 electron 的包默认还是指向 github 下载,还有 electron 提供了修改下载地址的环境变量electron_mirror,使用npm config设置配置变量

npm config set electron_mirror "https://npm.taobao.org/mirrors/electron/"
More

使用xhprof测试slim框架的性能时,发现php抛了Segment Fault错误,试着使用gdb查看是什么导致的。

生成coredump文件

要生成php的coredump文件需要对系统进行一些配置,具体查看:Generating core-dump for php5-fpm

使用gdb调试coredump文件

执行gdb命令,因为coredump是php-fpm进程生成的,还需要指定php-fpm的路径,要不查看不了具体的代码执行信息。

$ gdb /usr/local/php5/sbin/php-fpm -c /tmp/core-php-fpm.1567 
More

近排开发的一个后台系统(域名:admin.test.test.com)在接入公司统一SSO时,遇到了cookie冲突引起的登录循环重定向的bug。

公司有一个统一的SSO登录页面,我们开发的系统是跳转到该页面实现登录验证的。有用户反映登录不了,浏览器提示循环重定向了,查看用户浏览器发现有两个相同名称的session cookie:

PHPSESSID=token1; path=/; expired=/; domain=.test.com  
PHPSESSID=token2; path=/; expired=/; domain=.test.test.com

显然这两个cookie的domain因为都是admin.test.test.com的根域名,使浏览器都发送到php后台系统了。第一个是后台系统(admin.test.test.com)写入的,是正确的session id,而第二个是由未知系统写入的。测试打印**$_COOKIE[‘PHPSESSID’]**发现输出是:

token2

很明显php读取到了错误的session id,所以导致系统读取不到保存在session中的登录信息,而误判用户为未登录,之后再把用户跳转回SSO登录页面,跳转回SSO系统后,SSO系统知道用户已登录过,再跳转回系统。。。这样就一直循环下去了=。=

More

预装编译环境

在ubuntu中执行下面命令安装编译依赖软件

> sudo apt-get install \
    libxml2-dev \
    libcurl4-openssl-dev \
    libjpeg-dev \
    libpng-dev \
    libxpm-dev \
    libmysqlclient-dev \
    libpq-dev \
    libicu-dev \
    libfreetype6-dev \
    libldap2-dev \
    libxslt-dev

More

php中有三个函数与捕捉运行错误有关,分别是:

set_error_handler:运行错误处理函数,php内核执行代码出错时一般是触发error,而不是抛异常,抛异常是面向对象编程中用的

set_exception_handler:运行异常信息处理函数,当代码中throw的异常没有被try-catch捕获时,就会调用该函数。php中error和exception的区别可以看这篇回答:php-exceptions-vs-errors

register_shutdown_function:脚本关闭执行函数,会在php脚本每次执行完成退出前运行。

为了保证运行错误能被顺利捕捉到,必须保证在有错的程序执行前先注册了错误处理函数。 一般错误处理代码结构如下:

More

由于国内网络的原因,在安装ruby相关软件时,经常会在请求rubygems.org下载时一直卡着不动,这时可以切换到淘宝的镜像源,速度嗖嗖的。

http://ruby.taobao.org/

详细的更改方法可以访问上面的网址,假如项目下有GemFile文件,还需要更改GemFile文件的配置源地址。

More

软件环境

继续下面的示例前,需要保证安装了下面的软件:

  • JDK 1.6
  • Android SDK
  • IntelliJ IDEA 12
  • Scala 2.10.2
  • Maven 3

IntelliJ IDEA 12正常也可以换为Android Studio,不过因为Android Studio是基于IntelliJ IDEA 13 EAP开发的,当前scala plugin还不支持13 EAP,所以还是建议使用IntelliJ IDEA 12,等scala plugin支持最新版后,再换为Android Studio进行开发。

示例项目

hello-scaloid-maven是一个完全使用maven编译的示例项目,借助android maven plugin插件可以把代码编译为android的apk文件。

More

Page 1 / 4
Top