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

View File

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