高分求Socks5代理源代码! 我给2000分!!!

gj333 2002-12-29 01:35:14
高分求Socks5代理源代码! 我给2000分!!!

如果有者请给我发邮件!

03251982@163.com

...全文
647 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
david_chen 2003-01-08
  • 打赏
  • 举报
回复
function TFormSocks.socksconnect(skt: TSocket; target: TSockAddr): boolean;
var
buf:array[0..1023]of byte;
re:integer;
begin
//preapre
buf[0] := SOCKS_VER5;
buf[1] := CMD_CONNECT;
buf[2] := RSV_DEFAULT;
buf[3] := ATYP_IPV4;
//copy data
copymemory(@buf[4],@target.sin_addr,4);
copymemory(@buf[8],@target.sin_port,2);
//communicate
re:=send(skt,buf,10,0);
if re=-1 then
begin
result:= false;
exit;
end;
re :=recv(skt,buf,1024,0);
if re=-1 then
begin
result:=false;
exit;
end;
if buf[1]<>REP_SUCCESS then
begin
result:=false;
exit;
end;
result:=true;
end;

function TFormSocks.Auth(skt: tsocket; bauth: byte): boolean;
var
buf:array[0..256]of byte;
re:integer;
i:integer;
usr:pchar;
pwd:pchar;
begin
getmem(usr, length(edit5.text)+1);
zeromemory(usr, length(edit5.text)+1);
strpcopy(usr,edit5.text);

getmem(pwd, length(edit6.text)+1);
zeromemory(pwd, length(edit6.text)+1);
strpcopy(pwd,edit6.text);
case bauth of
AUTH_NO:
begin
buf[0] := SOCKS_VER5;
buf[1] := $01;
buf[2] := $00;
re := send(skt, buf, 3, 0);
if re=-1 then
begin
result:=false;
exit;
end;
re:=recv(skt,buf,257,0);
if re<2 then
begin
result:=false;
exit;
end;
if buf[1]<>AUTH_NO then
begin
result:=false;
exit;
end;
result:=true;
end;
AUTH_REQU:
begin
buf[0] := SOCKS_VER5;
buf[1] := $02;
buf[2] := $00;
buf[3] := $02;
re := send(skt, buf, 4, 0);
if (re=-1)then
begin
result:=false;
exit;
end;
ZeroMemory(@buf,257);
re := recv(skt, buf, 257, 0);
if (re < 2) then
begin
result:=false;
exit;
end;
if (buf[1] <> AUTH_REQU) then
begin
result:=false;
exit;
end;
zeromemory(@buf,257);

buf[0] := $01; //current version of subnegotiation
buf[1] := length(edit5.text); //length of username
for i:=0 to buf[1]-1 do
buf[2+i]:=ord(usr[i]);
buf[2+length(edit5.text)]:=length(edit6.text);
for i:=0 to buf[2+length(edit5.text)]-1 do
buf[3+length(edit5.text)+i]:=ord(pwd[i]);
re := send(skt, buf,length(edit5.text)+length(edit6.text)+3,0);
if (re=-1) then
begin
result:=false;
exit;
end;
re := recv(skt, buf, 257, 0);
if (buf[1] <> $00) then
begin
result:=FALSE;
exit;
end;
result:= TRUE;
end;

else
result:=false;
end;



freemem(usr);
freemem(pwd);
end;

end.
david_chen 2003-01-08
  • 打赏
  • 举报
回复
eg:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,winsock;
const
SOCKS_VER5=$04;

AUTH_NO=$00 ;//no authentication required
AUTH_REQU=$02 ;//method=0x02: username/password

CMD_CONNECT=$01 ;
RSV_DEFAULT=$00 ;
ATYP_DN=$03 ;
REP_SUCCESS=$00;
ATYP_IPV4=$01;

type
TFormSocks = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
CheckBox1: TCheckBox;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
btnConnect: TButton;
Memo1: TMemo;
Label5: TLabel;
Label6: TLabel;
Edit5: TEdit;
Label7: TLabel;
Edit6: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnConnectClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function socksconnect(skt:TSocket;target:TSockAddr):boolean;
function Auth(skt:tsocket;bauth:byte):boolean;
end;

var
FormSocks: TFormSocks;

implementation

{$R *.DFM}

procedure TFormSocks.FormCreate(Sender: TObject);
begin
//update view
Memo1.Lines.Clear;
Edit1.Text:='192.168.3.254';
Edit2.Text:='1080';
Edit3.Text:='211.159.67.28';
Edit4.Text:='32320';
// Edit5.Text:='';
// Edit6.Text:='';
Edit6.PasswordChar:='*';
end;

procedure TFormSocks.FormShow(Sender: TObject);
var
WSAData:TWSAData;
begin
//init Socket
if (WSAStartup(MAKEWORD(2,0),WSAData)<>0) then
begin
//初始化失败
Memo1.lines.add('Init Failed');
exit;
end
else
Memo1.lines.add('Init Success');
end;

procedure TFormSocks.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//release winsock
WSACleanUP();
end;

procedure TFormSocks.btnConnectClick(Sender: TObject);
var
clisock:TSocket;
tarsocksrv:TSockAddr;
saproxy:TSockAddr;
pSocksAddr:PChar;
Re:integer;
ErrCode:Integer;
AuthSucc:boolean;
ConSucc:boolean;
begin
//1.create a client socket
Memo1.Lines.Add('Creating a socket');
clisock:=socket(AF_INET,SOCK_STREAM,0);
//valid check
if(clisock=INVALID_SOCKET) then
begin
Memo1.lines.Add('Error on create socket');
Exit;
end;
Memo1.Lines.add('Success on create socket');
//2.connect to socks5 server
Memo1.lines.Add('Connecting to socks server');
ZeroMemory(@saproxy,sizeof(saproxy));
saproxy.sin_family := AF_INET;
//set proxy infomation
GetMem(pSocksAddr,Length(Edit1.Text)+1);
ZeroMemory(pSocksAddr,Length(Edit1.Text)+1);
StrPCopy(pSocksAddr,Edit1.Text);
saproxy.sin_addr.S_addr :=inet_addr(pSocksAddr);
FreeMem(pSocksAddr);
saproxy.sin_port := htons(strtoint(Edit2.Text));
Re:=connect(clisock,saproxy,sizeof(saproxy));
if Re = SOCKET_ERROR then
begin
ErrCode:=WSAGetLastError();
Memo1.Lines.Add('Err on Connect to socks5 Errcode:'
+IntToStr(ErrCode));
Exit;
end;
Memo1.Lines.Add('Connect to socks5 server success');
//3.prepare Auth
Memo1.Lines.Add('Enter Auth');
/////////////////////////////

if CheckBox1.Checked then
AuthSucc:=Auth(clisock,AUTH_REQU)
else
AuthSucc:=Auth(clisock,AUTH_NO);
if not AuthSucc then
begin
Memo1.Lines.Add('Auth Failed');
Memo1.Lines.Add('Close socket');
CloseSocket(clisock);
Exit;
end;
Memo1.Lines.Add('Auth finish');

/////////////////////
//4. link to target
Memo1.Lines.Add('Link to target ip');
ZeroMemory(@tarsocksrv,Sizeof(tarsocksrv));
//prepare
Getmem(psocksaddr,length(edit3.text)+1);
zeromemory(psocksaddr,length(edit3.text)+1);
strpcopy(psocksaddr,edit3.text);
tarsocksrv.sin_addr.s_addr := inet_addr(pSocksAddr);
tarsocksrv.sin_port := htons(strtoint(edit4.text));
tarsocksrv.sin_family := AF_INET;
//connect
consucc:=socksconnect(clisock,tarsocksrv);
if consucc then
memo1.Lines.Add('conncct succ')
else
memo1.Lines.add('failed');
//5 use this socket pipe to communicat
//recv(clisock,buf,127,0);


//close socket
Memo1.lines.Add('Closing socket');
Re:= closesocket(clisock);

//shutdown(clisock,SD_BOTH);
end;
lovejingtao 2003-01-07
  • 打赏
  • 举报
回复
http://tty-1.51.net/cjt/Socket5ProxyDemo.htm
qly_1314 2003-01-07
  • 打赏
  • 举报
回复
我也想知道~~~~
Jiasong 2003-01-07
  • 打赏
  • 举报
回复
delphi 的demo程序有Socks5代理源代码
lovejingtao 2003-01-07
  • 打赏
  • 举报
回复
服务器正在搬迁,最近几天可能无法访问.
包括SOCKET5代理服务器教程,如何编写代理程序等等内容.
lovejingtao 2003-01-06
  • 打赏
  • 举报
回复
http://tty.yyun.net/lovejingtao/htm/olddefault.htm
zhxk32899559 2003-01-02
  • 打赏
  • 举报
回复
http://tty.yyun.net/lovejingtao/htm/olddefault.htm
gxh973121 2003-01-01
  • 打赏
  • 举报
回复
我有源码
gj333 2002-12-30
  • 打赏
  • 举报
回复
ffff
warton 2002-12-29
  • 打赏
  • 举报
回复
有很我代理是开源的!!不过是e文
gj333 2002-12-29
  • 打赏
  • 举报
回复
找到这些工作原理,但是想要完整源代码

sock5代理的工作程序是:

1。需要代理方向服务器发出请求信息。

2。代理方应答

3。需要代理方接到应答后发送向代理方发送目的ip和端口

4。代理方与目的连接

5。代理方将需要代理方发出的信息传到目的方,将目的方发出的信息传到需要代理方。代理完成

由于网上的信息传输都是运用tcp或udp进行的,所以使用socks5代理可以办到网上所能办到的一切,而且不舆目的方会查到你的ip,既安全又方便

sock5支持UDP和TCP,但两种代理是有区别的,以下分类说明

如何用代理TCP协议

1。向服务器的1080端口建立tcp连接。

2。向服务器发送 05 01 00 (此为16进制码,以下同)

3。如果接到 05 00 则是可以代理

4。发送 05 01 00 01 + 目的地址(4字节) + 目的端口(2字节),目的地址和端口都是16进制码(不是字符串)。
例202.103.190.27 - 7201
则发送的信息为:05 01 00 01 CA 67 BE 1B 1C 21
(CA=202 67=103 BE=190 1B=27 1C21=7201)

5。接受服务器返回的自身地址和端口,连接完成

6。以后操作和直接与目的方进行TCP连接相同。

如何用代理UDP连接

1。向服务器的1080端口建立tcp连接

2。向服务器发送 05 01 00

3。如果接到 05 00 则是可以代理

4。发送 05 03 00 01 00 00 00 00 + 本地UDP端口(2字节)

5。服务器返回 05 00 00 01 +服务器地址+端口

7.需要申请方发送
00 00 00 01 +目的地址IP(4字节)+目的端口 +所要发送的信息

8。当有数据报返回时
向需要代理方发出00 00 00 01 +来源地址IP(4字节)+来源端口 +接受的信息



注:此为不需要密码的代理协议,只是socks5的一部分,完整协议请看RFC1928
warton 2002-12-29
  • 打赏
  • 举报
回复
网上搜索一下吧!!
下载代码方式:https://pan.quark.cn/s/edc2010ad9a6 ### H3C IMC Portal 认证操作手册关键知识点阐释 #### 一、Portal认证的介绍 **Portal认证**,英文表述为“入口”,在信息技术领域中特指一种利用Web界面核实用户身份的机制,其目的在于对用户的网络访问权限进行管理。在实施Portal认证的网络架构中,未完成认证的用户在尝试上网时会被强制导向一个特定的网址,该网址提供部免费的网络服务。若用户希望获取更多的互联网资源,则必须通过Portal Web服务器所提供的界面完成身份验证流程。 #### 二、Portal认证系统的构成与作用 1. **系统构成**: - **接入设备**:承担检测用户是否已完成认证的责任,并根据认证结果执行相应的管理策略。 - **Portal Web服务器**:负责呈现认证界面以及处理用户的认证需。 - **认证服务器**:通常指代RADIUS服务器,承担最终的用户身份核实职责。 2. **功能特点**: - **安全增强**:集成多种安全措施以保障用户数据及网络资源的完整性。 - **本地Portal Web服务器支持**:允许在本地环境中部署Portal Web服务器,以减少对外部服务的依赖性。 - **交互机制**:描述用户与系统之间的认证交互过程。 - **认证方式**:涵盖用户名密码验证等多种认证手段。 - **认证步骤**:详细说明认证的每一个环节,确保用户能够顺利完成身份核实。 - **过滤规范**:用于监管用户在网络中的行为模式。 - **BYOD支持**:实现Bring Your Own Device(自带设备)的认证功能,适应多元化的设备环境。 -...
代码转载自:https://pan.quark.cn/s/dda4d8b11acf 在线支付系统源代码与第三方支付平台构成了现代电子商务体系中不可或缺的组成部,它们共同形成了数字交易的基础框架。本内容将详细剖析这些核心要素,并围绕相关主题展开一系列关联性知识点的论述。 首先,我们需要明确在线支付系统的概念。在线支付系统是指为消费者提供通过互联网购买商品或服务并完成安全支付操作的专用平台。此类系统通常整合了信用卡处理、电子钱包、银行直接转账等多种支付选项,旨在为用户创造流畅的购物环境。在构建在线支付系统时,保障交易安全、提升使用便捷度以及优化处理效率是必须优先考虑的关键要素。 其次,我们将探讨系统源代码的相关内容。源代码指的是由程序员采用人类可理解语言编写的应用程序基础指令集。对于编程初学者而言,研究在线支付系统的源代码是掌握此类系统开发方法的重要途径。通过源代码,开发者可以深入掌握支付流程中的各个关键环节,例如用户身份验证、交易请处理、银行系统对接等操作。源代码的解读还能帮助开发者学习行业最佳实践,有效预防常见的安全隐患,包括数据库注入攻击和跨站脚本威胁。 再次,第三方支付系统作为另一种重要的支付模式值得关注。这类系统充当商家与消费者之间的中介角色,负责处理交易过程中的支付环节与清算工作。常见的第三方支付服务提供商包括支付宝、微信支付以及PayPal等知名平台。它们通过提供标准化的接口,使商家能够便捷地接入多元化支付渠道,同时通过实施额外的安全防护措施,如风险评估机制和反欺诈系统等,确保消费者在支付过程中的安全性。对于开发者而言,熟练掌握并整合第三方支付系统的应用程序接口(API)是实现在线支付功能的核心技能。 在进行在线支付系统开发时,开发者需要重...
内容概要:本文档介绍了M-PCIe(Mobile PCI Express)技术,这是一种将PCIe协议映射到M-PHY物理层的规范(ECN),旨在将高性能互连扩展至移动设备及其他对功耗敏感的应用场景。M-PCIe保留了PCIe的事务层、数据链路层和协议栈的完整性,仅对物理层逻辑进行优化适配,支持HS-G1至HS-G3高速速率以及PWM-G1低速模式,具备动态链路带宽重配置能力,可在运行时调整速率系列、高速档位和子链路宽度,且允许非对称链路宽度。文档详细阐述了M-PCIe的链路架构、符号编码、帧结构、时钟补偿、初始化流程、LTSSM状态机、HIBERN8低功耗机制及测试方法,并强调其实现需同时符合PCI-SIG与MIPI联盟标准。; 适合人群:从事高速接口设计、移动平台硬件开发或嵌入式系统研发的工程师,尤其是涉及PCIe与M-PHY集成的技术人员;具备数字电路、串行链路通信基础知识的研发人员。; 使用场景及目标:①理解如何在移动设备中实现高效能、低功耗的PCIe连接;②掌握M-PCIe链路初始化、带宽动态调节和低功耗状态切换的设计原理;③为开发兼容M-PCIe的芯片、模块或系统提供技术参考。; 阅读建议:此文档为技术规范类资料,建议结合MIPI M-PHY标准与PCIe基础规范对照学习,重点关注链路训练、状态机转换与时序参数定义,适用于芯片设计、固件开发与合规性测试阶段的工程实践。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧