1.mimikatz源码分析-lsadump模块(注册表)
2.Hive 编程专题之 - 自定义函数 Java 篇
3.apache atlas独立部署(hadoop、启动启动hive、源码kafka、启动启动hbase、源码solr、启动启动zookeeper)
4.beehive 源码阅读- go 语言的源码丢线源码自动化机器
5.深入源码分析下 HIVE JDBC 的超时机制及其如何配置 socketTimeOut
6.大数据笔试真题集锦---第五章:Hive面试题
mimikatz源码分析-lsadump模块(注册表)
mimikatz是一款内网渗透中的强大工具,本文将深入分析其lsadump模块中的启动启动sam部分,探索如何从注册表获取用户哈希。源码
首先,启动启动简要了解一下Windows注册表hive文件的源码结构。hive文件结构类似于PE文件,启动启动包括文件头和多个节区,源码每个节区又有节区头和巢室。启动启动其中,源码巢箱由HBASE_BLOCK表示,启动启动巢室由BIN和CELL表示,整体结构被称为“储巢”。通过分析hive文件的结构图,可以更直观地理解其内部组织。
在解析过程中,需要关注的关键部分包括块的签名(regf)和节区的签名(hbin)。这些签名对于定位和解析注册表中的数据至关重要。
接下来,深入解析mimikatz的解析流程。在具备sam文件和system文件的情况下,主要分为以下步骤:获取注册表system的句柄、读取计算机名和解密密钥、获取注册表sam的句柄以及读取用户名和用户哈希。若无sam文件和system文件,html禁止查看源码mimikatz将直接通过官方API读取本地机器的注册表。
在mimikatz中,会定义几个关键结构体,包括用于标识操作的注册表对象和内容的结构体(PKULL_M_REGISTRY_HANDLE)以及注册表文件句柄结构体(HKULL_M_REGISTRY_HANDLE)。这些结构体包含了文件映射句柄、映射到调用进程地址空间的位置、巢箱的起始位置以及用于查找子键和子键值的键巢室。
在获取注册表“句柄”后,接下来的任务是获取计算机名和解密密钥。密钥位于HKLM\SYSTEM\ControlSet\Current\Control\LSA,通过查找键值,将其转换为四个字节的密钥数据。利用这个密钥数据,mimikatz能够解析出最终的密钥。
对于sam文件和system文件的操作,主要涉及文件映射到内存的过程,通过Windows API(CreateFileMapping和MapViewOfFile)实现。这些API使得mimikatz能够在不占用大量系统资源的情况下,方便地处理大文件。
在获取了注册表系统和sam的句柄后,mimikatz会进一步解析注册表以获取计算机名和密钥。对于密钥的获取,mimikatz通过遍历注册表项,定位到特定的键值,并通过转换宽字符为字节序列,最终组装出密钥数据。
接着,解析过程继续进行,thinking in java源码获取用户名和用户哈希。在解析sam键时,mimikatz首先会获取SID,然后遍历HKLM\SAM\Domains\Account\Users,解析获取用户名及其对应的哈希。解析流程涉及多个步骤,包括定位samKey、获取用户名和用户哈希,以及使用samKey解密哈希数据。
对于samKey的获取,mimikatz需要解密加密的数据,使用syskey作为解密密钥。解密过程根据加密算法(rc4或aes)有所不同,但在最终阶段,mimikatz会调用系统函数对数据进行解密,从而获取用户哈希。
在完成用户哈希的解析后,mimikatz还提供了一个额外的功能:获取SupplementalCreds。这个功能可以解析并解密获取对应用户的SupplementalCredentials属性,包括明文密码及哈希值,为用户提供更全面的哈希信息。
综上所述,mimikatz通过解析注册表,实现了从系统中获取用户哈希的高效功能,为内网渗透提供了强大的工具支持。通过深入理解其解析流程和关键结构体的定义,可以更好地掌握如何利用mimikatz进行深入的安全分析和取证工作。
Hive 编程专题之 - 自定义函数 Java 篇
Hive函数分为内置函数与自定义函数,主力进出指标源码内建函数包括字符、数值、日期与转换等类型。
自定义函数类似于传统商业数据库中的编译函数,如SQL Server中使用C#解决内建函数无法解决的问题,Oracle中则使用Java编写的Jar扩展功能,Hive中的自定义函数同样依赖Jar,提供Java编写程序以处理内置函数无法达到的功能。
使用Java编写Hive自定义函数步骤包括:
1. 常看所有内置与自定义函数。
2. Java或Scala编写自定义函数。
3. 使用Eclipse或其他Java编辑工具生成JAR文件。
4. 将生成的JAR文件放置于HDFS中,Hive即可应用。
5. 使用Java编写简单的Hive自定义函数,步骤如下:
5.1 使用Eclipse建立Maven项目。
5.2 引入特定的Hive/Hadoop JAR。
5.3 从Hive源代码或Hadoop基类库中寻找所需库。
5.4 编写简单的大写转换函数。
5.5 导出Eclipse,导入Hive类路径。
5.6 定义Hive函数,需带上全路径,即类的包路径。
5.7 修改Java代码,再执行相关步骤。
通过以上步骤,成功使用Java编写一个供Hive调用的函数。
apache atlas独立部署(hadoop、java源码如何使用hive、kafka、hbase、solr、zookeeper)
在CentOS 7虚拟机(IP: ...)上部署Apache Atlas,独立运行时需要以下步骤:Apache Atlas 独立部署(集成Hadoop、Hive、Kafka、HBase、Solr、Zookeeper)
**前提环境**:Java 1.8、Hadoop-2.7.4、JDBC驱动、Zookeeper(用于Atlas的HBase和Solr)一、Hadoop 安装
设置主机名为 master
关闭防火墙
设置免密码登录
解压Hadoop-2.7.4
安装JDK
查看Hadoop版本
配置Hadoop环境
格式化HDFS(确保路径存在)
设置环境变量
生成SSH密钥并配置免密码登录
启动Hadoop服务
访问Hadoop集群
二、Hive 安装
解压Hive
配置环境变量
验证Hive版本
复制MySQL驱动至hive/lib
创建MySQL数据库并执行命令
执行Hive命令
检查已创建的数据库
三、Kafka 伪分布式安装
安装并启动Kafka
测试Kafka(使用kafka-console-producer.sh与kafka-console-consumer.sh)
配置多个Kafka server属性文件
四、HBase 安装与配置
解压HBase
配置环境变量
修改配置文件
启动HBase
访问HBase界面
解决配置问题(如JDK版本兼容、ZooKeeper集成)
五、Solr 集群安装
解压Solr
启动并测试Solr
配置ZooKeeper与SOLR_PORT
创建Solr collection
六、Apache Atlas 独立部署
编译Apache Atlas源码,选择独立部署版本
不使用内置的HBase和Solr
编译完成后,使用集成的Solr到Apache Atlas
修改配置文件以指向正确的存储位置
七、Apache Atlas 独立部署问题解决
确保HBase配置文件位置正确
解决启动时的JanusGraph和HBase异常
确保Solr集群配置正确
部署完成后,Apache Atlas将独立运行,与Hadoop、Hive、Kafka、HBase、Solr和Zookeeper集成,提供数据湖和元数据管理功能。beehive 源码阅读- go 语言的自动化机器
beehive源码深入解析:Go语言中的自动化机器设计
beehive的核心模块系统在包<p>bees</p>中体现其独特的解耦设计,这使得系统操作简便且易于扩展。只需要少量的学习,就能扩展自己的beehive功能。这里的"bee"代表Worker,执行具体任务,类似于采蜜的工蜂;而"hive"则是一个WorkerPool的工厂,通过简单配置(如一个token)即可创建针对特定任务的bee。
"chain"是连接事件和处理的关键,它将事件(如博客更新)与响应(如发送邮件)关联起来,通过事件通道(eventChan)触发并执行相应的action。WebBee的实现展示了如何在Run方法中接收事件并唤醒相应的bee,同时ServeHTTP函数负责press"="gzip"。
5.5 内部表和外部表
外部表使用external关键字和指定HDFS目录创建。 内部表在创建时生成对应目录的文件夹,外部表以指定文件夹为数据源。 内部表删除时删除整个文件夹,外部表仅删除元数据。5.6 分区表和分桶表
分区表按分区字段拆分存储,避免全表查询,提高效率。 动态分区通过设置参数开启,根据字段值决定分区。 分桶表依据分桶字段hash值分组拆分数据。5.7 行转列和列转行
行转列使用split、explode、laterview,列转行使用concat_ws、collect_list/set。5.8 Hive时间函数
from_unixtime、unix_timestamp、to_date、month、weekofyear、quarter、trunc、current_date、date_add、date_sub、datediff。 时间戳支持转换和截断,标准格式为'yyyy-MM-dd HH:mm:ss'。 month函数基于标准格式截断,识别时截取前7位。5.9 Hive 排名函数
row_number、dense_rank、rank。5. Hive 分析函数:Ntile
效果:排序并分桶。 ntile(3) over(partition by A order by B)效果,可用于取前%数据统计。5. Hive 拉链表更新
实现方式和优化策略。5. Hive 排序
order by、order by limit、sort by、sort by limit的原理和应用场景。5. Hive 调优
减少distinct、优化map任务数量、并行度优化、小文件问题解决、存储格式和压缩格式设置。5. Hive和Hbase区别
Hive和Hbase的区别,Hive面向分析、高延迟、结构化,Hbase面向编程、低延迟、非结构化。5. 其他
用过的开窗函数、表join转换原理、sort by和order by的区别、交易表查询示例、登录用户数量查询、动态分区与静态分区的区别。Hadoop3.3.5集成Hive4+Tez-0..2+iceberg踩坑过程
在集成Hadoop 3.3.5、Hive 4、Tez 0..2以及Iceberg 1.3的过程中,我们面对了诸多挑战,并在多方寻找资料与测试后成功完成集成。以下为集成步骤的详细说明。
首先,确保Hadoop版本为3.3.5,这是Hive运行的前置需求。紧接着,安装Tez作为计算引擎。由于Tez 0..2的依赖版本为3.3.1,与当前的Hadoop版本不符,因此,我们需手动编译Tez以避免执行SELECT操作时出现的错误。编译前,下载官方发布的Tez源码(release-0..2),并解压以获取编译所需文件。编译过程中,注意更新pom.xml文件中的Hadoop版本号至3.3.5,同时配置protoc.path为解压后的protoc.exe路径,并添加Maven仓库源。确保只编译tez-0..2-minimal.tar.gz,避免不必要的编译耗时。完成后,将编译好的文件上传至HDFS,并在主节点hadoop配置目录下新增tez-site.xml,同步配置至所有节点后重启集群。
Hive作为基于Hadoop的数据仓库工具,提供SQL查询和数据分析能力,新版本Hive 4集成了Iceberg 1.3,无需额外配置。本次集成步骤包括下载、解压、配置环境变量及初始化元数据。下载最新的Hive 4.0.0-beta-1版本,解压并配置环境变量,删除指定jar文件以避免提示错误。修改配置文件以设置Hive环境变量,并确保连接信息正确。初始化Hive元数据后,可以使用hive执行文件启动Hive服务。编写hive_management.sh脚本以实现Hive服务的管理。
通过beeline命令进行连接,执行创建数据库和表的SQL语句,使用Hive进行数据插入和查询。值得注意的是,Hive 4.0.0-beta-1已集成Iceberg 1.3,因此无需额外加载jar包,只需将计算引擎设置为Tez。若需更新Iceberg版本,需下载Hive源码,修改依赖并编译特定包。
为了创建Iceberg分区表,使用熟悉的Hive命令语法,例如创建分区表时使用STORED BY ICEBERG。分区规范的语法也与Spark相似,可在HMS中获取Iceberg分区详细信息,并执行相应的数据转换操作。参考文档提供了从安装至配置的详细指导,确保了集成过程的顺利进行。