情報セキュリティに関連するいくつかのテストを行っていますが、次のような状況に遭遇しました。これを間違った場所に投稿していたら申し訳ありません。問題があればお知らせください。修正します!
WIFIパスワードのクラッキングについて調査したところ、aircrack-ngアプリケーションスイートを見つけ、しばらく研究した後、家のwifiパスワードを見つけるというミッションをなんとか完了しましたxD
これ以上苦労することなく、以下に私の問題を詳しく説明します。
aircrack-ng は、パラメーターでテストするパスワードを受け取ることができます。私の質問は次のとおりです。
C# コンソール アプリケーションからこのパラメーターを渡す方法
いくつかの方法を試しましたが、成功しませんでした。
私の最後の試みでは、必死になって、windows のuser32.dllライブラリで利用可能なsendmessage関数を使用しました。
Obs : 私は Windows 用にコンパイルされた aircrack バイナリを使用してい ます。
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言語で書かれていて、私には複雑です。誰でも私を助けることができますか?事前にどうもありがとうございました!