中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站口碑比較好的大公司百度聯(lián)系電話多少

做網(wǎng)站口碑比較好的大公司,百度聯(lián)系電話多少,建設(shè)一個網(wǎng)站價格,在線網(wǎng)頁制作印章手寫HTTP抓包工具——可視化界面 項(xiàng)目描述語言golang可視化fynev2功能代理抓包、重發(fā)、記錄 目錄 1. 示例1.1 主界面1.2 開啟反向代理1.3 抓包1.4 歷史記錄1.5 重發(fā) 2. 核心代碼2.1 GUI2.1 抓包 3. 結(jié)語3.1 傳送門 1. 示例 1.1 主界面 1.2 開啟反向代理 1.3 抓包 1.4 歷史記錄…

手寫HTTP抓包工具——可視化界面

項(xiàng)目描述
語言golang
可視化fynev2
功能代理抓包、重發(fā)、記錄

目錄

  • 1. 示例
    • 1.1 主界面
    • 1.2 開啟反向代理
    • 1.3 抓包
    • 1.4 歷史記錄
    • 1.5 重發(fā)
  • 2. 核心代碼
    • 2.1 GUI
    • 2.1 抓包
  • 3. 結(jié)語
    • 3.1 傳送門

1. 示例

1.1 主界面

在這里插入圖片描述

1.2 開啟反向代理

在這里插入圖片描述

1.3 抓包

在這里插入圖片描述

1.4 歷史記錄

在這里插入圖片描述

1.5 重發(fā)

在這里插入圖片描述

2. 核心代碼

2.1 GUI

func (cf *Config) CreateUi() {myApp := app.New()mainWin := myApp.NewWindow("Request Handling Tool v1.0")// 創(chuàng)建數(shù)據(jù)綁定對象cf.MainWin = &mainWin// 創(chuàng)建可以多行輸入的 Entry 并綁定數(shù)據(jù)requestEntry := widget.NewEntryWithData(types.RequestData)requestEntry.MultiLine = truerequestEntry.Wrapping = fyne.TextWrapBreakresponseEntry := widget.NewEntryWithData(types.ResponseData)responseEntry.MultiLine = trueresponseEntry.Wrapping = fyne.TextWrapBreakErrEntry := widget.NewEntryWithData(types.ErrData)ErrEntry.MultiLine = trueErrEntry.Wrapping = fyne.TextWrapBreakhisreq1Entry := widget.NewEntryWithData(types.History_RequestD)hisreq1Entry.MultiLine = truehisreq1Entry.Wrapping = fyne.TextWrapBreakhisres2Entry := widget.NewEntryWithData(types.History_ResponseD)hisres2Entry.MultiLine = truehisres2Entry.Wrapping = fyne.TextWrapBreakrepeat_req1Entry := widget.NewEntryWithData(types.Repeat_RequestD)repeat_req1Entry.MultiLine = truerepeat_req1Entry.Wrapping = fyne.TextWrapBreakrepeat_res2Entry := widget.NewEntryWithData(types.Repeat_ResponseD)repeat_res2Entry.MultiLine = truerepeat_res2Entry.Wrapping = fyne.TextWrapBreaktargetAddrEntry := widget.NewEntryWithData(types.TargetAD)types.TargetAD.Set("127.0.0.1:3443")serverAddrEntry := widget.NewEntryWithData(types.ServerAD)types.ServerAD.Set("0.0.0.0:8089")targetPMEntry := widget.NewEntryWithData(types.TargetPM)types.TargetPM.Set("https")targetAddrLabel := widget.NewLabel("TargetAddr:")serverAddrLabel := widget.NewLabel("ServerAddr:")targetPMLabel := widget.NewLabel("TargetPM:")// 設(shè)置請求和響應(yīng) Entry 控件鋪滿父容器check1 := widget.NewCheckWithData("AutoSend", types.AutoSData)check1.SetChecked(true)check_history := widget.NewCheckWithData("HistoryOK", types.HistoryOK)check_history.SetChecked(true)sendButton := widget.NewButton("Send", func() {cf.GUI_Send()})send2Button := widget.NewButton("SendRAW", func() {cf.GUI_Send_repeat()})discardButton := widget.NewButton("Discard", func() {cf.GUI_Discard()})nextButton := widget.NewButton("Next", func() {cf.GUI_Next()})sRepeatButton := widget.NewButton(">>Repeat", func() {cf.GUI_sRepeat()})clearButton := widget.NewButton("ClearHistory", func() {cf.GUI_Clear()})_history_dir_Button := widget.NewButton("ClearHistoryDirFile", func() {cf.GUI_history_dir_Button()})nextButton.Disable()sendButton.Disable()discardButton.Disable()cf.Sendbt = sendButtoncf.Nextbt = nextButtoncf.Discardbt = discardButtonOKconfig := widget.NewButton("Save", func() {cf.GUI_Save_config()})OpenProxyconfig := widget.NewButton("OpenProxy", func() {cf.GUI_OpenProxyconfig()})CloseProxyconfig := widget.NewButton("CloseProxy", func() {cf.GUI_CloseProxyconfig()})CloseProxyconfig.Disable()OKconfig.Disable()cf.OpenProxybt = OpenProxyconfigcf.CloseProxybt = CloseProxyconfigcf.Savebt = OKconfig// 創(chuàng)建 Grid 布局grid_capture := container.NewGridWithColumns(3,container.NewStack(requestEntry),container.NewStack(responseEntry),container.NewVBox(check1, sendButton, discardButton, nextButton, sRepeatButton),)grid_config := container.NewGridWithColumns(3,container.NewVBox(container.NewVBox(targetAddrLabel, targetAddrEntry),container.NewVBox(serverAddrLabel, serverAddrEntry),container.NewVBox(targetPMLabel, targetPMEntry)),container.NewVBox(check_history, OKconfig, OpenProxyconfig, CloseProxyconfig, clearButton, _history_dir_Button),container.NewStack(ErrEntry),)table := widget.NewTable(// 返回表格的行數(shù)和列數(shù)func() (int, int) {return len(types.History_Data), len(types.History_Data[0]) // 第三列為按鈕},// 返回每個單元格的 CanvasObjectfunc() fyne.CanvasObject {entry := widget.NewEntry()ccButton := widget.NewButton("Select", nil)repeatButton := widget.NewButton(">>Repeat", nil)buttonContainer := container.NewGridWithColumns(2, ccButton, repeatButton)en1 := container.NewVBox(entry, buttonContainer)return en1},// 更新每個單元格的內(nèi)容func(id widget.TableCellID, obj fyne.CanvasObject) {en1 := obj.(*fyne.Container)entry := en1.Objects[0].(*widget.Entry)buttonContainer := en1.Objects[1].(*fyne.Container)ccButton := buttonContainer.Objects[0].(*widget.Button)repeatButton := buttonContainer.Objects[1].(*widget.Button)if id.Col <= 1 { // 前兩列顯示數(shù)據(jù)entry.Show()           // 顯示 EntrybuttonContainer.Hide() // 隱藏按鈕容器entry.SetText(types.History_Data[id.Row][id.Col])} else if id.Col > 1 { // 第三列顯示按鈕entry.Hide()           // 隱藏 EntrybuttonContainer.Show() // 顯示按鈕容器ccButton.OnTapped = func(row int) func() {return func() {cf.GUI_Table_bt(row)}}(id.Row)repeatButton.OnTapped = func(row int) func() {return func() {cf.GUI_Table_Repeat_bt(row)}}(id.Row)}})cf.Table_history = table// 創(chuàng)建帶有垂直滾動條的容器tableContainer := container.NewVScroll(table)// 創(chuàng)建histroy布局grid_history := container.NewGridWithRows(2,container.NewStack(tableContainer),container.NewGridWithColumns(2,container.NewStack(hisreq1Entry),container.NewStack(hisres2Entry),),)grid_repeat := container.NewGridWithColumns(3,container.NewStack(repeat_req1Entry),container.NewStack(repeat_res2Entry),container.NewVBox(send2Button),)tab2 := container.NewTabItem("capture", grid_capture)tab1 := container.NewTabItem("config", grid_config)tab3 := container.NewTabItem("history", grid_history)tab4 := container.NewTabItem("repeat", grid_repeat)tabContainer := container.NewAppTabs(tab1, tab2, tab3, tab4)tabContainer.SetTabLocation(container.TabLocationTop)// 布局// 攔截關(guān)閉事件mainWin.SetCloseIntercept(func() {mainWin.Hide() // 隱藏窗口})mainWin.SetContent(tabContainer)// 添加窗口大小變化監(jiān)聽器mainWin.Resize(fyne.NewSize(800, 600))mainWin.ShowAndRun()}

2.1 抓包

func Run(conf *Config) {for {select {case <-conf.RunTH:types.ErrMainData += fmt.Sprintln("[+] Close-Proxy-OK")// fmt.Println(1)returndefault:// fmt.Println(0)}if conf.ServerAddr == "" || conf.TargetAddr == "" || conf.TargetPM == "" || conf.Nextbt == nil {time.Sleep(2 * time.Second)types.ErrMainData += fmt.Sprintln("[-] Parameters not saved or initialization not completed")} else {break}}Init(conf)// 創(chuàng)建 HTTP 處理函數(shù)的中間件middleware := func(http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {types.CHT <- truehisD1 := []string{}hisD2 := []string{}defer func() { <-types.CHT }()// 獲取原始請求的字符串表示dump, err := httputil.DumpRequest(r, true)utils.HandleErr(utils.GCFN(), err)dump, err = conf.HostFix(dump)utils.HandleErr(utils.GCFN(), err)if ok, err := types.HistoryOK.Get(); ok {utils.HandleErr(utils.GCFN(), err)hisD1 = append(hisD1, string(dump))hisD2 = append(hisD2, fmt.Sprintf("%v %v", r.Method, r.URL.String()))}// // 打印原始請求字符串// fmt.Printf("\033[32m%s\033[0m\n", dump)if ok, err := types.AutoSData.Get(); !ok {utils.HandleErr(utils.GCFN(), err)err = types.RequestData.Set(string(dump))utils.HandleErr(utils.GCFN(), err)conf.Cf_Enable()CC:for {select {case <-types.SendCH:rdata, err := types.RequestData.Get()utils.HandleErr(utils.GCFN(), err)// 將 rdata 解析成 *http.Request 對象r, err = http.ReadRequest(bufio.NewReader(bytes.NewBufferString(rdata)))utils.HandleErr(utils.GCFN(), err)break CCcase <-types.DiscardCH:returndefault:}time.Sleep(100 * time.Millisecond)}} else {err = types.RequestData.Set("")utils.HandleErr(utils.GCFN(), err)err = types.ResponseData.Set("")utils.HandleErr(utils.GCFN(), err)}recorder := httptest.NewRecorder()recorder.Header().Add("Waf", "Coraza-v3")// 使用反向代理轉(zhuǎn)發(fā)請求conf.Proxy.ServeHTTP(recorder, r)// 創(chuàng)建 http.Response 對象response := recorder.Result()// 使用 httputil.DumpResponse 來獲取完整響應(yīng)包res1, err := httputil.DumpResponse(response, true)utils.HandleErr(utils.GCFN(), err)if ok, _ := types.HistoryOK.Get(); ok {hisD1 = append(hisD1, string(res1))ff := utils.Wrtie_history_response(hisD1, conf.TargetAddr)hisD2 = append(hisD2, ff)types.History_Data = append(types.History_Data, hisD2)}if ok, err := types.AutoSData.Get(); !ok {utils.HandleErr(utils.GCFN(), err)err = types.ResponseData.Set(string(res1))utils.HandleErr(utils.GCFN(), err)}conf.TxProcessResponse(recorder, w, r)if ok, err := types.AutoSData.Get(); !ok {utils.HandleErr(utils.GCFN(), err)BB:for {select {case <-types.NextCH:err = types.RequestData.Set("")utils.HandleErr(utils.GCFN(), err)err = types.ResponseData.Set("")utils.HandleErr(utils.GCFN(), err)break BBdefault:}time.Sleep(100 * time.Millisecond)}} else {err = types.RequestData.Set("")utils.HandleErr(utils.GCFN(), err)err = types.ResponseData.Set("")utils.HandleErr(utils.GCFN(), err)conf.Cf_Disable()}})}server := &http.Server{Addr:    conf.ServerAddr,Handler: middleware(http.DefaultServeMux), // 使用中間件包裹默認(rèn)的 ServeMux}go func() {types.ErrMainData += fmt.Sprintf("[+] Starting server at %v\n", conf.ServerAddr)if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {utils.HandleErr(utils.GCFN(), err)}}()AA:for {select {case <-conf.RunTH:break AAdefault:time.Sleep(500 * time.Millisecond)}}// 通過 context 實(shí)現(xiàn)優(yōu)雅關(guān)閉ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)defer cancel()if err := server.Shutdown(ctx); err != nil {types.ErrMainData += fmt.Sprintf("[-] Server shutdown failed:%v\n", err)if err := server.Close(); err != nil {types.ErrMainData += fmt.Sprintf("[!] Server Close failed:%v\n", err)} else {types.ErrMainData += fmt.Sprintln("[+] Close-Proxy-OK")}} else {types.ErrMainData += fmt.Sprintln("[+] Close-Proxy-OK")}}

3. 結(jié)語

3.1 傳送門

MiniBurp.exe(僅供學(xué)習(xí))

http://www.risenshineclean.com/news/29186.html

相關(guān)文章:

  • 知果果網(wǎng)站誰做的軟文編輯
  • 淘外網(wǎng)站怎么做網(wǎng)站怎么申請?jiān)趺醋?/a>
  • 個人做購物網(wǎng)站犯法嗎交換鏈接平臺
  • 做網(wǎng)站用小公司還是大公司2022最火營銷方案
  • 2_網(wǎng)站建設(shè)的一般步驟包含哪些刷seo快速排名
  • 有沒有專門做av字幕的網(wǎng)站百度法務(wù)部聯(lián)系方式
  • 做網(wǎng)站具體指什么百度招商客服電話
  • 隨州網(wǎng)站seo常州百度推廣代理
  • 網(wǎng)站模板jsp設(shè)計(jì)公司排名前十強(qiáng)
  • 廠家批發(fā)網(wǎng)站平臺傳播易廣告投放平臺
  • 企業(yè)建設(shè)網(wǎng)站的好處有哪些常用的營銷方法和手段
  • 自己制作視頻的app泉州seo培訓(xùn)
  • 提供微網(wǎng)站建設(shè)購物網(wǎng)站推廣方案
  • 物聯(lián)網(wǎng)手機(jī)app開發(fā)軟件天津seo方案
  • 星際網(wǎng)絡(luò)泰安網(wǎng)絡(luò)公司網(wǎng)站頁面優(yōu)化方法
  • 臺州網(wǎng)站搜索優(yōu)化友情鏈接工具
  • 三亞制作網(wǎng)站軍事新聞頭條最新消息
  • 北票網(wǎng)站建設(shè)黃金網(wǎng)站軟件免費(fèi)
  • 做娛樂性手機(jī)網(wǎng)站推廣資源網(wǎng)
  • 直播間 網(wǎng)站建設(shè)app關(guān)鍵詞推廣
  • 淘寶客如何做網(wǎng)站今日新聞頭條新聞
  • 聚財三個字公司名字哪個網(wǎng)站學(xué)seo是免費(fèi)的
  • 新網(wǎng)站快速提高排名互換鏈接的方法
  • 如何做網(wǎng)站對比網(wǎng)站優(yōu)化排名網(wǎng)站
  • 網(wǎng)站建設(shè)實(shí)戰(zhàn)視頻教程桂林網(wǎng)站設(shè)計(jì)制作
  • 報考建設(shè)八大員官方網(wǎng)站seo推廣軟件哪個好
  • wordpress 文章列表只顯示標(biāo)題外貿(mào)seo
  • 哪個網(wǎng)站做任務(wù)能賺錢我要看今日頭條
  • 廈門廣告公司有哪些aso優(yōu)化的主要內(nèi)容為
  • wordpress修改谷歌外貿(mào)seo公司