unit main;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, winsock2, stdctrls, spin;
const
wm_socket = wm_user + 1;
type
tmainform = class(tform)
listbox: tlistbox;
procedure formcreate(sender: tobject);
procedure formdestroy(sender: tobject);
private
s: tsocket;
procedure wmsocket(var msg: tmessage); message wm_socket;
public
end;
varmainform: tmainform;
implementation
const
sio_rcvall = ioc_in or ioc_vendor or 1;
type
pipv4_hdr = ^tipv4_hdr;
tipv4_hdr = record
verlen: byte;
tos: byte;
totallength: word;
id: word;
offset: word;
ttl: byte;
protocol: byte;
checksum: word;
srcaddr: cardinal;
destaddr: cardinal
end;
ptcp_hdr = ^ttcp_hdr;
ttcp_hdr = record
srcport: word;
destport: word;
seq: cardinal;
ack: cardinal;
lenflag: word;
winsize: word;
checksum: word;
urg: word
end;
procedure prepare(var s: pchar);
varp: integer;
begin
p:=pos(#13#10, s);
while p>0 do
begin
inc(s, p+1);
p:=pos(#13#10, s)
endend;
procedure tmainform.formcreate(sender: tobject);
varwsadata: twsadata;
serveraddr: tsockaddrin;
optval: integer;
optret: dword;
ret: integer;
begin
ret:=wsastartup($202, wsadata);
if ret<>0 then
begin
showmessage('wsastartup failed with error '+inttostr(ret));
exit
end;
serveraddr.sin_family:=af_inet;
serveraddr.sin_port:=htons(0);
serveraddr.sin_addr.s_addr:=inet_addr('192.168.0.208'); //換成你的ip
if bind(s, @serveraddr, sizeof(serveraddr))=socket_error then
begin
showmessage('bind failed with error '+inttostr(wsagetlasterror));
exit
end;
optval:=1;
if wsaioctl(s, sio_rcvall, @optval, sizeof(optval), nil, 0, @optret, nil, nil)=socket_error then
begin
showmessage('wsaioctl failed with error '+inttostr(wsagetlasterror));
exit
end;
if wsaasyncselect(s, handle, wm_socket, fd_read)=socket_error then
showmessage('wsaasyncselect failed with error '+inttostr(wsagetlasterror))
end;
procedure tmainform.formdestroy(sender: tobject);
begin
if closesocket(s)=socket_error then
showmessage('closesocket failed with error '+inttostr(wsagetlasterror));
if wsacleanup=socket_error then
showmessage('wsacleanup failed with error '+inttostr(wsagetlasterror))
end;
procedure tmainform.wmsocket(var msg: tmessage);
const
bufsize = 65535;
varbuf: array [0..bufsize] of char;
ipheader: pipv4_hdr;
ipheaderlen: byte;
tcpheader: ptcp_hdr;
tcpheaderlen: byte;
data: pchar;
ret: integer;
begin
zeromemory(@buf, bufsize);
ret:=recv(s, buf, bufsize, 0);
if ret=socket_error then
begin
showmessage('recv failed with error '+inttostr(wsagetlasterror));
exit
end;
end.
驚爆 普通人也能監聽你MSN聊天
如果在安靜的辦公室突然誰大笑一聲,你可一定要注意了,有可能就是他正在監聽你們大家的msn聊天對話,雖然這可能僅僅只是乙個玩笑,但描述的事實卻離我們越來越近。原來想到只有公司老闆或網管員才能幹的事情,沒想到現在所有人都能幹了。以前也知道msn可能被公司老闆監聽,但聊天中大不了不說老闆壞話也就過去了,但...
小心 你的MSN聊天很有可能被監控
如果在安靜的辦公室突然誰大笑一聲,你可一定要注意了,有可能就是他正在監聽你們大家的msn聊天對話,雖然這可能僅僅只是乙個玩笑,但描述的事實卻離我們越來越近。原來想到只有公司老闆或網管員才能幹的事情,沒想到現在所有人都能幹了。以前也知道msn可能被公司老闆監聽,但聊天中大不了不說老闆壞話也就過去了,但...
微信PC端C 技術獲取聊天內容
自己總結一下c 用法的核心思路 通過各種技巧搜尋找到記憶體中關鍵資料,然後結合動態除錯找到運算元據的函式。所以我們可以hook textoutw,從而獲取到聊天內容。對於以往的qq tim之類,我們使用acc介面也能很容易的獲取到聊天內容。這是第一次比較成功的應用c 整個看來,確實省下來很多定位資料...