自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 ext4文件系统结构分析应用实例--mount/umount文件系统改变了文件系统镜像的哪些数据?

背景在上一篇博文《构造固定大小的文件并进行格式化的方法》(https://blog.csdn.net/keheinash/article/details/104581785)中,提到创建ext4文件系统镜像是为了用于验证大文件加解密,将格式化后的ext4镜像加密再解密,并将解密后的镜像挂载,发现和未加密前的镜像挂载后的内容是一致的,且两个文件系统下每个文件的内容都是一致的,看起来大文件加解密是成...

2020-02-29 23:50:27 909 1

原创 Android系统app的domain(安全上下文)设定方法

背景在运行了SELinux的Linux系统中,一般通过为C/C++编写的可执行文件指定特殊的安全上下文,然后用type_transition语句设定这些文件被执行后,产生对应的C/C++进程的安全上下文,通过这种方法,可以为系统的所有C/C++进程设定我们需要的安全上下文。在Android系统中,除了C/C++进程外,还有大量的java应用,上述的通过type_transition指定安全上下...

2019-09-21 16:54:30 3732 1

原创 ECIES标准规范对比与实现的思考

主流ECIES标准规范对比

2024-04-19 10:30:09 751

原创 椭圆曲线密码学(ECC)基本介绍和总结

ECC英文全称"Elliptic Curve Cryptography",其背后的密码学原理或者说安全性,是基于椭圆曲线离散对数问题(Elliptic Curve Discrete Logarithm Problem,ECDLP)。ECC密码学被普遍认为是RSA密码系统的接替算法,相比于RSA,ECC在使用更短的密钥长度即可达到同等的安全性,比如ECC164位的密钥,相当于RSA 1024位密钥提供的保密强度,且由于密钥更短,运算速度和带宽占用上也更有优势。本文对ECC的基本知识点进行介绍和总结

2024-04-17 10:02:24 1131

原创 Android挂载QNX的NFS服务问题记录

Android挂载QNX的NFS服务问题记录配置方法挂载时提示“Permission denied”挂载后对挂载目录只有读权限,无法写入数据写入数据时提示“I/O error”在QNX开启NFS服务,由QNX上的guest OS–Android作为客户端,将QNX的目录作为网络设备以NFS的方式挂载。过程中主要遇到三个问题,下面分别描述配置方法,配置过程遇到的问题、分析思路以及解决方案。配置方法QNX侧1.1 将netconfig配置文件保存至/etc目录下,netconfig内容如下:# Ent

2022-03-02 16:17:09 5326 10

原创 Android persist类property 知识点

背景欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入在device.mk文件中新增了一个persist类的property,欢迎使用Markdown编辑器你好! 这是你第一次使用 Mark

2022-02-16 15:56:05 3874 1

转载 【转载】经典中的经典算法:动态规划(详细解释,从入门到实践,逐步讲解)

非原创,转载自:(https://blog.csdn.net/ailaojie/article/details/83014821) 动态规划的重要性就不多说,直接进入正题 首先,我们看一下官方定义: 定义: 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以...

2022-02-10 15:55:05 207

原创 构造固定大小的文件并进行格式化的方法

背景这两天工作中需要使用大文件验证文件加解密模块的效果,一般来说,无论是大文件还是小文件,要验证解密后的结果是否和明文一致,都是用md5sum、shasum等计算摘要的方式,比较解密后的结果的摘要和明文的摘要,如果摘要一致,则说明加解密功能是正常的。也可以通过直接查看明文文件和解密文件,进行对比,检查加解密效果,但是由于文件比较大,加载时间比较长,对内存的消耗也很大,操作起来很不方便。于是想...

2020-02-29 21:39:20 258

转载 正则表达式中断言的使用以及简单例子

正则表达式断言概念零宽断言匹配宽度为零,满足一定的条件/断言。零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配零宽断言分四种先行断言(零宽度正预测先行断言)表达式:(?=表...

2019-11-14 12:12:44 1932

转载 Android下uid与多用户释疑(一)

版权声明:本文为转载文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-09-21 11:00:03 464

转载 Android下uid与多用户释疑(二)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-09-21 10:56:57 327

原创 mount命令挂载文件系统时指定安全上下文的方法

背景Linux的mount命令的context相关选项,可以在挂载文件系统时指定文件系统及其上文件的安全上下文。context选项context选项可以在挂载时指定文件系统和文件系统上的文件的安全上下文。挂载成功后,文件系统和其上所有的文件的安全上下文都是context后面指定的值,如下所示,/log目录下的所以文件/目录的安全上下文都是system_u:object_r:log_tmou...

2019-08-17 16:49:15 1321

原创 SEAndroid的MLS相关知识以及配置方法

#背景##MLSMLS,即Multi-Level Security,多级安全,可以对系统的文件和进程进行分级。MLS源于BLP模型,是一种为军事领域涉及的安全模型。在SEAndroid的MLS里,每个进程和文件都有一个安全等级(level),level由敏感度(sensitive)和组别或者种类(category)组成。如下图所示,s0表示sensitive,c512,c768表示cat...

2019-08-17 14:54:59 3847 1

原创 使用make_ext4fs工具制作ext4文件系统时设置安全上下文遇到的问题

make_ext4fs是谷歌为了在Android平台上制作ext4文件系统的镜像而开发的工具,由于Google在 Android 4.4 上正式推出的一套以 SELinux 为基础于核心的系统安全机制SEAndroid,因此make_ext4fs的一些选项可以支持对文件系统中文件安全上下文进行设置。具体的安全上下文设置方法可参考《使用make_ext4fs制作文件系统时写入文件安全上下文的方法》...

2019-08-17 11:55:54 1183

原创 蓝牙渗透测试过程:部分工具使用方法

1)插入蓝牙适配器。2)打开BT服务service bluetooth start3)查看设备hciconfig4)激活设备hciconfig hci0 up5)扫描设备(显示蓝牙MAC地址和蓝牙名称)【扫描】hcitool scanhcitool inq //获取设备更多信息(clock offset 时钟偏移值,class设备类型)hcitool name MAC_addr...

2019-03-14 14:10:58 5862

原创 Linux常用的设置文件安全上下文命令使用方法

设置安全上下文常用命令setfileconsetfilecon介绍setfilecon用于设置文件/目录的安全上下文,后面直接跟上安全上下文以及文件的路径,其中待设置的文件/目录路径可以为多个,除此外没有其他的参数和选项,非常简单粗暴。setfilecon的获取如果提示没有安装这个命令,则需要先安装selinux-utils工具包sudo apt install selinux-ut...

2019-02-28 11:30:12 3661

原创 解决airodump-ng工具无法搜索5GHz频段的方法

关于解决airodump-ng工具无法搜索5GHz频段的方法欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能...

2019-02-27 14:16:51 7786 1

原创 SELinux初始化登录用户安全上下文的方法

在开启了SELinux的系统中,登录用户也有特定的安全上下文,可以用id -Z查看: 接下来说一下如何在策略文件中定义登录用户的默认安全上下文 1.在seusers中定义每个登录用户SELinux用户,如果不想为每一个用户都定义SELinux用户,可以使用__default__指定未定义SELinux用户时使用的默认SELinux用户名: 2.SELinux子系统启动后,会根据登录用...

2018-07-14 21:08:14 1133

原创 使用make_ext4fs制作文件系统时写入文件安全上下文的方法

make_ext4fs是谷歌为了在Android平台上制作ext4文件系统的镜像而开发的工具,也可以用于Linux平台上的镜像打包。安卓平台上,用make_ext4fs制作镜像的过程被封装在源码的脚本中,用户只需在file_context文件定义文件的安全上下文,在编译源码后得到的ext4镜像,其中的文件都会带有预设置的安全上下文。下面主要讲述在Linux上如何在使用make_ext4fs制作镜像时

2017-11-10 20:12:28 8264 1

原创 SELinux策略实例--type_transition(二)

上一篇博客http://blog.csdn.net/keheinash/article/details/70169705,讲了type_transition的一个实例,成功地让特定类型的进程执行指定可执行文件后,产生的新进程的domain成为策略文件中指定的类型。在上一篇博客的最后,把可执行文件替换为脚本文件后,再去执行脚本文件,策略就不起作用了,bash脚本: python脚本: 出现这个问题

2017-05-24 20:18:20 2773

原创 SELinux策略实例--type_transition(一)

在上一篇博客http://blog.csdn.net/keheinash/article/details/68945914说明了如何在不重新编译整个SELinux源码的情况下,单独编译加载一个模块。这次在模块里增加一个type_transition的实例,并且编译加载,检查是否生效。type_tansition的作用和语法SELinux中,安全上下文(Security Context)的定义是Use

2017-04-14 10:31:18 6345 1

原创 SELinux:编译加载源码和模块

在https://koji.fedoraproject.org/koji/packageinfo?packageID=32下载代码包,根据http://selinuxproject.org/page/NB_RefPolicy#Building_the_Fedora_Policy教程进行编译安装。安装完成功后,可以在/etc/selinux/看到新增了一个目录:refpolicy-rhczx,这个策略

2017-04-01 16:40:52 5946

原创 SELinux入门:模式查看与切换

SELinux–Security Enhanced Linux,是一个可以实现强访问控制(MAC)的Linux安全子系统。用户编写了安全策略,并且加载到系统中,可以控制主体(进程)对客体(种类很多,如普通文件,socket等)的操作。如果系统运行了SELinux,除了要满足标准Linux访问控制,还要满足SELinux访问控制,主体才能访问客体。SELinux模式查看与切换系统的SELinux有三种

2017-04-01 14:16:37 2281

原创 排序算法--选择排序之简单选择排序

在待排序记录中,选择一个最小的数,和第一个记录交换位置,在剩下n-1个的记录中选择最小的和第二个记录交换,依次类推,最终可以得到一个有序的序列。代码:#include <string.h>#include <malloc.h>#include <iostream>using namespace std;void printArray(int a[], int n){ for(int j=

2016-12-09 16:25:01 621

原创 排序算法--插入排序之希尔排序

希尔排序是对直接插入排序算法的改进,把整个序列分割为若干子序列,对每个子序列进行直接插入排序,最后对整个序列进行直接插入排序(因为经过前面的子序列排序,整个序列基本有序,最后进行一次直接插入排序效率会比一开始就做排序高)。如果掌握了直接插入排序,那么希尔排序也比较容易理解了。就是划分好子序列后,直接复用直接插入排序的代码。代码:#include <string.h>#include <malloc

2016-12-09 16:15:18 395

原创 排序算法--插入排序之直接插入排序

直接插入排序的核心思想是把一个记录插入一个有序序列中,每插入一个记录就得到一个新的有序序列,直到所有记录都插入成功,得到有序序列。每次插入记录时的有序序列如何得到,关键在第一次,第一次要插入的记录时序列的第二个值,有序序列只有一个值,就是第一个记录。代码:#include <string.h>#include <malloc.h>#include <iostream>using namespac

2016-12-09 15:46:48 415

原创 pymongo的一个注意点

python可以通过pymongo对mongodb进行相关操作,但是有一个点需要注意:mongodb存储的数据是bson格式,bson要求的数据必须是有效的utf8类型。我们在把数据保存到mongodb前,需求确保数据中都是有效的utf8字符,否则插入会出错。而从mongodb读取出数据后,按照utf8的格式进行处理。但是通过pymongo读取出数据后打印,发现数据类型都是Unicode。这是因为p

2016-12-09 10:53:25 2079

原创 C++的浅拷贝出现的错误

之前看一些资料提到浅拷贝的问题,即在复制对象时,只是对对象中的数据成员进行简单的赋值,默认拷贝构造函数执行的也是浅拷贝。如果对象中存在动态成员,如指针,那么仅仅做浅拷贝是不够的,并且容易引发错误,最经典的例子:#include <iostream>#include <stdio.h> using namespace std;class A{ public: A(){m_p

2016-07-30 18:39:06 892 1

原创 Linux网络编程:recv的返回值

recv是网络编程中用于TCP传输接收数据的接口,由于工作中一直没有接触到网络编程,虽然知道这个函数,但是没有使用经验,所有对接口细节不是很了解。直到前阵子在项目中调试第三方的源码时,跟踪到这个函数,才发现它的返回值和我想象的不太一样。recv函数的原型:ssize_t recv(int sockfd, void* buf, size_t len, int flags);之前知道的是如果读取成功,会

2016-07-29 23:41:44 7557 3

原创 由static_cast和dynamic_cast到C++对象占用内存的分析

static_cast和dynamic_cast是C++的类型转换操作符。编译器隐式执行的任何类型转换都可以由static_cast显式完成,即父类和子类之间也可以利用static_cast进行转换。而dynamic_cast只能用于类之间的转换。那么dynamic_cast的存在还有什么意义呢?因为dynamic_cast提供了一个重要的特性:运行时类型检查来保证转换的安全性。用static_ca

2016-07-27 21:07:55 1766

原创 找出给定字符串中第一个不重复的字符

给定一串字符串,找出其中第一个不重复的字符。 如:输入”abcddcaeb1~soop”,输出’e’方法一思路:定义一个list<char> recd,对输入字符串str进行遍历,分别查找每个字符是否出现在recd中,如果存在,则把recd中的该字符删除,如果不存在,则将该字符放进recd中。即用recd存放字符串中只出现了一次的字符。那么当遍历完str后,recd的第一个元素就是我们要找的字符,

2016-07-26 20:10:37 7036

原创 把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表

实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。这道题可以分成两个思路: 1.先把两个链表合并成一个链表,合并后的链表从大到小排序 2.将链表逆置,得到从小到达排序的链表链表合并最粗暴的方法,遍历第一个链表的节点,和第二个链表的每一个节点比较,找出最小者作为链表的新节点插入,这个方法的时间复杂度为O(len1*len2)。由于两个链表是有序的,因此我们可以

2016-07-16 22:59:16 16059

原创 编程实现打印出26个字母的所有子集

一看到这道题可能没有什么思路,那么先从字母比较少数 的情况开始观察:假设只有A B C三个字母,那么他们的所有子集是什么? {A},{B},{C},{A,B},{A,C},{B,C},{A,B,C},空集根据上面的列举我们可以画出下面的表: A B C 1 0 0 0

2016-07-16 11:51:33 2729

原创 shell编程:递归遍历目录下的所有文件并统一改名

遇到一道题目,如何把某个目录下的每个文件统一在名字前加上”abc”,用shell实现首先分析,一个目录下除了文件,还可能存在目录,这里可以看出需要有递归操作,如果是文件直接改名,目录则进入然后进行遍历 如何实现遍历?我们写一个函数:function travFolder(){ #echo "travFolder" flist=`ls $1` cd $1 #echo

2016-07-08 19:55:12 12107

原创 用哈希表判断两个单链表是否相交的问题

判断两个单链表是否相交,一般有下面几种方法: 1.遍历第一个链表,记录每次获得的节点地址,然后遍历第二个链表,看记录的节点地址是否存在第二个链表中,这种方法的时间复杂度为O(n^2)。2.对第一个链表的每个节点地址构造哈希表,然后遍历第二个链表,查找当前节点是否存在哈希表中,此方式的时间复杂度为O(len1+len2)。3.将其中一个链表首尾相接,遍历另一个链表,如果能达到首尾相接链表的头,说明两

2016-06-16 20:26:23 1598

原创 sqlite操作总结(二)

sqlite除了可以读写基本的数据类型,还包括二进制类型,下面描述在sqlite中读写二进制数据的方法。首先,在建表时,将这类数据的类型定义为BLOB:CREATE TABLE IF NOT EXISTS T1 ("PersistentId TEXT NOT NULL PRIMARY KEY, Items BLOB");Items这个字段就是二进制类型的数据,当我们要加入一条数据时:bool_t

2016-06-12 21:24:52 1794

原创 sqlite操作总结(一)

sqlite是一款轻量级的数据库,提供了C/C++的API,在嵌入式领域应用广泛。我是在Linux下利用sqlite的源码编译成动态库,在我的代码里直接调用sqlite的接口,非常易于使用。简单列举几个常用的接口,网上的资料都有,而且也很容易使用int sqlite3_open(const char *filename, sqlite3 **ppDb );创建数据库接口,如果filename表示的数

2016-06-12 20:34:42 2593

原创 sqlite操作总结(四)

sqlite是一款轻量级的数据库,提供了C/C++的API,在嵌入式领域应用广泛。我是在Linux下利用sqlite的源码编译成动态库,在我的代码里直接调用sqlite的接口,非常易于使用。当我们把执行sqlite3_exec接口,插入数据的时候默认一条语句就是一个事务,数据会马上写入数据库,再从接口返回,即有多少条数据就有多少次磁盘操作,在对性能要求高的场景下会是一个问题。sqlite提供了对事务

2016-06-07 22:08:01 811

原创 用模板统一对多线程变量的使用

有时候需要定义全局变量供多个线程使用,为了对变量进行保护,需要对其进行加锁的操作如果全局变量较多,每个变量都进行加锁的操作,会导致代码繁琐混乱使用类模板,可以将加锁/解锁的操作统一#include <pthread.h>#include <stdlib.h>#include <stdio.h>#include <unistd.h>template <class T>class tepltTe

2016-05-16 19:56:49 814

原创 Linux多线程锁属性设置

互斥锁是Linux下多线程资源保护的常用手段,但是在时序复杂的情况下,很容易会出现死锁的情况。可以通过设置锁的属性,避免同一条线程重复上锁导致死锁的问题。通过int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type)接口设置一般是以下四种属性:PTHREAD_MUTEX_NORMALThis type of mutex do

2016-05-16 19:26:23 1112

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除