Showing
3 changed files
with
186 additions
and
1 deletions
| 1 | -using System; | 1 | +using LibGit2Sharp; |
| 2 | +using System; | ||
| 2 | using System.Collections.Generic; | 3 | using System.Collections.Generic; |
| 4 | +using System.IO; | ||
| 3 | using System.Linq; | 5 | using System.Linq; |
| 4 | using System.Text; | 6 | using System.Text; |
| 7 | +using System.Text.RegularExpressions; | ||
| 5 | using System.Threading.Tasks; | 8 | using System.Threading.Tasks; |
| 6 | 9 | ||
| 7 | namespace VulnCrawler | 10 | namespace VulnCrawler |
| ... | @@ -9,7 +12,171 @@ namespace VulnCrawler | ... | @@ -9,7 +12,171 @@ namespace VulnCrawler |
| 9 | class Program | 12 | class Program |
| 10 | { | 13 | { |
| 11 | static void Main(string[] args) { | 14 | static void Main(string[] args) { |
| 15 | + //if (Directory.Exists(@"c:\test")) { | ||
| 16 | + // DeleteDirectory(@"c:\test"); | ||
| 12 | 17 | ||
| 18 | + //} | ||
| 19 | + | ||
| 20 | + //var co = new CloneOptions { | ||
| 21 | + // OnCheckoutProgress = CheckoutProcess, | ||
| 22 | + // OnTransferProgress = TransferProgress, | ||
| 23 | + | ||
| 24 | + // CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { Username = "yhackerbv@gmail.com", Password = "@@GUSwjdaf12@@" } | ||
| 25 | + | ||
| 26 | + //}; | ||
| 27 | + | ||
| 28 | + //Repository.Clone("https://github.com/torvalds/linux.git", @"\test\", co); | ||
| 29 | + using (var r = new Repository(@"c:\test2")) { | ||
| 30 | + var commits = r.Commits | ||
| 31 | + .Where(c => Regex.Match(c.Message, @"CVE-20\d\d-\d{4}", RegexOptions.IgnoreCase).Success) | ||
| 32 | + //.Where(c => c.Message.IndexOf("CVE-20", | ||
| 33 | + //StringComparison.CurrentCultureIgnoreCase) >= 0) | ||
| 34 | + .ToList(); | ||
| 35 | + Console.WriteLine(commits.Count); | ||
| 36 | + foreach (var commit in commits) { | ||
| 37 | + | ||
| 38 | + string message = commit.Message; | ||
| 39 | + Console.ForegroundColor = ConsoleColor.Yellow; | ||
| 40 | + Console.WriteLine($"Commit Message: {message}"); | ||
| 41 | + Console.ResetColor(); | ||
| 42 | + foreach (var parent in commit.Parents) { | ||
| 43 | + var patch = r.Diff.Compare<Patch>(parent.Tree, commit.Tree, new CompareOptions { }); | ||
| 44 | + | ||
| 45 | + var entrys = patch.Where(e => e.Path.EndsWith(".py")); | ||
| 46 | + foreach (var entry in entrys) { | ||
| 47 | + | ||
| 48 | + Console.ForegroundColor = ConsoleColor.Blue; | ||
| 49 | + Console.WriteLine($"status: {entry.Status.ToString()}"); | ||
| 50 | + Console.WriteLine($"added: {entry.LinesAdded.ToString()}, deleted: {entry.LinesDeleted.ToString()}"); | ||
| 51 | + Console.WriteLine($"old path: {entry.OldPath.ToString()}, new path: {entry.Path.ToString()}"); | ||
| 52 | + Console.ResetColor(); | ||
| 53 | + var oldOid = entry.OldOid; | ||
| 54 | + Blob oldBlob = r.Lookup<Blob>(oldOid); | ||
| 55 | + string oldContent = oldBlob.GetContentText(); | ||
| 56 | + | ||
| 57 | + var newOid = entry.Oid; | ||
| 58 | + Blob newBlob = r.Lookup<Blob>(newOid); | ||
| 59 | + string newContent = newBlob.GetContentText(); | ||
| 60 | + | ||
| 61 | + | ||
| 62 | + | ||
| 63 | + //ContentChanges changes = r.Diff.Compare(oldBlob, newBlob); | ||
| 64 | + | ||
| 65 | + // Console.WriteLine(changes.Patch); | ||
| 66 | + | ||
| 67 | + // @@ -290,8 + 290,12 @@ def i | ||
| 68 | + // @@ -290,8 +290,12 @@ def is_safe_url(url, host=None): | ||
| 69 | + var regs = Regex.Matches(entry.Patch, @"@@ \-(?<oldStart>\d+),(?<oldLines>\d+) \+(?<newStart>\d+),(?<newLines>\d+) @@ def (?<methodName>\w+)"); | ||
| 70 | + | ||
| 71 | + | ||
| 72 | + | ||
| 73 | + if (regs.Count > 0) { | ||
| 74 | + Console.BackgroundColor = ConsoleColor.DarkBlue; | ||
| 75 | + Console.WriteLine($"Old Content: \n{oldContent}"); | ||
| 76 | + Console.ResetColor(); | ||
| 77 | + | ||
| 78 | + Console.BackgroundColor = ConsoleColor.DarkMagenta; | ||
| 79 | + Console.WriteLine($"New Content: \n{newContent}"); | ||
| 80 | + Console.ResetColor(); | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + Console.BackgroundColor = ConsoleColor.DarkRed; | ||
| 84 | + | ||
| 85 | + Console.WriteLine($"Patched: \n{entry.Patch}"); | ||
| 86 | + | ||
| 87 | + Console.ResetColor(); | ||
| 88 | + Console.WriteLine("-----------"); | ||
| 89 | + Console.WriteLine(regs.Count); | ||
| 90 | + | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + foreach (var reg in regs) { | ||
| 94 | + var match = reg as Match; | ||
| 95 | + int.TryParse(match.Groups["oldStart"].Value, out int oldStart); | ||
| 96 | + int.TryParse(match.Groups["oldLines"].Value, out int oldLines); | ||
| 97 | + string methodName = match.Groups["methodName"].Value; | ||
| 98 | + | ||
| 99 | + Console.WriteLine(match.Groups["oldStart"].Value); | ||
| 100 | + Console.WriteLine(match.Groups["oldLines"].Value); | ||
| 101 | + Console.WriteLine(match.Groups["newStart"].Value); | ||
| 102 | + Console.WriteLine(match.Groups["newLines"].Value); | ||
| 103 | + Console.WriteLine(match.Groups["methodName"].Value); | ||
| 104 | + StringBuilder oldBuilder = new StringBuilder(); | ||
| 105 | + using (var reader = new StreamReader(oldBlob.GetContentStream())) { | ||
| 106 | + int readCount = 0; | ||
| 107 | + while (!reader.EndOfStream && readCount <= oldStart + oldLines) { | ||
| 108 | + string line = reader.ReadLine(); | ||
| 109 | + | ||
| 110 | + if (readCount++ >= oldStart) { | ||
| 111 | + oldBuilder.AppendLine(line); | ||
| 112 | + } | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + //bool found = false; | ||
| 116 | + //while (!reader.EndOfStream) { | ||
| 117 | + | ||
| 118 | + // string line = reader.ReadLine(); | ||
| 119 | + | ||
| 120 | + // if (line.Contains(string.Join("def ", methodName))) { | ||
| 121 | + | ||
| 122 | + // } | ||
| 123 | + | ||
| 124 | + // if (found) { | ||
| 125 | + | ||
| 126 | + // } | ||
| 127 | + //} | ||
| 128 | + } | ||
| 129 | + | ||
| 130 | + string replace = Regex.Replace(oldBuilder.ToString(), "\t", ""); | ||
| 131 | + | ||
| 132 | + Console.WriteLine($"Builder: \n{replace}"); | ||
| 133 | + | ||
| 134 | + } | ||
| 135 | + Console.WriteLine("-----------"); | ||
| 136 | + Console.ResetColor(); | ||
| 137 | + } | ||
| 138 | + //Console.WriteLine(patch.Content); | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + Console.WriteLine($"Commit {commit.Sha} 추출 완료"); | ||
| 142 | + // Task.Delay(1000).Wait(); | ||
| 143 | + //break; | ||
| 144 | + } | ||
| 145 | + } | ||
| 13 | } | 146 | } |
| 147 | + public static void DeleteDirectory(string targetDir) { | ||
| 148 | + File.SetAttributes(targetDir, FileAttributes.Normal); | ||
| 149 | + | ||
| 150 | + string[] files = Directory.GetFiles(targetDir); | ||
| 151 | + string[] dirs = Directory.GetDirectories(targetDir); | ||
| 152 | + | ||
| 153 | + foreach (string file in files) { | ||
| 154 | + File.SetAttributes(file, FileAttributes.Normal); | ||
| 155 | + File.Delete(file); | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + foreach (string dir in dirs) { | ||
| 159 | + DeleteDirectory(dir); | ||
| 160 | + } | ||
| 161 | + | ||
| 162 | + Directory.Delete(targetDir, false); | ||
| 163 | + } | ||
| 164 | + public static bool TransferProgress(TransferProgress progress) { | ||
| 165 | + int totalBytes = progress.TotalObjects; | ||
| 166 | + int receivedBytes = progress.ReceivedObjects; | ||
| 167 | + long receivedTotal = progress.ReceivedBytes; | ||
| 168 | + double received = progress.ReceivedBytes / 1000000; | ||
| 169 | + double percent = ((double)receivedBytes / (double)totalBytes) * 10; | ||
| 170 | + | ||
| 171 | + Console.WriteLine($"진행률: {percent.ToString("P2")}, 남은 파일: {receivedBytes} of {totalBytes}"); //, 받은 용량: {received.ToString()}MB"); | ||
| 172 | + Console.ForegroundColor = ConsoleColor.DarkGreen; | ||
| 173 | + return true; | ||
| 174 | + } | ||
| 175 | + | ||
| 176 | + public static void CheckoutProcess(string path, int completedSteps, int totalSteps) { | ||
| 177 | + Console.WriteLine($"{completedSteps}, {totalSteps}, {path}"); | ||
| 178 | + } | ||
| 179 | + | ||
| 180 | + | ||
| 14 | } | 181 | } |
| 15 | } | 182 | } | ... | ... |
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | 2 | <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
| 3 | + <Import Project="..\packages\LibGit2Sharp.NativeBinaries.1.0.210\build\net461\LibGit2Sharp.NativeBinaries.props" Condition="Exists('..\packages\LibGit2Sharp.NativeBinaries.1.0.210\build\net461\LibGit2Sharp.NativeBinaries.props')" /> | ||
| 3 | <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | 4 | <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> |
| 4 | <PropertyGroup> | 5 | <PropertyGroup> |
| 5 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | 6 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
| ... | @@ -11,6 +12,8 @@ | ... | @@ -11,6 +12,8 @@ |
| 11 | <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> | 12 | <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> |
| 12 | <FileAlignment>512</FileAlignment> | 13 | <FileAlignment>512</FileAlignment> |
| 13 | <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> | 14 | <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> |
| 15 | + <NuGetPackageImportStamp> | ||
| 16 | + </NuGetPackageImportStamp> | ||
| 14 | </PropertyGroup> | 17 | </PropertyGroup> |
| 15 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | 18 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
| 16 | <PlatformTarget>AnyCPU</PlatformTarget> | 19 | <PlatformTarget>AnyCPU</PlatformTarget> |
| ... | @@ -32,6 +35,9 @@ | ... | @@ -32,6 +35,9 @@ |
| 32 | <WarningLevel>4</WarningLevel> | 35 | <WarningLevel>4</WarningLevel> |
| 33 | </PropertyGroup> | 36 | </PropertyGroup> |
| 34 | <ItemGroup> | 37 | <ItemGroup> |
| 38 | + <Reference Include="LibGit2Sharp, Version=0.25.0.0, Culture=neutral, PublicKeyToken=7cbde695407f0333, processorArchitecture=MSIL"> | ||
| 39 | + <HintPath>..\packages\LibGit2Sharp.0.25.0\lib\netstandard2.0\LibGit2Sharp.dll</HintPath> | ||
| 40 | + </Reference> | ||
| 35 | <Reference Include="System" /> | 41 | <Reference Include="System" /> |
| 36 | <Reference Include="System.Core" /> | 42 | <Reference Include="System.Core" /> |
| 37 | <Reference Include="System.Xml.Linq" /> | 43 | <Reference Include="System.Xml.Linq" /> |
| ... | @@ -47,6 +53,13 @@ | ... | @@ -47,6 +53,13 @@ |
| 47 | </ItemGroup> | 53 | </ItemGroup> |
| 48 | <ItemGroup> | 54 | <ItemGroup> |
| 49 | <None Include="App.config" /> | 55 | <None Include="App.config" /> |
| 56 | + <None Include="packages.config" /> | ||
| 50 | </ItemGroup> | 57 | </ItemGroup> |
| 51 | <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | 58 | <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
| 59 | + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> | ||
| 60 | + <PropertyGroup> | ||
| 61 | + <ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText> | ||
| 62 | + </PropertyGroup> | ||
| 63 | + <Error Condition="!Exists('..\packages\LibGit2Sharp.NativeBinaries.1.0.210\build\net461\LibGit2Sharp.NativeBinaries.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\LibGit2Sharp.NativeBinaries.1.0.210\build\net461\LibGit2Sharp.NativeBinaries.props'))" /> | ||
| 64 | + </Target> | ||
| 52 | </Project> | 65 | </Project> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
Vulnerablity_DB/VulnCrawler/packages.config
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<packages> | ||
| 3 | + <package id="LibGit2Sharp" version="0.25.0" targetFramework="net461" /> | ||
| 4 | + <package id="LibGit2Sharp.NativeBinaries" version="1.0.210" targetFramework="net461" /> | ||
| 5 | +</packages> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment