📄 437.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="317.htm">上一层</a>][<a href="438.htm">下一篇</a>]
<hr><p align="left"><small>发信人: einsteiny@SMTH (Alberty), 信区: Hacker <br>
标 题: Source for LAN IP data listening <br>
发信站: 水木清华 (Mon Apr 15 08:47:48 1996) <br>
转信站: SMTH <br>
<br>
<br>
<br>
ne2000 0x60 should be run before this program runs <br>
<br>
<br>
<br>
if your INT # is different than 0x60 , then you modify <br>
<br>
the program receiver.asm : CallInt60 <br>
<br>
<br>
<br>
I compile it using BC 3.1 <br>
<br>
<br>
<br>
cut the message below into 3 files: <br>
<br>
<br>
ethhead.h <br>
<br>
nethear.c <br>
<br>
receiver.asm <br>
<br>
<br>
<br>
/************** ethhead.h **************/ <br>
<br>
struct EthHead { <br>
<br>
char DestAddr[6]; <br>
<br>
char SousAddr[6]; <br>
<br>
unsigned int Type; <br>
<br>
char Data[1024]; <br>
<br>
}; <br>
<br>
<br>
struct IP_PACKET { <br>
<br>
unsigned char VerHLen; <br>
<br>
unsigned char ServiceType; <br>
<br>
unsigned short int TotalLen; <br>
<br>
unsigned short int Identif; <br>
<br>
unsigned short int FlagOffset; <br>
<br>
unsigned char TTL; <br>
<br>
unsigned char Protocol; <br>
<br>
unsigned short int CheckSum; <br>
<br>
unsigned char IPSour[4]; <br>
<br>
unsigned char IPDest[4]; <br>
<br>
<br>
unsigned char Data[2000]; <br>
<br>
}; <br>
<br>
<br>
<br>
struct TCP_PACKET { <br>
<br>
unsigned short int SourPort; <br>
<br>
unsigned short int DestPort; <br>
<br>
unsigned long int SerialNo; <br>
<br>
unsigned long int CertifyNo; <br>
<br>
unsigned short int HLenCode ; <br>
<br>
unsigned short int Window; <br>
<br>
unsigned short int CheckSum; <br>
<br>
<br>
unsigned short int UrgentPtr; <br>
<br>
unsigned char Data[2000]; <br>
<br>
}; <br>
<br>
/******************* ethhead.h : above ************/ <br>
<br>
<br>
<br>
/********************* the C program *******************/ <br>
<br>
<br>
<br>
/********* <br>
<br>
run with 2 args: <br>
<br>
nethear xxx.yyy.zzz.www aaa.bbb.ccc.ddd <br>
<br>
to hear data between the machines with the two IP <br>
<br>
<br>
all data between them using IP packet is heard. <br>
<br>
*****************/ <br>
<br>
/*********** the C program should be linked with receive.asm********/ <br>
<br>
<br>
<br>
#include "ethhead.h" <br>
<br>
#include <string.h> <br>
<br>
#include <dos.h> <br>
<br>
#include <stdio.h> <br>
<br>
#include <bios.h> <br>
<br>
#include <conio.h> <br>
<br>
<br>
<br>
<br>
extern void far receiver(void); <br>
<br>
extern void CallInt60(void); <br>
<br>
extern int Handle; <br>
<br>
extern struct EthHead AFrame; <br>
<br>
extern int GetFlag; <br>
<br>
struct EthHead BFrame; <br>
<br>
/*********** <br>
<br>
you could get more details about <br>
<br>
packet_driver interface <br>
<br>
from many books which are easy to find <br>
<br>
*******************/ <br>
<br>
<br>
void InitAll(void) <br>
<br>
{ <br>
<br>
union { <br>
<br>
void far (* Afunc)(void); <br>
<br>
unsigned int WD[2]; <br>
<br>
} au; <br>
<br>
int dsvar,ahandle; <br>
<br>
GetFlag = 0; <br>
<br>
au.Afunc = receiver; <br>
<br>
dsvar = _DS; <br>
<br>
_ES = au.WD[1]; <br>
<br>
<br>
_DI = au.WD[0]; <br>
<br>
_DS = 0; <br>
<br>
_SI = 0; <br>
<br>
_CX = 0; <br>
<br>
_DL = 0; <br>
<br>
_BX = 0xffff; <br>
<br>
_AX = 0x0201; <br>
<br>
CallInt60(); <br>
<br>
ahandle = _AX; <br>
<br>
_BX = _AX; <br>
<br>
_AH = 20; <br>
<br>
<br>
_CX=6; <br>
<br>
CallInt60(); <br>
<br>
_DS = dsvar; <br>
<br>
Handle = ahandle; <br>
<br>
} <br>
<br>
void CloseAll(void) <br>
<br>
{ <br>
<br>
_BX = Handle; <br>
<br>
_AH = 3; <br>
<br>
CallInt60(); <br>
<br>
} <br>
<br>
<br>
/************ convert xx.yy.zz.ww to Integer***********/ <br>
<br>
void ArgToIP(char * args, unsigned char * sour) <br>
<br>
{int i,j[4]; <br>
<br>
char c; <br>
<br>
sscanf(args,"%d%c%d%c%d%c%d",&j[0],&c,&j[1],&c,&j[2],&c,&j[3]); <br>
<br>
for(i=0;i<4;i++) <br>
<br>
sour[i] = j[i] ; <br>
<br>
} <br>
<br>
char ijk[320][140]; <br>
<br>
int main(int argc,char * argv[]) <br>
<br>
{ <br>
<br>
<br>
FILE * fp; <br>
<br>
struct IP_PACKET * Iper; <br>
<br>
struct TCP_PACKET * Tcper; <br>
<br>
unsigned char dester[]={ 202, 48 , 168 ,31 }; <br>
<br>
unsigned char sourer[]={ 202, 48 , 164 ,10 }; <br>
<br>
unsigned int i,j; <br>
<br>
char * CPtr; <br>
<br>
unsigned long int * LPtr , l; <br>
<br>
i++; <br>
<br>
if(i<320) { <br>
<br>
memcpy(ijk[i],Iper,120); <br>
<br>
<br>
} <br>
<br>
} <br>
<br>
} <br>
<br>
} <br>
<br>
} <br>
<br>
CloseAll(); <br>
<br>
<br>
<br>
for(j=0;j<i;j++) <br>
<br>
for(l=120;l<140;l++) <br>
<br>
ijk[j][l] ='!'; <br>
<br>
<br>
<br>
<br>
fp =fopen("net.hear","a+b"); <br>
<br>
fwrite(ijk,i,120,fp); <br>
<br>
fclose(fp); <br>
<br>
return 0; <br>
<br>
} <br>
<br>
/******************** receive.asm *****************/ <br>
<br>
RECE_TEXT segment byte public 'CODE' <br>
<br>
DGROUP group _DATA,_BSS <br>
<br>
assume cs:RECE_TEXT,ds:DGROUP <br>
<br>
RECE_TEXT ends <br>
<br>
_DATA segment word public 'DATA' <br>
<br>
<br>
d@ label byte <br>
<br>
d@w label word <br>
<br>
_DATA ends <br>
<br>
_BSS segment word public 'BSS' <br>
<br>
b@ label byte <br>
<br>
b@w label word <br>
<br>
?debug C E93AA22A1F06726563652E63 <br>
<br>
?debug C E9C0A12A1F09457468486561642E68 <br>
<br>
?debug C E900101D11115C6E73645C74635C696E635C646F732E68 <br>
<br>
_BSS ends <br>
<br>
RECE_TEXT segment byte public 'CODE' <br>
<br>
<br>
_receiver proc far <br>
<br>
push ax <br>
<br>
push ds <br>
<br>
push ax <br>
<br>
assume ds:dgroup <br>
<br>
mov ax,dgroup <br>
<br>
mov ds,ax <br>
<br>
pop ax <br>
<br>
cmp bx,_Handle <br>
<br>
jnz han_err <br>
<br>
cmp ax,0 <br>
<br>
<br>
jnz second_call <br>
<br>
mov ax,ds <br>
<br>
mov es,ax <br>
<br>
mov di,offset dgroup:_AFrame <br>
<br>
jmp done <br>
<br>
no_buf: <br>
<br>
xor di,di <br>
<br>
mov es,di <br>
<br>
jmp done <br>
<br>
han_err: <br>
<br>
cmp ax,0 <br>
<br>
<br>
jnz done <br>
<br>
jmp no_buf <br>
<br>
second_call: <br>
<br>
mov _GetFlag,1 <br>
<br>
done: pop ds <br>
<br>
pop ax <br>
<br>
ret <br>
<br>
_receiver endp <br>
_CallInt60 proc far <br>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <br>
;;;;;;;;;;;;;;;; <br>
;;;;;;;;;;;;;;;; you perhaps shloud change 60h to other # <br>
;;;;;;;;;;;;;;;;if you packer Driver does not use 0x60 <br>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <br>
int 60h <br>
ret <br>
_CallInt60 endp <br>
RECE_TEXT ends <br>
_BSS segment word public 'BSS' <br>
_AFrame label word <br>
db 2063 dup (?) <br>
_Handle label word <br>
db 2 dup (?) <br>
_GetFlag label word <br>
db 2 dup (?) <br>
_BSS ends <br>
_DATA segment word public 'DATA' <br>
s@ label byte <br>
_DATA ends <br>
RECE_TEXT segment byte public 'CODE' <br>
RECE_TEXT ends <br>
public _receiver <br>
public _GetFlag <br>
public _Handle <br>
public _AFrame <br>
public _CallInt60 <br>
end <br>
/*************************************/ <br>
<br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="317.htm">上一层</a>][<a href="438.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -