一次突发奇想

今天有个突发奇想

 假如  有需要我们 暴力破解 而且必须和程序交互的时候 我们该怎么办  

这个 有人和我说os 库 但是 没有知道怎么用 

我现在没有解决 windows下的 dos 平台 如果有人知道了 可以在下面一起交流 

先说linux 下的怎么办

这个 在我以前我也写过 有用shell  但是如果不想用呢 

那么就有一个新的答案 那就是pwntools   这个 pwn必备的工具 

# coding=utf-8
from pwn import *
for i in range(65535):
    io=process('./zorro_bin')
    io.send(str(1))
    io.send("\n")
    sleep(0.1)
    io.send(str(i))
    io.send("\n")
    s=io.recv()
    print s
    print i
    if s[:16]=='You choose right':
        print s
	l=input()
    io.close()

模板代码如下 但是这个枚举多了非常耗内存  所以感觉还是shell  简便一点  

然后至于 我们所说的   如果是 我们 windows 平台下 的gui程序 

先看一下我写的 demo吧

这个是模拟  程序登入  

然后下面这个就是  我们的一个接口了 

核心代码 如下

demo

// WindowsProject3.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "WindowsProject3.h"
#include "resource1.h"
INT_PTR CALLBACK DialogProc(_In_ HWND hwndDlg, _In_opt_ UINT UMsg, _In_ WPARAM wParam, _In_ LPARAM lParam);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPWSTR    lpCmdLine,
	_In_ int       nCmdShow)
{
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, &DialogProc);


	return 0;
}
INT_PTR CALLBACK DialogProc(_In_ HWND hwndDlg, _In_opt_ UINT UMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
	if (UMsg == WM_CLOSE)
	{
		EndDialog(hwndDlg, NULL);
		MessageBox(NULL, "关闭成功!", "谢谢使用", 0);
	}
	if (UMsg == WM_COMMAND)
	{
		if (wParam == IDC_BUTTON1)
		{
			char s[100], s2[100];
			GetDlgItemText(hwndDlg, IDC_EDIT1, s,100);
			GetDlgItemText(hwndDlg, IDC_EDIT2, s2, 100);
			if (!strcmp(s, "pipixia") && !strcmp(s2, "xiapipi"))
			{
				MessageBox(NULL, "恭喜", "成功", 0);
			}
			else
			{
				MessageBox(NULL, "可惜", "失败", 0);
			}
		}
	}
	return 0;
}

finddemo

#include "stdafx.h"
#include "finddemo.h"
#include "resource.h"
HWND Hmain = NULL;
WCHAR s[100];
int sum = 0;
INT_PTR CALLBACK DialogProc(_In_ HWND hwndDlg, _In_opt_ UINT UMsg, _In_ WPARAM wParam, _In_ LPARAM lParam);
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPWSTR    lpCmdLine,
	_In_ int       nCmdShow)
{
	Hmain = FindWindow(NULL, L"demo");
	if (Hmain == NULL)
	{
		MessageBox(NULL, L"窗口", L"查找失败", 0);
		return 0;
	}
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, &DialogProc);


	return 0;
}
INT_PTR CALLBACK DialogProc(_In_ HWND hwndDlg, _In_opt_ UINT UMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
	if (UMsg == WM_CLOSE)
	{
		EndDialog(hwndDlg, NULL);
		MessageBox(NULL, L"关闭成功!", L"谢谢使用", 0);
	}
	if (UMsg == WM_COMMAND)
	{
		if (wParam == IDC_BUTTON1)
		{
			sum = 0;
			GetDlgItemText(hwndDlg, IDC_EDIT1, s, 100);
			EnumChildWindows(Hmain, EnumChildProc, 0);
		}
		if (wParam == IDC_BUTTON2)
		{
			sum = 0;
			GetDlgItemText(hwndDlg, IDC_EDIT1, s, 100);
			EnumChildWindows(Hmain, EnumChildProc, 1);
		}
	}
	return 0;
}

BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{
	sum++;
	WCHAR ClassName[256];
	WCHAR WndCaption[256];
	GetClassName(hwndChild, ClassName, 254);
	GetWindowText(hwndChild, WndCaption, 254);
	if (lParam == 0&&sum==1)
	{
		SendMessage(hwndChild, WM_SETTEXT, 0, LPARAM(s));
	}
	if(lParam==1&&sum==2)
	{
		SendMessage(hwndChild, WM_SETTEXT,0, LPARAM(s));

	}
	return (INT_PTR)TRUE;
}

然后 昨天我问了 一下学长  学长和我说了 powershell  我今天学习了一下    然后根据别人写的脚本 自己没有跑出来 

然后还有个说法 是  C语言重定位 用文件 代表键盘输入  但是我也懒得搞了 有思路了 就看看吧

(2019.6.13补充):

无论是 linux 还是windows 控制台都可以用 python的os库

或者是 python别人做的库  比如符号执行 angr  或者pintools 都可以了解一下

虽然 本人不太喜欢暴力跑  但是有些时候还是可以试试的  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值