router模块: 调整菜单, 注销原始套接字相关 (使用了libpcap进行捕获数据拆包, 使用libnet进行数据组装发包)

This commit is contained in:
flykhan 2023-09-21 15:45:46 +08:00
parent 88fe7c48f5
commit 949891e366
3 changed files with 26 additions and 27 deletions

BIN
router/router Executable file

Binary file not shown.

View File

@ -14,7 +14,7 @@ int main(int argc, char const *argv[])
// pthread_create(&thread_net_task, NULL, net_task, NULL); // pthread_create(&thread_net_task, NULL, net_task, NULL);
// pthread_join(thread_net_task, NULL); // pthread_join(thread_net_task, NULL);
close(sockfd); // 关闭原始套接字 // close(sockfd); // 关闭原始套接字
close_mysql(); // 关闭数据库连接 close_mysql(); // 关闭数据库连接
// 关闭网络设备 // 关闭网络设备
@ -27,12 +27,12 @@ int main(int argc, char const *argv[])
void net_init() void net_init()
{ {
// 创建原始套接字 // 创建原始套接字
sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); // 参数列表:协议族、套接字类型、协议类型 // sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); // 参数列表:协议族、套接字类型、协议类型
if (sockfd < 0) // if (sockfd < 0)
{ // {
perror("socket"); // perror("socket");
exit(-1); // exit(-1);
} // }
// 数据连接测试 // 数据连接测试
if (connect_mysql("localhost", 3306, "flykhan", "1202", "router") == 0) if (connect_mysql("localhost", 3306, "flykhan", "1202", "router") == 0)
@ -87,17 +87,22 @@ void printResult(MYSQL_ROW row, char (*columns)[30], int cols)
void show() void show()
{ {
printf("************************************************\n"); printf("**************************************************\n");
printf("**********路由器黑名单管理系统******************\n"); printf("** **\n");
printf("**************1.添加黑名单IP********************\n"); printf("** 模拟路由后端管理系统 **\n");
printf("**************2.显示所有黑名单******************\n"); printf("** **\n");
printf("**************3.删除黑名单**********************\n"); printf("** 1.添加黑名单IP **\n");
printf("**************4.开启路由器**********************\n"); printf("** 2.显示所有黑名单 **\n");
printf("**************5.刷新ARP表缓存*******************\n"); printf("** 3.删除黑名单 **\n");
printf("**************6.显示所有ARP表缓存***************\n"); printf("** 4.开启路由器 **\n");
printf("**************9.重新打印菜单********************\n"); printf("** 5.刷新ARP表缓存 **\n");
printf("**************0.退出此系统**********************\n"); printf("** 6.显示所有ARP表缓存 **\n");
printf("************************************************\n"); printf("** 9.重新打印菜单 **\n");
printf("** 0.退出此系统 **\n");
printf("** **\n");
printf("**************************************************\n");
printf("********** 版权所有 FLY-NOOB **********\n");
printf("**************************************************\n");
} }
// 判断IP地址格式是否正确 // 判断IP地址格式是否正确
@ -188,6 +193,7 @@ void menu_choice()
// 后端查询黑名单 ip // 后端查询黑名单 ip
else if (2 == choice) else if (2 == choice)
{ {
printf("黑名单列表如下:\n");
const char *select_ip_fw_sql = "select * from ip_fw"; const char *select_ip_fw_sql = "select * from ip_fw";
query(select_ip_fw_sql, printResult); query(select_ip_fw_sql, printResult);
} }
@ -249,6 +255,7 @@ void menu_choice()
// 显示 ARP 表 // 显示 ARP 表
else if (6 == choice) else if (6 == choice)
{ {
printf("ARP 表如下:\n");
const char *select_arp_result_sql = "select * from ip_mac"; const char *select_arp_result_sql = "select * from ip_mac";
query(select_arp_result_sql, printResult); query(select_arp_result_sql, printResult);
} }
@ -262,14 +269,6 @@ void menu_choice()
// 退出此系统 // 退出此系统
else if (0 == choice) else if (0 == choice)
{ {
close(sockfd); // 关闭原始套接字
close_mysql(); // 关闭数据库连接
// 关闭网络设备
pcap_close(device1);
pcap_close(device2);
printf("退出此系统\n"); printf("退出此系统\n");
return; return;
} }

View File

@ -21,7 +21,7 @@
#include <regex.h> // 正则表达式用于ip地址检查 #include <regex.h> // 正则表达式用于ip地址检查
// 定义全局变量 // 定义全局变量
int sockfd; // 原始套接字 // int sockfd; // 原始套接字
int ret; // 调用数据库的返回值 int ret; // 调用数据库的返回值
char *errmsg; // 错误信息 char *errmsg; // 错误信息
char **dbResult; char **dbResult;