⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 437.htm

📁 unix高级编程原吗
💻 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 + -