2021-02-19 #shell
在Shell脚本中使用管道,由于管道另一端开启了新进程,导致新进程脚本变量虽然可见,虽但无法对脚本变量应用修改。这就造成了如果管道另一端是 while 之类的语句块,则脚本中变量在语句块中看似被修改了,但跳出语句块后变量还是脚本中原有的值。解决方法也很简单,大致以下几种:
- 使用变量替代管道
- 使用重定向替代管道
- 使用进程替代(process substitution,
<(command)
和>(command)
)
2021-01-20
Python 中的整型虽然没有长度限制,但通过 hash 函数调用的 __hash__ 魔术方法返回的整数长度是有限制的(记录在 sys.hash_info.width )。如果返回数值超过机器位宽,返回值将溢出。Debug 时就可能会遇到在 __hash__ 方法中观察到一个比较长的返回值,返回并赋值到变量后数值和之前观察的不一样,这种令人困惑的情况(没错,我就遇到了=_=)。顺带一提,直接调用 __hash__ 方法不会溢出。
https://docs.python.org/3/reference/datamodel.html#object.__hash__
2021-01-07
Java 加密中,PKCS5Padding 算法是填充到16字节(128位)的倍数。直接搜索PKCS5结果多会说是8字节的倍数……
Python 的 cryptography.hazmat.primitives.padding 包中没有提供 PKCS5。因为
PKCS7 可以填充到任意长度的倍数,所以可以使用 PKCS7 代替 PKCS5:
from cryptography.hazmat.primitives import padding def PKCS5(): return padding.PKCS7(16 * 8)
2021-01-06
App 在执行到 Frida 重写了的方法时崩溃,查看 logcat 可以看到类似于如下的报错:
zygote64: profile_saver.cc:359] Check failed: method.GetCounter() == 0u (method.GetCounter()=16, 0u=0) <方法签名…>
使用如下命令关闭 JIT 即可:
adb root adb shell stop adb shell setprop dalvik.vm.usejit false adb shell start
Frida 后续的版本将会修复这个问题。
Troubles with ART`s JIT-profiles after Java method get hooked
2021-01-05
使用 docker cp 将文件复制到容器中可能会存在权限问题。目前想到的解决方法是使用 docker inspect 得到容器路径(UpperDir)后,直接到容器路径下使用 chown 改变文件所有者;如果容器可以运行起来,使用 docker exec 进入容器并打开一个 Shell 再使用 chown 操作文件。
2021-01-03
Android x86 启动后停留在字符终端、无法进入图形界面。可以进入Debug模式,编辑GRUB4DOS配置文件,加上内核参数 nomodeset 即可解决。
2020-01-23
Python中除下列转义字符,字符串中的反斜杠带上其他字符会被当作普通的反斜杠字符。
转义序列 | 意义 | 注释 |
---|---|---|
\newline | 反斜杠加换行全被忽略 | |
\\ | 反斜杠 (\) | |
\’ | 单引号 (‘) | |
\” | 双引号 (“) | |
\a | ASCII 响铃 (BEL) | |
\b | ASCII 退格 (BS) | |
\f | ASCII 进纸 (FF) | |
\n | ASCII 换行 (LF) | |
\r | ASCII 回车 (CR) | |
\t | ASCII 水平制表 (TAB) | |
\v | ASCII 垂直制表 (VT) | |
\ooo | 八进制数 ooo 码位的字符 | (1,3) |
\xhh | 十六进制数 hh 码位的字符 | (2,3) |
Java中,编译时会报错。GCC编译时会有警告,运行时会忽略反斜杠。
https://docs.python.org/zh-cn/3/reference/lexical_analysis.html#literals
2019-12-15
使用gcc编译时,动态链接库放源代码后面。(依赖项放后面,被依赖项放前面)
如,源码中使用log() 函数,编译需要链接libm.so 。此时编译命令为:
gcc -o main main.c -lm 。
2019-12-09
PHP(7.3.12)mysqli.default_socket 、pdo_mysql.default_socket 等设置为空时,默认使用 /tmp/mysql.sock
2019-11-14
在amd64系统中使用gcc编译32位应用(-m32)时出现错误:
fatal error: bits/libc-header-start.h: No such file or directory
安装一下gcc-multilib
2019-09-05
CentOS手动运行yum工具安装的dockerd 后,用docker start 命令启动容器出现类似下面的Log
ERRO[0009] Handler for POST /v1.26/containers/<container_name>/start returned error: Unknown runtime specified docker-runc
关闭dockerd,用service命令启动问题解决。。。
或者加一些参数手动运行dockerd :–add-runtime docker-runc=/usr/libexec/docker/docker-runc-current –default-runtime=docker-runc
(之前一直用的是Binaries版https://download.docker.com/linux/static/stable/,以为都可以dockerd 直接运行。。。)
2019-08-12
为VirtualBox中的ArchLinux(5.2.8-arch1-1-ARCH 2019-08-01)虚拟机安装Virtualbox Guest Additions增强功能virtualbox-guest-utils/virtualbox-guest-utils-nox(6.0.10-1)后,不需要加载vboxfs模块,直接使用mount.vboxfs命令进行挂载。
2019-08-11
Windows XP SP3中VirtualBox 5.2.32运行虚拟机会有类似下面的错误弹窗:
不能为虚拟电脑 Arch 打开一个新任务.
The virtual machine ‘Arch’ has terminated unexpectedly during startup with exit code 1 (0x1). More details may be available in ‘E:\VirtualBox\Arch\Logs\VBoxHardening.log’.
返回 代码: | E_FAIL (0x80004005) |
组件: | MachineWrap |
界面: | IMachine {85cd948e-a71f-4289-281e-0ca7ad48cd89} |
上面提到的日志中显示加载crypt32.dll时出现问题:
49c.388: supR3HardenedScreenImage/LdrLoadDll: cache hit (Unknown Status -22900 (0xffffa68c)) on \Device\HarddiskVolume1\WINDOWS\system32\crypt32.dll
49c.388: Error (rc=0):
49c.388: supR3HardenedScreenImage/LdrLoadDll: cached rc=Unknown Status -22900 (0xffffa68c) fImage=1 fProtect=0x0 fAccess=0x0 cHits=6 \Device\HarddiskVolume1\WINDOWS\system32\crypt32.dll
49c.388: Error (rc=0):
49c.388: supR3HardenedMonitor_LdrLoadDll: rejecting ‘C:\WINDOWS\system32\crypt32.dll’ (C:\WINDOWS\system32\crypt32.dll): rcNt=0xc0000190
49c.388: supR3HardenedMonitor_LdrLoadDll: returns rcNt=0xc0000190 ‘C:\WINDOWS\system32\crypt32.dll’
49c.388: Fatal error:
49c.388: Error loading ‘crypt32.dll’: 1790 [C:\WINDOWS\system32\crypt32.dll]
将VirtualBox版本降到4.3.12后可正常使用。
2019-07-16
浏览器不会将URL中的fragment/anchor部分(锚点)发送到服务器。How to identify an anchor in a url in Django? – Stack Overflow
2019-05-22
使用IDEA(2018.1)打包jar文件时,MANIFEST文件不要放在src/main/java文件夹下。
2019-04-19
NGINX的GZip模块只对Response起作用。解压Request可能需要写Lua:https://huoding.com/2013/09/02/283
MariaDB中,即使是空数据表也要用CONVERT TO CHARSET改变编码。
2019-02-10
Gradle(4.4)配置Dagger2(2.21)时,annotationProcesser毫无用处。使用kapt后,编译有语法错误。错误指向由Kotlin(1.3.11)代码生成的Java源文件。使用最新版本Kotlin(1.3.21)不再报错。
2019-02-03
正则表达式后瞻断言(Lookbehind assertions (?<=…) )只能用于匹配定长字符串。即*、+、?、 {n,m}等操作都不允许出现。(?<=abc|abde) 的写法是被允许的。
http://php.net/manual/zh/regexp.reference.assertions.php
2019-01-16
使用Android的CoordinatorLayout,要在内容标签上设置app:layout_behavior=”@string/appbar_scrolling_view_behavior”才不会被ActionBar遮挡。
2018-08-20
RaspberryPi开启I2C后还要手动加载i2c-dev模块sudo modprobe i2c-dev
2018-08-16
AppCompatActivity右上角overflow按钮在设备存在物理菜单按键时不会显示。。。https://blog.csdn.net/jdsjlzx/article/details/36433441
2018-08-09
安装Ubuntu 16.04.5时选择中文安装界面后,步骤“安装系统”出现“无法安装busybox-initramfs”导致安装失败。
2018-07-28
Whoosh包1.6版vector设置为True的Schema在存储空字符串时会抛出IndexError异常,更新后正常。然而Flask-WhooshAlchemy插件的requirements.txt文件指定的Whoosh版本就是1.6,并且vector也设置为True。。。
近期评论