以前写的一个sniffer网络监听程序(作为备忘)

网络监听程序 使用图形用户界面 有服务器和客户端,服务器监听客户端的登陆。即:如果A客户端登陆服务器,则服务器界面上的A字母对应的红灯变成绿色 绿灯表示连接,红灯表示断线 提示:socket的监听方法 Client.java package keshe; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import... 阅读详情

ethproto.h:

#ifndef ETHPROTO_H

#define ETHPROTO_H


#define ARP       0X0806

#define RARP          0X8035

#define IP         0X0800

#define IP_TCP       6

#define IP_UDP      17

#define IP_ICMP      1

#define IP_IGMP      2

#define IP_OSPF           89


typedef unsigned char uint8;

typedef unsigned short int  uint16;

typedef unsigned int uint32;

typedef charint8;

typedef short int int16;

typedefintint32;


typedefstruct _EtherHead 

{ 

uint8   d_mac[6];  //ƒøµƒmac

uint8   s_mac[6];   //‘¥mac

uint16  proto_type; //…œ≤„–≠“È¿‡–Õ              

}EtherHead; 


typedef struct _IpHead 

{     

uint8ver_headlen;  //∞ʱæ+±®Õ∑≥§∂»  

uint8   tos;    //∑˛ŒÒ¿‡–Õ

uint16  total_len;    //◊‹≥§∂»

uint16  ident;    //±Í ∂

uint16  frag_offset; //±Í÷æ+∆¨∆´“∆   

uint8   ttl;    //…˙¥Ê÷‹∆⁄

uint8   proto;    //–≠“È¿‡–Õ

uint16  checksum;    //Õ∑≤ø–£—È

uint32  s_ip;    //‘¥ip

uint32  d_ip;     //ƒøµƒip

}IpHead; 


typedef struct _ArpHead

{

uint16 hard_type;//”≤º˛¿‡–Õ

uint16 proto_type;//–≠“È¿‡–Õ

uint8  hard_len;//”≤º˛µÿ÷∑≥§∂»

uint8  proto_len;//–≠“ȵÿ÷∑≥§∂»

uint16 action;//≤Ÿ◊˜¿‡–Õ

uint8  s_mac[6];//‘¥macµÿ÷∑

uint32 s_ip;//‘¥ip

uint8  d_mac[6];//ƒøµƒmacµÿ÷∑

uint32 d_ip;//ƒøµƒip

}ArpHead;


typedef struct _TcpHead 

{     

uint16  s_port; //‘¥∂Àø⁄   

uint16  d_port; //ƒøµƒ∂Àø⁄   

uint32  seq;    //–Ú∫≈

uint32  ack;    //»∑»œ∫≈

uint16offset_flag; //Õ∑≤ø≥§∂»+±£¡Ù+±Í÷æ        

uint16  win; //¥∞ø⁄¥Û–°   

uint16  check_sum;    //–£—È∫Õ

uint16  urp_pointer;//ΩÙº±÷∏’Î

uint32  option;//—°œÓ+ÃÓ≥‰    ˝æ› «16Œªµƒ±∂ ˝

}TcpHead; 


typedef struct _UdpHead 

{ 

uint16s_port;//‘¥∂Àø⁄

uint16  d_port;  //ƒøµƒ∂Àø⁄ 

uint16  len;  //◊‹≥§∂»

uint16  check_sum;  //–£—È∫Õ

}UdpHead; 


char *get_eth_next(char*);

char *get_ip_next(char*);

void ethhead_do(char*);

void arphead_do(char*);

void rarphead_do(char*);

void iphead_do(char*);

void icmphead_do(char*);

void igmphead_do(char*);

void tcphead_do(char*);

void udphead_do(char*);


#endif






ethproto.c:

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/types.h>

#include <errno.h>

#include "ethproto.h"


char *get_eth_next(char *ethhead)

{

char *ret;

ret = ethhead +14;

return ret;

}


char *get_ip_next(char *ethhead)

{

char *ret;

ret = ethhead +34;

return ret;

}


void ethhead_do(char *ethhead)

{

char *p=ethhead;

printf("SMAC: %02X:%02X:%02X:%02X:%02X:%02X ==> DMAC: %02X:%02X:%02X:%02X:%02X:%02X\n",

p[6]&0XFF, p[7]&0XFF, p[8]&0XFF, p[9]&0XFF, p[10]&0XFF, p[11]&0XFF,/*‘¥MACµÿ÷∑*/

p[0]&0XFF, p[1]&0XFF, p[2]&0XFF,p[3]&0XFF, p[4]&0XFF, p[5]&0XFF);/*ƒø±ÍMACµÿ÷∑*/

return;

}


void arphead_do(char *arphead)

{

char *p=arphead+14;

printf("arp\n");

printf("SIP: %d.%d.%d.%d ==> DIP: %d.%d.%d.%d\n",

   p[0]&0XFF, p[1]&0XFF, p[2]&0XFF, p[3]&0XFF,/*‘¥IP*/

   p[10]&0XFF, p[11]&0XFF, p[12]&0XFF, p[13]&0XFF);/*ƒøµƒIP*/

return;

}


void rarphead_do(char *rarphead)

{

char *p=rarphead+14;

printf("rarp\n");

printf("SIP: %3d.%3d.%3d.%3d ==> DIP: %3d.%3d.%3d.%3d\n",

   p[0]&0XFF, p[1]&0XFF, p[2]&0XFF, p[3]&0XFF,/*‘¥IP*/

   p[10]&0XFF, p[11]&0XFF, p[12]&0XFF, p[13]&0XFF);/*ƒøµƒIP*/

return;

}


void iphead_do(char *iphead)

{

char *p=iphead+12;

printf("ip\n");

printf("SIP: %3d.%3d.%3d.%3d ==>DIP: %3d.%3d.%3d.%3d\n",

p[0]&0XFF, p[1]&0XFF, p[2]&0XFF, p[3]&0XFF,/*‘¥IP*/

p[4]&0XFF, p[5]&0XFF, p[6]&0XFF, p[7]&0XFF);/*ƒøµƒIP*/

return;

}


void icmphead_do(char *icmphead)

{

printf("icmp\n");

return;

}


void igmphead_do(char *igmphead)

{

printf("igmp\n");

return;

}


void tcphead_do(char *tcphead)

{

char *p=tcphead;

printf("tcp\n");

printf("SPORT: %5d ==> DPORT: %5d\n",

ntohs(((u_int16_t *)p)[0]), /*‘¥∂Àø⁄*/

ntohs(((u_int16_t *)p)[1]));/*ƒøµƒ∂Àø⁄*/

return;

}


void udphead_do(char *udphead)

{

char *p=udphead;

printf("udp\n");

printf("SPORT: %5d ==> DPORT: %5d\n",

ntohs(((u_int16_t *)p)[0]),/*‘¥∂Àø⁄*/

ntohs(((u_int16_t *)p)[1]));/*ƒøµƒ∂Àø⁄*/

return;

}






main.c:

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/socket.h>

#include <linux/if_ether.h>

#include <sys/types.h>

#include <netinet/in.h>

#include <time.h>

#include <errno.h>

#include "ethproto.h"


#define BUFFER_MAX 2048


void ether_packet_do(char* buffer)

{

staticint n_packet=0;

int proto;

char *ethhead,*headpoint;

time_t timep;

ethhead = buffer;

n_packet+=1;

time(&timep);

printf("\n[PACKETS]:%d\n",n_packet);

printf("[TIME]:%s",ctime(&timep));

ethhead_do(ethhead);


/*“‘ôկ…œ≤„–≠“È¿‡–Õ*/

proto = ntohs(((u_int16_t *)(ethhead +12))[0]);

switch(proto)

{

case IP:

headpoint = get_eth_next(ethhead);

iphead_do(headpoint);


/*IP…œ≤„–≠“È*/

proto = (int)(*(headpoint +9));

switch(proto)

{

case IP_TCP:

headpoint = get_ip_next(ethhead);

tcphead_do(headpoint);

break;

case IP_UDP:

headpoint = get_ip_next(ethhead);

udphead_do(headpoint);

break;

case IP_ICMP:

headpoint = get_ip_next(ethhead);

icmphead_do(headpoint);

break;

case IP_IGMP:

headpoint = get_ip_next(ethhead);

igmphead_do(headpoint);

break;

case IP_OSPF:printf("ospf\n");break;

default:printf("only know this is a IP packet\n");

}

break;

case ARP:

headpoint = get_eth_next(ethhead);

arphead_do(headpoint);

break;

case RARP:

headpoint = get_eth_next(ethhead);

rarphead_do(headpoint);

break;

default:printf("unknow protocol\n");

}

return;

}



int main(int argc,char *argv[])

{

int sock,n_read;

char buffer[BUFFER_MAX];

if((sock = socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL))) <0)

{

perror("socket error!\n");

exit(1);

}


while(1)

{

n_read = recvfrom(sock,buffer,BUFFER_MAX,0,NULL,NULL);

if(n_read <14)

{

perror("this is not ethernet\n");

continue;

}

ether_packet_do(buffer);

}

}


网络侦听程序 一个网络侦听程序,利用该程序可以动态进行网络监听和管理。 立即下载

相关推荐

一个牛人总结的sniffer抓包分析教程

一个牛人总结的160多页sniffer抓包分析教程

局域网监听设计与开发

摘 要 网络监听软件是提供给网络安全管理人员进行安全管理的工具,可以用来监视网络的状态、数据流动情况以及网络上传输的信息,以获取有用信息。作为黑客来说,通过网络监听可以获取其所需信息(比如密码等);对黑客活动和其他网络犯罪进行侦察、取证时,可以使用网络监听技术来获取必要的信息。因此,在目前研究和使用网络监听技术及相关工具,对于防护网络安全、打击网络犯罪具有重要的现实意义。 本局域网监听软件主要利用Winpcap和Jpcap等工具进行开发,使用Java语言在Eclipse 3.2环境下进行开发。软件主

qq_61141142的博客 1235

网络安全 实验1网路监听工具sniffer

Sniffer(嗅探器)是利用计算机的网络接口截获发往其他计算机的数据报文的一种技术。它工作在网络的低层,把网络传输的全部数据记录下来。它可以帮助网络管理员查找网络漏洞和检测网络性能。分析网络的流量,以便找出所关心的网络中潜在的问题。 不同的传输介质网络的可监听性是不同的。

7 款超好用的网络监控工具

7 款超好用的网络监控工具

分享Python知识 1275

基于SIP协议的抓包工具

设计一个专用的SIP协议抓包工具,能截获网络中流过的SIP数据包,并且根据数据包的特征画出SIP通信的流程图。

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 570

信息安全技术—实验四:Ip包监视程序实现

一、实验目的及要求学生在熟悉网络数据通信原理以及TCP/IP协议结构原理的基础上,运用套接字编程实现的网络封包监视技术,有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。要求: 1.熟悉网络数据通信原理以及TCP/IP协议结构原理。2.掌握Ip包发送和接收过程。3.在所学知识的基础上自己确定实验方案,画出流程图,独立编程,实现网络监听程序。4.对获取的数据包进行简单分析。二、实验内容将网卡的工作模式设置为混合模式。获取局域网内的某台(多台)主机的MAC地址,捕获到所有经过

天上下雨地上滑,自己跌倒你自己爬 2344

FPGA SPI驱动ADC避坑指南:以ADC128S022为例,详解时序设计与代码调试

本文以ADC128S022为例,详细解析FPGA通过SPI驱动ADC的时序设计与代码调试中的常见问题。从时钟分频计算、SPI模式选择到状态机实现,提供避坑指南和实战技巧,帮助工程师解决数据采集系统中的时序匹配难题。特别针对FPGA与ADC通信中的微妙差异,给出精确的Verilog代码示例和ModelSim仿真验证方法。

weixin_42522374的博客 458

10 款免费的网络监控工具

互联网的飞速发展,互联网的使用越来越普遍,网络和互联网不仅成为企业内部的沟通桥梁,也是企业和外部进行各类业务往来的重要管道。 网络监控软件定义:指针对局域网内的计算机进行监视和控制,针对内部的电脑上互联网活动(上网监控)以及非上网相关的内部行为与资产等过程管理(内网监控;所以包含了上网监控(上网行为监视和控制、上网行为安全审计)和内网监控(内网行为监视、控制、软硬件资产管理、数据与信息安全),有...

weixin_30301449的博客 2547

E28 LoRa模块透传 定点传输 RSSI测试与MicroPython应用

测试说明 测试模块数:3 测试模式:配置模式和传输模式 如果没有检测到串口,首先检查是否安装串口驱动CH341SER,下载链接,提取码:vaw2 工作模式 模式(0-3) M2 M1 M0 模式介绍 备注 0 传输模式 1 0 0 串口打开,无线打开,连续透明传输 空速支持手动配置和自适应波特率自动调节;连续模式双方波特率必须一致 1 RSSI 1 0 1 串口打开,无线打开,RSSI功能打开 模块每100ms输出RSSI强度值 2 测距模式 1 1 0 保留 - 3 配置模式

GniLAY1022的博客 4243

Nacos 2.3.2实战:5分钟搞定达梦数据库插件配置(含避坑指南)

本文详细介绍了在Nacos 2.3.2中配置达梦数据库数据源插件的完整实战流程。通过解析SPI插件机制,提供从环境准备、插件编译部署到核心配置的逐步指南,并重点分享了驱动加载、SQL兼容性等高频问题的避坑解决方案,助力开发者高效完成国产化数据库适配。

weixin_29200485的博客 499

java sniffer_用Java来实现的Sniffer

【摘要】没有办法, 不得不做啊, 还得靠这个东西混学分呢。老师给的例子是用VC写的, 说心里话, 俺对VC不感兴趣, 所以就想用Java来实现。但是java是无法直接访问raw socket的, 所以如果要实现sniffer的功能的话, 只能通过jni调用本地的接口, 实际上还是要用VC来写。 不过从网上搜了搜, 发现已经有前人做过了,所以俺就省事儿了, 直接拿过来用吧。看到有两个地方介绍的, 一...

weixin_36290287的博客 650

灵魂三问:因果推断

什么是因果推断?为什么研究因果推断?怎么进行因果推断研究?

ML OR 智能决策的博客 2902

java毕业设计——基于java+Winpcap的局域网监听软件设计与实现(毕业论文+程序源码)——局域网监听软件

网络监听软件是提供给网络安全管理人员进行安全管理的工具,可以用来监视网络的状态、数据流动情况网络上传输的信息,以获取有用信息。作为黑客来说,通过网络监听可以获取其所需信息(比如密码等);对黑客活动和其他网络犯罪进行侦察、取证时,可以使用网络监听技术来获取必要的信息。因此,在目前研究和使用网络监听技术及相关工具,对于防护网络安全、打击网络犯罪具有重要的现实意义。本局域网监听软件主要利用Winpcap和Jpcap等工具进行开发,使用Java语言在Eclipse 3.2环境下进行开发。

m0_66238867的博客 1727

如何导入su_利用GIS快速生成SU场地模型

01|前言:进入2021年了,希望大家也是一个新的开始。告诫自己多写文章多更新,多读点书多旅行。然而元旦由于出去玩了4天,积累了一些事情要处理,一直没有时间好好写点东西。今天给大家带来的分享主题叫“利用GIS快速生成SU场地模型”。相关的视频方法其实B站上也有,但我相信视频很多人都不会看,我自己也是。直接给大家上操作流程。主要的操作步骤是【获取场地的矢量shp文件】—【导入ArcScen...

weixin_33806859的博客 9813

出现 Tomcat:HTTP状态 404 - 未找到解决方法(图文分析)

出现如下问题 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[/ajax_war_exploded/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.69 解决方法如下: 网上中的操作有步操作多数都误导 这个部署的环境目录上面是web.xml 下面的目录路径是web即可不用到webapp 保存重启服务器即可使用 其他配置中启动tomcat的操作具体 JRE 1.8 ...

码农研究僧的博客 13万+

网络监听--Sniffer

Sniffer(嗅探器)就是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种技术。该技术被广泛应用于网络维护和管理方面,它工作的时候就像一部被动声纳,默默的接收着来自网络的各种信息,通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况,以便找出所关心的网络中潜在的问题。 Sniffer技术简介数据在网络上是以很小的称为“帧”(又称:包)的单位传输的,帧由多个部分组成,不

xjlstudy的专栏 2153

华为OD机试真题:明日之星选举 (Java/Py/C/ C++/JS/GO)

华为OD机试(机考)双机位C卷 【明日之星选举】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 明日之星选举。

qq_45776114的博客 919

编写自己的sniffer(一)

接上篇linux下libpcap抓包分析 一、系统环境 1、系统及类库要求: 类Unix系统+libpcap库+libnet库+pcre库; 2、各组件版本要求: libpcap 1.0以上; libnet 1.1以上; pcre 7.5以上; 注意:对于不同类Unix系统及相同类型不同发行版的Unix系统,libpcap安装组件可能...

weixin_30699831的博客 356

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Linux下sniffer的编写(新手上路)

Sniffer程序是把NIC(网络适配卡,一般如以太网卡)置为一种叫promiscuous杂乱模式的状态,一旦网卡设置为这种模式,它就能是 sniffer程序能接受传输在网络上的每一个信息包。普通的情况下,网卡只接受和自己的地址有关的信息包,即传输到本地主机的信息包。要使 sniffer能接受处理这种方式的信息,网卡就必须设置为我们刚开始将的杂乱模式,所以需要Root用户来运行这种sniffer程

IT老兵 5427

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

linux环境下的网络监听程序

在网络中监听数据包并将数据包存储在文件中。 首先编译程序gcc p.c -o p  运行程序 sudo ./p 50     (其中50可以替换为其他数据)。 #include #include #include #include #include #include #include #include #include #include "string.

wjs1033的专栏 1123

安卓APP在运行时对全局进行网络状态监听的实现

一.前言 怎么对APP进行全局的网络监听呢?仿照微信的无网状态下弹出的提示,应该怎么做? 我是通过广播的方式通知是否有网络的,那么又如何实现全局监听呢?BaseaActivity,没错,就是它。我们在BaseaActivity使用EventBus订阅事件,具体的可以看一下代码。 先来看看效果吧。 1.真机测试 2.模拟器测试 二.实现方法 1.新建一个项目 2.增加NetUtils类 package com.example.app; import android.content.Context; im

一粒程序米 1377

C语言+二维数组+非递归实现五子棋游戏(工程完成度:100%)

标准C+二维数组+非递归实现五子棋游戏

Zwarwolf的专栏 8961

关于二维数组和指针与传参

假设有一个二维数组a[M][N],要把它作为参数传给一个函数sub()

Zwarwolf的专栏 7414
上一篇: 关于一个有3个线程的线程池相关操作(用作备忘)
下一篇: 关于一个oc写的命令行版的通讯录程序(代码贴过来无缩进,作为备忘,代码完成度:90%)
Zwarwolf
博客等级 码龄20年 693粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值