2017-06-17 78 views
0

我需要自动启动fiddler来解析https请求。如何从命令行作为https代理启动fiddler?

如何强制fiddler生成和使用没有GUI的ssl证书? 有谁知道小提琴手在哪里存放证书? 我可以生成自己的服务器证书并将其设置为没有GUI的小提琴手吗?

我可以在退出模式下启动fiddler。 我可以通过注册表键启用https,但小提琴手无需ssl证书即可启动。 我可以使用makecert.exe创建证书, 但我不知道如何将它设置为没有UI的Fiddler的活动证书。

如果有人帮我解决这个问题,我会非常乐意。

+0

Stack Overflow是用于编程和发展问题的站点。此问题似乎无关紧要,因为它不在“帮助中心”中定义的范围内。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[反向工程堆栈交换](http://reverseengineering.stackexchange.com/)是一个更好的地方。 – jww

+0

我正在开发一个使用提琴手的应用程序。它是应用程序的一部分。我试图找到答案没有太大的成功。我阅读[我可以在这里询问什么主题](https://stackoverflow.com/help/on-topic)。小提琴手是“程序员常用的软件工具”。我没有看到任何差异。 –

+0

顺便说一句,你可以找到很多关于小提琴手在这里的计算器问题。 –

回答

0

没有人帮助我,但我找到了解决方案。

解决方案:

启用捕获HTTPS TRAFIC更新寄存器的值:

reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f 
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f 
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f 

reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f 
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f 
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f 

您需要使用自定义的小提琴手的脚本。它强制fiddler生成ssl证书(请参见下面的脚本CustomRules.js中的主要部分)。如果你不添加它,小提琴手将开始没有ssl证书。

copy /Y /V "<path to file>\CustomRules.js" "%userprofile%\Documents\Fiddler2\Scripts\CustomRules.js" 

注意:不要更改目标文件名。

当小提琴手automaticaly开始在连接到插座127.0.0.1:8888

start "" "%programfiles(x86)%\fiddler2\fiddler.exe" -quiet 

小提琴手会自动创建一个新的SSL证书。 可以下载:

curl.exe -s -k -o <dst file path> "http://127.0.0.1:8888/FiddlerRoot.cer" 

然后,你需要将它添加到受信任的根证书

certutil -addstore -f "Root" <path to certificate> 

现在fiddelr启动并可以捕捉HTTPS TRAFIC期运用CustomRules.js。

Fiddler.bat:

@ECHO OFF 

set currentDir=%~dp0 
cd "%currentDir%" 

set log="%currentDir%\fiddler.log" 
set fiddler_custom_script_dir="%userprofile%\Documents\Fiddler2\Scripts\" 
set fiddler_result_dir="C:\fiddler\" 

echo "Start Fiddler Script" > "%log%" 
echo "Current Dir: %currentDir%" >> "%log%" 
echo "Update values in the register" >> "%log%" 
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f >> "%log%" 
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f >> "%log%" 
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f >> "%log%" 

reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f >> "%log%" 
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f >> "%log%" 
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f >> "%log%" 

echo "Create folder for results: %fiddler_result_dir%" >> "%log%" 
mkdir "%fiddler_result_dir%" >> "%log%" 

echo "Create folder for the custom fiddler's script: %fiddler_custom_script_dir%" >> "%log%" 
mkdir "%fiddler_custom_script_dir%" >> "%log%" 

echo "Copy fiddler script to %fiddler_custom_script_dir%" >> "%log%" 
copy /Y /V "%currentDir%\CustomRules.js" "%fiddler_custom_script_dir%\CustomRules.js" >> "%log%" 

echo "Start fiddler" >> "%log%" 
start "" "%programfiles(x86)%\fiddler2\fiddler.exe" -quiet 

set cert_path="%currentDir%\FiddlerRoot.cer" 
set /a attempt=0 

timeout 10 > nul 

:get_cert 
    set /a attempt+=1 
    timeout 1 > nul 
    echo "Attempt #%attempt% to download fiddeler's certificate" >> "%log%" 
    curl.exe -s -k -o "%cert_path%" "http://127.0.0.1:8888/FiddlerRoot.cer" >> "%log%" 
if not exist "%cert_path%" if %attempt% LSS 300 goto get_cert 

if not exist "%cert_path%" (
    echo "FAIL. Certificate "%cert_path%" doesn't exist. Cannot set trusted certificate" >> "%log%" 
    exit /b -100 
) 

set /a attempt=0 
echo "Try to add certificate to trusted" >> "%log%" 
echo certutil -addstore -f "Root" %cert_path% >> "%log%" 
:import_cert 
    set /a attempt+=1 
    timeout 1 > nul 
    echo "Attempt #%attempt% to download fiddeler's certificate" >> "%log%" 
    certutil -addstore -f "Root" %cert_path% >> "%log%" 
if "%errorlevel%" LSS 0 if %attempt% LSS 3 goto import_cert 

echo "End..." >> "%log%" 
exit /b 0 

CustomRules.js

import System; 
import System.Windows.Forms; 
import Fiddler; 

/** 
This script must be in the folder C:\Users\<USER>\Documents\Fiddler2\Scripts\CustomRules.js 
*/ 
class Handlers 
{ 
    // The Main() function runs everytime your FiddlerScript compiles 
    static function Main() { 
     var today: Date = new Date(); 
     FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today; 
     CertMaker.createRootCert(); 
     //CertMaker.GetRootCertificate().GetPublicKeyString() 
    } 
}