網(wǎng)上有很多關(guān)于改裝pos機(jī)自動(dòng)發(fā)卡號(hào)密碼,自動(dòng)輸入密碼的知識(shí),也有很多人為大家解答關(guān)于改裝pos機(jī)自動(dòng)發(fā)卡號(hào)密碼的問題,今天pos機(jī)之家(www.tjfsxbj.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
1、改裝pos機(jī)自動(dòng)發(fā)卡號(hào)密碼
改裝pos機(jī)自動(dòng)發(fā)卡號(hào)密碼
本人從事在線教育c++十年工作經(jīng)驗(yàn)現(xiàn)在精心整理了一套從小白到項(xiàng)目實(shí)踐開發(fā)各種學(xué)習(xí)資料如果你想學(xué)想加入我們請(qǐng)關(guān)注我在私信回復(fù)“編程”就可以領(lǐng)取學(xué)習(xí)資料??!
個(gè)人分類: c/c++
Lol(英雄聯(lián)盟)自動(dòng)輸入密碼
搞了一天,終于把程序?qū)懞昧耍院笤僖膊挥妹看味际謩?dòng)輸入密碼了。盡管不是很完美,但可用性還是有的。我還是太年輕了,剛開始以為只要找到了密碼框的句柄就搞定了,可找了許久仍然找不到。也許是我太年輕了,也許是Riot Games或者騰訊太牛逼了。最后只好用了穩(wěn)定性不是很好的方法:直接模擬鼠標(biāo)鍵盤輸入,之所以這么說,因?yàn)槲翌A(yù)測(cè)在很極端的情況,比如cpu比較繁忙的時(shí)候,在游戲輸入密碼界面獲得焦點(diǎn)之前,模擬鼠標(biāo)鍵盤的動(dòng)作就開始了,那么必然會(huì)失敗。還有就是焦點(diǎn)定位的問題,會(huì)因?yàn)轱@示屏的分辨率不同而不同,所以難免會(huì)出錯(cuò)。也許可以觀察幾種不同分辨率的顯示屏找到一個(gè)兼容的方法,但我懶得找,自己能用就好了。所以讀者如果想用的話,可以看下文,會(huì)有關(guān)于修改代碼的方法,。當(dāng)然也可以根據(jù)代碼各種改,改成方便自己使用的程序。
下面介紹一下程序用法吧。主要有兩個(gè)文件,主程序lol.exe和密碼記錄文件lol.ini。把這兩個(gè)文件放到 英雄聯(lián)盟\\TCLS 的文件夾下,即Client.exe所在目錄。想方便點(diǎn)呢,可以給lol.exe創(chuàng)建一個(gè)快捷方式,再移動(dòng)快捷方式到桌面,或者寫個(gè)啟動(dòng)lol.exe的bat放到桌面也可以。打開lol.exe有兩個(gè)選項(xiàng),第一是設(shè)定密碼,第二是在英雄聯(lián)盟進(jìn)入了輸入賬號(hào)密碼界面后可以自動(dòng)輸入密碼。當(dāng)然第一次使用該程序是需要設(shè)定密碼的,以后就不需要,除非更改密碼。對(duì)于管理員身份登錄windows的用戶(大多數(shù)人都是這樣子),lol.exe發(fā)現(xiàn)英雄聯(lián)盟還沒有啟動(dòng)會(huì)自動(dòng)自動(dòng)英雄聯(lián)盟的。而我一般是用標(biāo)準(zhǔn)用戶(即非管理員),由于英雄聯(lián)盟是要在管理員身份運(yùn)行才可以玩的,因此要用其他方法。我目前就是在英雄聯(lián)盟\\TCLS 的文件夾創(chuàng)建一個(gè)bat,里面的內(nèi)容是
runas /savecred /user:liulian Client.exe
lol.exe
就是先啟動(dòng)Client.exe,再自動(dòng)lol.exe。然后給該bat創(chuàng)建一個(gè)快捷方式,放到桌面。
下面闡述一下原理吧。第一次使用該程序需要設(shè)定密碼,設(shè)定密碼后密碼經(jīng)過某種方法加密后存放到lol.ini文件中,本來想rsa算法加密一下,想到最近比較忙,算了,只好自己隨便想了個(gè)算法加密,只要不會(huì)直接暴露密碼就好了。每次自動(dòng)輸入密碼,都是從lol.ini讀出密碼,解密后,再模擬鼠標(biāo)鍵盤動(dòng)作輸入。每一次先將鼠標(biāo)定位到下圖的右下角的地方,在模擬鼠標(biāo)點(diǎn)擊事件,這樣就讓密碼框獲得鍵盤輸入焦點(diǎn)了。最后就是根據(jù)密碼,模擬鍵盤按鍵了。這方法兼容性就不是很好了,因?yàn)槌绦蛑形沂歉鶕?jù)像素坐標(biāo)定位的。
在sendPswd函數(shù)中有這么一句
SetCursorPos(1012+origin.left,395+origin.top);
其中1012和395是上面那張圖的寬和高,origin是上面的圖的左上角的坐標(biāo)點(diǎn),這句話的意思就是講鼠標(biāo)定位到圖中右下角的地方,即密碼框中的一點(diǎn)。對(duì)于不同分辨率的顯示屏,需要改動(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};//奇怪用數(shù)字就不會(huì)出錯(cuò)啊
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 要設(shè)定密碼請(qǐng)輸入1,再按回車");
printLine(); printf("\");
printLine();
printf("2 要自動(dòng)輸入lol密碼,請(qǐng)直接按回車(確保進(jìn)入了輸入密碼畫面)");
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("設(shè)定成功\");
else printf("設(shè)置失敗\");
//終于知道為什么會(huì)拒絕訪問 了,注意是windows目錄需要權(quán)限,還有不是system32目錄哦
//lpFileName ----- String,初始化文件的名字。如果沒有指定完整路徑名,
// 則windows會(huì)在windows目錄查找文件。如果文件沒有找到,則函數(shù)會(huì)創(chuàng)建它
}
void setPswd()
{
printLine();
printf("請(qǐng)輸入密碼");
printLine();printf("\");
waitForInput();
scanf("%s",decodedPswd);
fflush(stdin);//清空輸入流,因?yàn)樯厦嬗昧薵etchar()
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還沒啟動(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();
//使用系統(tǒng)自帶的 runas /savecred 選項(xiàng),第一次輸入密碼后,會(huì)保存憑據(jù)。
//特點(diǎn):無法限制能夠運(yùn)行的命令,安全性差。
printf("選擇服務(wù)器后,請(qǐng)按回車?yán)^續(xù)");
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);
//用記事本做測(cè)試
//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\';//小寫
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()
{}
本人從事在線教育c++十年工作經(jīng)驗(yàn)現(xiàn)在精心整理了一套從小白到項(xiàng)目實(shí)踐開發(fā)各種學(xué)習(xí)資料如果你想學(xué)想加入我們請(qǐng)關(guān)注我在私信回復(fù)“編程”就可以領(lǐng)取學(xué)習(xí)資料?。?!
以上就是關(guān)于改裝pos機(jī)自動(dòng)發(fā)卡號(hào)密碼,自動(dòng)輸入密碼的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于改裝pos機(jī)自動(dòng)發(fā)卡號(hào)密碼的知識(shí),希望能夠幫助到大家!
