Post Reply 
Proxomitron Reborn
May. 19, 2018, 07:34 PM (This post was last modified: Apr. 23, 2024 04:51 AM by amy.)
Post: #1
Proxomitron Reborn
I am pleased to announce that the project I started nearly a year ago, to decompile The Proxomitron completely, analyse and rebuild it, is nearing its end! Thumbs Up

I do not have Scott's source nor environment, but with careful analysis, was able to reproduce a very similar binary. (It is slightly smaller, probably because I am using a newer and more intelligent compiler.) In any case, I have used it daily for a week since the last bug I introduced was found, and haven't noticed any more, so...

Here is the first release of the rebuilt Proxomitron, "marketing version" 4.5R+, "true version" 4.5.1.0! Note that Scott's original 4.5J is either 4.5.0.0 or 4.5.0.4 depending on where you look.

This is only a testing release ("semiprivate preview"), so please report back any bugs you found (a way of easily reproducing them is much appreciated) or otherwise behavioural differences from 4.5J except for the following "known difference":

- OpenSSL support includes the latest version of my patches, so you will need to use OpenSSL 1.0.1. These DLLs should work.

The binary is a drop-in replacement for 4.5J so just put it alongside your existing one and try it out. This also means it should be relatively easy to switch between the two if you think you found something that's broken. As always, I disclaim responsibility for any damages etc., and you are advised to back up any configuration and such before testing!

A full release, with source, will come later. Smile!

Please test with latest updated version, since bugs introduced may have been fixed already due to someone else's previous report.

Updates:
4.5.1.1:
- Fix parsing of $KEYCHK()
4.5.1.2:
- Fix use-after-free when click OK button for remote proxy selector - the original code in 4.5J has this bug; it is only because of luck that it wasn't discovered all this time.
4.5.1.3:
- Fix use-after-free when click Cancel button for remote proxy selector
- Fix crash on exiting double-click-opened header filter
- Fix parsing of variable names
- Fix matching & operator
- Fix import from clipboard
- Fix parsing of $TYPE()
4.5.1.4:
- Fix adding blocklist items which may cause blocklist reallocation
- Fix blocklist reuse allocation
- Fix spurious mismatch on subexpressions
- Fix infinite loop in $STOP()
- Fix header filter ordering
- Fix parsing of patterns containing initial negation
- Fix matching subexpression into stack
- Fix writing to clipboard and (another) infinite loop in $STOP()
- Fix resizing of log window
- Fix inverted $TST condition
- Fix blocklist hashing
- Reset length indicator after expanding positional variables
- Fix using SSL with reused connections
4.5.1.5:
- Fix matching into variables
- Fix behaviour of edit control in listbox
- Fix reversed $AV/$AVQ
- Fix quote matching
- Fix condition for setting Host header correctly
4.5.1.6:
- Fix dynamic blocklist addition
- Fix $ADDLSTBOX() title and initial text
- Fix quadratically growing recent URLs list
- Fix matching of \w
- Fix buffer end check for matchPat012
- Fix adding header filters from dialog
- Fix blocklist parsing
4.5.1.7:
- Relayout About dialog with new branding
- Fix bug in header parsing
- Fix $WESC()
- Fix sorted external proxy lists

4.5.2.0:
- Fix opening local file URLs
- Fix buffer overflow in proxy test function
- Stabilise and refine header filter ordering - URL: filters are now applied first, and also show first in the list. They are sorted respectively alphabetically.
- Clarify file URLs for opening blocklists: URL commands must be enabled to do so, and if not, a warning message is shown.
- Fix date checking for If-Modified-Since in local file requests. Original code would always respond with "not modified", possibly causing caching problems with local file replacements.
- Fix Show URL in browser for https and add option to include scheme. When adding a URL to a blocklist, the menu option to open in browser was broken for https URLs. Now that has been fixed, and a checkbox added to allow you to include the scheme (https:// or http://) when adding to the list.
- Fix unintentional sign-extension in base-64 encoding. Non-ASCII basswords and such should now encode and decode correctly.
- Fix allow IP range comparison. This was accidentally introduced in the rebuild and not in 4.5j.
- Fix duplicate load and image handle leak when loading textures
- Fix tray icon tooltip (now it says Bypassed when... bypassed)
- Fix memory leak in $STOP()
- Fix memory leak in SSLeayShutdown()
- Fix handling of FEXTRA and FHCRC for gzip format
- Fix Allow for Session certificate dialog with multiple parallel connections. It will not continue asking the same host if you have multiple parallel connections and already said Allow for Session once.
- Fix erroneous check of return value when setting OpenSSL certificate callback
- Fix header filter count decrement race condition. No more erroneous "Filters In Use" with 0 active connections
- Fix saving and restoring window sizes (for multiple-monitor users)
- Fix multithreaded OpenSSL initialisation race condition crash
- Fix positioning of context menus for multiple-monitor systems
- Various cleanup/removal of dead-ends in code.

4.6.0.0:
- Add missing update of Host header after redirection
- Certificates generated with correct names
- $REM() pseudocommand
- Add HTTPS to local.ptron
- HTTPS configuration options for cipher suite selection and certificate error bypass
- Add details to certificate error dialog
- Add root certificate generation
4.6.0.1:
- Generate certificate serial number from hostname
- Always add SAN to certificates
- Fix buffer overflow in request parsing
- Fix adding manually entered blockfile entries
- Fix parsing of CONNECT URLs
- Fix listener startup message
4.6.0.2:
- Make generated certificates version 3.
4.6.0.3:
- Partially fix missing UI controls upon first press of Alt key
- Make generated certificates use same signature algorithm as root
- Fix timezone for certificate generator
- Make receive buffer size configurable
4.6.0.4:
- Use appropriate protocol for local.ptron resources
- Local filtering fixes (related to ports, local.ptron vs localhost/127.0.0.1, and HTTP vs HTTPS)
- Fix log window pressing ctrl disables arrows and pgup/pgdn
- Fix crash when copying long headers from log
- Remove default port from URLs
- Fix activation of Apply button when page filters opened upon doubleclick
4.6.0.5:
- Fix clearing of replacement stack
- Remove 2/4GB size limits on upload/download (the limit is now 8 or 16EB, sadly I do not have the time nor space to test that!)
- Allow multiple instances when run from different directories
- Allow more ciphers/protocols from SSL server side
- Fix certificate generation dialog on Win9x
- Fix crash when certificate generation fails
- Name new blocklist as file name instead of NewItem
- Add Ctrl+A to filter test dialog input/output editboxes
- Make filter testing request and URL configurable

4.7.0.0:
- Fix O and ST exchanged in certificate generator
- Save log flags to config
- Show log window icon in Alt+Tab windows list
- OpenSSL 3.0.x support
- Enable configuration of server cipherlist via ServerCiphers
- Make generated certificates' dates match root
- Fix race condition that may lead to inconsistent connection numbering
- Fix content length determination for 204 and 1xx responses
- Correct length in Recent URLs for chunked transfer encoding
- Fix forced filtering of compressed content
- Add custom icons feature
- Edited documentation
4.7.0.1:
- Fix certificate generation
- Show SslCiphers and ServerCiphers in status page
- Attempt to load OpenSSL 3.x before 1.x
- Edited documentation


Attached File(s)
.zip  ProxomitronReborn_4600R.zip (Size: 144.19 KB / Downloads: 1527)
.zip  ProxomitronReborn_4700R.zip (Size: 968.49 KB / Downloads: 264)
.zip  ProxomitronReborn_4517R.zip (Size: 139.66 KB / Downloads: 908)
.zip  ProxomitronReborn_4701R.zip (Size: 972.37 KB / Downloads: 314)
.zip  ProxomitronReborn_4520R.zip (Size: 139.77 KB / Downloads: 944)
.zip  ProxomitronReborn_4601R.zip (Size: 144.4 KB / Downloads: 795)
.zip  ProxomitronReborn_4602R.zip (Size: 144.32 KB / Downloads: 835)
.zip  ProxomitronReborn_4603R.zip (Size: 144.48 KB / Downloads: 1048)
.zip  ProxomitronReborn_4604R.zip (Size: 144.7 KB / Downloads: 1134)
.zip  ProxomitronReborn_4605R.zip (Size: 145.47 KB / Downloads: 2023)
Add Thank You Quote this message in a reply
[-] The following 23 users say Thank You to amy for this post:
zoltan, chatterer, thomasmo, Kye-U, referrer, whenever, soccerfan, usr, ProxRocks, mizzmona, Styx, prxymouse, eclipse, dave, Callahan, defconnect, DullFace, kelendral, Jozo, TheScaryGuy, thypentacle, iatasin, rasczak
May. 19, 2018, 10:02 PM (This post was last modified: May. 19, 2018 10:56 PM by chatterer.)
Post: #2
RE: Proxomitron Reborn
thank you so much, please make a little pack with ssl-dll's and test.cfg
Add Thank You Quote this message in a reply
May. 19, 2018, 11:22 PM
Post: #3
RE: Proxomitron Reborn
Thank a lots!! I always hope it
Add Thank You Quote this message in a reply
May. 19, 2018, 11:32 PM
Post: #4
RE: Proxomitron Reborn
(May. 19, 2018 07:34 PM)amy Wrote:  I am pleased to announce that the project I started nearly a year ago, to decompile The Proxomitron completely, analyse and rebuild it, is nearing its end! Thumbs Up

I do not have Scott's source nor environment, but with careful analysis, was able to reproduce a very similar binary. (It is slightly smaller, probably because I am using a newer and more intelligent compiler.) In any case, I have used it daily for a week since the last bug I introduced was found, and haven't noticed any more, so...

Here is the first release of the rebuilt Proxomitron, "marketing version" 4.5R+, "true version" 4.5.1.0! Note that Scott's original 4.5J is either 4.5.0.0 or 4.5.0.4 depending on where you look.

This is only a testing release ("semiprivate preview"), so please report back any bugs you found (a way of easily reproducing them is much appreciated) or otherwise behavioural differences from 4.5J except for the following "known difference":

- OpenSSL support includes the latest version of my patches, so you will need to use OpenSSL 1.0.1. These DLLs should work.

The binary is a drop-in replacement for 4.5J so just put it alongside your existing one and try it out. This also means it should be relatively easy to switch between the two if you think you found something that's broken. As always, I disclaim responsibility for any damages etc., and you are advised to back up any configuration and such before testing!

A full release, with source, will come later. Smile!

OS: Win10x64 1803

the program auto close itself after launch it
Add Thank You Quote this message in a reply
May. 19, 2018, 11:48 PM (This post was last modified: May. 19, 2018 11:51 PM by chatterer.)
Post: #5
RE: Proxomitron Reborn
searx.me:443
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
win7 64bit, vivaldi 1.16.1183.3 (64-Bit)
--------------
it breaks the config at "Bypass any URL...":
[Image: AtELEW.png]
Original: BypassURL = $KEYCHK(^C^A^S)|(^local.ptron/sidki_h)$LST(Bypass-List)|$LST(Bypass-SSL)
Add Thank You Quote this message in a reply
May. 20, 2018, 11:20 AM
Post: #6
RE: Proxomitron Reborn
Win10 x64 1803 get an error

[Image: Ub3X4Y1e_t.png]
Add Thank You Quote this message in a reply
May. 20, 2018, 04:35 PM
Post: #7
RE: Proxomitron Reborn
4.5.1.1 released, please retest.

Quote:searx.me:443
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
win7 64bit, vivaldi 1.16.1183.3 (64-Bit)
I do not see that problem on that site. Have you tried the OpenSSL DLLs I linked to?
Quote:it breaks the config at "Bypass any URL...":
...
Original: BypassURL = $KEYCHK(^C^A^S)|(^local.ptron/sidki_h)$LST(Bypass-List)|$LST(Bypass-SSL)
Fixed parsing of $KEYCHK() function in 4.5.1.1.
Quote:Win10 x64 1803 get an error
That could be related to the bug I introduced in parsing $KEYCHK() function. Please retest with 4.5.1.1.
Add Thank You Quote this message in a reply
[-] The following 1 user says Thank You to amy for this post:
kelendral
May. 20, 2018, 09:21 PM
Post: #8
RE: Proxomitron Reborn
all filters didn't work normaly. no effect at all.

CTD:
open proxomitron -> headers -> choose a filter -> cancel
the proxo crash

same in 4511R.
win7 x86 + firefox 52.7.4
Add Thank You Quote this message in a reply
[-] The following 1 user says Thank You to referrer for this post:
chatterer
May. 20, 2018, 11:14 PM
Post: #9
RE: Proxomitron Reborn
(May. 20, 2018 04:35 PM)amy Wrote:  
Quote:searx.me:443
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
win7 64bit, vivaldi 1.16.1183.3 (64-Bit)
I do not see that problem on that site. Have you tried the OpenSSL DLLs I linked to?
Quote:it breaks the config at "Bypass any URL...":
...
Original: BypassURL = $KEYCHK(^C^A^S)|(^local.ptron/sidki_h)$LST(Bypass-List)|$LST(Bypass-SSL)
Fixed parsing of $KEYCHK() function in 4.5.1.1.

Yes, this ssl-pack. The problem is "--cipher-suite-blacklist=0x009d,0x009c,0x003d,0x0035,0x003c,0x002f,0x000a,0x00c0,0x00ba,0x0084,0x0041,0x00fd,0x000a,0x002f,0x0035,0x003c,0x003d,0x0016,0xc0a1,0xc0a0,0xc012,0xc008,0x009c,0x009d"
---------------------------------------------------------------------
proxo.exe ignores the proxy
[Image: zdym8S.png]
Add Thank You Quote this message in a reply
May. 21, 2018, 12:39 AM
Post: #10
RE: Proxomitron Reborn
Quote:open proxomitron -> headers -> choose a filter -> cancel
the proxo crash
I could not reproduce this.

For those experiencing crashes, try to find the detail log in Event Viewer (it should look something like this but with proxo.exe) and either post message here or PM me if you don't want to make it public, otherwise it is very hard to determine where/why it is happening.
Quote:The problem is "--cipher-suite-blacklist=0x009d,0x009c,0x003d,0x0035,0x003c,0x002f,0x000a,0x00c0,0x00ba,0x0084,0x0041,0x00fd,0x000a,0x002f,0x0035,0x003c,0x003d,0x0016,0xc0a1,0xc0a0,0xc012,0xc008,0x009c,0x009d"
Not sure what you mean.
Quote:proxo.exe ignores the proxy
This one could be related to a use-after-free bug in Scott's original code which I uncovered, it also could cause a crash in the right circumstances. Basically, if a flag is set on an external proxy item it is freed, but then the code tries to change a different flag on it regardless. Will release 4.5.1.2 to fix this (note this is a change over the original code, but is necessary to prevent a possible crash.) But if I set up a proxy and select Use Remote Proxy, I can see that it uses it.
Add Thank You Quote this message in a reply
May. 21, 2018, 12:47 AM (This post was last modified: May. 21, 2018 01:35 AM by JJoe.)
Post: #11
RE: Proxomitron Reborn
4.5.1.1R
Using Opera portable on Win10 64bit.
Opera starts with switches, --ignore-certificate-errors --allow-insecure-localhost --disable-update --allow-running-insecure-content.
Proxomitron folder is new with patched 'proxomitron.exe', 'proxo.exe', and SSL related files.
Test config is Scott's default with SSL enabled,
.cfg  amydefault.cfg (Size: 17.81 KB / Downloads: 787) .
Test page is http://prxbx.com/forums/


'Proxo.exe' web page filters are not filtering by default.
Log window, page source, nor 'HTML Debug info' show hits.
However, filtering is enabled for 'HTML Debug info' after $FILTER(1)(^) is added to Bypass.

At prxbx.com/forums/
'Proxomitron.exe' shows hits for 'Kill pop-up windows', 'Suppress all JavaScript errors', 'Stop browser window resizing', 'Frame Jumper-Outer', 'Restore pop-ups after a page loads'.
After enabling 'HTML Debug info' and adding '$FILTER(1)(^)' to Bypass, 'Proxo.exe' shows hits for only 'Banner Blaster (limit text)'. These 'Banner Blaster (limit text)' hits are incorrect.

It looks like 'Proxo.exe' is failing to consider the '&' conditionals.

Code:
[Patterns]
Name = "test &"
Active = TRUE
Limit = 900
Match = "?+"
        "&"
        "HOLYCOW"

appears to match everything and maybe nothing.

<end> may not be working, since 'Restore pop-ups after a page loads' uses it.

Filter import via right click menu is broken.

Edit: Added "In the Test window"
Edit2: Same in 'HTML Debug info'. [s] tags added, text reverted to original.
Add Thank You Quote this message in a reply
[-] The following 1 user says Thank You to JJoe for this post:
mizzmona
May. 21, 2018, 12:50 AM
Post: #12
RE: Proxomitron Reborn
(May. 21, 2018 12:39 AM)amy Wrote:  
Quote:open proxomitron -> headers -> choose a filter -> cancel
the proxo crash
I could not reproduce this.

For those experiencing crashes, try to find the detail log in Event Viewer (it should look something like this but with proxo.exe) and either post message here or PM me if you don't want to make it public, otherwise it is very hard to determine where/why it is happening.

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2018-05-21T00:44:39.000000000Z" />
<EventRecordID>6723</EventRecordID>
<Channel>Application</Channel>
<Computer>referrer</Computer>
<Security />
</System>
- <EventData>
<Data>proxo.exe</Data>
<Data>4.5.1.1</Data>
<Data>5b01c000</Data>
<Data>USER32.dll</Data>
<Data>6.1.7601.23594</Data>
<Data>58249e2b</Data>
<Data>c00000fd</Data>
<Data>0001c40a</Data>
<Data>d24</Data>
<Data>01d3f09cdfede39a</Data>
<Data>D:\Soft\ProxomitronR\proxo.exe</Data>
<Data>C:\Windows\system32\USER32.dll</Data>
<Data>23dc2943-5c90-11e8-8b03-6cf0497e4d62</Data>
</EventData>
</Event>
Add Thank You Quote this message in a reply
May. 21, 2018, 02:49 AM
Post: #13
RE: Proxomitron Reborn
awesome!
looking forward to testing it out...
Add Thank You Quote this message in a reply
May. 21, 2018, 08:25 AM
Post: #14
RE: Proxomitron Reborn
(May. 21, 2018 12:39 AM)amy Wrote:  
Quote:The problem is "--cipher-suite-blacklist=0x009d,0x009c,0x003d,0x0035,0x003c,0x002f,0x000a,0x00c0,0x00ba,0x0084,0x0041,0x00fd,0x000a,0x002f,0x0035,0x003c,0x003d,0x0016,0xc0a1,0xc0a0,0xc012,0xc008,0x009c,0x009d"
Not sure what you mean.
Quote:proxo.exe ignores the proxy
This one could be related to a use-after-free bug in Scott's original code which I uncovered, it also could cause a crash in the right circumstances. Basically, if a flag is set on an external proxy item it is freed, but then the code tries to change a different flag on it regardless. Will release 4.5.1.2 to fix this (note this is a change over the original code, but is necessary to prevent a possible crash.) But if I set up a proxy and select Use Remote Proxy, I can see that it uses it.

--cipher-suite-blacklist is a command line for my browser (here), i can disable weak/insecure cipher-suites ... look and test here: Qualys SSL Labs
-------------------------------------------------
proxo 4.5.1.2 has the same problem with "Use Remote Proxy" without Filter:
[Image: 6Pn6MF.png]
sometimes with and sometimes without the proxy
Add Thank You Quote this message in a reply
May. 21, 2018, 01:46 PM
Post: #15
RE: Proxomitron Reborn
(May. 21, 2018 08:25 AM)chatterer Wrote:  i can disable weak/insecure cipher-suites ...

sounds like a complete waste of time to me...
but i digress Big Teeth
Add Thank You Quote this message in a reply
[-] The following 1 user says Thank You to ProxRocks for this post:
chatterer
Post Reply 


Forum Jump: