2009-04-04 13 views
33

Tôi đang tìm một cách để trích xuất (xuất) nội dung của một chuỗi X OS X vào một tệp mà tôi có thể dễ dàng xử lý ở nơi khác, chẳng hạn như bản rõ ràng bằng tab hoặc một thứ gì đó sắp xếp.Có cách nào nhanh chóng và dễ dàng để đổ nội dung của một khóa MacOS X không?

Ứng dụng Keychain Access không cung cấp bất kỳ chức năng nào như vậy và nhận dữ liệu của khóa liên quan đến việc mở từng lần và phải nhập mật khẩu của khóa để xem mật khẩu được lưu trữ bằng khóa đó mọi lúc.

Sau một chút đào, tôi thấy giải pháp của ai đó bằng cách sử dụng AppleScript và ứng dụng Keychain Scripting để truy cập móc khóa (không thể liên kết đến bài viết cá nhân; di chuyển xuống khoảng hai phần ba đến cuối trang):

http://discussions.apple.com/thread.jspa?threadID=1398759

Sử dụng tập lệnh Keychain, bạn có thể truy cập tất cả các trường dữ liệu của tất cả các phím - bao gồm mật khẩu văn bản thuần túy! - và nó khá dễ dàng để đổ dữ liệu này vào một tập tin văn bản, vv Tôi đã thử nghiệm nó và nó hoạt động tốt.

Tuy nhiên, giải pháp này vẫn liên quan đến việc phải xác nhận quyền truy cập vào mỗi khóa bằng cách nhấp vào OK trên hộp thoại. Điều này là tốt hơn nhiều so với việc phải nhập mật khẩu của keychain mỗi lần, nhưng nó vẫn còn khó chịu. Hơn nữa, bạn phải xác nhận quyền truy cập hai lần cho mỗi khóa; một lần cho Script Editor (hoặc bản thân kịch bản nếu nó đang chạy như một ứng dụng) và một lần cho Keychain Scripting. Vì vậy, nếu bạn đang xử lý một keychain với 100 phím, bạn phải tự bấm OK trên 200 hộp thoại.

Tôi hiện đang tìm kiếm giải pháp để giải quyết vấn đề này. Tôi nhận ra rằng vì đó là mục đích của keychains để bảo vệ dữ liệu nhạy cảm và ngăn chặn chính xác loại điều tôi đang cố gắng làm, bất kỳ giải pháp nào như vậy có lẽ sẽ liên quan đến một số loại hack.

Tôi rất muốn có ý tưởng của bạn!

Trả lời

30

Được rồi, tôi ngu ngốc. Có một công cụ dòng lệnh gọi là security chỉ thực hiện điều này (và rất nhiều hành động khác trên móc khóa).

Một cách sử dụng ví dụ:

security dump-keychain -d login.keychain 

này sẽ đổ tất cả các dữ liệu trong login.keychain (keychain mặc định cho người dùng) là plaintext, bao gồm cả mật khẩu. Bạn vẫn còn phải xác nhận quyền truy cập, nhưng chỉ một lần cho mỗi khóa và nhanh hơn nhiều so với (và không ném lỗi lạ khi cố gắng truy cập một số trường nhất định) bằng AppleScript. Và nó không hack.

Nếu không có tùy chọn -d, nó sẽ đổ tất cả các trường trừ mật khẩu.

Các đổ dữ liệu cho một vẻ quan trọng như thế này (đối với một chìa khóa internet; phím chương trình và chứng chỉ có các lĩnh vực khác, nhưng định dạng là như nhau):

keychain: "/Users/<username>/Library/Keychains/login.keychain" 
class: "inet" 
attributes: 
    0x00000007 <blob>="tech.slashdot.org (<username for this web login>)" 
    0x00000008 <blob>=<NULL> 
    "acct"<blob>="<username for this web login>" 
    "atyp"<blob>="form" 
    "cdat"<timedate>=0x32303038303432333038323730355A00 "20080423082705Z\000" 
    "crtr"<uint32>=<NULL> 
    "cusi"<sint32>=<NULL> 
    "desc"<blob>="Kennwort des Web-Formulars" 
    "icmt"<blob>="default" 
    "invi"<sint32>=<NULL> 
    "mdat"<timedate>=0x32303038303432333038323730355A00 "20080423082705Z\000" 
    "nega"<sint32>=<NULL> 
    "path"<blob>=<NULL> 
    "port"<uint32>=0x00000000 
    "prot"<blob>=<NULL> 
    "ptcl"<uint32>="http" 
    "scrp"<sint32>=<NULL> 
    "sdmn"<blob>=<NULL> 
    "srvr"<blob>="tech.slashdot.org" 
    "type"<uint32>=<NULL> 
data: 
"<the plaintext password for this key>" 
+13

Có cách nào kỳ diệu tránh nhấp vào "Always Allow" một lần cho mỗi mục? – Cliff

+0

@Cliff Bạn có thể tìm thấy AppleScript sẽ nhấn các nút cho bạn ở đây: http://apple.stackexchange.com/a/137336. –

+0

Đối với khóa iCloud, mà công cụ bảo mật (10.9.5) 'không nhìn thấy, bạn có thể sao chép mọi thứ từ móc khóa iCloud sang một móc khóa mới và vẫn sử dụng kỹ thuật này. (http://selfsuperinit.com/2014/01/20/exporting-icloud-keychain-passwords-as-a-plain-text-file/) –

15

Xin vui lòng đọc này:https://gist.github.com/rmondello/b933231b1fcc83a7db0b

Bỏ qua: -----

Tôi tìm thấy một sự sollution cho hộp thoại "Luôn cho phép" trong mỗi phím!

Chỉ cần chạy lệnh trước đó bằng sudo.

sudo security dump-keychain -d login.keychain 

Bằng cách này, bạn chỉ cần nhập mật khẩu của mình hai lần. Một trên Terminal để sudo và một để mở khóa keychain! ;)

Chúc bạn một ngày vui vẻ!

+2

Có vẻ như không hoạt động, nó vẫn yêu cầu tôi "cho phép/từ chối "từng mục. Có lẽ bạn đã "luôn luôn cho phép" tất cả mọi thứ trong lần đầu tiên bạn chạy lệnh? Lần thứ hai nó sẽ xuất hiện để có chỉ làm việc kỳ diệu (bất kể sudo). –

+3

Tôi vừa nhấn cho phép 250 lần. – cedivad

+1

Tôi đoán mẹo này không còn hoạt động trong các phiên bản OSX gần đây nữa ... – TCB13

-2

tôi tìm thấy giải pháp cho không nhấp vào "Cho phép" nhiều lần

sudo su 
security dump-keychain -d /Users/YourUsername/Library/Keychains/login.keychain 
+0

Đã không hoạt động đối với tôi. – ma11hew28

0

Update, hiện nay là một công cụ thực hiện điều này độc đáo:

Keychaindump là một công cụ proof-of-concept cho đọc mật khẩu keychain X của hệ điều hành gốc. Nó săn tìm các khóa chủ chốt mở khóa nằm trong không gian bộ nhớ của quá trình bảo mật và sử dụng chúng để giải mã các tệp tin keychain.

Nguồn: https://github.com/juuso/keychaindump

+0

Dự án git này là từ bỏ-ware, cam kết cuối cùng 6 năm trước. Tự chịu rủi ro. – Penumbra