我正在做一些与信息安全相关的测试,我遇到了以下情况,如果我把它发布在错误的地方,我很抱歉,任何问题都告诉我,我会解决它!
研究破解WIFI密码,找到了aircrack-ng套件应用,经过一段时间的学习,终于完成了找到我家wifi密码的任务xD
事不宜迟,下面我详细说明我的问题:
aircrack-ng 设法通过参数接收要测试的密码,我的问题是:
如何从 C# 控制台应用程序传递此参数
我尝试了几种方法,但没有成功。
在我最后一次尝试中,出于绝望,我使用了sendmessage函数,该函数在 windows 的user32.dll库中可用。
Obs:我正在使用已编译的适用于 windows 的 aircrack 二进制文件,可在链接中找到:适用于 windows 的 aircrack-ng
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 项目中搜索了它,但它是用 c 语言编写的,对我来说更复杂。谁能帮我?非常感谢您!