lcx on linux

端口转发lcx工具+nc反弹工具使用 一、lcx工具 lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap, Windows版使用方法如下: 1、 lcx 内网端口转发 本机IP:192.168.1.10 目标机IP:192.168.1.5 本机运行: lcx -listen 3333 2222 目标机运行:lcx -slave 192.168.1.10 3333 192.168.1.5 3389 将192.168.1.5的3389端口映射给 阅读详情
/* Socket data transport tool
* by bkbll(bkbll@cnhonker.net)
* [bkbll@mobile socket]$ uname -a
* Linux mobile 2.4.18-14 #1 Wed Sep 4 13:35:50 EDT 2002 i686 i686 i386 GNU/Linux
* [bkbll@mobile socket]$ gcc -o trtool trtool.c
* [bkbll@mobile socket]$ ./trtool
* Socket data transport tool
* by bkbll(bkbll@cnhonker.net)
* Usage:./trtool -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]
* -v: version
* -h1: host1
* -h2: host2
* -p1: port1
* -p2: port2
* -log: log the data
* -m: the action method for this tool
* 1: listen on PORT1 and connect to HOST2:PORT2
* 2: listen on PORT1 and PORT2
* 3: connect to HOST1:PORT1 and HOST2:PORT2
*/
#include <sys/time.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <netdb.h>

#define VERSION "2.2"
#define TIMEOUT 300
#define max(a,b) (a)>(b)?(a):(b)
#define MAXSIZE 10240
#define HOSTLEN 40
#define CONNECT_NUMBER 5

/* define function here */
void usage(char *s);
void transdata(int fd1,int fd2);
void closeallfd();
void makelog(char *buffer,int length);
int testifisvalue(char *str);
int bind2conn(int port1,char *host,int port2);
int bind2bind(int port1,int port2);
int conn2conn(char *host1,int port1,char *host2,int port2);
int create_socket();
int create_serv(int sockfd,int port);
int client_connect(int sockfd,char* server,int port);

/* define GLOBAL varible here */
extern int errno;
FILE *fp;

main(int argc,char **argv)
{
char **p;
char host1[HOSTLEN],host2[HOSTLEN];
int port1=0,port2=0,method=0;
int length;
char *logfile=NULL;

p=argv;
memset(host1,0,HOSTLEN);
memset(host2,0,HOSTLEN);
while(*p)
{
if(strcmp(*p,"-v")==0)
{
printf("Socket data transport tool./r/nVersion:%s/r/n",VERSION);
p++;
continue;
}
if(strcmp(*p,"-h1")==0)
{
if(testifisvalue(*(p+1))==1)
{
length=(strlen(*(p+1))>HOSTLEN-1)?HOSTLEN-1:strlen(*(p+1));
strncpy(host1,*(++p),length);
}
p++;
continue;
}
if(strcmp(*p,"-h2")==0)
{
if(testifisvalue(*(p+1))==1)
{
length=(strlen(*(p+1))>HOSTLEN-1)?HOSTLEN-1:strlen(*(p+1));
strncpy(host2,*(++p),length);
}
p++;
continue;
}
if(strcmp(*p,"-p1")==0)
{
if(testifisvalue(*(p+1))==1)
port1=atoi(*(++p));
p++;
continue;
}
if(strcmp(*p,"-p2")==0)
{
if(testifisvalue(*(p+1))==1)
port2=atoi(*(++p));
p++;
continue;
}
if(strcmp(*p,"-m")==0)
{
if(testifisvalue(*(p+1))==1)
method=atoi(*(++p));
p++;
continue;
}
if(strcmp(*p,"-log")==0)
{
if(testifisvalue(*(p+1))==1)
logfile=*(++p);
else
{
printf("[ERROR]:must supply logfile name/r/n");
exit(0);
}
p++;
continue;
}
p++;
}
signal(SIGCLD,SIG_IGN);
signal(SIGINT,&closeallfd);
if(logfile !=NULL)
{
fp=fopen(logfile,"a");
if(fp == NULL )
{
perror("open logfile");
exit(0);
}
}
makelog("######################## start ################/r/n",49);
switch(method)
{
case 0:
usage(argv[0]);
break;
case 1:
if((port1==0) || (port2==0))
{
printf("[ERROR]:must supply PORT1 and PORT2./r/n");
break;
}
if(strlen(host2)==0)
{
printf("[ERROR]:must supply HOST2./r/n");
break;
}
bind2conn(port1,host2,port2);
break;
case 2:
if((port1==0) || (port2==0))
{
printf("[ERROR]:must supply PORT1 and PORT2./r/n");
break;
}
bind2bind(port1,port2);
break;
case 3:
if((port1==0) || (port2==0))
{
printf("[ERROR]:must supply PORT1 and PORT2./r/n");
break;
}
if(strlen(host1)==0)
{
printf("[ERROR]:must supply HOST1./r/n");
break;
}
if(strlen(host2)==0)
{
printf("[ERROR]:must supply HOST2./r/n");
break;
}
conn2conn(host1,port1,host2,port2);
break;
default:
usage(argv[0]);
}
closeallfd();
}

int testifisvalue(char *str)
{
if(str == NULL ) return(0);
if(str[0]=='-') return(0);
return(1);
}

void usage(char *s)
{
printf("Socket data transport tool/r/n");
printf("by bkbll(bkbll@cnhonker.net)/r/n/r/n");
printf("Usage:%s -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]/r/n",s);
printf(" -v: version/r/n");
printf(" -h1: host1/r/n");
printf(" -h2: host2/r/n");
printf(" -p1: port1/r/n");
printf(" -p2: port2/r/n");
printf(" -log: log the data/r/n");
printf(" -m: the action method for this tool/r/n");
printf(" 1: listen on PORT1 and connect to HOST2:PORT2/r/n");
printf(" 2: listen on PORT1 and PORT2/r/n");
printf(" 3: connect to HOST1:PORT1 and HOST2:PORT2/r/n");

closeallfd();
}

int bind2conn(int port1,char *host,int port2)
{
int sockfd,sockfd1,sockfd2;
struct sockaddr_in remote;
int size;
int pid;
char buffer[1024];

memset(buffer,0,1024);
if((sockfd=create_socket())==0) exit(0);
if(create_serv(sockfd,port1)==0)
{
close(sockfd1);
exit(0);
}
size=sizeof(struct sockaddr);
while(1)
{
printf("waiting for response........./n");
if((sockfd1=accept(sockfd,(struct sockaddr *)&remote,&size))<0){perror("accept error/n");continue;}
printf("accept a client from %s:%d/n",inet_ntoa(remote.sin_addr),ntohs(remote.sin_port));
if((sockfd2=create_socket())==0)
{
close(sockfd1);
continue;
}
printf("make a connection to %s:%d....",host,port2);
fflush(stdout);
if(client_connect(sockfd2,host,port2)==0)
{
close(sockfd2);
sprintf(buffer,"[SERVER]connection to %s:%d error/r/n",host,port2);
write(sockfd1,buffer,strlen(buffer));
memset(buffer,0,1024);
close(sockfd1);
continue;
}
printf("ok/r/n");
pid=fork();
if(pid==0) transdata(sockfd1,sockfd2);
// sleep(2);
close(sockfd1);
close(sockfd2);
}

}

int bind2bind(int port1,int port2)
{
int fd1,fd2,sockfd1,sockfd2;
struct sockaddr_in client1,client2;
int size1,size2;
int pid;

if((fd1=create_socket())==0) exit(0);
if((fd2=create_socket())==0) exit(0);
printf("binding port %d......",port1);
fflush(stdout);
if(create_serv(fd1,port1)==0)
{
close(fd1);
exit(0);
}
printf("ok/r/n");
printf("binding port %d......",port2);
fflush(stdout);
if(create_serv(fd2,port2)==0)
{
close(fd2);
exit(0);
}
printf("ok/r/n");
size1=size2=sizeof(struct sockaddr);
while(1)
{
printf("waiting for response on port %d........./n",port1);
if((sockfd1=accept(fd1,(struct sockaddr *)&client1,&size1))<0)
{
perror("accept1 error");
continue;
}
printf("accept a client on port %d from %s,waiting another on port %d..../n",port1,inet_ntoa(client1.sin_addr),port2);
if((sockfd2=accept(fd2,(struct sockaddr *)&client2,&size2))<0)
{
perror("accept2 error");
close(sockfd1);
continue;
}
printf("accept a client on port %d from %s/n",port2,inet_ntoa(client2.sin_addr));
pid=fork();
if(pid==0) transdata(sockfd1,sockfd2);
//sleep(2);
close(sockfd1);
close(sockfd2);
}
}

int conn2conn(char *host1,int port1,char *host2,int port2)
{
int sockfd1,sockfd2;
int pid;

while(1)
{
if((sockfd1=create_socket())==0) exit(0);
if((sockfd2=create_socket())==0) exit(0);
printf("make a connection to %s:%d....",host1,port1);
fflush(stdout);
if(client_connect(sockfd1,host1,port1)==0)
{
close(sockfd1);
close(sockfd2);
break;
}
printf("ok/r/n");
printf("make a connection to %s:%d....",host2,port2);
fflush(stdout);
if(client_connect(sockfd2,host2,port2)==0)
{
close(sockfd1);
close(sockfd2);
break;
}
printf("ok/r/n");
pid=fork();
if(pid==0) transdata(sockfd1,sockfd2);
//sleep(2);
close(sockfd1);
close(sockfd2);

}
}

void transdata(int fd1,int fd2)
{
struct timeval timeset;
fd_set readfd,writefd;
int result,i=0;
char read_in1[MAXSIZE],send_out1[MAXSIZE];
char read_in2[MAXSIZE],send_out2[MAXSIZE];
int read1=0,totalread1=0,send1=0;
int read2=0,totalread2=0,send2=0;
int sendcount1,sendcount2;
int maxfd;
struct sockaddr_in client1,client2;
int structsize1,structsize2;
char host1[20],host2[20];
int port1=0,port2=0;
char tmpbuf1[100],tmpbuf2[100];

memset(host1,0,20);
memset(host2,0,20);
memset(tmpbuf1,0,100);
memset(tmpbuf2,0,100);
if(fp!=NULL)
{
structsize1=sizeof(struct sockaddr);
structsize2=sizeof(struct sockaddr);
if(getpeername(fd1,(struct sockaddr *)&client1,&structsize1)<0)
{
strcpy(host1,"fd1");
}
else
{
printf("got,ip:%s,port:%d/r/n",inet_ntoa(client1.sin_addr),ntohs(client1.sin_port));
strcpy(host1,inet_ntoa(client1.sin_addr));
port1=ntohs(client1.sin_port);
}
if(getpeername(fd2,(struct sockaddr *)&client2,&structsize2)<0)
{
strcpy(host2,"fd2");
}
else
{
printf("got,ip:%s,port:%d/r/n",inet_ntoa(client2.sin_addr),ntohs(client2.sin_port));
strcpy(host2,inet_ntoa(client2.sin_addr));
port2=ntohs(client2.sin_port);
}
sprintf(tmpbuf1,"/r/n########### read from %s:%d ####################/r/n",host1,port1);
sprintf(tmpbuf2,"/r/n########### reply from %s:%d ####################/r/n",host2,port2);
}

maxfd=max(fd1,fd2)+1;
memset(read_in1,0,MAXSIZE);
memset(read_in2,0,MAXSIZE);
memset(send_out1,0,MAXSIZE);
memset(send_out2,0,MAXSIZE);

timeset.tv_sec=TIMEOUT;
timeset.tv_usec=0;
while(1)
{
FD_ZERO(&readfd);
FD_ZERO(&writefd);

FD_SET(fd1,&readfd);
FD_SET(fd1,&writefd);
FD_SET(fd2,&writefd);
FD_SET(fd2,&readfd);

result=select(maxfd,&readfd,&writefd,NULL,&timeset);
if((result<0) && (errno!=EINTR))
{
perror("select error");
break;
}
else if(result==0)
{
printf("time out/n");
break;
}
if(FD_ISSET(fd1,&readfd))
{
/* 不能超过MAXSIZE-totalread1,不然send_out1会溢出 */
if(totalread1<MAXSIZE)
{
read1=read(fd1,read_in1,MAXSIZE-totalread1);
if(read1==0) break;
if((read1<0) && (errno!=EINTR))
{
perror("read data error");
break;
}
memcpy(send_out1+totalread1,read_in1,read1);
makelog(tmpbuf1,strlen(tmpbuf1));
makelog(read_in1,read1);
totalread1+=read1;
memset(read_in1,0,MAXSIZE);
}
}
if(FD_ISSET(fd2,&writefd))
{
int err=0;
sendcount1=0;
while(totalread1>0)
{
send1=write(fd2,send_out1+sendcount1,totalread1);
if(send1==0)break;
if((send1<0) && (errno!=EINTR))
{
perror("unknow error");
err=1;
break;
}
if((send1<0) && (errno==ENOSPC)) break;
sendcount1+=send1;
totalread1-=send1;
}
if(err==1) break;
if((totalread1>0) && (sendcount1>0))
{
/* 移动未发送完的数据到开始 */
memcpy(send_out1,send_out1+sendcount1,totalread1);
memset(send_out1+totalread1,0,MAXSIZE-totalread1);
}
else
memset(send_out1,0,MAXSIZE);
}
if(FD_ISSET(fd2,&readfd))
{

if(totalread2<MAXSIZE)
{
read2=read(fd2,read_in2,MAXSIZE-totalread2);
if(read2==0)break;
if((read2<0) && (errno!=EINTR))
{
perror("read data error");
break;
}
memcpy(send_out2+totalread2,read_in2,read2);
makelog(tmpbuf2,strlen(tmpbuf2));
makelog(read_in2,read2);
totalread2+=read2;
memset(read_in2,0,MAXSIZE);
}
}
if(FD_ISSET(fd1,&writefd))
{
int err2=0;
sendcount2=0;
while(totalread2>0)
{
send2=write(fd1,send_out2+sendcount2,totalread2);
if(send2==0)break;
if((send2<0) && (errno!=EINTR))
{
perror("unknow error");
err2=1;
break;
}
if((send2<0) && (errno==ENOSPC)) break;
sendcount2+=send2;
totalread2-=send2;
}
if(err2==1) break;
if((totalread2>0) && (sendcount2 > 0))
{
/* 移动未发送完的数据到开始 */
memcpy(send_out2,send_out2+sendcount2,totalread2);
memset(send_out2+totalread2,0,MAXSIZE-totalread2);
}
else
memset(send_out2,0,MAXSIZE);
}
}

close(fd1);
close(fd2);
printf("ok,I closed the two fd/r/n");
exit(0);
}

void closeallfd()
{
int i;
printf("Let me exit...");
fflush(stdout);
for(i=3;i<256;i++)
{
close(i);
}
if(fp != NULL)
{
fprintf(fp,"exited/r/n");
fclose(fp);
}
printf("all overd/r/n");
exit(0);
}
void makelog(char *buffer,int length)
{
if(fp !=NULL)
{
//fprintf(fp,"%s",buffer);
write(fileno(fp),buffer,length);
fflush(fp);
}
}

int create_socket()
{
int sockfd;

sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
perror("create socket error");
return(0);
}
return(sockfd);
}

int create_serv(int sockfd,int port)
{
struct sockaddr_in srvaddr;
int on=1;

bzero(&srvaddr,sizeof(struct sockaddr));
srvaddr.sin_port=htons(port);
srvaddr.sin_family=AF_INET;
srvaddr.sin_addr.s_addr=htonl(INADDR_ANY);

setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)); //so I can rebind the port
if(bind(sockfd,(struct sockaddr *)&srvaddr,sizeof(struct sockaddr))<0){perror("error");return(0);}
if(listen(sockfd,CONNECT_NUMBER)<0){perror("listen error/n");return(0);}
return(1);
}

int client_connect(int sockfd,char* server,int port)
{
struct sockaddr_in cliaddr;
struct hostent *host;

if(!(host=gethostbyname(server))){printf("gethostbyname(%s) error:%s/n",server,strerror(errno));return(0);}

bzero(&cliaddr,sizeof(struct sockaddr));
cliaddr.sin_family=AF_INET;
cliaddr.sin_port=htons(port);
cliaddr.sin_addr=*((struct in_addr *)host->h_addr);

if(connect(sockfd,(struct sockaddr *)&cliaddr,sizeof(struct sockaddr))<0){perror("error");return(0);}
return(1);
} 
内网隧道代理技术(二)之LCX端口转发 LCX是一款端口转发工具,分为Windows版和Linux版,Linux版本为PortMap。LCX有端口映射和端口转发两大功能,例如当目标的3389端口只对内开放而不对外开放时,可以使用端口映射将3389端口映射到目标的其他端口使用;当目标处于内网或目标配置的策略只允许访问固定某一端口时,可以通过端口转发突破限制。 阅读详情

相关推荐

传输层LCX隧道

https://github.com/inquisb/icmpsh 准备: kali 192.168.243.141 win7 192.168.243.154 icmp隧道搭建

战神/calmness的博客 440

gcc下fflush失效

今天编译一程序涉及到了键盘缓冲区的清除问题,在VC下完全没问题的代码却不能在gcc下运行成功,作此笔记以留念: VC下代码: #include<stdio.h> void main() { float a,b; int tag=0; char ch; float result; printf("Input two number:"); scanf("%f%f",&a,&b); fflush(stdin); printf("Input arit

m0_51647314的博客 1343

linux_lcx.zip

这个是linux版本的lcx,会用的人都懂使用说明就不多说了看代码提示。你懂得。祝大家生活愉快666666

fflush(stdin)与fflush(stdout)

fflush()的作用是用来刷新缓冲区,fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃;fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西强制打印到标准输出设备上。       fflush(stdin)不太常用,在有些编译器中是错误的用法,可以用以下方法替代:while(getchar()!='/n');       fflush(stdout)在单

zhuma的编程学习 8821

linux,windos,arm 三版本lcx

端口转发利器lcx,linux,rarm,indows 三版本下的lcx,不管是linux服务器,嵌入式通杀

lcx-windows-linux-源代码

lcx.exe- windows- linux- 源代码

C/C++fflush(stdout)循环打印输出避免缓存区错误

在使用多个输出函数连续进行多次输出时,有可能发现输出错误。因为下一个数据再上一个数据还没输出完毕,还在输出缓冲区中时,下一个printf就把另一个数据加入输出缓冲区,结果冲掉了原来的数据,出现输出错误。 在 printf();后加上fflush(stdout); 强制马上输出,避免错误。 实例 //线程函数(1秒输出现记录的信息) static void *stats_thread(void...

墨痕诉清风的博客 1290

linux下的LCX端口转发工具

其实网上有很多源码。我只是编译了一下,fedora 14下成功运行。不过不能listen win下的LCX端口slave.呵呵,希望谁有可以listen的请给我留言。

lcx端口转发linux_LCX 端口重定向本质以及在linux下的实现

lcx.exe 经常给内网肉鸡丢3389后门以及内网渗透的大都很熟悉,平时使用都是照猫画虎用,不明白其中本质,今天找到源码,详细阐释下本质吧。其中涉及到2条TCP连接已经2条端口转发,可能比较饶人,慢慢看吧。平时大家都这样用 首先在自己主机上lcx -listen p1 p2 ,意思是在主机上监听 P1 和 P2 端口,然后在鸡上 lcx -slave 主机IP p1 肉鸡IP p3...

weixin_31762925的博客 440

lcx工具,包括arm9和win版本

包含网上找到的lcx源码,该源码arm-linux(v5TE)和cygwin编译版本,还有lcx.exe在windows下的原版,使用方法参考命令帮助;可远程使用telnet、ssh等。

基于COMSOL电弧动态仿真模型优化:高收敛性可修改吹弧方案解析

在多物理场耦合分析中,电弧动态仿真历来是数值稳定性的难点:温度从室温跃升至数万开尔文,电导率随温度呈数量级跳变,流动、传热与电磁场相互牵制,极易引发求解器不收敛或初始值不一致等问题。如何构建高收敛性的数值模型,成为开关设备灭弧性能优化的重要技术基础。通过合理的几何简化、全耦合求解器配置、辅助扫描初始化策略以及参数化建模手段,可以实现对吹弧方案的灵活调整与批量寻优,从而系统性评估气流速度、喷口形状、触头间距等关键因素对熄弧性能的影响。这类仿真方法广泛应用于断路器、接触器等高压电器产品研发,为灭弧室结构设计提供

weixin_29758911的博客 350

lcx端口转发linux_LCX端口转发及NC反弹

真理的蜡烛往往会烧伤那些举烛的人的手 —— 布埃斯特环境攻击机 kali linux(IP:192.168.96.128)靶机:win7专业版(IP:192.168.96.130)公网服务器:centos(IP:就不说了,原因如下)工具lcx :windows版是lcx.exe Linux版是portmapnc.exe提取码:mz6j一.lcx端口转发首先用xshell登陆到我的服务器发现一个警告...

weixin_29574585的博客 283

别再搞混了!用示波器实测SVPWM:相电压、线电压、端电压波形到底长啥样?(附TI/ST官方笔记解读)

本文详细解析了SVPWM波形实测中的相电压、线电压和端电压的区别与测量技巧,结合TI/ST官方笔记,揭示了马鞍形波形的形成原理及常见误区。通过示波器实测案例,帮助电力电子工程师准确理解并应用这些关键概念,提升电机控制系统的调试效率。

weixin_30632883的博客 433

LCX端口转发

LCX是一款端口转发工具,分为Windows版和Linux版,Linux版本为PortMap。LCX有端口映射和端口转发两大功能,例如当目标的3389端口只对内开放而不对外开放时,可以使用端口映射将3389端口映射到目标的其他端口使用;当目标处于内网或目标配置的策略只允许访问固定某一端口时,可以通过端口转发突破限制。Windows版的LCX用法:端口转发:Lcx -listen Lcx -slave

weixin_45653478的博客 720

STM32CUBEMX 使用教程5 — DMA配置 & 串口结合DMA实现数据搬运

DMA(Direct Memory Access),直接存储器访问(或数据搬运),是STM32中很实用的一个外设。DMA 传输数据方式不需要 CPU 参与控制传输,也不用中断处理的方式进行数据搬运处理,纯粹通过硬件为 RAM 与 I/O 设备之间开辟一条直接传送数据的通路,使 CPU 的效率大大提高。

weixin_43866583的博客 1500

58.Sobel边缘检测算子

注:在梯度运算中,很可能会出现负的灰度值,我们不能再采用uint8类型作为像素的数据类型,而是采用了CV_16S或者CV_32F这种有负数范围的类型,运算结果里的负数也不能不处理,否则在显示的时候就会被截断为0,这样就会丢失边界信息。如下图所示,对中心像素Z5求取多个方向的灰度差分,对于Z5的8邻域,分为4个方向,即对角线和水平垂直4个方向对:(z1, z9) ,(z2, z8), (z3, z7), (z6, z4) 给定邻域方向梯度矢量g的幅度为:|g| = <像素灰度差分>/<相邻像素的距离>。

twnkie的博客 4887

【内网流量操控技术八】lcx源码编译实现传输层流量转发

lcx是基于socket技术编写的传输层协议下的端口转发工具,其出现已有十多年的历史,但其速度和稳定性至今仍然很好用,本文实验从github上下载的C++版本,一来通过源码编译在跨平台使用lcx,二来由于其源码修改进行了免杀处理,有很好的免杀效果。

redwand的博客 2027

ROS入门教程(七)—— Gazebo与RViz联合仿真

通过Gazebo与RViz联合仿真实现机器人运动。

吾门的博客 1万+

lcx端口转发linux_Lcx端口转发初探

最近写了一个简单的威胁分析专家系统Gui图形界面工具,可以快速判断失陷主机,给出失陷隶属度,非常人性化,压缩包大小有20M。实际上,这个小工具可以帮助一线驻场人员,快速定位高危主机,并给所有主机进行威胁排名,指导现场进行威胁处置。采用多维度的打分算法,是整个系统的关键,也花了一点时间来调参。看着自己的小工具,还是蛮有成就感的,我准备明年写一点小游戏,这样大家都能体验我的开发成果~实际上关于Lcx的...

weixin_39846361的博客 277

【NVMEM子系统】二、NVMEM驱动框架

该子系统整体架构不算太大,还是比较容易去理解的,下面我们一起去一探究竟!,该子系统主要用于实现EEPROMEfuse等非易失存储器的统一管理。在早期,像EEPROM驱动是存放于目录下,由于没有做到好的抽象,每次需要去访问相应内存空间,都需要去复制几乎一样的代码,去注册sysfs,这是一个相当大的抽象泄露。NVMEM子系统就是为了解决以往的抽象泄露问题。

Donge's Blog 1715

YOLOv8【第七章:损失函数篇·第1节】一文搞定,IoU系列损失函数!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1202

内网端口转发LCX工具的使用(附内网环境实现)

前言 端口转发是进行内网安全攻防的一个比较基础的知识,今天介绍的是最为经典的端口转发工具LCX LCX简介 LCX是一个基于Socket套接字的端口转发工具,有windows版本以及linux版本。 环境实现 我们今天的环境很简单,是两台windows的机器,1台位本机windows10 (IP:192.168.206.1)一台是web服务器(IP:192.168.206.129),拓扑图如下: 我在WEB服务器上使用phpstudy安装了一个CMS,开启的是80端口;如图 我们在本机上访问web服务

markecheng的博客 3297

Unreal5从入门到精通之如何在VR中使用3DUI

前面我们讲过《Unreal5从入门到精通之UMG的使用》一般制作游戏时,UI都是添加到屏幕视窗上面的,但是在制作VR时,我们往往需要制作一个3D的UI,放置在场景中,然后使用手柄的射线来和UI进行交互。今天我们就来讲解下,如何在VR中创作和交互3DUI首次操作会感觉好复杂,多多练习,当你熟悉了UE蓝图的操作后会发现,这只是一个常规的蓝图操作而已。祝大家在虚幻的学习过程中非常顺利。希望这篇博客对你有所帮助。

TxNet 1986

lcx用法

  lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap   Windows版使用方法如下: lcx有两大功能: 1)端口转发(listen和slave成对使用) 2)端口映射(tran) 1、lcx 内网端口转发(1)、内网主机上执行:lcx.exe –slave 公网主机i...

bylfsj的博客 1798

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IDEA的使用指南

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

LCX 端口重定向本质以及在linux下的实现

lcx.exe 经常给内网肉鸡丢3389后门以及内网渗透的大都很熟悉,平时使用都是照猫画虎用,不明白其中本质,今天找到源码,详细阐释下本质吧。 其中涉及到2条TCP连接已经2条端口转发,可能比较饶人,慢慢看吧。 平时大家都这样用 首先在自己主机上lcx -listen p1 p2 ,意思是在主机上监听 P1 和 P2 端口, 然后在鸡上 lcx -slave 主机IP ...

digeng2585的博客 154

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: HTTP代理源代码
下一篇: 远程或本地获取系统信息的脚本RGIS.vbs
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值