|
作者: fora [fora] 论坛用户 | 登录 |
如果我做网络管理的话,我想以网络管理员的身份向某台主机发送信息,也就是常用的net send,要是编程实现的话,怎么才能把发送者自定义的签名加上去,就象是匿名而不显示自己的机器名,还有就是如何群发,给一个工作组发。 在对方接收的信使服务为 从“管理员”(这个名字是自己定义的,可更换)到XXX的消息“。。。。。。。。” 这个是使用的那些函数,和尚,给指教一下 |
地主 发表时间: 06/02 21:03 |
回复: ricky [ricky] 版主 | 登录 |
char DstIp[20]; // 取得目标IP地址 memcpy (DstIp,Ip,16); // 把目标IP转换成unicode int nLen = MultiByteToWideChar(CP_ACP, 0, DstIp, -1, NULL, 0); LPWSTR LPWIp = new WORD[nLen]; MultiByteToWideChar(CP_ACP, 0, DstIp , -1, LPWIp, nLen); int ret = NetMessageBufferSend(NULL,LPWIp,Msg_Name,(LPBYTE)Msg_Main,MainLen*2); if (ret == NERR_Success) { char *buf = new char[32]; sprintf(buf,"%s",DstIp); PostMessage(DlgHwnd,WM_PROC_DST,(WPARAM)buf,1); } delete LPWIp; PostMessage(DlgHwnd,WM_PROC_CMP,0,(long)Ip); return 0; } |
B1层 发表时间: 06/03 11:34 |
回复: hacants [hacants] 论坛用户 | 登录 |
请问楼上的,该程序保存为什么格式? 不好意思,我很菜。 相信我,我会努力的^o^ [此贴被 小蚂蚁(hacants) 在 06月03日16时55分 编辑过] |
B2层 发表时间: 06/03 16:35 |
回复: fora [fora] 论坛用户 | 登录 |
那天看到NetBufferSend,查了查,网上有很好的例子。 下面的程序在delphi6中可以编译通过,source可以自己定义,如果为空的话,会以本主机的名义发送信息。 你可以是直接调用netapi32这个动态链接库。 也可以用JCL,当然本质上也是调用这个dll里的函数。 function NetSend(Dest, Source, Msg: string) : Longint; overload; type TNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar; Buf: PWideChar; buflen: Cardinal) : Longint; stdcall; var NetMessageBufferSend: TNetMessageBufferSendFunction; SourceWideChar: PWideChar; DestWideChar: PWideChar; MessagetextWideChar: PWideChar; Handle: THandle; begin { NetSend } Handle := LoadLibrary('NETAPI32.DLL'); if Handle=0 then begin Result := GetLastError; Exit; end; { Handle=0 } @NetMessageBufferSend := GetProcAddress(Handle, 'NetMessageBufferSend'); if @NetMessageBufferSend=nil then begin Result := GetLastError; Exit; end; { @NetMessageBufferSend=nil } MessagetextWideChar := nil; SourceWideChar := nil; DestWideChar := nil; try GetMem(MessagetextWideChar, Length(Msg)*SizeOf(WideChar)+ 1); GetMem(DestWideChar, 20*SizeOf(WideChar)+1); StringToWideChar(Msg, MessagetextWideChar, Length(Msg)*SizeOf(WideChar)+ 1); StringToWideChar(Dest, DestWideChar, 20*SizeOf(WideChar)+ 1); if Source='' then Result := NetMessageBufferSend(nil, DestWideChar, nil, MessagetextWideChar, Length(Msg)*SizeOf(WideChar)+ 1) else begin GetMem(SourceWideChar, 20*SizeOf(WideChar)+1); StringToWideChar(Source, SourceWideChar, 20*SizeOf(WideChar)+ 1); Result := NetMessageBufferSend(nil, DestWideChar, SourceWideChar, MessagetextWideChar, Length(Msg)*SizeOf(WideChar) +1); FreeMem(SourceWideChar); end; { not (Source='') } finally FreeMem(MessagetextWideChar); FreeLibrary(Handle); end; { try } end; { NetSend } |
B3层 发表时间: 06/05 08:43 |
回复: fora [fora] 论坛用户 | 登录 |
至于对一个工作组群发,是我当初脑子不好。 完全可以先获取工作组甚至局域网中的全部机器,再一个一个的发。 chat* ben fora |
B4层 发表时间: 06/05 08:58 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号