
Nmap源码学习
文章平均质量分 69
marytime
捷径虽好,但有时路远点也有它独特的优势
展开
-
Nmap接口获取及解析--代码学习笔记
nmap 路由解析strlcpy将src复制到dstsize_tstrlcpy(dst, src, siz) char *dst; const char *src; size_t siz;{ register char *d = dst;//请求编译器尽可能将变量存在cpu内部寄存器中,提高效率 register ...原创 2018-05-09 21:17:22 · 1851 阅读 · 0 评论 -
Nmap IP分片发送学习
Netutil.ccIP分片并发送函数解析mtu是通信协议某一层上面所能通过的最大数据大小将IP数据部分划分为fragment片,每片大小mtu,最后一片大小datalen % mtu(因为可能不足mtu)需要填充的ip_off是相对数据部分的偏移,因此偏移字节为fragment - 1) * mtu ,又由于ip_off是以8字节为单位 ip->ip_off = htons((fragm...原创 2018-06-07 21:51:45 · 505 阅读 · 0 评论 -
Nmap超时预估
代码来源Nmap/Scan_engine.cc1、一次往返时延计算其中delta是一次rrt,接收时间 recerved 减去发送时间 sent。这个时间差计算的时候,量纲是(a).tv_sec - (b).tv_sec) * 1000000公式1: delta = TIMEVAL_SUBTRACT(*received, *sent);if(delta < 0 &am...原创 2018-05-27 17:39:22 · 1633 阅读 · 2 评论 -
单链表
在看nmap的源码中nsock时,对于其中ghlist的设计有些不太懂,so重学链表。单链表链表结构typedef struct Node{ int data; struct Node *next; }NODE, *PNODE;初始化表头 PNODE pHead; pHead = malloc(sizeof(struct Node));...原创 2018-04-18 22:30:08 · 247 阅读 · 0 评论 -
vfprintf使用学习
nmap中将vfprintf用于日志记录void nsock_trace(mspool *ms, char *fmt, ...) { va_list ap; int elapsed_time_ms; assert(ms->tracefile != NULL); elapsed_time_ms = TIMEVAL_MSEC_SUBTRACT(nsock_tod, ms-&g...原创 2018-04-25 21:59:55 · 1332 阅读 · 0 评论 -
使用memcpy将一个字符串添加到另外一个字符串之前
nmap中字符串添加的功能函数/* Prepend an n-char string to a filespace */int fs_prepend(char *str, int len, struct filespace *fs){ char *tmpstr; if (len < 0) return -1; if (len == 0) return 0;...原创 2018-04-25 23:03:27 · 1581 阅读 · 0 评论 -
Nmap中用到的tcp选项解析函数理解
理解tcp选项的解析时有一些困难,这里记录一下。 (u8*) tcp + sizeof(struct tcp_hdr) /*是选项开始位置,因为tcp头部中包含选项,所以th->off这个头部长度是含有option的长度的,但是tcp_hdr结构的定义中不含选择,所以,tcp指针的地址+tcp_hdr结构长度就是选项的开始位置。 ...原创 2018-05-05 19:20:31 · 395 阅读 · 0 评论 -
Nmap中sockaddr比较函数
两个sockaddr相同的条件1、ss_family相同2、sin_addr.s_addr相同int sockaddr_equal(const struct sockaddr_storage *a, const struct sockaddr_storage *b) { if (a->ss_family == AF_INET && b->ss_family ...原创 2018-05-17 22:33:01 · 544 阅读 · 0 评论 -
Nmap路由信息获取--未完
方法一、读取/proc/net/route文件用sscanf函数将读取内容按格式存储在不同变量中。route_loop(route_t *r, route_handler callback, void *arg){ FILE *fp; struct route_entry entry; char buf[BUFSIZ]; int ret = 0; if ((fp = fopen(PR...原创 2018-05-17 22:21:27 · 1846 阅读 · 0 评论 -
Nmap对嗅探包发送频率的控制学习
包发送频率 : 包/秒字节发送频率: 字节/秒获取全程的频率total总包数elapsed总时间double RateMeter::getOverallRate(const struct timeval *now) const { double elapsed; elapsed = elapsedTime(now); if (elapsed <= 0.0) re...原创 2018-06-01 12:22:10 · 814 阅读 · 0 评论