业务目标
通过网页自动打开wireshark,完成远程抓包。
业务方案
网页打开本地应用程序,本地应用程序检查本地wireshar是否存在,如果存在支持启动本地wireshark,如没有wireshark应用程序存在则安装wireshark。
业务实现流程
1、本地应用程序开发
使用vs2015新建win32控制台应用程序。
int main(int argc, char* argv[])
{
int i = 0;
char lcmd[256];
char* inParm = "-B 1 -k -i rpcap://[10.21.137.228]:2002/eth0";
//char* cmd = "D:\\Program Files\\Wireshark\\wireshark.exe";
for (i = 0; i < argc; i++)
{
printf("printf argv[%d]:%s \n",i,argv[i]);
}
//通过获取本地wireshark注册表信息
//,读取wireshark执行路径
getRegWireshark();
//把执行路径和入参组成cmd
sprintf_s(lcmd,"%s %s",cmd, inParm);
printf("cmd:%s \n", lcmd);
//启动远程手抓包
WinExec(lcmd, SW_SHOW);
Sleep(1000*10);
return 0;
}
wireshark注册表读取实现
int getRegWireshark()
{
// Dynamic allocation will be used.
HKEY hKey;
int i = 0;
char* p = NULL;
char* curP = NULL;
char ansi[MY_BUFSIZE] = { 0 };
TCHAR szProductType[MY_BUFSIZE];
memset(szProductType, 0, sizeof(szProductType));
DWORD dwBufLen = MY_BUFSIZE;
LONG lRet;
// 下面是打开注册表, 只有打开后才能做其他操作
lRet = RegOpenKeyEx(HKEY_CLASSES_ROOT, // 要打开的根键
TEXT("wireshark-capture-file\\shell\\open\\command"), // 要打开的子子键
0, // 这个一定要为0
KEY_QUERY_VALUE, // 指定打开方式,此为读
&hKey); // 用来返回句柄
// 判断是否打开成功
if (lRet != ERROR_SUCCESS)
{
printf("RegOpenKeyEx HKEY_CLASSES_ROOT error \n");
return 1;
}
//下面开始查询
lRet = RegQueryValueEx(hKey, // 打开注册表时返回的句柄
TEXT(""), //要查询的名称,
NULL, // 一定为NULL或者0
NULL,
(LPBYTE)szProductType, // 我们要的东西放在这里
&dwBufLen);
// 判断是否查询成功
if (lRet != ERROR_SUCCESS)
{
printf("RegQueryValueEx error \n");
return 1;
}
RegCloseKey(hKey);
WideCharToMultiByte(CP_ACP, 0, szProductType, -1, ansi, sizeof(ansi), NULL, NULL);
p = ansi + strlen(ansi);
for (i = strlen("\" \"%1\""); i > 0; i--)
{
*--p = '\0';
}
p = ansi;
printf("ansi:%s \n", ansi);
sprintf_s(cmd,"%s",++p);
}
2、应用程序安装包发布
解决方案上新建生成安装项目
注册表编辑
打开工具栏视图,编辑器,注册表,如下:
具体配置如下:
安装项目配置
补充
1、手动制做注册文件
。
使用记事本编辑注册脚本。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\mywireshark]
@=”WebshellProtocol”
“URL Protocol”=”D:\wireshark\wireshark.exe”
[HKEY_CLASSES_ROOT\mywireshark\DefaultIcon]
@=”D:\wireshark\wireshark.exe,1”
[HKEY_CLASSES_ROOT\mywireshark\shell]
[HKEY_CLASSES_ROOT\mywireshark\shell\open]
[HKEY_CLASSES_ROOT\mywireshark\shell\open\command]
@=”\”D:\wireshark\wireshark.exe\” \”%1\”“
2、修改注册文件后缀名为mywireshark.reg,双击执行。
测试网页编写
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<a href="consoleApp://">
</a>
</div>
</body>
</html>
测试输出
4、使用浏览器打开html文件。
demo 地址:http://download.csdn.net/detail/s18098934396/9907947