idb 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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!