idb 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 11406269953d2f4d75ddaefc4f9eda22342161ae
4
- data.tar.gz: 462682be7e29f8756d42ef7223198c13752b77e9
3
+ metadata.gz: d313a2f68d8dbb4103f71b6f9d34486a16420484
4
+ data.tar.gz: 9087be7df5e7065a10787cb14acebc884f514fb7
5
5
  SHA512:
6
- metadata.gz: b9059fcaac50e027d4ef0dfefc6c4d8cffaeaf9106ce43d4c2c7acdff18f62b5cf047de345624fea9508238cb22ea69617a7cea5c70be082503d936d1f6aa2e2
7
- data.tar.gz: b929944e0110ed607679fbe8c7e56f852bf94f034c266ac7f71e43e62d81ee5f3d43528cb5e177ab4b09930e1544b725dbeadd9e93687d0e5f5520799133b0f7
6
+ metadata.gz: 9f82baac61e5cd3a1d3f8048a53411ab5a47295728fe71856cb3464744ee6b0da2956022c1687628c5529597f711cef8bb73d1d55db43bb5240d4eadaa884565
7
+ data.tar.gz: 318b936f8c1bca37ee3164d50266c3573d38cf7855e7e52a8ca603835fe5643adfc903424766d86f530309d1f1019888a711bc2cf752bde19bde8bd5530d8cfa
data/Gemfile.lock CHANGED
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- idb (1.3.1)
4
+ idb (1.3.2)
5
5
  awesome_print
6
6
  coderay
7
7
  eventmachine
8
8
  ffi
9
9
  git
10
+ hexdump
10
11
  highline
11
12
  htmlentities
12
13
  launchy
@@ -31,6 +32,7 @@ GEM
31
32
  git (1.2.8)
32
33
  haml (4.0.5)
33
34
  tilt
35
+ hexdump (0.2.3)
34
36
  highline (1.6.21)
35
37
  htmlentities (4.3.2)
36
38
  launchy (2.4.2)
data/README.md CHANGED
@@ -1,24 +1,36 @@
1
1
  # Idb
2
2
 
3
- TODO: Write a gem description
3
+ idb is a tool to simplify some common tasks for iOS pentesting and research. Originally there was a command line version of the tool, but it is no longer under development so you should get the GUI version.
4
+
5
+ idb was released as part of a talk at [ShmooCon](http://shmoocon.org) 2014. The [slides of the talk](https://speakerdeck.com/dmayer/introducing-idb-simplified-blackbox-ios-app-pentesting) are up on [Speakerdeck](https://speakerdeck.com/dmayer/introducing-idb-simplified-blackbox-ios-app-pentesting). [Video](https://archive.org/details/ShmooCon2014_Introducing_idb_Simplified_Blackbox_iOS_App_Pentesting) is available on [archive.org](http://www.archive.org) There is also a [blog post](http://cysec.org/blog/2014/01/23/idb-ios-research-slash-pentesting-tool/) on my [personal website](http://cysec.org).
4
6
 
5
7
  ## Installation
6
8
 
7
- Add this line to your application's Gemfile:
9
+ I am currently working on making the installation proces much more pleasant. It is not fully auomated yet, but the dependencies and number steps are much simpler since I bundled idb into a gem. Basic instructions:
8
10
 
9
- gem 'idb'
11
+ * Install ruby (1.9.3 and 2.1 are known to work. **Don't use 2.0**)
12
+ * **Shared library support is required!**
13
+ * Under `rvm` use `--enable-shared` when installing ruby.
14
+ * Under `ruby-install`/`chruby` use `-- --enable-shared` when installing ruby.
15
+ * Under `ruby-build`/`rbenv` with `ruby-build` use `CONFIGURE_OPTS=--enable-shared [command]` when installing Ruby.
16
+ * Install prerequisites:
17
+ * OS X: `brew install qt cmake usbmuxd libimobiledevice`
18
+ * Ubuntu: `apt-get install cmake libqt4-dev git-core libimobiledevice-utils libplist-utils usbmuxd -y`
19
+ * Install idb: `gem install idb`
20
+ * Run idb: `idb`
21
+ * Hooray!
10
22
 
11
- And then execute:
23
+ Expect a fully bundled version which includes ruby and qt soon!
12
24
 
13
- $ bundle
25
+ ## Usage
14
26
 
15
- Or install it yourself as:
27
+ See the basic [manual and walk-through](//github.com/dmayer/idb/wiki/Manual-and--Walk-Through) to get started.
16
28
 
17
- $ gem install idb
29
+ ## FAQ
18
30
 
19
- ## Usage
31
+ ### Q: After staring idb, the menu bar does not appear
32
+ A: This seems to be a bug when using ruby 2.1 on OS X. I have no idea why this is happening, but switching to a different application and the back to idb fixes it. Any pointers on how to fix this are greatly appreciated!
20
33
 
21
- TODO: Write usage instructions here
22
34
 
23
35
  ## Contributing
24
36
 
data/bin/idb CHANGED
@@ -1,5 +1,4 @@
1
- #!/usr/bin/env ruby
2
-
1
+ #!/usr/bin/env ruby
3
2
  require 'idb'
4
3
 
5
4
  idb = Idb::Idb.run
data/idb.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Daniel A. Mayer"]
10
10
  spec.email = ["mayer@cysec.org"]
11
11
  spec.summary = %q{idb is a tool to simplify some common tasks for iOS pentesting and research.}
12
- spec.description = %q{Still under test but ready for prime-time soon!}
12
+ spec.description = %q{idb is a tool to simplify some common tasks for iOS pentesting and research. Please see https://github.com/dmayer/idb for more details on installation and usage.}
13
13
  spec.homepage = "https://github.com/dmayer/idb"
14
14
  spec.license = "MIT"
15
15
 
@@ -38,4 +38,5 @@ Gem::Specification.new do |spec|
38
38
  spec.add_runtime_dependency 'eventmachine'
39
39
  spec.add_runtime_dependency 'log4r'
40
40
  spec.add_runtime_dependency 'git'
41
+ spec.add_runtime_dependency 'hexdump'
41
42
  end
@@ -0,0 +1,57 @@
1
+
2
+ require "hexdump"
3
+ module Idb
4
+ class KeychainBinaryWidget < Qt::Widget
5
+
6
+ # def hexdump(data, start = 0, finish = nil, width = 16)
7
+ # result = ""
8
+ # ascii = ''
9
+ # counter = 0
10
+ # result += '%06x ' % start
11
+ # data.each_byte do |c|
12
+ # if counter >= start
13
+ # result += '%02x ' % c
14
+ # ascii << (c.between?(32, 126) ? c : ?.)
15
+ # if ascii.length >= width
16
+ # result += ascii + "\n"
17
+ # ascii = ''
18
+ # result += '%06x ' % (counter + 1)
19
+ # end
20
+ # end
21
+ # throw :done if finish && finish <= counter
22
+ # counter += 1
23
+ # end rescue :done
24
+ # result += ' ' * (width - ascii.length) + ascii + "\n"
25
+ # result
26
+ # end
27
+
28
+
29
+ def initialize *args
30
+ super *args
31
+ @layout = Qt::GridLayout.new
32
+ setLayout(@layout)
33
+
34
+ @vdata_text = Qt::PlainTextEdit.new
35
+ @vdata_text.setReadOnly(true)
36
+
37
+ font = Qt::Font.new("Courier")
38
+ @vdata_text.setFont(font)
39
+
40
+
41
+
42
+ @layout.addWidget @vdata_text, 1, 0
43
+ end
44
+
45
+ def set_data data
46
+ output = ""
47
+ Hexdump.dump(data, {:output => output } )
48
+ @vdata_text.appendPlainText output
49
+ end
50
+
51
+ def clear
52
+ @vdata_text.clear
53
+ end
54
+
55
+
56
+ end
57
+ end
@@ -0,0 +1,37 @@
1
+ require_relative 'keychain_text_widget'
2
+ require_relative 'keychain_binary_widget'
3
+
4
+ module Idb
5
+
6
+ class KeychainTabWidget < Qt::TabWidget
7
+
8
+ def initialize *args
9
+ super *args
10
+
11
+ @tabs = Hash.new
12
+
13
+ @text = KeychainTextWidget.new self
14
+ @tabs[:text] = addTab(@text, "Text Data")
15
+
16
+ @binary = KeychainBinaryWidget.new self
17
+ @tabs[:binary] = addTab(@binary, "Binary VData")
18
+
19
+ end
20
+
21
+ def set_data text
22
+ @text.clear
23
+ @text.set_data text
24
+ end
25
+
26
+ def set_vdata text
27
+ @binary.clear
28
+ @binary.set_data text
29
+ end
30
+
31
+ def clear
32
+ @text.clear
33
+ @binary.clear
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,28 @@
1
+
2
+ module Idb
3
+ class KeychainTextWidget < Qt::Widget
4
+
5
+ attr_accessor :data_text, :vdata_text
6
+
7
+ def initialize *args
8
+ super *args
9
+ @layout = Qt::GridLayout.new
10
+ setLayout(@layout)
11
+
12
+ @data_text = Qt::PlainTextEdit.new
13
+ @data_text.setReadOnly(true)
14
+ @layout.addWidget @data_text, 0, 0
15
+
16
+ end
17
+
18
+ def set_data data
19
+ @data_text.appendPlainText data.to_s
20
+ end
21
+
22
+ def clear
23
+ @data_text.clear
24
+ end
25
+
26
+
27
+ end
28
+ end
@@ -1,7 +1,9 @@
1
1
  require_relative '../lib/keychain_plist_parser'
2
+ require_relative 'keychain_tab_widget'
2
3
 
3
4
  module Idb
4
- class KeyChainWidget < Qt::TableWidget
5
+
6
+ class KeychainWidget < Qt::Widget
5
7
 
6
8
  def initialize *args
7
9
  super *args
@@ -15,17 +17,8 @@ module Idb
15
17
  @selection_model.connect(SIGNAL('selectionChanged(QItemSelection,QItemSelection)')) {|x,y|
16
18
  unless x.indexes.length == 0
17
19
  row = x.indexes[0].row
18
- text = ""
19
- text << "DATA\n"
20
- text << "=======================\n"
21
- text << @keychain.entries[row]["data"].to_s
22
-
23
- text << "\n\nV_DATA\n"
24
- text << "=======================\n"
25
- text << @keychain.entries[row]["v_Data"].to_s
26
- @details.clear
27
- @details.appendPlainText text
28
-
20
+ @keychain_tab_widget.set_data @keychain.entries[row]["data"]
21
+ @keychain_tab_widget.set_vdata @keychain.entries[row]["v_Data"]
29
22
  end
30
23
 
31
24
  }
@@ -39,22 +32,24 @@ module Idb
39
32
 
40
33
  @layout.addWidget @keychain_tab, 0,0
41
34
 
42
- @details = Qt::PlainTextEdit.new
43
- @details.setReadOnly(true)
44
- @layout.addWidget @details, 1, 0
45
35
 
46
36
  @dump = Qt::PushButton.new "Dump Keychain"
37
+ @layout.addWidget @dump, 2, 0
38
+
39
+ @keychain_tab_widget = KeychainTabWidget.new
40
+ @layout.addWidget @keychain_tab_widget, 3, 0
41
+
47
42
  @dump.connect(SIGNAL :released) {
48
43
  $device.dump_keychain
49
44
  @keychain = KeychainPlistParser.new "#{$tmp_path}/device/genp.plist"
50
45
  populate_table
51
46
  }
52
- @layout.addWidget @dump, 2, 0
47
+
53
48
  end
54
49
 
50
+
55
51
  def populate_table
56
- @details.clear
57
- @model.clear
52
+ @keychain_tab_widget.clear
58
53
  @model.setHorizontalHeaderItem(0, Qt::StandardItem.new("Access Group"))
59
54
  @model.setHorizontalHeaderItem(1, Qt::StandardItem.new("Account"))
60
55
  @model.setHorizontalHeaderItem(2, Qt::StandardItem.new("Service"))
@@ -79,8 +74,5 @@ module Idb
79
74
 
80
75
  end
81
76
 
82
-
83
-
84
-
85
77
  end
86
- end
78
+ end
@@ -6,7 +6,7 @@ require_relative 'snoop_it_tab_widget'
6
6
  require_relative 'cycript_console_widget'
7
7
  require_relative 'pasteboard_monitor_widget'
8
8
  require_relative 'fs_viewer_tab_widget'
9
- require_relative 'key_chain_widget'
9
+ require_relative 'keychain_widget'
10
10
  require_relative 'tool_widget'
11
11
  require 'Qt'
12
12
 
@@ -60,7 +60,7 @@ module Idb
60
60
  @log.setEnabled(false)
61
61
  @tabs[:log] = addTab(@log, "Log")
62
62
 
63
- @keychain = KeyChainWidget.new self
63
+ @keychain = KeychainWidget.new self
64
64
  @keychain.setEnabled(false)
65
65
  @tabs[:keychain] = addTab(@keychain, "Keychain")
66
66
 
data/lib/idb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Idb
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.2"
3
3
  end
data/lib/lib/device.rb CHANGED
@@ -81,7 +81,7 @@ module Idb
81
81
  end
82
82
 
83
83
  def start_port_forwarding
84
- @port_forward_pid = Process.spawn("#{RbConfig.ruby} lib/helper/ssh_port_forwarder.rb" )
84
+ @port_forward_pid = Process.spawn("#{RbConfig.ruby} #{File.dirname(File.expand_path(__FILE__))}/../helper/ssh_port_forwarder.rb" )
85
85
  end
86
86
 
87
87
  def restart_port_forwarding
@@ -206,34 +206,34 @@ module Idb
206
206
 
207
207
  def upload_dumpdecrypted
208
208
  $log.info "Uploading dumpdecrypted library..."
209
- @ops.upload("utils/dumpdecrypted/dumpdecrypted_armv6.dylib","/var/root/dumpdecrypted_armv6.dylib")
210
- @ops.upload("utils/dumpdecrypted/dumpdecrypted_armv7.dylib","/var/root/dumpdecrypted_armv7.dylib")
209
+ @ops.upload("#{File.dirname(File.expand_path(__FILE__))}/../utils/dumpdecrypted/dumpdecrypted_armv6.dylib","/var/root/dumpdecrypted_armv6.dylib")
210
+ @ops.upload("#{File.dirname(File.expand_path(__FILE__))}/../utils/dumpdecrypted/dumpdecrypted_armv7.dylib","/var/root/dumpdecrypted_armv7.dylib")
211
211
  $log.info "'dumpdecrypted' installed successfully."
212
212
  end
213
213
 
214
214
  def install_keychain_dump
215
- if File.exist? "utils/keychain_dump/keychain_dump"
215
+ if File.exist? "#{File.dirname(File.expand_path(__FILE__))}/../utils/keychain_dump/keychain_dump"
216
216
  upload_keychain_dump
217
217
  else
218
- $log.error "keychain_dump not found at 'utils/keychain_dump/keychain_dump'."
218
+ $log.error "keychain_dump not found at '#{File.dirname(File.expand_path(__FILE__))}/../utils/keychain_dump/keychain_dump'."
219
219
  false
220
220
  end
221
221
  end
222
222
  def install_pcviewer
223
- if File.exist? "utils/pcviewer/protectionclassviewer"
223
+ if File.exist? "#{File.dirname(File.expand_path(__FILE__))}/../utils/pcviewer/protectionclassviewer"
224
224
  upload_pcviewer
225
225
  else
226
- $log.error "protectionclassviewer not found at 'utils/pcviewer/protectionclassviewer'."
226
+ $log.error "protectionclassviewer not found at '#{File.dirname(File.expand_path(__FILE__))}/../utils/pcviewer/protectionclassviewer'."
227
227
  false
228
228
  end
229
229
  end
230
230
 
231
231
 
232
232
  def install_pbwatcher
233
- if File.exist? "utils/pbwatcher/pbwatcher"
233
+ if File.exist? "#{File.dirname(File.expand_path(__FILE__))}/../utils/pbwatcher/pbwatcher"
234
234
  upload_pbwatcher
235
235
  else
236
- $log.error "pbwatcher not found at 'utils/pbwatcher/pbwatcher'."
236
+ $log.error "pbwatcher not found at '#{File.dirname(File.expand_path(__FILE__))}/../utils/pbwatcher/pbwatcher'."
237
237
  false
238
238
  end
239
239
  end
@@ -241,7 +241,7 @@ module Idb
241
241
  def upload_pcviewer
242
242
  begin
243
243
  $log.info "Uploading pcviewer..."
244
- @ops.upload "utils/pcviewer/protectionclassviewer", "/var/root/protectionclassviewer"
244
+ @ops.upload "#{File.dirname(File.expand_path(__FILE__))}/../utils/pcviewer/protectionclassviewer", "/var/root/protectionclassviewer"
245
245
  @ops.chmod "/var/root/protectionclassviewer", 0744
246
246
  $log.info "'pcviewer' installed successfully."
247
247
  # true
@@ -254,7 +254,7 @@ module Idb
254
254
  def upload_keychain_dump
255
255
  begin
256
256
  $log.info "Uploading keychain_dump..."
257
- @ops.upload "utils/keychain_dump/keychain_dump", "/var/root/keychain_dump"
257
+ @ops.upload "#{File.dirname(File.expand_path(__FILE__))}/../utils/keychain_dump/keychain_dump", "/var/root/keychain_dump"
258
258
  @ops.chmod "/var/root/keychain_dump", 0744
259
259
  $log.info "'keychain_dump' installed successfully."
260
260
  # true
@@ -266,7 +266,7 @@ module Idb
266
266
  def upload_pbwatcher
267
267
  begin
268
268
  $log.info "Uploading pbwatcher..."
269
- @ops.upload "utils/pbwatcher/pbwatcher", "/var/root/pbwatcher"
269
+ @ops.upload "#{File.dirname(File.expand_path(__FILE__))}/../utils/pbwatcher/pbwatcher", "/var/root/pbwatcher"
270
270
  @ops.chmod "/var/root/pbwatcher", 0744
271
271
  $log.info "'pbwatcher' installed successfully."
272
272
  # true
data/lib/run_idb.rb ADDED
@@ -0,0 +1,3 @@
1
+ require_relative 'idb'
2
+
3
+ idb = Idb::Idb.run
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: idb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel A. Mayer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-30 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -276,7 +276,22 @@ dependencies:
276
276
  - - ">="
277
277
  - !ruby/object:Gem::Version
278
278
  version: '0'
279
- description: Still under test but ready for prime-time soon!
279
+ - !ruby/object:Gem::Dependency
280
+ name: hexdump
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ description: idb is a tool to simplify some common tasks for iOS pentesting and research.
294
+ Please see https://github.com/dmayer/idb for more details on installation and usage.
280
295
  email:
281
296
  - mayer@cysec.org
282
297
  executables:
@@ -293,8 +308,6 @@ files:
293
308
  - Rakefile
294
309
  - bin/idb
295
310
  - idb.gemspec
296
- - lib/LICENSE
297
- - lib/README.md
298
311
  - lib/config/.dummy
299
312
  - lib/config/settings.yml
300
313
  - lib/gui/app_binary_tab_widget.rb
@@ -318,7 +331,10 @@ files:
318
331
  - lib/gui/images/folder.ico
319
332
  - lib/gui/images/iphone.ico
320
333
  - lib/gui/images/screenshot.png
321
- - lib/gui/key_chain_widget.rb
334
+ - lib/gui/keychain_binary_widget.rb
335
+ - lib/gui/keychain_tab_widget.rb
336
+ - lib/gui/keychain_text_widget.rb
337
+ - lib/gui/keychain_widget.rb
322
338
  - lib/gui/local_storage_tab_widget.rb
323
339
  - lib/gui/log_plain_text_edit.rb
324
340
  - lib/gui/log_widget.rb
@@ -375,6 +391,7 @@ files:
375
391
  - lib/lib/url_scheme_fuzzer.rb
376
392
  - lib/lib/usb_muxd_wrapper.rb
377
393
  - lib/lib/weak_class_dump_wrapper.rb
394
+ - lib/run_idb.rb
378
395
  - lib/utils/dumpdecrypted/README
379
396
  - lib/utils/dumpdecrypted/dumpdecrypted_armv6.dylib
380
397
  - lib/utils/dumpdecrypted/dumpdecrypted_armv7.dylib
data/lib/LICENSE DELETED
@@ -1,20 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2013 Daniel A. Mayer
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of
6
- this software and associated documentation files (the "Software"), to deal in
7
- the Software without restriction, including without limitation the rights to
8
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- the Software, and to permit persons to whom the Software is furnished to do so,
10
- subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/lib/README.md DELETED
@@ -1,54 +0,0 @@
1
- # gidb
2
-
3
- gidb is a tool to simplify some common tasks for iOS pentesting and research. It is still a work in progress but already provides a bunch of (hopefully) useful commands. The goal was to provide all (or most) functionality for both, iDevices and the iOS simulator. For this, a lot is abstracted internally to make it work transparently for both environments. Although recently the focus has been more on supporting devices.
4
-
5
- idb was released as part of a talk at [ShmooCon](http://shmoocon.org) 2014. The [slides of the talk](https://speakerdeck.com/dmayer/introducing-idb-simplified-blackbox-ios-app-pentesting) are up on [Speakerdeck](https://speakerdeck.com/dmayer/introducing-idb-simplified-blackbox-ios-app-pentesting). [Video](https://archive.org/details/ShmooCon2014_Introducing_idb_Simplified_Blackbox_iOS_App_Pentesting) is available on [archive.org](http://www.archive.org) There is also a [blog post](http://cysec.org/blog/2014/01/23/idb-ios-research-slash-pentesting-tool/) on my [personal website](http://cysec.org).
6
-
7
- ## Getting Started
8
- Visit the [getting started guide](//github.com/dmayer/idb/wiki/Getting-started) on the wiki to get installation instructions. Next, there is a basic [manual and walk-through](//github.com/dmayer/idb/wiki/Manual-and--Walk-Through) available as well.
9
-
10
- Bug reports, feature requests, and contributions are more than welcome!
11
-
12
- ## Command-Line Version
13
- idb started out as a command line tool which is still accessible through the `cli` branch. Find the [getting started](//github.com/dmayer/idb/wiki/CLI-Version:-Getting-Started) guide and some more documentation in the wiki.
14
-
15
- ## gidb Features
16
-
17
- * Simplified pentesting setup
18
- * Setup port forwarding
19
- * Certificate management
20
- * iOS log viewer
21
- * Screen shot utility
22
- * Simplifies testing for the creation of backgrounding screenshots
23
- * App-related functions
24
- * App binary
25
- * Download
26
- * List imported libraries
27
- * Check for encryption, ASLR, stack canaries
28
- * Decrypt and download an app binary (requires [dumpdecrypted](//github.com/stefanesser/dumpdecrypted))
29
- * Launch an app
30
- * View app details such as name, bundleid, and `Info.plist` file.
31
- * Inter-Process Communication
32
- * URL Handlers
33
- * List URL handlers
34
- * Invoke and fuzz URL handlers
35
- * Pasteboard monitor
36
- * Analyze local file storage
37
- * Search for, download, and view plist files
38
- * Search for, download, and view sqlite databases
39
- * Search for, download, and view local caches (`Cache.db`)
40
- * File system browser
41
- * Install utilities on iDevices
42
- * Install [iOS SSL killswitch](//github.com/iSECPartners/ios-ssl-kill-switch)
43
- * alpha: Compile and install [dumpdecrypted](//github.com/stefanesser/dumpdecrypted)
44
- * Alpha:
45
- * Cycript console
46
- * Snoop-It integration
47
-
48
- ## Documentation
49
- Some documentation can be found on the [wiki](//github.com/dmayer/idb/wiki).
50
-
51
- ## FAQ
52
-
53
- ### Q: After staring idb, the menu bar does not appear
54
- A: This seems to be a bug when using ruby 2.1 on OS X. I have no idea why this is happening, but switching to a different application and the back to idb fixes it. Any pointers on how to fix this are greatly appreciated!