yptools 1.0.7 → 1.0.8

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
  SHA256:
3
- metadata.gz: 7d9a36624bc18f1d519d0a1b5e24440eec56f05729f2bb997646518eef48130e
4
- data.tar.gz: 5682539c004927df1bd3b4c8cb9ae8e0c327181311542370bdf42d4d82c46793
3
+ metadata.gz: 4fe362757685013ee50d5bbca524fc5e08dd59f9f64a3a4549b7d939d3704fb2
4
+ data.tar.gz: 8e8e02e07fc6c9ad0ced4a9802a2e2b5da2820e20774ad37932c0765e4059ec2
5
5
  SHA512:
6
- metadata.gz: 5212b210a35eaef7c94b78e416847b4deb21a528f68db4173d0243966502268d0995d774090862b19c271dda78b45abd1def619bedd88c4134b2061adab950ce
7
- data.tar.gz: 1645e155cd85a3adb1f02492bc17759e6e969cc82f9de10fef12ff993eafdd849e65ec942f89e161487fad4a54e66be5a33d437bd2e460861fcc01aaddefd872
6
+ metadata.gz: 2f199a39f86c7a4853203c0fb335a58c987caa0c57d3bd2fff2b23bf354389b6e92c7a3270cfcc17de093d442078a60e71c9ce9fafe4e6fe93e0db21b43055d0
7
+ data.tar.gz: 1a50b8e355361882faf85a1db7e72909e0df6494e3ecf35d2a60b322f20386f9a7ec8dde04f57c30e6b564142142c119a131f2801b6b52b47e7d7d07ebc42a66
@@ -7,6 +7,8 @@ class YPHelp
7
7
 
8
8
  mgc: use [yptools mgc suffix] 在当前目录生成垃圾代码(当前目录需要有.xcworkspace或者.xcodeproj目录)
9
9
 
10
+ showipa: use [yptools showipa ...] 用于解析ipa文件
11
+
10
12
  update: use [yptools update] 更新yptools
11
13
 
12
14
  ufct: use [yptools ufct] 更新当前目录下面文件后缀为.h|.m 的文件创建时间
@@ -0,0 +1,189 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ require 'pathname'
4
+ require 'colored'
5
+ require 'plist'
6
+ require 'json'
7
+ require_relative '../log/yp_log'
8
+ require_relative '../mgc/yp_makegarbagecode'
9
+
10
+
11
+ class YPPackage
12
+
13
+ def self.analysis(filePath, delete = 1)
14
+
15
+ fileName = File.basename(filePath)
16
+ fileBasename = File.basename(filePath, ".*")
17
+ fileSuffix = File.extname(filePath)
18
+ fileDirname = File.dirname(filePath)
19
+
20
+ yp_path = `pwd`
21
+ yp_path = yp_path.sub("\n","")
22
+
23
+ # yp_outPath = yp_path + '/Payload + ' + Time.new.inspect
24
+ yp_outPath = fileDirname + '/ipa-' + Time.new.strftime("%Y%m%d%H%M%S-%L")
25
+ yp_method_mkdir yp_outPath
26
+ yp_log_doing "将ipa解压到临时目录#{yp_outPath}"
27
+ `tar -xf #{filePath} -C #{yp_outPath}`
28
+
29
+ yp_resourceFile = "#{yp_outPath}/Payload/"
30
+
31
+ yp_resourceFile_app = ""
32
+ Dir.entries(yp_resourceFile).each do |sub|
33
+ if sub.end_with?(".app")
34
+ yp_resourceFile_app = yp_resourceFile + sub;
35
+ end
36
+ end
37
+
38
+ if yp_resourceFile_app.length == 0
39
+ yp_log_fail "解析失败,请检查压缩包是否是ipa文件"
40
+ return
41
+ end
42
+
43
+ puts yp_resourceFile_app
44
+
45
+ yp_infoPlistName = "Info.plist"
46
+ yp_infoPlistPath = ""
47
+
48
+ yp_mobileprovisionName = ".mobileprovision"
49
+ yp_mobileprovisionPath = ""
50
+
51
+ Dir.entries(yp_resourceFile_app).each do |sub|
52
+ if sub == yp_infoPlistName
53
+ yp_infoPlistPath = yp_resourceFile_app + "/" + sub;
54
+ end
55
+ if sub.end_with?(yp_mobileprovisionName)
56
+ yp_mobileprovisionPath = yp_resourceFile_app + "/" + sub;
57
+ end
58
+ end
59
+
60
+ puts yp_infoPlistPath
61
+ puts yp_mobileprovisionPath
62
+
63
+ yp_mobileprovisionPlistPath = yp_resourceFile_app + "/" + "mobileprovision.plist"
64
+ # 解析描述文件
65
+ yp_mobileprovisionDatum = `security cms -D -i #{yp_mobileprovisionPath}`
66
+
67
+ puts yp_mobileprovisionPlistPath
68
+
69
+ yp_plistCreateFile = File.new(yp_mobileprovisionPlistPath,"w+")
70
+ yp_plistCreateFile.syswrite(yp_mobileprovisionDatum)
71
+ yp_plistCreateFile.close
72
+
73
+ yp_log_success "============================================================"
74
+
75
+ yp_plist = Plist.parse_xml(yp_mobileprovisionPlistPath)
76
+
77
+ yp_appIDName = yp_plist["AppIDName"]
78
+ yp_applicationIdentifierPrefix = yp_plist["ApplicationIdentifierPrefix"]
79
+ yp_creationDate = yp_plist["CreationDate"]
80
+ yp_platform = yp_plist["Platform"]
81
+ yp_isXcodeManaged = yp_plist["IsXcodeManaged"]
82
+ yp_developerCertificates = yp_plist["DeveloperCertificates"]
83
+ yp_DER_Encoded_Profile = yp_plist["DER-Encoded-Profile"]
84
+ yp_entitlements = yp_plist["Entitlements"]
85
+ yp_expirationDate = yp_plist["ExpirationDate"]
86
+ yp_name = yp_plist["Name"]
87
+ yp_provisionsAllDevices = yp_plist["ProvisionsAllDevices"]
88
+ yp_teamIdentifier = yp_plist["TeamIdentifier"]
89
+ yp_teamName = yp_plist["TeamName"]
90
+ yp_timeToLive = yp_plist["TimeToLive"]
91
+ yp_uUID = yp_plist["UUID"]
92
+ yp_version = yp_plist["Version"]
93
+ yp_provisionedDevices = yp_plist["ProvisionedDevices"]
94
+
95
+ yp_log_success " 输出描述文件embedded.mobileprovision"
96
+ puts yp_mobileprovisionPlistPath
97
+ puts ''
98
+ yp_log_doing " 程序名称:\t#{yp_appIDName}"
99
+ yp_log_doing " 团队名称:\t#{yp_teamName}"
100
+ yp_log_doing " 创建时间:\t#{yp_creationDate}"
101
+ yp_log_fail " 过期时间:\t#{yp_expirationDate}"
102
+ yp_log_doing " 系统平台:\t#{yp_platform}"
103
+
104
+ if yp_provisionedDevices.class == Array
105
+ yp_log_doing " \n udids"
106
+ for device in yp_provisionedDevices
107
+ yp_log_doing " #{device}"
108
+ end
109
+ end
110
+
111
+ # yp_log_msg " 标识符🚀:\t#{yp_applicationIdentifierPrefix}"
112
+ # yp_log_msg " 证书证书:\t#{yp_developerCertificates}"
113
+ # yp_log_msg " 证书证书:\t#{yp_DER_Encoded_Profile}"
114
+ # yp_log_doing " 随便看看:\t#{yp_entitlements}"
115
+ # yp_log_msg " 名字名字:\t#{yp_name}"
116
+ # yp_log_msg " 支持设备:\t#{yp_provisionsAllDevices}"
117
+ # yp_log_msg " 团队标识:\t#{yp_teamIdentifier}"
118
+ # puts " 生存时间:\t#{yp_timeToLive}"
119
+ # puts " uuid🚀🚀:\t#{yp_uUID}"
120
+ # puts " 版本号🚀:\t#{yp_version}"
121
+ puts ''
122
+ yp_log_success "============================================================"
123
+
124
+ # puts yp_infoPlistPath
125
+
126
+ # 解析加密之后的plist文件
127
+ `plutil -convert json #{yp_infoPlistPath}`
128
+ yp_info_plist = `cat #{yp_infoPlistPath}`
129
+ yp_info_plist_hash = JSON.parse(yp_info_plist)
130
+ yp_log_success " 输出Info.plist文件#{yp_infoPlistName}"
131
+ puts yp_infoPlistPath
132
+
133
+ puts ''
134
+ yp_log_doing " CFBundleDisplayName:\t#{yp_info_plist_hash['CFBundleDisplayName']}"
135
+ yp_log_doing " CFBundleIdentifier:\t#{yp_info_plist_hash['CFBundleIdentifier']}"
136
+ yp_log_doing " CFBundleVersion:\t#{yp_info_plist_hash['CFBundleVersion']}"
137
+ # if yp_info_plist_hash['NSContactsUsageDescription']
138
+ # yp_log_doing " NSContactsUsageDescription:\t#{yp_info_plist_hash['NSContactsUsageDescription']}"
139
+ # end
140
+ # if yp_info_plist_hash['NSPhotoLibraryUsageDescription']
141
+ # yp_log_doing " NSPhotoLibraryUsageDescription:\t#{yp_info_plist_hash['NSPhotoLibraryUsageDescription']}"
142
+ # end
143
+ # if yp_info_plist_hash['NSBluetoothAlwaysUsageDescription']
144
+ # yp_log_doing " NSBluetoothAlwaysUsageDescription:\t#{yp_info_plist_hash['NSBluetoothAlwaysUsageDescription']}"
145
+ # end
146
+ # if yp_info_plist_hash['NSLocationAlwaysAndWhenInUseUsageDescription']
147
+ # yp_log_doing " NSLocationAlwaysAndWhenInUseUsageDescription:\t#{yp_info_plist_hash['NSLocationAlwaysAndWhenInUseUsageDescription']}"
148
+ # end
149
+ # if yp_info_plist_hash['NSLocationWhenInUseUsageDescription']
150
+ # yp_log_doing " NSLocationWhenInUseUsageDescription:\t#{yp_info_plist_hash['NSLocationWhenInUseUsageDescription']}"
151
+ # end
152
+ # if yp_info_plist_hash['NSCameraUsageDescription']
153
+ # yp_log_doing " NSCameraUsageDescription:\t#{yp_info_plist_hash['NSCameraUsageDescription']}"
154
+ # end
155
+ # if yp_info_plist_hash['NSLocationAlwaysUsageDescription']
156
+ # yp_log_doing " NSLocationAlwaysUsageDescription:\t#{yp_info_plist_hash['NSLocationAlwaysUsageDescription']}"
157
+ # end
158
+ # if yp_info_plist_hash['NSBluetoothPeripheralUsageDescription']
159
+ # yp_log_doing " NSBluetoothPeripheralUsageDescription:\t#{yp_info_plist_hash['NSBluetoothPeripheralUsageDescription']}"
160
+ # end
161
+ # if yp_info_plist_hash['NSPhotoLibraryAddUsageDescription']
162
+ # yp_log_doing " NSPhotoLibraryAddUsageDescription:\t#{yp_info_plist_hash['NSPhotoLibraryAddUsageDescription']}"
163
+ # end
164
+ # if yp_info_plist_hash['NSMicrophoneUsageDescription']
165
+ # yp_log_doing " NSMicrophoneUsageDescription:\t#{yp_info_plist_hash['NSMicrophoneUsageDescription']}"
166
+ # end
167
+ # if yp_info_plist_hash['NSMotionUsageDescription']
168
+ # yp_log_doing " NSMotionUsageDescription:\t#{yp_info_plist_hash['NSMotionUsageDescription']}"
169
+ # end
170
+ # if yp_info_plist_hash['NSSiriUsageDescription']
171
+ # yp_log_doing " NSSiriUsageDescription:\t#{yp_info_plist_hash['NSSiriUsageDescription']}"
172
+ # end
173
+ # if yp_info_plist_hash['NSCalendarsUsageDescription']
174
+ # yp_log_doing " NSCalendarsUsageDescription:\t#{yp_info_plist_hash['NSCalendarsUsageDescription']}"
175
+ # end
176
+ # if yp_info_plist_hash['NSFaceIDUsageDescription']
177
+ # yp_log_doing " NSFaceIDUsageDescription:\t#{yp_info_plist_hash['NSFaceIDUsageDescription']}"
178
+ # end
179
+ puts ''
180
+ yp_log_success "============================================================"
181
+
182
+ if delete == 1
183
+ yp_log_doing "移除临时目录#{yp_outPath}"
184
+ yp_method_rmdir yp_outPath
185
+ end
186
+
187
+ end
188
+
189
+ end
data/lib/yptools.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+
1
3
  require_relative 'yptools/mgc/yp_makegarbagecode'
2
4
  require_relative 'yptools/help/yp_help'
3
5
  require_relative 'yptools/log/yp_log'
@@ -5,6 +7,7 @@ require_relative 'yptools/install/yp_install'
5
7
  require_relative 'yptools/update/yp_update'
6
8
  require_relative 'yptools/xcodeproj/yp_xcodeproj'
7
9
  require_relative 'yptools/file/yp_updatecreatedate'
10
+ require_relative 'yptools/package/yp_package'
8
11
 
9
12
  class YPTools
10
13
 
@@ -31,6 +34,25 @@ class YPTools
31
34
  yp_log_fail "'yptools mgc ..' 参数缺失"
32
35
  self.help
33
36
  end
37
+ when 'install'
38
+ if argvs.size > 1
39
+ name = argvs[1]
40
+ self.install name
41
+ else
42
+ yp_log_fail "'yptools install ..' 参数缺失"
43
+ self.help
44
+ end
45
+ when 'showipa'
46
+ if argvs.size > 2
47
+ filepath = argvs[1]
48
+ self.package(filepath,0)
49
+ elsif argvs.size > 1
50
+ filepath = argvs[1]
51
+ self.package filepath
52
+ else
53
+ yp_log_fail "'yptools package ..' 参数缺失"
54
+ self.help
55
+ end
34
56
  when 'update'
35
57
  self.update
36
58
  when 'xpj'
@@ -65,6 +87,10 @@ class YPTools
65
87
  YPInstall.install(name)
66
88
  end
67
89
 
90
+ def self.package(filepath, delete = 1)
91
+ YPPackage.analysis(filepath,delete)
92
+ end
93
+
68
94
  def self.update
69
95
  YPUpdate.update
70
96
  end
@@ -81,6 +107,7 @@ end
81
107
  # 垃圾代码自动添加
82
108
  # 自动打包功能
83
109
  # SDK自动生成
110
+ # ipa 自动解析
84
111
 
85
112
  #puts "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
86
113
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yptools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - chenghengsheng
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-20 00:00:00.000000000 Z
11
+ date: 2022-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,6 +95,7 @@ files:
95
95
  - lib/yptools/install/yp_install.rb
96
96
  - lib/yptools/log/yp_log.rb
97
97
  - lib/yptools/mgc/yp_makegarbagecode.rb
98
+ - lib/yptools/package/yp_package.rb
98
99
  - lib/yptools/update/yp_update.rb
99
100
  - lib/yptools/xcodeproj/yp_xcodeproj.rb
100
101
  homepage: https://github.com/HansenCCC/YPTools.git
@@ -116,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  - !ruby/object:Gem::Version
117
118
  version: '0'
118
119
  requirements: []
119
- rubygems_version: 3.0.9
120
+ rubygems_version: 3.0.3.1
120
121
  signing_key:
121
122
  specification_version: 4
122
123
  summary: YPTools!