使用 Core dump 解密加密的sh脚本

使用 Core dump 解密加密的脚本 之前遇到网上的集成的shell脚本有点问题想手动修改下,发现脚本是加密的,网上找了好久发现有gzexe、shc加密方法都尝试了一遍,可惜解密都不成功,最后用了一个粗暴的办法就是任何程序总要加载到内存运行的吧,那就直接中断coredump查看内存里的内容,以下是具体方法。 root用户执行如下命令 ulimit -c unlimited echo "/core_dump/%e-%p-%t.core" > /proc/sys/kernel/core_pattern mkdir /core_dump 以上第一句是设置内核coredump大小,这里设置不限制。第二句是设置coredump存储位置和格式,%e代表可执行程序名,%p代表pid, %t代表生成时间。然后去执行脚本如xxx.sh ./xxx.sh 6 start & (sleep 0.01 && kill -SIGSEGV $!) 之后会输出类似[1]+ Segmentation fault (core dumped)...的提示,然后查看/core_dump文件夹下,就会有dump出来的文件了,直接vim打开查看会有一些乱码手动处理一下就可以了。 如果在core_dump文件夹下没有dump出来的文件,可使用如下命令测试然后查看是否有文件生成。 sleep 15 & killall -SIGSEGV sleep 正常情况下core_dump文件夹下会有以sleep开头的文件。

October 16, 2019 · 1 min · 40 words · Fython

Python实现单例(Singleton)的几种方法

Python实现单例(Singleton)的几种方法 单例是一种比较简单的设计模式,每次实例化只提供一个相同的实例对象,对于保证实例唯一和节约系统资源的时候十分有用,下面就看看python中实现单例的几种方法 使用__new__方法 因为在类的实例化过程中__new__方法会比__init__提前调用,我们在类属性中保存一个_singleton每次只返回这个。 class Singleton: def __new__(cls, *args, **kwargs): if not getattr(cls, '_singleton', None): cls._singleton = super().__new__(cls, *args, **kwargs) return cls._singleton class MyClass(Singleton): pass a = MyClass() b = MyClass() print(id(a)) # 4433117872 print(id(b)) # 4433117872 print(a is b) # True 使用装饰器 from functools import wraps def singleton(cls): _singleton = {} @wraps(cls) def wrapper(*args, **kwargs): if not _singleton.get(cls): _singleton[cls] = cls(*args, **kwargs) return _singleton[cls] return wrapper @singleton class MyClass: pass 利用装饰器中的_singleton变量存储所有类的实例...

February 27, 2019 · 1 min · 96 words · Fython

Mac不安装第三方应用读写NTFS格式硬盘

Mac不安装第三方应用读写NTFS格式硬盘 首先插入硬盘或者U盘,现在的盘只能读取,我们先umount以/dev/disk3s2分区为例 ❯ mount # 列出挂载分区 /dev/disk1s5 on / (apfs, local, read-only, journaled) devfs on /dev (devfs, local, nobrowse) /dev/disk1s1 on /System/Volumes/Data (apfs, local, journaled, nobrowse) /dev/disk1s4 on /private/var/vm (apfs, local, journaled, nobrowse) /dev/disk3s2 on /Volumes/TOSHIBA EXT (ntfs, local, nodev, nosuid, read-only, noowners) ❯ sudo umount /Volumes/TOSHIBA\ EXT 创建挂在路径,然后手动挂载 sudo mkdir /Volumes/mount sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk3s2 /Volumes/mount cd /Volumes/mount 就这样移动硬盘可读写了,也可以打开Finder试试

January 25, 2019 · 1 min · 63 words · Fython

Mysql数据库备份脚本(使用mysqldump)

Mysql(mysqldump)备份脚本 记录下服务器上一个备份 mysql 数据库的脚本,使用 mysql 自带的mysqldump命令 !/usr/bin/env bash USER=username PASSWORD=password MAXIMUM_BACKUP_FILES=10 BACKUP_FOLDER=/path/to/save/folder DATABASES=( db_name_0 db_name_1 ) # check mysqldump instlled _=$(command -v mysqldump) if [[ $? != 0 ]] then printf "You don't seem to mysqldump installed, exit..\n" exit 1 fi # create backup folder if [ ! -d $BACKUP_FOLDER ] then mkdir $BACKUP_FOLDER fi # backup for DB in ${DATABASES[@]} do echo backing up ${DB} database ... if $(mysqldump --host=localhost --user=${USER} --password=${PASSWORD} ${DB} | gzip -9 > ${BACKUP_FOLDER}/db_${DB}_$(date +"%Y%m%d")....

November 8, 2018 · 2 min · 260 words · Fython

使用 Cython 加密 Python 项目

最近公司需要将 python 代码部署到端上查了各种加密方法说到底 python 其实是不建议加密部署的,像什么生成.pyc其实都是很容易反编译直接运行的,因为它是解释型语言。不像 C 或者 java 可以编译后生成机器码直接部署。还有看到把项目打包成.exe文件,在 windows 上运行,由于我们使用 Linux 平台没有尝试,最后选择了使用Cython这个库来加密(编译成二进制)。 Cython其实就是把py 代码编译成 C或者 C++代码来执行,在Linux 上会生成.so二进制文件,Windows下为.pyd,所以还有一个作用是加速代码的执行效率。但还有一些限制如项目中不能删除__init__.py否者包导入会失败。详细可参考官方文档,Cython 还在持续开发中支持 Python3,下面也用Python3演示。 先来做一些准备工作定义编译后的文件夹build和一些部署不需要的文件和文件夹,将待编译的.py文件加入ext_modules列表 cur_dir = os.path.abspath(os.path.dirname(__file__)) setup_file = os.path.split(__file__)[1] build_dir = os.path.join(cur_dir, 'build') build_tmp_dir = os.path.join(build_dir, "temp") # define exclude dirs, these dirs will be deleted exclude_dirs = ['.git', '__pycache__', 'test', 'logs', 'venv', 'tests'] # defile exclude files, these files will be deleted exclude_files = ['*.md', '.gitignore', '.python-version', 'requirements.txt', '*.pyc', '*.c'] # these `....

November 3, 2018 · 2 min · 307 words · Fython