<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 網絡知識 > 網絡技術 > Winscp密碼獲取的方法步驟詳解

        Winscp密碼獲取的方法步驟詳解

        時間: 恒輝636 分享

        Winscp密碼獲取的方法步驟詳解

          WinSCP是一個Windows環境下使用SSH的開源圖形化SFTP客戶端。同時支持SCP協議。它的主要功能就是在本地與遠程計算機間安全的復制文件。下面是學習啦小編整理的一些關于Winscp密碼獲取方法的相關資料,供你參考。

          Winscp密碼獲取方法

          WINSCP默認保存用戶密碼在注冊表中的如下位置

          HKEY_USERS\SID\Software\Martin Prikryl\WinSCP 2\Sessions\

          但是WIN7下WinSCP默認路徑在:

          C:\Users\USERNAME\AppData\Local\VirtualStore\Program Files (x86)\WinSCP\WinSCP.ini (64位操作系統)

          C:\Program Files (x86)\WinSCP\WinSCP.ini (64位操作系統)

          C:\Users\USERNAME\AppData\Local\VirtualStore\Program Files\WinSCP\WinSCP.ini (32位操作系統) - 專注網絡安全2 p% t+ \* j$ r- a

          C:\Program Files\WinSCP\WinSCP.ini (32位操作系統)

          記憶中最早的就是這個

          https://bitbucket.org/knarf/winscppwd/overview/ s, u+ I+ P0 n3 m: [

          有源碼提供下載,還有編譯好的程序可供下載使用

          https://bitbucket.org/knarf/winscppwd/downloads/winscppwd.exe

          還有就是一個GO語言的

          https://github.com/anoopengineer/winscppasswd/blob/master/main.go

          package main

          import (

          "fmt"

          "os"

          "runtime"

          "strconv"

          )

          const (

          PW_MAGIC = 0xA3

          PW_FLAG = 0xFF

          )

          func main() {

          args := os.Args[1:]

          if len(args) != 3 {

          fmt.Println("WinSCP stored password finder")

          fmt.Println("Open regedit and navigate to [HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions] to get the hostname, username and encrypted password\n")

          if runtime.GOOS == "windows" {

          fmt.Println("Usage winscppasswd.exe ")

          } else {

          fmt.Printf("Usage ./winscppasswd ")

          }

          return

          }

          fmt.Println(decrypt(args[0], args[1], args[2]))

          }

          func decrypt(host, username, password string) string {

          key := username + host

          passbytes := []byte{}

          for i := 0; i len(password); i++ {

          val, _ := strconv.ParseInt(string(password[i]), 16, 8)

          passbytes = append(passbytes, byte(val))

          }

          var flag byte

          flag, passbytes = dec_next_char(passbytes)

          var length byte = 0

          if flag == PW_FLAG {

          _, passbytes = dec_next_char(passbytes)

          length, passbytes = dec_next_char(passbytes)

          } else {

          length = flag

          }

          toBeDeleted, passbytes := dec_next_char(passbytes)

          passbytes = passbytes[toBeDeleted*2:]

          clearpass := ""

          var (

          i byte

          val byte

          )

          for i = 0; i length; i++ {

          val, passbytes = dec_next_char(passbytes)

          clearpass += string(val)

          }

          if flag == PW_FLAG {

          clearpass = clearpass[len(key):]

          }

          return clearpass

          }

          func dec_next_char(passbytes []byte) (byte, []byte) {

          if len(passbytes) 0 {

          return 0, passbytes

          }

          a := passbytes[0]

          b := passbytes[1]

          passbytes = passbytes[2:]

          return ^(((a 4) + b) ^ PW_MAGIC) & 0xff, passbytes

          }

          附加一個java的

          https://github.com/YuriMB/WinSCP-Password-Recovery/blob/master/src/main/java/Main.java

          import java.util.ArrayList;

          import java.util.List;

          /**

          * Created by Yuri Meiburg on 30-4-2015.

          */

          public class Main {

          /**

          * ./core/Security.h:#define PWALG_SIMPLE_FLAG 0xFF

          */

          public static final int PWALG_SIMPLE_FLAG = 0xFF;

          /**

          * ./core/Security.h:#define PWALG_SIMPLE_MAGIC 0xA3

          */

          public static final char PWALG_SIMPLE_MAGIC = 0xA3;

          public static ListCharacter> fPassword = new ArrayListCharacter>();

          public static String hostname, username;

          public static void main(String [] args){

          if (args.length != 3) {

          System.exit(0);

          }

          hostname = args[0];

          username = args[1];

          for( int i=0; i args[2].length(); ++i){

          fPassword.add((char) Integer.parseInt(""+args[2].charAt(i),16));

          }

          System.out.println("username = " + username);

          System.out.println("hostname = " + hostname);

          System.out.println("getPassword() = " + getPassword());

          }

          /**

          * UnicodeString __fastcall TSessionData::GetPassword() const

          {

          return DecryptPassword(FPassword, UserName+HostName);

          }

          */

          static String getPassword(){

          return decryptPassword(fPassword, username + hostname);

          }

          /**

          * UnicodeString DecryptPassword(RawByteString Password, UnicodeString UnicodeKey, Integer)

          * {

          * UTF8String Key = UnicodeKey;

          * UTF8String Result("");

          * Integer Index;

          * unsigned char Length, Flag;

          *

          * Flag = simpleDecryptNextChar(Password);

          * if (Flag == PWALG_SIMPLE_FLAG)

          * {

          * simpleDecryptNextChar(Password);

          * Length = simpleDecryptNextChar(Password);

          * }

          * else Length = Flag;

          * Password.Delete(1, ((Integer)simpleDecryptNextChar(Password))*2);

          * for (Index = 0; Index

          * Result += (char)simpleDecryptNextChar(Password);

          * if (Flag == PWALG_SIMPLE_FLAG)

          * {

          * if (Result.SubString(1, Key.Length()) != Key) Result = "";

          * else Result.Delete(1, Key.Length());

          * }

          * return UnicodeString(Result);

          *}

          */

          static String decryptPassword(ListCharacter> password, String unicodeKey){

          System.out.println("unicodeKey = " + unicodeKey);

          String key = unicodeKey;

          String result = "";

          char length, flag;

          flag = simpleDecryptNextChar(password);

          System.out.println("flag = " + (int) flag);

          if(flag == PWALG_SIMPLE_FLAG){

          /* Dummy = */ simpleDecryptNextChar(password);

          length = simpleDecryptNextChar(password);

          }

          else length = flag;

          System.out.println("length = " + (int) length);

          int newStart = ((int)simpleDecryptNextChar(password)*2);

          System.out.println("newStart = " + newStart + ", password.size() = " + password.size());

          removeItems(password, 0, newStart);

          for(int index=0; index length; ++index)

          result += simpleDecryptNextChar(password);

          System.out.println("result = " + result);

          if(flag == PWALG_SIMPLE_FLAG)

          {

          if (!result.substring(0, key.length()).equals(key)) result = "";

          else result = result.substring(key.length());

          }

          return result;

          }

          /**

          * unsigned char simpleDecryptNextChar(RawByteString &Str)

          {

          if (Str.Length() > 0)

          {

          unsigned char Result = (unsigned char)

          ~((((PWALG_SIMPLE_STRING.Pos(Str.c_str()[0])-1)

          ((PWALG_SIMPLE_STRING.Pos(Str.c_str()[1])-1)

          Str.Delete(1, 2);

          return Result;

          }

          else return 0x00;

          }

          * @param str

          * @return

          */

          static public char simpleDecryptNextChar(ListCharacter> str){

          if(str.size() > 0){

          char result = unsignedChar(

          ~(

          (

          unsignedChar(str.get(0) 4) + str.get(1) // Remove bitshift overflow bits.

          ) ^ PWALG_SIMPLE_MAGIC

          )

          );

          removeItems(str, 0, 2);

          return result;

          }

          else return 0x00;

          }

          /**

          * Cut off anything over 255.

          * @param v

          * @return

          */

          static char unsignedChar(int v){

          return (char) (v & 0xFF);

          }

          /**

          * Remove items from list

          */

          static void removeItems(List lst, int start, int end){

          for(int i=0; iend-start; ++i){

          lst.remove(start);

          }

          }

          }

        168303 主站蜘蛛池模板: 国产福利深夜在线播放| 免费无码又爽又刺激一高潮| 久久一亚色院精品全部免费| 亚洲熟女乱综合一区二区三区| av无码免费无禁网站| 一区二区三区鲁丝不卡| 无码国产精成人午夜视频一区二区 | 熟女精品色一区二区三区| 武装少女在线观看高清完整版免费| 思思热在线视频精品| 欧美成人aaa片一区国产精品| 欧美激情一区二区三区高清视频| 双乳奶水饱满少妇呻吟免费看| 欧美黑人巨大xxxxx| 最近中文字幕国产精品| 精品精品自在现拍国产2021| 国产精品精品一区二区三| 国产精品无码素人福利不卡| 久久久久国产精品人妻| 久久人人爽人人爽人人av| 男女真人国产牲交a做片野外| A男人的天堂久久A毛片| 国产69精品久久久久久人妻精品| 超碰成人人人做人人爽| 人妻少妇久久中文字幕| 国产中文字幕精品喷潮| 久久天堂av综合色无码专区| 国产一区精品在线免费看| 久久久久久中文字幕有精品| 久久热这里只有精品99| 啊灬啊灬啊灬快灬高潮了电影片段| 国内精品免费久久久久电影院97| 国产永久免费高清在线观看| 亚洲а∨天堂久久精品| 免费看成人毛片无码视频| 亚洲无码熟妇人妻AV在线| 国产成人8X人网站视频| 在线永久看片免费的视频| 国产成人毛片无码视频软件| 久久精品国产无限资源| 91中文字幕一区二区|