📄 msproxy_clientprotocol.c
字号:
mem += sizeof(req->packet._1.magic40); memcpy(mem, &req->packet._1.pad40, sizeof(req->packet._1.pad40)); mem += sizeof(req->packet._1.pad40); memcpy(mem, &req->packet._1.magic45, sizeof(req->packet._1.magic45)); mem += sizeof(req->packet._1.magic45); memcpy(mem, &req->packet._1.pad45, sizeof(req->packet._1.pad45)); mem += sizeof(req->packet._1.pad45); memcpy(mem, &req->packet._1.magic50, sizeof(req->packet._1.magic50)); mem += sizeof(req->packet._1.magic50); memcpy(mem, &req->packet._1.pad50, sizeof(req->packet._1.pad50)); mem += sizeof(req->packet._1.pad50); strcpy(mem, req->username); mem += strlen(req->username) + 1; strcpy(mem, req->unknown); mem += strlen(req->unknown) + 1; strcpy(mem, req->executable); mem += strlen(req->executable) + 1; strcpy(mem, req->clienthost); mem += strlen(req->clienthost) + 1; break; case MSPROXY_USERINFO: memcpy(mem, &req->packet._2.pad1, sizeof(req->packet._2.pad1)); mem += sizeof(req->packet._2.pad1); memcpy(mem, &req->packet._2.magic3, sizeof(req->packet._2.magic3)); mem += sizeof(req->packet._2.magic3); memcpy(mem, &req->packet._2.pad3, sizeof(req->packet._2.pad3)); mem += sizeof(req->packet._2.pad3); memcpy(mem, &req->packet._2.magic5, sizeof(req->packet._2.magic5)); mem += sizeof(req->packet._2.magic5); memcpy(mem, &req->packet._2.pad5, sizeof(req->packet._2.pad5)); mem += sizeof(req->packet._2.pad5); memcpy(mem, &req->packet._2.magic10, sizeof(req->packet._2.magic10)); mem += sizeof(req->packet._2.magic10); memcpy(mem, &req->packet._2.pad10, sizeof(req->packet._2.pad10)); mem += sizeof(req->packet._2.pad10); memcpy(mem, &req->packet._2.magic15, sizeof(req->packet._2.magic15)); mem += sizeof(req->packet._2.magic15); memcpy(mem, &req->packet._2.pad15, sizeof(req->packet._2.pad15)); mem += sizeof(req->packet._2.pad15); memcpy(mem, &req->packet._2.magic20, sizeof(req->packet._2.magic20)); mem += sizeof(req->packet._2.magic20); memcpy(mem, &req->packet._2.magic25, sizeof(req->packet._2.magic25)); mem += sizeof(req->packet._2.magic25); memcpy(mem, &req->packet._2.magic30, sizeof(req->packet._2.magic30)); mem += sizeof(req->packet._2.magic30); memcpy(mem, &req->packet._2.pad20, sizeof(req->packet._2.pad20)); mem += sizeof(req->packet._2.pad20); memcpy(mem, &req->packet._2.magic35, sizeof(req->packet._2.magic35)); mem += sizeof(req->packet._2.magic35); memcpy(mem, &req->packet._2.pad25, sizeof(req->packet._2.pad25)); mem += sizeof(req->packet._2.pad25); memcpy(mem, &req->packet._2.magic35, sizeof(req->packet._2.magic35)); mem += sizeof(req->packet._2.magic35); memcpy(mem, &req->packet._2.pad25, sizeof(req->packet._2.pad25)); mem += sizeof(req->packet._2.pad25); memcpy(mem, &req->packet._2.magic50, sizeof(req->packet._2.magic50)); mem += sizeof(req->packet._2.magic50); memcpy(mem, &req->packet._2.pad50, sizeof(req->packet._2.pad50)); mem += sizeof(req->packet._2.pad50); memcpy(mem, &req->packet._2.magic55, sizeof(req->packet._2.magic55)); mem += sizeof(req->packet._2.magic55); memcpy(mem, &req->packet._2.pad55, sizeof(req->packet._2.pad55)); mem += sizeof(req->packet._2.pad55); memcpy(mem, &req->packet._2.magic60, sizeof(req->packet._2.magic60)); mem += sizeof(req->packet._2.magic60); strcpy(mem, req->username); mem += strlen(req->username) + 1; strcpy(mem, req->unknown); mem += strlen(req->unknown) + 1; strcpy(mem, req->executable); mem += strlen(req->executable) + 1; strcpy(mem, req->clienthost); mem += strlen(req->clienthost) + 1; break; case MSPROXY_BIND: case MSPROXY_SOMETHING: memcpy(mem, &req->packet._3.pad1, sizeof(req->packet._3.pad1)); mem += sizeof(req->packet._3.pad1); memcpy(mem, &req->packet._3.magic2, sizeof(req->packet._3.magic2)); mem += sizeof(req->packet._3.magic2); memcpy(mem, &req->packet._3.pad10, sizeof(req->packet._3.pad10)); mem += sizeof(req->packet._3.pad10); memcpy(mem, &req->packet._3.bindaddr, sizeof(req->packet._3.bindaddr)); mem += sizeof(req->packet._3.bindaddr); memcpy(mem, &req->packet._3.bindport, sizeof(req->packet._3.bindport)); mem += sizeof(req->packet._3.bindport); memcpy(mem, &req->packet._3.pad15, sizeof(req->packet._3.pad15)); mem += sizeof(req->packet._3.pad15); memcpy(mem, &req->packet._3.magic3, sizeof(req->packet._3.magic3)); mem += sizeof(req->packet._3.magic3); memcpy(mem, &req->packet._3.boundport, sizeof(req->packet._3.boundport)); mem += sizeof(req->packet._3.boundport); memcpy(mem, &req->packet._3.pad20, sizeof(req->packet._3.pad20)); mem += sizeof(req->packet._3.pad20); memcpy(mem, &req->packet._3.NTLMSSP, sizeof(req->packet._3.NTLMSSP)); mem += sizeof(req->packet._3.NTLMSSP); memcpy(mem, &req->packet._3.magic5, sizeof(req->packet._3.magic5)); mem += sizeof(req->packet._3.magic5); memcpy(mem, &req->packet._3.pad25, sizeof(req->packet._3.pad25)); mem += sizeof(req->packet._3.pad25); memcpy(mem, &req->packet._3.magic10, sizeof(req->packet._3.magic10)); mem += sizeof(req->packet._3.magic10); memcpy(mem, &req->packet._3.magic15, sizeof(req->packet._3.magic15)); mem += sizeof(req->packet._3.magic15); memcpy(mem, &req->packet._3.magic20, sizeof(req->packet._3.magic20)); mem += sizeof(req->packet._3.magic20); memcpy(mem, &req->packet._3.pad30, sizeof(req->packet._3.pad30)); mem += sizeof(req->packet._3.pad30); memcpy(mem, &req->packet._3.magic25, sizeof(req->packet._3.magic25)); mem += sizeof(req->packet._3.magic25); memcpy(mem, &req->packet._3.magic30, sizeof(req->packet._3.magic30)); mem += sizeof(req->packet._3.magic30); memcpy(mem, &req->packet._3.pad40, sizeof(req->packet._3.pad40)); mem += sizeof(req->packet._3.pad40); memcpy(mem, &req->packet._3.magic50, sizeof(req->packet._3.magic50)); mem += sizeof(req->packet._3.magic50); memcpy(mem, &req->packet._3.pad50, sizeof(req->packet._3.pad50)); mem += sizeof(req->packet._3.pad50); memcpy(mem, &req->packet._3.magic55, sizeof(req->packet._3.magic55)); mem += sizeof(req->packet._3.magic55); memcpy(mem, &req->packet._3.pad55, sizeof(req->packet._3.pad55)); mem += sizeof(req->packet._3.pad55); break; case MSPROXY_BIND2: case MSPROXY_SOMETHING_2: memcpy(mem, &req->packet._4.pad1, sizeof(req->packet._4.pad1)); mem += sizeof(req->packet._4.pad1); memcpy(mem, &req->packet._4.magic1, sizeof(req->packet._4.magic1)); mem += sizeof(req->packet._4.magic1); memcpy(mem, &req->packet._4.magic2, sizeof(req->packet._4.magic2)); mem += sizeof(req->packet._4.magic2); memcpy(mem, &req->packet._4.pad2, sizeof(req->packet._4.pad2)); mem += sizeof(req->packet._4.pad2); memcpy(mem, &req->packet._4.magic3, sizeof(req->packet._4.magic3)); mem += sizeof(req->packet._4.magic3); memcpy(mem, &req->packet._4.pad3, sizeof(req->packet._4.pad3)); mem += sizeof(req->packet._4.pad3); memcpy(mem, &req->packet._4.magic4, sizeof(req->packet._4.magic4)); mem += sizeof(req->packet._4.magic4); memcpy(mem, &req->packet._4.boundport, sizeof(req->packet._4.boundport)); mem += sizeof(req->packet._4.boundport); memcpy(mem, &req->packet._4.pad4, sizeof(req->packet._4.pad4)); mem += sizeof(req->packet._4.pad4); memcpy(mem, &req->packet._4.NTLMSSP, sizeof(req->packet._4.NTLMSSP)); mem += sizeof(req->packet._4.NTLMSSP); memcpy(mem, &req->packet._4.magic5, sizeof(req->packet._4.magic5)); mem += sizeof(req->packet._4.magic5); memcpy(mem, &req->packet._4.pad5, sizeof(req->packet._4.pad5)); mem += sizeof(req->packet._4.pad5); memcpy(mem, &req->packet._4.magic10, sizeof(req->packet._4.magic10)); mem += sizeof(req->packet._4.magic10); memcpy(mem, &req->packet._4.magic10, sizeof(req->packet._4.magic10)); mem += sizeof(req->packet._4.magic10); memcpy(mem, &req->packet._4.magic20, sizeof(req->packet._4.magic20)); mem += sizeof(req->packet._4.magic20); memcpy(mem, &req->packet._4.pad10, sizeof(req->packet._4.pad10)); mem += sizeof(req->packet._4.pad10); memcpy(mem, &req->packet._4.magic30, sizeof(req->packet._4.magic30)); mem += sizeof(req->packet._4.magic30); memcpy(mem, &req->packet._4.pad15, sizeof(req->packet._4.pad15)); mem += sizeof(req->packet._4.pad15); memcpy(mem, &req->packet._4.magic35, sizeof(req->packet._4.magic35)); mem += sizeof(req->packet._4.magic35); memcpy(mem, &req->packet._4.magic40, sizeof(req->packet._4.magic40)); mem += sizeof(req->packet._4.magic40); memcpy(mem, &req->packet._4.magic45, sizeof(req->packet._4.magic45)); mem += sizeof(req->packet._4.magic45); memcpy(mem, &req->packet._4.pad20, sizeof(req->packet._4.pad20)); mem += sizeof(req->packet._4.pad20); memcpy(mem, &req->packet._4.magic50, sizeof(req->packet._4.magic50)); mem += sizeof(req->packet._4.magic50); memcpy(mem, &req->packet._4.magic55, sizeof(req->packet._4.magic55)); mem += sizeof(req->packet._4.magic55); memcpy(mem, &req->packet._4.magic60, sizeof(req->packet._4.magic60)); mem += sizeof(req->packet._4.magic60); memcpy(mem, &req->packet._4.pad25, sizeof(req->packet._4.pad25)); mem += sizeof(req->packet._4.pad25); memcpy(mem, &req->packet._4.magic65, sizeof(req->packet._4.magic65)); mem += sizeof(req->packet._4.magic65); memcpy(mem, &req->packet._4.magic70, sizeof(req->packet._4.magic70)); mem += sizeof(req->packet._4.magic70); memcpy(mem, &req->packet._4.magic75, sizeof(req->packet._4.magic75)); mem += sizeof(req->packet._4.magic75); break; case MSPROXY_RESOLVE: memcpy(mem, &req->packet.resolve.hostlength, sizeof(req->packet.resolve.hostlength)); mem += sizeof(req->packet.resolve.hostlength); memcpy(mem, &req->packet.resolve.pad1, sizeof(req->packet.resolve.pad1)); mem += sizeof(req->packet.resolve.pad1); memcpy(mem, &req->packet.resolve.host, (size_t)req->packet.resolve.hostlength); mem += req->packet.resolve.hostlength; break; case MSPROXY_LISTEN: case MSPROXY_CONNECT: memcpy(mem, &req->packet._5.magic1, sizeof(req->packet._5.magic1)); mem += sizeof(req->packet._5.magic1); memcpy(mem, &req->packet._5.pad1, sizeof(req->packet._5.pad1)); mem += sizeof(req->packet._5.pad1); memcpy(mem, &req->packet._5.magic3, sizeof(req->packet._5.magic3)); mem += sizeof(req->packet._5.magic3); memcpy(mem, &req->packet._5.pad5, sizeof(req->packet._5.pad5)); mem += sizeof(req->packet._5.pad5); memcpy(mem, &req->packet._5.magic6, sizeof(req->packet._5.magic6)); mem += sizeof(req->packet._5.magic6); memcpy(mem, &req->packet._5.destport, sizeof(req->packet._5.destport)); mem += sizeof(req->packet._5.destport); memcpy(mem, &req->packet._5.destaddr, sizeof(req->packet._5.destaddr)); mem += sizeof(req->packet._5.destaddr); memcpy(mem, &req->packet._5.pad10, sizeof(req->packet._5.pad10)); mem += sizeof(req->packet._5.pad10); memcpy(mem, &req->packet._5.magic10, sizeof(req->packet._5.magic10)); mem += sizeof(req->packet._5.magic10); memcpy(mem, &req->packet._5.pad15, sizeof(req->packet._5.pad15)); mem += sizeof(req->packet._5.pad15); memcpy(mem, &req->packet._5.srcport, sizeof(req->packet._5.srcport)); mem += sizeof(req->packet._5.srcport); memcpy(mem, &req->packet._5.pad20, sizeof(req->packet._5.pad20)); mem += sizeof(req->packet._5.pad20); strcpy(mem, req->executable); break; case MSPROXY_BINDINFO_ACK: case MSPROXY_CONNECTED: memcpy(mem, &req->packet._6.magic1, sizeof(req->packet._6.magic1)); mem += sizeof(req->packet._6.magic1); memcpy(mem, req->packet._6.pad5, sizeof(req->packet._6.pad5)); mem += sizeof(req->packet._6.pad5); memcpy(mem, &req->packet._6.magic5, sizeof(req->packet._6.magic5)); mem += sizeof(req->packet._6.magic5); memcpy(mem, &req->packet._6.magic10, sizeof(req->packet._6.magic10)); mem += sizeof(req->packet._6.magic10); memcpy(mem, req->packet._6.pad10, sizeof(req->packet._6.pad10)); mem += sizeof(req->packet._6.pad10); memcpy(mem, &req->packet._6.magic15, sizeof(req->packet._6.magic15)); mem += sizeof(req->packet._6.magic15); memcpy(mem, &req->packet._6.magic16, sizeof(req->packet._6.magic16)); mem += sizeof(req->packet._6.magic16); memcpy(mem, &req->packet._6.magic20, sizeof(req->packet._6.magic20)); mem += sizeof(req->packet._6.magic20); memcpy(mem, &req->packet._6.clientport, sizeof(req->packet._6.clientport)); mem += sizeof(req->packet._6.clientport); memcpy(mem, &req->packet._6.clientaddr, sizeof(req->packet._6.clientaddr)); mem += sizeof(req->packet._6.clientaddr); memcpy(mem, &req->packet._6.magic30, sizeof(req->packet._6.magic30)); mem += sizeof(req->packet._6.magic30); memcpy(mem, &req->packet._6.magic35, sizeof(req->packet._6.magic35)); mem += sizeof(req->packet._6.magic35); memcpy(mem, &req->packet._6.serverport, sizeof(req->packet._6.serverport)); mem += sizeof(req->packet._6.serverport); memcpy(mem, &req->packet._6.srcport, sizeof(req->packet._6.srcport)); mem += sizeof(req->packet._6.srcport); memcpy(mem, &req->packet._6.boundport, sizeof(req->packet._6.boundport)); mem += sizeof(req->packet._6.boundport); memcpy(mem, &req->packet._6.boundaddr, sizeof(req->packet._6.boundaddr)); mem += sizeof(req->packet._6.boundaddr); memcpy(mem, req->packet._6.pad30, sizeof(req->packet._6.pad30)); mem += sizeof(req->packet._6.pad30); break; case MSPROXY_SESSIONEND: break; default: SERRX(req->command); } return mem;}voidmsproxy_sessionsend(void){ const char *function = "msproxy_sessionsend()"; int i, max; struct socksfd_t *socksfd; slog(LOG_DEBUG, function); for (i = 0, max = getdtablesize(); i < max; ++i) { if ((socksfd = socks_getaddr((unsigned int)i)) == NULL) continue; if (socksfd->state.version != MSPROXY_V2) continue; msproxy_sessionend(socksfd->control, &socksfd->state.msproxy); }}static voidmsproxy_sessionend(s, msproxy) int s; struct msproxy_state_t *msproxy;{ const char *function = "msproxy_sessionend()"; struct msproxy_request_t req; slog(LOG_DEBUG, function); bzero(&req, sizeof(req)); *req.username = NUL; *req.unknown = NUL; *req.executable = NUL; *req.clienthost = NUL; req.clientid = msproxy->clientid; req.serverid = msproxy->serverid; req.command = htons(MSPROXY_SESSIONEND); send_msprequest(s, msproxy, &req);}/* ARGSUSED */static voidmsproxy_keepalive(sig) int sig;{ const char *function = "msproxy_keepalive()"; struct msproxy_request_t req; struct msproxy_response_t res; struct socksfd_t *socksfd; int i, max; slog(LOG_DEBUG, function); for (i = 0, max = getdtablesize(); i < max; ++i) { if ((socksfd = socks_getaddr((unsigned int)i)) == NULL) continue; if (socksfd->state.version != MSPROXY_V2 || socksfd->state.inprogress) continue; slog(LOG_DEBUG, "%s: sending keepalive packet", function); bzero(&req, sizeof(req)); req.clientid = socksfd->state.msproxy.clientid; req.serverid = socksfd->state.msproxy.serverid; req.command = htons(MSPROXY_HELLO); if (send_msprequest(socksfd->control, &socksfd->state.msproxy, &req) == -1) return; if (recv_mspresponse(socksfd->control, &socksfd->state.msproxy, &res) == -1) return; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -