網(wǎng)上有很多關(guān)于改裝pos機自動(dòng)發(fā)卡號密碼,自動(dòng)輸入密碼的知識,也有很多人為大家解答關(guān)于改裝pos機自動(dòng)發(fā)卡號密碼的問(wèn)題,今天pos機之家(m.xjcwpx.cn)為大家整理了關(guān)于這方面的知識,讓我們一起來(lái)看下吧!
本文目錄一覽:
改裝pos機自動(dòng)發(fā)卡號密碼
本人從事在線(xiàn)教育c++十年工作經(jīng)驗現在精心整理了一套從小白到項目實(shí)踐開(kāi)發(fā)各種學(xué)習資料如果你想學(xué)想加入我們請關(guān)注我在私信回復“編程”就可以領(lǐng)取學(xué)習資料??!
個(gè)人分類(lèi): c/c++
Lol(英雄聯(lián)盟)自動(dòng)輸入密碼
搞了一天,終于把程序寫(xiě)好了,以后再也不用每次都手動(dòng)輸入密碼了。盡管不是很完美,但可用性還是有的。我還是太年輕了,剛開(kāi)始以為只要找到了密碼框的句柄就搞定了,可找了許久仍然找不到。也許是我太年輕了,也許是Riot Games或者騰訊太牛逼了。最后只好用了穩定性不是很好的方法:直接模擬鼠標鍵盤(pán)輸入,之所以這么說(shuō),因為我預測在很極端的情況,比如cpu比較繁忙的時(shí)候,在游戲輸入密碼界面獲得焦點(diǎn)之前,模擬鼠標鍵盤(pán)的動(dòng)作就開(kāi)始了,那么必然會(huì )失敗。還有就是焦點(diǎn)定位的問(wèn)題,會(huì )因為顯示屏的分辨率不同而不同,所以難免會(huì )出錯。也許可以觀(guān)察幾種不同分辨率的顯示屏找到一個(gè)兼容的方法,但我懶得找,自己能用就好了。所以讀者如果想用的話(huà),可以看下文,會(huì )有關(guān)于修改代碼的方法,。當然也可以根據代碼各種改,改成方便自己使用的程序。
下面介紹一下程序用法吧。主要有兩個(gè)文件,主程序lol.exe和密碼記錄文件lol.ini。把這兩個(gè)文件放到 英雄聯(lián)盟\\TCLS 的文件夾下,即Client.exe所在目錄。想方便點(diǎn)呢,可以給lol.exe創(chuàng )建一個(gè)快捷方式,再移動(dòng)快捷方式到桌面,或者寫(xiě)個(gè)啟動(dòng)lol.exe的bat放到桌面也可以。打開(kāi)lol.exe有兩個(gè)選項,第一是設定密碼,第二是在英雄聯(lián)盟進(jìn)入了輸入賬號密碼界面后可以自動(dòng)輸入密碼。當然第一次使用該程序是需要設定密碼的,以后就不需要,除非更改密碼。對于管理員身份登錄windows的用戶(hù)(大多數人都是這樣子),lol.exe發(fā)現英雄聯(lián)盟還沒(méi)有啟動(dòng)會(huì )自動(dòng)自動(dòng)英雄聯(lián)盟的。而我一般是用標準用戶(hù)(即非管理員),由于英雄聯(lián)盟是要在管理員身份運行才可以玩的,因此要用其他方法。我目前就是在英雄聯(lián)盟\\TCLS 的文件夾創(chuàng )建一個(gè)bat,里面的內容是
runas /savecred /user:liulian Client.exe
lol.exe
就是先啟動(dòng)Client.exe,再自動(dòng)lol.exe。然后給該bat創(chuàng )建一個(gè)快捷方式,放到桌面。
下面闡述一下原理吧。第一次使用該程序需要設定密碼,設定密碼后密碼經(jīng)過(guò)某種方法加密后存放到lol.ini文件中,本來(lái)想rsa算法加密一下,想到最近比較忙,算了,只好自己隨便想了個(gè)算法加密,只要不會(huì )直接暴露密碼就好了。每次自動(dòng)輸入密碼,都是從lol.ini讀出密碼,解密后,再模擬鼠標鍵盤(pán)動(dòng)作輸入。每一次先將鼠標定位到下圖的右下角的地方,在模擬鼠標點(diǎn)擊事件,這樣就讓密碼框獲得鍵盤(pán)輸入焦點(diǎn)了。最后就是根據密碼,模擬鍵盤(pán)按鍵了。這方法兼容性就不是很好了,因為程序中我是根據像素坐標定位的。
在sendPswd函數中有這么一句
SetCursorPos(1012+origin.left,395+origin.top);
其中1012和395是上面那張圖的寬和高,origin是上面的圖的左上角的坐標點(diǎn),這句話(huà)的意思就是講鼠標定位到圖中右下角的地方,即密碼框中的一點(diǎn)。對于不同分辨率的顯示屏,需要改動(dòng)一下。
下面是代碼:
#include <cstdio>
#include <iostream>
#include <windows.h>
#include <cstring>
#include <process.h>
enum Option{setPassword =1,sendPassword = 2};
Option opt ;
#define maxLen 88
#define keyLen 8
int key[]={0,9,3,8,8,2,9,6};//奇怪用數字就不會(huì )出錯啊
LPCTSTR appName = "lol";
LPCTSTR keyName = "pwd";
//LPCTSTR value = "";
LPCTSTR iniFileName ="lol.ini";//<windows.h>
char fullPathName[maxLen];
HWND self;
char encodedPswd[maxLen];
char decodedPswd[maxLen];
extern "C" WINBASEAPI HWND WINAPI GetConsoleWindow ();
int main()
{
void init();
void showOption();
void setPswd();
void readPswd();
void decodePswd();
void sendPswd();
void close();
init();
int option = -1;
showOption();
while (opt == setPassword)
{
setPswd();
showOption();
}
readPswd();
decodePswd();
sendPswd();
close();
// system("pause");
return 0;
}
void printLine()
{
printf("-----------");
}
void waitForInput()
{
printLine();
printf(">");
}
unsigned int WINAPI getFocus(void*)
{
for(;;)
{
Sleep(1000);
SetForegroundWindow(self);
}
}
void init()
{
GetCurrentdirectory(maxLen,fullPathName);
strcat(fullPathName,"\\\\");
strcat(fullPathName,iniFileName);
self =GetConsoleWindow();
//SetForegroundWindow(self);
SetWindowPos(self,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_SHOWWINDOW);
_beginthreadex(NULL,0,getFocus,NULL,0,NULL);
}
void showOption()
{
printLine();
printf("1 要設定密碼請輸入1,再按回車(chē)");
printLine(); printf("\");
printLine();
printf("2 要自動(dòng)輸入lol密碼,請直接按回車(chē)(確保進(jìn)入了輸入密碼畫(huà)面)");
printLine(); printf("\");
char ch;
waitForInput();
ch = getchar();
switch(ch)
{
case \'1\':
opt = setPassword;
break;
case \'\\':
opt = sendPassword;//printf("enter");
break;
default:
exit(1);
}
}
void encodePswd()
{
// strcpy(encodedPswd,decodedPswd);//未加密,只是簡(jiǎn)單的拷貝
int i;
for( i=0;i<strlen(decodedPswd);i++)
{
encodedPswd[i] = decodedPswd[i] ^key[i%keyLen];
}
encodedPswd[i]=\'\\0\';
}
void writePswd()
{
encodePswd();
bool suc = WritePrivateProfileString(appName,keyName,encodedPswd,fullPathName);
// int error = GetLastError();
// printf("error:%d",error);
if (suc)
printf("設定成功\");
else printf("設置失敗\");
//終于知道為什么會(huì )拒絕訪(fǎng)問(wèn) 了,注意是windows目錄需要權限,還有不是system32目錄哦
//lpFileName ----- String,初始化文件的名字。如果沒(méi)有指定完整路徑名,
// 則windows會(huì )在windows目錄查找文件。如果文件沒(méi)有找到,則函數會(huì )創(chuàng )建它
}
void setPswd()
{
printLine();
printf("請輸入密碼");
printLine();printf("\");
waitForInput();
scanf("%s",decodedPswd);
fflush(stdin);//清空輸入流,因為上面用了getchar()
writePswd();
}
void decodePswd()
{
// strcpy(decodedPswd,encodedPswd);
int i;
for( i=0;i<strlen(encodedPswd);i++)
{
decodedPswd[i] = encodedPswd[i] ^key[i%keyLen];
}
decodedPswd[i]=\'\\0\';
}
void readPswd()
{
GetPrivateProfileString(appName,keyName,NULL,encodedPswd,maxLen,fullPathName);
decodePswd();
// printf("%s",decodedPswd);
}
void statrLol()
{
printLine();
printf("lol還沒(méi)啟動(dòng),自動(dòng)啟動(dòng)lol");
printLine();
printf("\");
char dir[maxLen];
GetCurrentDirectory(maxLen,dir);
strcat(dir,"\\\\");
strcat(dir,"Client.exe");
ShellExecute(NULL,"open",dir,NULL,NULL,SW_SHOWNORMAL);
printLine();
//使用系統自帶的 runas /savecred 選項,第一次輸入密碼后,會(huì )保存憑據。
//特點(diǎn):無(wú)法限制能夠運行的命令,安全性差。
printf("選擇服務(wù)器后,請按回車(chē)繼續");
printLine();
printf("\");
getchar();
}
void inputUppercase(char upper)
{
keybd_event(VK_SHIFT, 0, 0 ,0);
keybd_event(upper, 0, 0 ,0);
keybd_event(upper, 0, KEYEVENTF_KEYUP ,0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP ,0);
}
void sendPswd()
{
HWND lolWin = FindWindow(NULL,"英雄聯(lián)盟登錄程序");
while(lolWin == NULL)
{
statrLol();
lolWin = FindWindow(NULL,"英雄聯(lián)盟登錄程序");
}
SetForegroundWindow(lolWin);
RECT origin;
GetWindowRect(lolWin,&origin);
Sleep(500);
SetCursorPos(1012+origin.left,395+origin.top);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
//用記事本做測試
//HWND npWnd=FindWindow( "notepad",NULL);
//HWND childWnd=FindWindowEx(npWnd, NULL, "Edit", NULL);
//SetForegroundWindow(npWnd);
int i;
char ch;
for(i=0;i<strlen(decodedPswd);i++)
{
if(decodedPswd[i]>=\'a\'&&decodedPswd[i]<=\'z\')
ch = decodedPswd[i] - \'a\' +\'A\';//小寫(xiě)
else if(decodedPswd[i]>=\'A\'&&decodedPswd[i]<=\'Z\')
{
inputUppercase(decodedPswd[i]); //uppercase
continue;
}
else ch = decodedPswd[i]; //digit number
keybd_event(ch, 0, 0 ,0);
keybd_event(ch, 0, KEYEVENTF_KEYUP ,0);
}
// HWND mfpa = FindWindowEx(lolWin,NULL,"MacromediaFlashPlayerActiveX",NULL);
// if(mfpa == NULL)
// printf("1 can\'t");
/*
HWND aaWin = FindWindowEx(mfpa,NULL,"AtlAxWin",NULL);
if(aaWin == NULL)
printf("2 can\'t");
HWND seWin = FindWindowEx(aaWin,NULL,"Shell Embedding",NULL);
if(seWin == NULL)
printf("3 can\'t");
HWND sdovWin = FindWindowEx(seWin,NULL,"Shell DocObject View",NULL);
if(sdovWin == NULL)
printf("4 can\'t");
HWND iesWin = FindWindowEx(sdovWin,NULL,"Internet Explorer_Server",NULL);
if(iesWin == NULL)
printf("5 can\'t");
*/
// HWND pwdWin = FindWindowEx(lolWin,NULL,"TWINCONTROL",NULL);
// SetForegroundWindow(lolWin);
// SendMessage(mfpa,EM_REPLACESEL, 0,(LPARAM)decodedPswd);
// HWND pwdWin = FindWindowEx(lolWin,NULL,"TWINCONTROL",NULL);
// HWND pwdWin = FindWindowEx(lolWin,NULL,"AtlAxWin",NULL);
// if(pwdWin == NULL)
// printf("can\'t");
}
void close()
{}
本人從事在線(xiàn)教育c++十年工作經(jīng)驗現在精心整理了一套從小白到項目實(shí)踐開(kāi)發(fā)各種學(xué)習資料如果你想學(xué)想加入我們請關(guān)注我在私信回復“編程”就可以領(lǐng)取學(xué)習資料?。?!
以上就是關(guān)于改裝pos機自動(dòng)發(fā)卡號密碼,自動(dòng)輸入密碼的知識,后面我們會(huì )繼續為大家整理關(guān)于改裝pos機自動(dòng)發(fā)卡號密碼的知識,希望能夠幫助到大家!
