Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> 修改snort的socket模式的輸出內容

修改snort的socket模式的輸出內容

日期:2017/2/7 14:31:52      編輯:Linux教程
 

發現snort可以同時應用fast和unsock模式。-A fast -A unsock 不過是先fast後unsock
#########過程中一些函數學習。

*結構體 in_addr 用來表示一個32位的IPv4地址.

extern void *memcpy(void *destin, void *source, unsigned n); ###由source指向地址為起始地址的連續n個字節的數據復制到以destin指向地址為起始地址的空間內。(baidu)

public: int SendTo(
  SOCKET s;
  unsigned char buffer __gc[],
  int size,
  SocketFlags socketFlags,
  sockaddr FAR *addr
  int len
  );
  返回值:實際發送數據的長度。
  parameter :
  s 套接字
  buff 待發送數據的緩沖區
  size 緩沖區長度
  Flags 調用方式標志位, 一般為0, 改變Flags,將會改變Sendto發送的形式
  addr (可選)指針,指向目的套接字的地址
  len addr所指地址的長度

size_t fwrite(const void*buffer,size_t size,size_t count,FILE*stream);
  注意:這個函數以二進制形式對文件進行操作,不局限於文本文件
  返回值:返回實際寫入的數據塊數目
  (1)buffer:是一個指針,對fwrite來說,是要輸出數據的地址。
  (2)size:要寫入內容的單字節數;
  (3)count:要進行寫入size字節的數據項的個數;
  (4)stream:目標文件指針。

1。void *memset(void *s,int c,size_t n)
總的作用:將已開辟內存空間 s 的首 n 個字節的值設為值 c。將s所指向的某一塊內存中的每個字節的內容全部設置為ch指定的ASCII值, 塊的大小由第三個參數指定,這個函數通常為新申請的內存做初始化工作, 其返回值為指向S的指針。


 

#############################尋找unsock下snort的ip輸出和時間輸出

找此結構是通過->ip之間的符號找到LogIpAddrs函數,輸出ip->ip。

printf("!!!!!!!!!!!!!%s:%d\n",inet_ntoax(GET_SRC_ADDR(p)), p->sp);可以在輸出結構體p中的ip和端口

在packet結構體中有:x->ip4_header->source 和x->iph->ip_src 存放原ip地址。

順籐摸瓜找到:inet_ntoax(GET_SRC_ADDR(p)), p->sp ########輸出ip和端口。(懷疑inet_ntoax是inet_ntoa的變體函數,在snort的頭文件中實現)

 linux下:
  函數聲明:char *inet_ntoa (struct in_addr);
  返回點分十進制的字符串在靜態內存中的指針。

printf("@@@@@@@@@@@@%s:%d\n",inet_ntoax(GET_SRC_ADDR(p)), p->sp); ##可以把p中的ip和端口輸出。

查找pkt是否有ip。。等信息

(2)時間戳LogTimeStamp(data->log, p);在這裡實現。同理也很簡單。

建立Alertpkt_txt的結構體,裝入msg ip 時間戳 端口。用socket傳結構體,目的達到。
 

Copyright © Windows教程網 All Rights Reserved