노현종

Merge

...@@ -219,26 +219,12 @@ namespace VulnUserCodeAnalyzer ...@@ -219,26 +219,12 @@ namespace VulnUserCodeAnalyzer
219 var repoBytes = Encoding.Unicode.GetBytes(repository); 219 var repoBytes = Encoding.Unicode.GetBytes(repository);
220 var repoBase64 = Convert.ToBase64String(repoBytes); 220 var repoBase64 = Convert.ToBase64String(repoBytes);
221 221
222 - var repoDir = new DirectoryInfo($@"C:\Repo\{repoBase64}"); 222 + foreach (var (userName, repository) in reposits)
223 - if (repoDir.Exists)
224 { 223 {
225 - continue; 224 + Console.WriteLine($"{userName}, {repository}");
226 } 225 }
227 - repoDir.Create();
228 - Console.WriteLine($"Clone... Path : {repoDir.FullName}, Url : {repository}");
229 - Clone(repoDir.FullName, repository);
230 226
231 - repoPath = repoDir.FullName; 227 + Console.ReadLine();
232 - userId = userName;
233 - }
234 - if (!string.IsNullOrWhiteSpace(repoPath) && !string.IsNullOrWhiteSpace(userId))
235 - {
236 - break;
237 - }
238 - repoWatch.Restart();
239 - }
240 - //Console.WriteLine("엔터를 누르세요");
241 - //Console.ReadLine();
242 228
243 /* hashDict = 사용된 사용자 함수 정보 */ 229 /* hashDict = 사용된 사용자 함수 정보 */
244 var hashDict = new Dictionary<int, HashSet<VulnAbstractCrawler.UserBlock>>(); 230 var hashDict = new Dictionary<int, HashSet<VulnAbstractCrawler.UserBlock>>();
...@@ -297,7 +283,7 @@ namespace VulnUserCodeAnalyzer ...@@ -297,7 +283,7 @@ namespace VulnUserCodeAnalyzer
297 * CVE를 가지고 있다고 인정하는 프로그램 정책 때문 283 * CVE를 가지고 있다고 인정하는 프로그램 정책 때문
298 */ 284 */
299 var searchedCveHashList = VulnRDS.SelectVulnbyCve(cve); 285 var searchedCveHashList = VulnRDS.SelectVulnbyCve(cve);
300 - Console.WriteLine($"CVE:{cve}, Received Count : {searchedCveHashList.Count()}"); 286 + Console.WriteLine($"cve:{cve}, {searchedCveHashList.Count()}개 가져옴");
301 foreach (var s in searchedCveHashList) 287 foreach (var s in searchedCveHashList)
302 { 288 {
303 vulnHashSet.Add(s); 289 vulnHashSet.Add(s);
...@@ -311,7 +297,7 @@ namespace VulnUserCodeAnalyzer ...@@ -311,7 +297,7 @@ namespace VulnUserCodeAnalyzer
311 /* 본격적인 취약점 매칭 부분 */ 297 /* 본격적인 취약점 매칭 부분 */
312 foreach (var vulnSet in vulnDict) 298 foreach (var vulnSet in vulnDict)
313 { 299 {
314 - Console.WriteLine($"-----cve:{vulnSet.Key}"); 300 + //Console.WriteLine($"-----cve:{vulnSet.Key}");
315 bool match = false; 301 bool match = false;
316 foreach (var vuln in vulnSet.Value) 302 foreach (var vuln in vulnSet.Value)
317 { 303 {
...@@ -323,7 +309,6 @@ namespace VulnUserCodeAnalyzer ...@@ -323,7 +309,6 @@ namespace VulnUserCodeAnalyzer
323 { 309 {
324 if (hashDict.ContainsKey(vuln.LenFunc)) 310 if (hashDict.ContainsKey(vuln.LenFunc))
325 { 311 {
326 - //Console.WriteLine("찾음");
327 /* Bloom Filter는 아쉽게도 포함 여부만 알 수 있기에 312 /* Bloom Filter는 아쉽게도 포함 여부만 알 수 있기에
328 * 포함되었음을 알았다면 검색해서 정보를 구한다. */ 313 * 포함되었음을 알았다면 검색해서 정보를 구한다. */
329 var userBlock = hashDict[vuln.LenFunc].FirstOrDefault(b => b.Hash == vuln.BlockHash); 314 var userBlock = hashDict[vuln.LenFunc].FirstOrDefault(b => b.Hash == vuln.BlockHash);
...@@ -352,13 +337,13 @@ namespace VulnUserCodeAnalyzer ...@@ -352,13 +337,13 @@ namespace VulnUserCodeAnalyzer
352 /* 취약점 레코드가 전부 있어야 CVE 찾음 인정 */ 337 /* 취약점 레코드가 전부 있어야 CVE 찾음 인정 */
353 if (match) 338 if (match)
354 { 339 {
355 - Console.WriteLine($"Matched CVE : {vulnSet.Key}"); 340 + Console.WriteLine($"CVE 찾음 {vulnSet.Key}");
356 /* 찾았으면 cve값을 기록함 밑에서 찾은 cve 정보 전송하기 위해 */ 341 /* 찾았으면 cve값을 기록함 밑에서 찾은 cve 정보 전송하기 위해 */
357 findCveList.Add(vulnSet.Key); 342 findCveList.Add(vulnSet.Key);
358 } 343 }
359 else 344 else
360 { 345 {
361 - Console.WriteLine("Not"); 346 + Console.WriteLine("없음");
362 } 347 }
363 } 348 }
364 stopwatch.Stop(); 349 stopwatch.Stop();
...@@ -366,10 +351,8 @@ namespace VulnUserCodeAnalyzer ...@@ -366,10 +351,8 @@ namespace VulnUserCodeAnalyzer
366 var hours = stopwatch.Elapsed.Hours; 351 var hours = stopwatch.Elapsed.Hours;
367 var minutes = stopwatch.Elapsed.Minutes; 352 var minutes = stopwatch.Elapsed.Minutes;
368 var seconds = stopwatch.Elapsed.Seconds; 353 var seconds = stopwatch.Elapsed.Seconds;
369 - Console.WriteLine($"Elapsed Time : {hours.ToString("00")}:{minutes.ToString("00")}:{seconds.ToString("00")}"); 354 + Console.WriteLine($"경과 시간 {hours.ToString("00")}:{minutes.ToString("00")}:{seconds.ToString("00")}");
370 - Console.WriteLine($"Matched CVE Count : {findCveList.Count}"); 355 + Console.WriteLine($"찾은 CVE 개수 : {findCveList.Count}");
371 - //Console.ReadLine();
372 -
373 var yearMatch = new Regex(@"CVE-(\d{4})-(\d+)"); 356 var yearMatch = new Regex(@"CVE-(\d{4})-(\d+)");
374 foreach (var cve in findCveList) 357 foreach (var cve in findCveList)
375 { 358 {
...@@ -423,9 +406,9 @@ namespace VulnUserCodeAnalyzer ...@@ -423,9 +406,9 @@ namespace VulnUserCodeAnalyzer
423 406
424 var urlBytes = Convert.FromBase64String(findCveDict[cve].FirstOrDefault().Url); 407 var urlBytes = Convert.FromBase64String(findCveDict[cve].FirstOrDefault().Url);
425 string url = Encoding.Unicode.GetString(urlBytes); 408 string url = Encoding.Unicode.GetString(urlBytes);
426 - //Console.WriteLine(findCveDict[cve].FirstOrDefault().Path.Replace(repoPath, ""));
427 409
428 - var vulnDetail = new VulnRDS.Vuln_detail 410 + /* DB 전송 */
411 + VulnRDS.InsertVulnDetail(new VulnRDS.Vuln_detail
429 { 412 {
430 CveName = data.Code, 413 CveName = data.Code,
431 Type = type, 414 Type = type,
...@@ -434,18 +417,13 @@ namespace VulnUserCodeAnalyzer ...@@ -434,18 +417,13 @@ namespace VulnUserCodeAnalyzer
434 CveDetail = data.Detail, 417 CveDetail = data.Detail,
435 Publish_date = data.Publish_Date.ToString("yyyy-MM-dd"), 418 Publish_date = data.Publish_Date.ToString("yyyy-MM-dd"),
436 Update_date = data.Update_Date.ToString("yyyy-MM-dd"), 419 Update_date = data.Update_Date.ToString("yyyy-MM-dd"),
437 - UserName = userId, 420 + UserName = "samsung",
438 Url = url, 421 Url = url,
439 - FileName = findCveDict[cve].FirstOrDefault().Path.Replace(repoPath, ""), 422 + FileName = findCveDict[cve].FirstOrDefault().Path.Replace(@"C:\code", ""),
440 FuncName = findCveDict[cve].FirstOrDefault().FuncName, 423 FuncName = findCveDict[cve].FirstOrDefault().FuncName,
441 Product = data.Type, 424 Product = data.Type,
442 - }; 425 + });
443 - 426 + Console.WriteLine("추가 완료");
444 - /* DB 전송 */
445 - VulnRDS.InsertVulnDetail(vulnDetail);
446 -
447 - Console.WriteLine($"Added CVE: {vulnDetail.CveName}, Type: {vulnDetail.Type}, CVSS: {vulnDetail.Level}");
448 - }
449 } 427 }
450 } 428 }
451 } 429 }
......