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

📄 packet_arp.c

📁 Java抓包必备
💻 C
字号:
#include<jni.h>#ifndef WIN32#include<sys/param.h>#define __FAVOR_BSD#include<netinet/in.h>#include<sys/socket.h>#else#include<winsock.h>#endif#include<net/if.h>#include<netinet/if_ether.h>#include"Jpcap_sub.h"/** analyze arp header **/int analyze_arp(jobject packet,u_char *data){  struct ether_arp *arp=(struct ether_arp *)data;  jbyteArray sha,spa,tha,tpa;  u_char hl,pl;#ifdef DEBUG  puts ("analyze arp");#endif  hl=arp->arp_hln;  pl=arp->arp_pln;
  sha=(*jni_env)->NewByteArray(jni_env,hl);  (*jni_env)->SetByteArrayRegion(jni_env,sha,0,hl,(char *)(data+sizeof(struct arphdr)));  spa=(*jni_env)->NewByteArray(jni_env,pl);  (*jni_env)->SetByteArrayRegion(jni_env,spa,0,pl,(char *)(data+sizeof(struct arphdr)+hl));  tha=(*jni_env)->NewByteArray(jni_env,hl);  (*jni_env)->SetByteArrayRegion(jni_env,tha,0,hl,(char *)(data+sizeof(struct arphdr)+hl+pl));  tpa=(*jni_env)->NewByteArray(jni_env,pl);  (*jni_env)->SetByteArrayRegion(jni_env,tpa,0,pl,(char *)(data+sizeof(struct arphdr)+hl+pl+hl));  (*jni_env)->CallVoidMethod(jni_env,packet,setARPValueMID,			     (jshort)ntohs(arp->arp_hrd),			     (jshort)ntohs(arp->arp_pro),			     (jshort)hl,(jshort)pl,			     (jshort)ntohs(arp->arp_op),			     sha,spa,tha,tpa);  DeleteLocalRef(sha);  DeleteLocalRef(spa);  DeleteLocalRef(tha);  DeleteLocalRef(tpa);  return sizeof(struct arphdr)+hl*2+pl*2;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -