উত্তর:
এটি অনেক বছর আগে আমি কীভাবে করেছি এটি সম্পর্কে , এটি হ'ল যোসমেট 10.11.5 এর জন্য এই স্ক্রিপ্ট আপডেট - তবে আমি এটি পরীক্ষা করিনি।
একটি স্ক্রিপ্ট যা কেচেইনের প্রতিটি আইটেমকে পাঠ্যে সংরক্ষণ করে:
security dump-keychain -d login.keychain > keychain.txt
একটি দ্বিতীয় অ্যাপলস্ক্রিপ্ট আইটেম যা "অনুমতি দিন" বোতামটিতে ক্লিক করে 1 ম স্ক্রিপ্টটি কেচেইনের বাইরে আইটেমটি পড়ার সময় ট্রিগার করে।
[সম্পাদনা: জুলাই ২০১ 2016] এটিকে আপডেট করা হয়েছে ১০.১১.৫ নোটে যেহেতু কেউ কেউ 0.2% বিলম্বের সাথে তাদের ম্যাক লক করার কথা জানিয়েছে, আমি স্ক্রিপ্টটি একবারে 200 টি ফলাফলের জন্য সীমাবদ্ধ রেখেছি, সুতরাং যদি আপনার 1050 কীচেন আইটেম থাকে , আপনাকে স্ক্রিপ্টএডিটরে 6 বার এই স্ক্রিপ্টটি চালাতে হবে, আপনাকে স্ক্রিপ্টএডিটরটিকে সুরক্ষা পছন্দগুলিতে অ্যাক্সেসিবিলিটি বিভাগে সক্ষম করার অনুমতিও দিতে হবে:
tell application "System Events"
set maxAttemptsToClick to 200
repeat while exists (processes where name is "SecurityAgent")
if maxAttemptsToClick = 0 then exit repeat
set maxAttemptsToClick to maxAttemptsToClick - 1
tell process "SecurityAgent"
try
click button 2 of window 1
on error
keystroke " "
end try
end tell
delay 0.2
end repeat
end tell
তারপরে উপরের লিঙ্ক / ইওসাইমাইট আপডেটের সাথে টেক্সট ফাইল থেকে সিএসভিতে রূপান্তরকারী ধাপ রয়েছে, শুভকামনা!
শ্রীভাতসার এই মন্তব্যে উল্লেখ করেছেন যে এই রুবি রূপান্তরটি কেবল "ইন্টারনেট পাসওয়ার্ড" এবং "অ্যাপ্লিকেশন পাসওয়ার্ড" নয় covers স্ক্রিপ্টের উদ্দেশ্যটির কারণে অ্যাপ্লিকেশনটিতে "ইন্টারনেট পাসওয়ার্ড" রফতানি করা হয় 1Password
।
এবং এখানে একই লাইন বরাবর একটি স্ট্যাক ওভারফ্লো প্রশ্ন এবং উত্তর
সিস্টেম.কিচেইন এখানে রয়েছে:
security dump-keychain -d /Library/Keychains/System.keychain > systemkeychain.txt
অ্যাপলস্ক্রিপ্ট সংলাপ বাক্সের সাথে ইন্টারেক্ট করার জন্য সক্ষম করতে সিস্টেমের পছন্দসমূহ -> সুরক্ষা এবং গোপনীয়তা পছন্দ -> গোপনীয়তা ট্যাব, অ্যাক্সেসিবিলিটি বিকল্পটিতে অবশ্যই "স্ক্রিপ্ট সম্পাদক.অ্যাপ" সক্ষম থাকতে হবে
আমি একটি পাইথন স্ক্রিপ্ট লিখেছিলাম যা কীচেন ডাম্পকে একটি এক্সেল ফাইলে রূপান্তর করে এবং ভেবেছিলাম আমি এটি আপনার সাথে ভাগ করে নিচ্ছি। আমি সিএসভি বা টিএসভি-র উপরে এক্সেল বেছে নিয়েছি কারণ প্রচুর লোক এটি ইনস্টল করেছে এবং এটি কেবল ফাইলটিতে ডাবল ক্লিক করে কাজ করে। আপনি অবশ্যই অন্য কোনও ফর্ম্যাট মুদ্রণের জন্য স্ক্রিপ্টটি পরিবর্তন করতে পারেন। আমি এটি ওএস এক্স 10.11 এল ক্যাপিটেনে করেছি, তবে পুরানো ওএসেও কাজ করা উচিত।
যেহেতু আমি আমার হার্ড ড্রাইভে আমার পাসওয়ার্ডগুলি প্লেইন টেক্সট সংরক্ষণ করতে পছন্দ করি না, তাই আমি ডিস্ক ইউটিলিটি অ্যাপ্লিকেশনটি ব্যবহার করে একটি এনক্রিপ্টযুক্ত ধারক তৈরি করেছি। কেবল ডিস্ক ইউটিলিটি খুলুন (চাপুন cmd+ চাপুন Space, "ডিস্ক" টাইপ করুন)। অ্যাপটিতে নতুন চিত্রের জন্য cmd+ টিপুন N, এসইসিতে নাম পরিবর্তন করুন, এনক্রিপশনটি 256-বিট এইএসে পরিবর্তন করুন এবং এটি আপনার পছন্দসই ডিরেক্টরিতে এসইসি এর অধীনে সংরক্ষণ করুন। তারপরে ফাইলটিতে ডাবল ক্লিক করে ভলিউম মাউন্ট করুন (বা ডিস্ক ইউটিলিটি ব্যবহার করে)।
সুরক্ষিত ধারকটিতে keychain.py নামে একটি নতুন ফাইল তৈরি করুন এবং নীচের কোডটি আটকে দিন।
এখন টার্মিনাল.এপ খুলুন এবং মাউন্ট করা এনক্রিপ্ট করা ভলিউমে ডিরেক্টরি পরিবর্তন করুন: cd /Volumes/SEC
এক্সেল মডিউলটি ইনস্টল করার জন্য আমাদের পাইথন প্যাকেজ ম্যানেজারের প্রয়োজন (আপনার পাসওয়ার্ডের জন্য আপনাকে অনুরোধ জানানো হবে): sudo easy_install pip
আমাদের পাইথন এক্সেল মডিউলটি ইনস্টল করতে হবে: sudo pip install xlwt
এখন এই প্রশ্নের উত্তরগুলির মধ্যে একটির ব্যবহার করে পাসওয়ার্ড রফতানি করুন। আমি ঠিক করেছি security dump-keychain -d > keychain.txt
এবং স্প্যাম আমার অন্য হাতের সাথে মাউস ধরে থাকার সময় অনুমতি বোতামে ক্লিক করেছে।
শেষ পদক্ষেপটি পাইথন স্ক্রিপ্টটি ব্যবহার করে পাঠযোগ্য এক্সেল শীটে টেক্সট ফাইলটি রূপান্তর করা: python keychain.py keychain.txt keychain.xls
।
#!/usr/bin/env python
import sys
import os
import re
import xlwt
# Regex to match both generic and internet passwords from a keychain dump
regex = re.compile(
r"""
keychain:\s"(?P<kchn>[^"]+)"\n # absolute path and file of keychain
version:\s(\d\d\d)\n # version
class:\s"(?P<clss>(genp|inet))"\n # generic password or internet password
attributes:\n
(\s*?0x00000007\s<blob>=(?P<name>[^\n]+)\n)? # name
(\s*?0x00000008\s<blob>=(?P<hex8>[^\n]+)\n)? # ? only used at certificates
(\s*?"acct"<blob>=(?P<acct>[^\n]+)\n)? # account
(\s*?"atyp"<blob>=(?P<atyp>[^\n]+)\n)? # account type ("form"), sometimes int
(\s*?"cdat"<timedate>=[^"]*(?P<cdat>[^\n]+)\n)? # datetime created
(\s*?"crtr"<uint32>=(?P<crtr>[^\n]+)\n)? # vendor key with four chars like "aapl"
(\s*?"cusi"<sint32>=(?P<cusi>[^\n]+)\n)? # ? always null
(\s*?"desc"<blob>=(?P<desc>[^\n]+)\n)? # description
(\s*?"gena"<blob>=(?P<gena>[^\n]+)\n)? # ? always null except one rare cases
(\s*?"icmt"<blob>=(?P<icmt>[^\n]+)\n)? # ? some sort of description
(\s*?"invi"<sint32>=(?P<invi>[^\n]+)\n)? # ? always null
(\s*?"mdat"<timedate>=[^"]*(?P<mdat>[^\n]+)\n)? # datetime last modified
(\s*?"nega"<sint32>=(?P<nega>[^\n]+)\n)? # ? always null
(\s*?"path"<blob>=(?P<path>[^\n]+)\n)? # path
(\s*?"port"<uint32>=(?P<port>[^\n]+)\n)? # port number in hex
(\s*?"prot"<blob>=(?P<prot>[^\n]+)\n)? # ? always null
(\s*?"ptcl"<uint32>=(?P<ptcl>[^\n]+)\n)? # protocol but is blob ("http", "https")
(\s*?"scrp"<sint32>=(?P<scrp>[^\n]+)\n)? # ? always null except one rare cases
(\s*?"sdmn"<blob>=(?P<sdmn>[^\n]+)\n)? # used for htaccess AuthName
(\s*?"srvr"<blob>=(?P<srvr>[^\n]+)\n)? # server
(\s*?"svce"<blob>=(?P<svce>[^\n]+)\n)? # ? some sort of description
(\s*?"type"<uint32>=(?P<type>[^\n]+)\n)? # some blob: "iprf", "note"
data:\n
"(?P<data>[^"]*)" # password
""", re.MULTILINE | re.VERBOSE)
# Dictionary used by the clean function (Apple is not always right about the
# types of the field)
field2type = {
"name": "blob",
"hex8": "blob",
"acct": "blob",
"atyp": "simple",
"cdat": "timedate",
"crtr": "uint32",
"cusi": "sint32",
"desc": "blob",
"gena": "blob",
"icmt": "blob",
"invi": "sint32",
"mdat": "timedate",
"nega": "sint32",
"path": "blob",
"port": "uint32",
"prot": "blob",
"ptcl": "blob",
"scrp": "sint32",
"sdmn": "blob",
"srvr": "blob",
"svce": "blob",
"type": "blob",
"data": "simple",
"kchn": "simple",
"clss": "simple"
}
def clean(field, match):
value = match.group(field)
if not value or value == "<NULL>":
# print null values as empty strings
return ""
if field2type[field] == "blob":
# strip " at beginning and end
return value[1:-1]
elif field2type[field] == "timedate":
# convert timedate to the iso standard
value = value[1:-1]
return value[0:4] + "-" + value[4:6] + "-" + value[6:8] + "T" + \
value[8:10] + ":" + value[10:12] + ":" + value[12:14] + "Z" + value[16:19]
elif field2type[field] == "uint32":
# if it really is a hex int, convert it to decimal
value = value.strip()
if re.match("^0x[0-9a-fA-F]+$", value):
return int(value, 16)
else:
return value
else:
# do nothing, just print it as it is
return value
def print_help():
print "Usage: python keychain.py INPUTFILE OUTPUTFILE"
print "Example: python keychain.py keychain.txt keychain.xls"
print " where keychain.txt was created by `security dump-keychain -d > keychain.txt`"
print " When dumping the keychain, you have to click 'Allow' for each entry in your"
print " keychain. Position you mouse over the button and go clicking like crazy."
print "Keychain 0.1: convert an Apple Keychain dump to an Excel (XLS) spreadsheet."
# Check for correct parameters
if len(sys.argv) != 3:
print_help()
sys.exit(1)
elif len(sys.argv) == 3:
if not os.path.isfile(sys.argv[1]):
print "Error: no such file '{0}'".format(sys.argv[1])
print_help()
exit(1)
# Read keychain file
buffer = open(sys.argv[1], "r").read()
print "Read {0} bytes from '{1}'".format(len(buffer), sys.argv[1])
# Create excel workbook and header
wb = xlwt.Workbook()
ws = wb.add_sheet("Keychain")
ws.write(0, 0, "Name")
ws.write(0, 1, "Account")
ws.write(0, 2, "Password")
ws.write(0, 3, "Protocol")
ws.write(0, 4, "Server")
ws.write(0, 5, "Port")
ws.write(0, 6, "Path")
ws.write(0, 7, "Description")
ws.write(0, 8, "Created")
ws.write(0, 9, "Modified")
ws.write(0, 10, "AuthName")
ws.write(0, 11, "AccountType")
ws.write(0, 12, "Type")
ws.write(0, 13, "Keychain")
# Find passwords and add them to the excel spreadsheet
i = 1
for match in regex.finditer(buffer):
ws.write(i, 0, clean("name", match))
ws.write(i, 1, clean("acct", match))
ws.write(i, 2, clean("data", match))
ws.write(i, 3, clean("ptcl", match))
ws.write(i, 4, clean("srvr", match))
ws.write(i, 5, clean("port", match))
ws.write(i, 6, clean("path", match))
ws.write(i, 7, clean("desc", match))
ws.write(i, 8, clean("cdat", match))
ws.write(i, 9, clean("mdat", match))
ws.write(i, 10, clean("sdmn", match))
ws.write(i, 11, clean("atyp", match))
ws.write(i, 12, clean("clss", match))
ws.write(i, 13, clean("kchn", match))
i += 1
wb.save(sys.argv[2])
print "Saved {0} passwords to '{1}'".format(i-1, sys.argv[2])
ওএসএক্স ১০.১০.৩ অনুসারে স্বয়ংক্রিয়ভাবে গ্রহণ করার একটি নতুন উপায় রয়েছে (একটি আপগ্রেডের পথে আমি সমস্যার মধ্যে পড়েছিলাম)
বাশ ফাংশন (উভয় .profile
বা .bash_rc
ফাইলগুলিতে যুক্ত)
## At the terminal when you start getting the prompts, type `Accepts` and press enter
function Accepts () {
osascript <<EOF
tell application "System Events"
repeat while exists (processes where name is "SecurityAgent")
tell process "SecurityAgent" to click button "Allow" of window 1
delay 0.2
end repeat
end tell
EOF
}
## At the terminal when you start getting the prompts, type `Accepts YourUsername YourPassword` and press enter
function AcceptWithCreds () {
username="$1"
password="$2"
[ -z "${password}" ] && return 1
osascript 2>/dev/null <<EOF
set appName to "${username}"
set appPass to "${password}"
tell application "System Events"
repeat while exists (processes where name is "SecurityAgent")
tell process "SecurityAgent"
if exists (text field 1 of window 1) then
set value of text field 1 of window 1 to appName
set value of text field 2 of window 1 to appPass
end if
end tell
tell process "SecurityAgent" to click button "Allow" of window 1
delay 0.2
end repeat
end tell
EOF
echo 'Finished...'
}
এবং এই স্ক্রিপ্টটি আপনার কীরিং ( sudo ./dump.sh
) ছুঁড়ে ফেলার জন্য ব্যবহার করুন
#!/bin/bash
# Run above script in another window
security dump-keychain -d login.keychain > keychain-login.txt
security dump-keychain -d /Library/Keychains/System.keychain > keychain-system.txt
execution error: System Events got an error: osascript is not allowed assistive access.
কমান্ড লাইনে পৌঁছেছি। আমি এর সাথে মোকাবিলা করার সবচেয়ে সহজ উপায়টি হ'ল অ্যাপলস্ক্রিপ্ট কোডটি স্ক্রিপ্ট সম্পাদক অ্যাপে আটকানো এবং সেখান থেকে চালানো।
osascript is not allowed assistive access
ত্রুটি সিস্টেম পছন্দসমূহ আপনার টার্মিনাল অ্যাপ্লিকেশন অনুমতি দিয়ে এড়ানো যায় => নিরাপত্তা ও গোপনীয়তা => অভিগম্যতা।
@ মাইকেলস্টোনারের উত্তরটি একটি ভাল শুরু, তবে এটি ওএস এক্স 10.10.3 ইয়োসেমাইটে ব্যর্থ হয়েছে, তার অ্যাপলস্ক্রিপ্ট কোড রিপোর্টিংয়ের সাথে System Events got an error: Can’t get group 1 of window 1 of process "SecurityAgent". Invalid index
।
অল্প অল্প করে খেলার পরে, নিম্নলিখিত সমাধানগুলি আমার পক্ষে কাজ করেছে:
tell application "System Events"
repeat while exists (processes where name is "SecurityAgent")
tell process "SecurityAgent"
keystroke " "
end tell
delay 1
end repeat
end tell
এটি শুরু করার পরে আপনাকে "অনুমতি দিন" কথোপকথনে ক্লিক করতে হবে। এই কোডটি কিছুটা সময় নেবে, তবে আমি বিলম্ব হ্রাস করার বিরুদ্ধে পরামর্শ দিচ্ছি ("দেরি ০.২" আমাকে আমার ম্যাকের উপর জোর করে তৈরি করেছিল)। শুধু এক কাপ কফি পান।
কীচেন এক্সপোর্ট ফাংশন আইটিইএমএসের জন্য, পুরো কীচেনের জন্য নয়। এটি আপনাকে বেশিরভাগ আইটেম রফতানি করতে দেয় না - এটি যখন আপনি ধূসর রঙের এক্সপোর্ট ফাংশন দেখতে পাবেন।
এক ম্যাক থেকে অন্য ম্যাকে কীচেইন অনুলিপি করতে মাইগ্রেশন সহকারী অ্যাপ্লিকেশন ব্যবহার করুন।
অথবা Library / গ্রন্থাগার / কীচেইনস / ফোল্ডারে অবস্থিত কী চেইন ফাইলটি অনুলিপি করে ম্যানুয়ালি করুন।
নতুন কম্পিউটারে কীচেন অ্যাক্সেস অ্যাপ্লিকেশনটি খুলুন এবং নির্বাচন করুন File
> Add Keychain…
।
security
বাইনারি কম্যান্ড লাইন থেকে Keychain থেকে আইটেমগুলি পুনরুদ্ধার করবে, তাই আপনি পারে স্ক্রিপ্ট পাইথন যে বিষয়বস্তু ধারাক্রমে ডাম্প করতে। আপনি কী ফর্ম্যাটটি ডেটা চান এবং কীভাবে আপনি এটি এগিয়ে যাবেন তা নির্ভর করে এটি নির্ভর করে।
অনুলিপি / পেস্ট করাও একটি শালীন বিকল্প, যদি আপনি জানেন যে আপনি কতক্ষণ নতুন সমাধান প্রয়োগ করতে আগ্রহী এবং আপনার বিদ্যমান প্রোগ্রাম বা লাইব্রেরিটি শিখতে / অনুসন্ধান করতে হবে যা আপনার নির্বাচিত বিন্যাসে বিষয়বস্তু ফেলে দেবে।
এক্সপোর্ট আইটেম মেনু সর্বজনীন এবং / বা ব্যক্তিগত কী রফতানির জন্য যার জন্য উভয়ই এনকোডের জন্য শিল্প স্ট্যান্ডার্ড ফাইল ফর্ম্যাট রয়েছে এবং এক্সচেঞ্জ এবং পরিবহনের জন্য ফাইল সিস্টেমে সঞ্চিত হলে যথাযথ ডেটা সুরক্ষিত করে protect এই ফাংশনটি কীচেন সহকারীর সহায়তায় সংক্ষেপে নথিভুক্ত করা হয়।
কিচাইন্ডাম্পপ্রো https://hackforums.net/showthread.php?tid=5803486 নামক একটি সরঞ্জাম রয়েছে ।
নিঃশব্দে কীচেইন থেকে পাসফ্রেজ / অ্যাকাউন্ট / প্রদান / সিকিউর নোট / পাবলিককে / প্রাইভেটকি / সিমমেট্রিককি / সার্টিফিকেট এবং আরও কিছু উত্তোলনের জন্য।