【发布时间】:2022-01-26 10:23:20
【问题描述】:
我正在做一些与信息安全相关的测试,我遇到了以下情况,如果我发错地方了,我很抱歉,任何问题都告诉我,我会解决它!
研究破解WIFI密码,发现aircrack-ng套应用,经过一段时间的学习,终于完成了找到我家wifi密码的任务xD
事不宜迟,下面我详细说明我的问题:
aircrack-ng 设法通过参数接收要测试的密码,我的问题是:
如何从 C# 控制台应用程序传递此参数
我尝试了几种方法,但都没有成功。
在我最后一次尝试中,出于绝望,我使用了 sendmessage 函数,该函数可在 user32.dll 的 windows 库中找到。
Obs:我正在使用已编译的适用于 windows 的 aircrack 二进制文件,可从以下链接获得: aircrack-ng for windows
class Program
{
public const Int32 WM_COPYDATA = 0x4A;
[DllImport("user32.dll")]
static extern long SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
static extern IntPtr FindWindow(string classname, string windowname);
public static IntPtr IntPtrAlloc<T>(T param)
{
IntPtr retval = Marshal.AllocHGlobal(Marshal.SizeOf(param));
Marshal.StructureToPtr(param, retval, false);
return (retval);
}
public static void IntPtrFree(IntPtr preAllocated)
{
if (IntPtr.Zero == preAllocated) throw (new Exception("Go Home"));
Marshal.FreeHGlobal(preAllocated); preAllocated = IntPtr.Zero;
}
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
static void Main()
{
string msg = "123456";
var cds = new COPYDATASTRUCT
{
dwData = new IntPtr(3),
cbData = msg.Length + 1,
lpData = msg
};
IntPtr hWnd = FindWindow("ConsoleWindowClass", @"C:\WINDOWS\system32\cmd.exe aircrack-ng");
IntPtr cdsBuffer = IntPtrAlloc(cds);
SendMessage(hWnd, WM_COPYDATA, IntPtr.Zero, cdsBuffer);
}
}
目前有一个应用程序可以做到这一点,它被称为 crunch,它基本上是一个单词生成器。并且可以使用控制台中的以下命令将此参数发送到aircrack:
crunch 8 8 0123456789 | aircrack-ng -a 2 my-handshake-capture.cap -b my-router-mac-addres -w -
最后一个 - 在 aircrack 中被替换为来自 crunch 的参数。
我在 github 上的 Crunch project 中搜索过它,但它是用 c 语言编写的,对我来说更复杂。谁能帮我?非常感谢您!
【问题讨论】:
-
看看这个answer,它是使用 Windows API 编写的 C 语言,但在 pinvoke.net 的帮助下,您可以获得 C# 版本
-
@tttony 感谢您的帮助,但不幸的是它不起作用,因为这不是 aircrack 期望的参数。我在aircrack-ng官方论坛上发布了同样的问题,我正在等待,因为这只是为了学习目的,我没有太多的猎物。无论如何,谢谢!
标签: c# c++ c aircrack-ng crunch