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| a级亚洲片精品久久久久久久| 国产伦码精品一区二区| 人妻夜夜爽天天爽三区麻豆av| 亚洲综合小综合中文字幕| 无码一级视频在线| 亚洲国产日韩一区三区| 国产精品一区二区三区卡| 人妻av一区二区三区av免费 | 精品久久久久久无码人妻蜜桃| 99RE8这里有精品热视频| 国产精品色一区二区三区| 亚洲第一极品精品无码久久| 国产精品夜夜春夜夜爽久久小说| 4399理论片午午伦夜理片| 一区二区三区精品偷拍| 国产精品久久无码不卡黑寡妇| 亚洲成色精品一二三区| 精品国产午夜理论片不卡| 五月婷婷中文字幕| 高清无码爆乳潮喷在线观看| 精品视频一区二区福利午夜| 久久婷婷五月综合色99啪ak| 亚洲av与日韩av在线| 亚洲精品一区国产精品| 综合色一色综合久久网| 四虎成人精品在永久免费| 最新永久免费AV无码网站| 中文午夜乱理片无码| 好男人日本社区www| 美女一区二区三区亚洲麻豆|