[Implemented] Privacy concerns about OnError

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
Jan125
User
User
Posts: 14
Joined: Fri Oct 16, 2015 5:21 pm

[Implemented] Privacy concerns about OnError

Post by Jan125 »

Well, uh...
If you enable OnError line support, it includes the >complete< filepath, unobfuscated, into the file.

Some people, including myself, have rather... STRANGE folder names... and thus, it would be rather unflattering to see them exposed.
You can, of course, remove this via a hex editor or a tool, but this is a cumbersome process.


I hereby propose, that OnError shall start from the source directory:
"X:\Herebedragons\Justinbieberxoxo\newproject\src\main.pb" would become either
"src\main.pb", or just "main.pb".
User avatar
kenmo
Addict
Addict
Posts: 2033
Joined: Tue Dec 23, 2003 3:54 am

Re: Privacy concerns about OnError

Post by kenmo »

+1

I agree that OnError file paths should be relative to the project, or main source file.

I even wrote myself a PB tool called RemovePaths which I use before releasing builds. (Detects absolute paths, cuts it down to a relative path, overwrites the original.)
Jan125
User
User
Posts: 14
Joined: Fri Oct 16, 2015 5:21 pm

Re: Privacy concerns about OnError

Post by Jan125 »

kenmo wrote:I even wrote myself a PB tool called RemovePaths which I use before releasing builds. (Detects absolute paths, cuts it down to a relative path, overwrites the original.)
Exactly that I did as well (minus a real "relative" path, I just use it for orientation, see "src\main.pb" instead of ".\...").

Problem there being (presumably new) people who have Purebasic projects in generic directories, and specifying hard paths for different actions.
Thus, a tool like that would break it.
Then again, these people wouldn't care about privacy that much, either, as most generic directories are protected and/or variable (due to username) in Win Vista+, and XP is a mess anyways.

Not sure how things are on Linux or Mac, tho.
c4s
Addict
Addict
Posts: 1981
Joined: Thu Nov 01, 2007 5:37 pm
Location: Germany

Re: Privacy concerns about OnError

Post by c4s »

+1 - Should be relative to the main source.
kenmo wrote:I even wrote myself a PB tool called RemovePaths which I use before releasing builds. (Detects absolute paths, cuts it down to a relative path, overwrites the original.)
I'm really interested in that. Have you released it in the forum?
If any of you native English speakers have any suggestions for the above text, please let me know (via PM). Thanks!
User avatar
kenmo
Addict
Addict
Posts: 2033
Joined: Tue Dec 23, 2003 3:54 am

Re: Privacy concerns about OnError

Post by kenmo »

c4s wrote:I'm really interested in that. Have you released it in the forum?
No, not released, should be cleaned up first.

But here is a quick-and-dirty / proof-of-concept commandline tool, which finds filepaths in an executable and truncates them to just names.

EDIT: improved code

Code: Select all

;-
; Quick'n'dirty path remover (from executables)
;
; Commandline:
; -i [inputFile] or just [inputFile] (file to parse)
; -o [outputFile] (new file to write, can overwrite inputFile)
; -ov (shorthand to overwrite inputFile)
; -n (no modification, only shows what would be changed)
; -p [path] (specific path to remove from file, otherwise use the executable's folder)
; -w (wait for Enter press at end)

InFile.s  = ""
OutFile.s = ""
Path.s    = ""
WaitKey.i = #False
NoMod.i   = #False

If OpenConsole()

n = CountProgramParameters()
For i = 0 To n - 1
  Command.s = LCase(LTrim(LTrim(ProgramParameter(i), "/"), "-"))
  Select (Command)
    Case "i", "in", "input"
      If (i < n - 1)
        i + 1
        InFile = ProgramParameter(i)
      EndIf
    Case "o", "out", "output"
      If (i < n - 1)
        i + 1
        OutFile = ProgramParameter(i)
      EndIf
    Case "ov", "overwrite", "replace"
      Overwrite = #True
    Case "w", "wait", "waitkey"
      WaitKey = #True
    Case "n", "no"
      NoMod = #True
    Case "p", "path", "pre", "prefix", "strip"
      If (i < n - 1)
        i + 1
        OutFile = ProgramParameter(i)
      EndIf
    Default
      If (FileSize(ProgramParameter(i)) >= 0)
        InFile = ProgramParameter(i)
      Else
        ;
      EndIf
  EndSelect
Next i

If (InFile)

  ; Make Absolute Path
  CompilerIf (#PB_Compiler_OS = #PB_OS_Windows)
    If (Not (FindString(InFile, ":\") Or FindString(InFile, ":/")))
      InFile = GetCurrentDirectory() + InFile
    EndIf
  CompilerElse
    If Left(InFile, 1) <> "/"
      InFile = GetCurrentDirectory() + InFile
    EndIf
  CompilerEndIf
  
  ; Guess Path to remove
  If (Path = "")
    Path = GetPathPart(InFile)
  EndIf
  
  ; Locate executable within MacOS app
  If (Right(InFile, 4) = ".app")
    InFile + "/Contents/MacOS/" + GetFilePart(InFile, #PB_FileSystem_NoExtension)
  EndIf
  
  ; Guess output file
  If (Overwrite)
    OutFile = InFile
  EndIf
  If (OutFile = "")
    If (GetExtensionPart(InFile))
      OutFile = GetPathPart(InFile) + GetFilePart(InFile, #PB_FileSystem_NoExtension) + ".mod." + GetExtensionPart(InFile)
    Else
      OutFile = InFile + "_mod"
    EndIf
  EndIf
  
  PrintN("Path Remover v0.1")
  PrintN("")
  PrintN("Input:  " + InFile)
  PrintN("Output: " + OutFile)
  PrintN("Remove: " + Path)
  PrintN("")
  
  If (ReadFile(0, InFile))
    FSize.i = Lof(0)
    If (FSize > 0)
      *FBuffer = AllocateMemory(FSize)
      If (*FBuffer)
        RSize.i = ReadData(0, *FBuffer, FSize)
      EndIf
    EndIf
    CloseFile(0)
    If ((FSize > 0) And (RSize = FSize))
      PSize.i = StringByteLength(Path, #PB_Ascii)
      *PBuffer = AllocateMemory(PSize)
      If (*PBuffer)
        PokeS(*PBuffer, Path, -1, #PB_Ascii | #PB_String_NoZero)
        For i = 0 To FSize - PSize
          If (CompareMemory(*FBuffer + i, *PBuffer, PSize))
            Term.s = PeekS(*FBuffer + i, -1, #PB_Ascii)
            TSize.i = StringByteLength(Term, #PB_Ascii)
            PrintN("@ 0x" + Hex(i) + " - " + Term)
            If (Not NoMod)
              PokeS(*FBuffer + i, Mid(Term, 1 + Len(Path)), -1, #PB_Ascii)
              If (TSize > PSize)
                FillMemory(*FBuffer + i + (TSize-PSize) + 1, PSize - 1 , #NUL, #PB_Byte)
              EndIf
            EndIf
            Term.s = Mid(Term, 1 + Len(Path));PeekS(*FBuffer + i, -1, #PB_Ascii)
            PrintN(Space(5 + Len(Hex(i))) + "> " + Term)
            Changes.i + 1
            i + TSize
          EndIf
        Next i
        PrintN("")
        PrintN("Paths matched: " + Str(Changes))
      EndIf
    EndIf
    If (*FBuffer)
      If (CreateFile(1, OutFile))
        WriteData(1, *FBuffer, FSize)
        CloseFile(1)
      EndIf
      FreeMemory(*FBuffer)
    EndIf
  EndIf
EndIf

If (WaitKey)
  Input()
EndIf
CloseConsole()
EndIf

;-
Last edited by kenmo on Mon Dec 05, 2016 3:52 pm, edited 1 time in total.
c4s
Addict
Addict
Posts: 1981
Joined: Thu Nov 01, 2007 5:37 pm
Location: Germany

Re: Privacy concerns about OnError

Post by c4s »

@kenmo
Thanks. I'll check it out tomorrow.
If any of you native English speakers have any suggestions for the above text, please let me know (via PM). Thanks!
User avatar
Lunasole
Addict
Addict
Posts: 1091
Joined: Mon Oct 26, 2015 2:55 am
Location: UA
Contact:

Re: Privacy concerns about OnError

Post by Lunasole »

I also made a small tool for that today ^^
See included readme and sources. It's for windows, but probably can be modified for linux easily.

PS. Updated to v 1.0.0.6
PSS. Updated once more to v 1.0.0.7. Important bug fixed

Code: Select all

Restore L:Read$ P$:Read.q Fs:Read.q Cs
*C=AllocateMemory(Cs):*F=AllocateMemory(Fs)
CopyMemory(?L+(1+Len(P$))*SizeOf(Character)+SizeOf(Quad)*2,*C,Cs)
PP$=GetExtensionPart(P$):PP$+" | *."+PP$:P$=SaveFileRequester("Lunar Ship v1.0.0.1",P$,PP$,0)
If P$ And UseLZMAPacker() And (UncompressMemory(*C,Cs,*F,Fs,2)=Fs) And CreateFile(42,P$)
	WriteData(42,*F,Fs)
EndIf

DataSection
	L: : Data.s "NoStOnYourPath 1.0.0.7.zip" ; 2016/12/07 15:52:51
	Data.q $7FF,$79A,$122800010000005D,$503A5DD5972860BC,$B2F8D5C818590735,$9772FF83899481FC,$E8429D7A18552CF0,$577FC91F542160EC,$2CF63CF465B98F8,$4FD4042A17E03453,$8A750955880ADC8D,$922CF789BE0E5DBA,$2567D62F96347376,$D0EDCB1032F793E,$A5C63774EC85DFB0,$4567DFDE647EE34E,$AA5CC8A38202EF66,$A3A265D1D223F8E7,$6F262236F1FD77D6,$A0D6D7DFCD8EFB02,$C678412AC42FDAA4,$DB5B884A064B0B15,$868139AD093DD3BA,$DBA6DD503C3A98C8,$455B619B7C43DB3D,$CDA448CFE26CA414,$A0BBE67BC4FF1DF1,$725522A1D95F0993,$1863FC760AACEC58,$57ABFD3223A40D6C,$91EBEFF696A6C859,$CC37DB94B4999A6A,$2A606B9F967BAF63,$49A0A3305A67FEFC,$5991124F9EC4DB79,$385F9766BB7F079F,$A9CF5017BA7E1020,$E4AEF88C04477659,$A662ED3F05D9C9CD,$20DFAF4C0C706D5,$AE23075D3F0A0EF8,$6CD71BB6710E64F6,$B79D32BC7E40D353,$CC2CE3A8A043E58B,$EA13969AA1433EAD,$C6F38459CA8E4531,$2B6F17A1C223E483,$7C3F420832952F36,$BC2CB81CF774A7C1,$2AD330BA64CF86B0,$3BBFDDDDA2B398EE,$7CCB2F91A7372BE3,$613ED0C08E51E261,$893C077E7F2DD878,$77F62D982A1DADB4,$E76E5636EDD5D97F,$1478B277884B8144,$9C552A04276558B,$FE7D4CCE817F59E5,$F857AE68B6C883D4,$E8F4857262809FD8,$B7D94B01AB0FB50F,$BE5DD1DE5C2324BD,$55D692E0F96ABA93,$E55DA08853FE0B4C,$B54719A0D58ECC40,$2047993275A377EB,$14F334ADC5AD6E3C,$D5A9281830C593C0,$79568A1530AEE2E5,$E9D893A4850B4F12,$2B61D605AC11A7,$1093ABC178DFA7E9,$AE6FCA585FAA1B5C,$C98CC6C20D606CB0,$19ECDB394B3FE40E,$2806D8DA6BE3561E,$6CF5F13369DDEE08,$14DBAD8BF1A3704F,$5F075D9EA6AA016F,$372FFB9FF3932AAE,$6E951C3B82D8DCB0,$1A0EE38320C8F449,$95F03E896D9B0F33,$46974FB1F74D6597,$8B89B92BD1DEA452,$AB84F11E90D6F11D,$96D4B0654553C697,$AAA1687D422793B8,$43DF829020600EB5,$D40C4DF051193EFE,$16C0F6D68788526,$51E37452AF75FE5F,$C400C8274A793297,$3B1610BDA3378771,$5999557C05FFDCF2,$E1F563169565B694,$752301B4FA4163F9,$D6945FC563FE746E,$202EC3D900F8AB20,$FFB7BFDE0EFFC9EC,$FE5DED68271CBE11,$109F5CA67BA339CF,$3047FB1D6C15C336,$945439671652FFDB,$492109640ED5D554,$F0D7AD100A335E5E,$745589B84289A994,$EEBDCCBB16F8F551,$90D27520BAFAB52B,$E769CED53C2F5B62,$7FF56F818931132B,$3C033876E7616EE7,$2DD018B47D6CB247,$CA220B7EC2A910BC,$E01098AAC3A5C750,$AED63DCA0E516E3C,$889AD16E2DB9FB43,$F2D6697DF7E66136,$F49EF3021C3F095C,$76BD8D50662835B4,$A25549A19C125D9F,$8393965F37AAF6D3,$C50E580C28485685,$4E2C50587010E614,$B4CA64FCDB05D0A,$F90229E88486C068,$C75124E0E4E0E049,$DBAE92AE02A3D88,$7527BE937F81C8D3,$EE93259CF7BAFF7E,$53700BEABDBB4592,$B5C9B9C40EFE80C6,$36FE3D89772FB8E3,$CA5E3254942D3755,$514C940B86F4646E,$98B60DC9BAA56309,$BA450B48F1F19638,$8821D9BF2348254B,$8C057461DD3D903D,$8F9843A1528A8C3A,$54E9879B414F3901,$5C4500838FDE9376,$64A8AADF8803DD9D,$F99694EC46EFF1AD,$A55520A68C36A2B1,$9908B06F02AC8F29,$DD8DD50480EA1CFF,$3D67F0A11F3D8B0A,$A9EAA8101F5AE9D6,$D2FF78AF349D14AB,$EE62C1AD468A5B8C,$6FF1BD2AA9946F22,$A58F6C48D9CC919D,$2887A727F74D77D1,$63A0099E6DD48841,$36EA549605B67F13,$504E27D1D1572821,$DFB918108FC7A420,$EDCD270251BCFF99,$128DDC799E7EF631,$3083884041CA3344,$208D9A005C181AF1,$5DCF0EDB3200E109,$77376FAF4A87ABA3,$546FE2A641D182AF,$AD42D403233A8C9F,$3F3FF98CDEA5E2F9,$7A35253CC84E1A84,$6D9A6139D64F8353,$51391041CB99C7BB,$576E390F3C824480,$233D6329A9DE5C24,$83297F1DE89CB202,$2D0B651BC0C345D7,$C741485C4C181642,$E007783675C16CC5,$53FD9B37D877F469,$585AA70E9DBCB536,$A49A6C3F91A0DB7F,$DD557DD2D364D622,$A7A8190E85A87E17,$EE2C869DE420F90,$A15AED903C3B920D,$3E37EA85CE9D09C9,$7C8FF3595CED54,$FA4B768106153450,$DF4CCEAE58EF62F7,$5174C998B7DC64A,$3752A9B7FD1222B2,$F2C60673FF7A4A56,$65C733E48FE07B02,$E80E5BEEF8710D5C,$9F1D65D18829CF25,$9D5594B6C4E89992,$9E779AF7FC162029,$CA515319147B0D4F,$E94B52458EAC8278,$63D1C364EC2BBA25,$17E0FA064B5A12E4,$A54C675B854416B,$E810BCABAF1EE6DC,$CCDB932CC1BF5A2E,$48B3A73BEEC53FC3,$2968752A559E4FF6,$6818D234A1CA9D97,$F6B3D0A644D05E43,$99C885303E726B65,$5D07AF426FC308FD,$3920463CC5B8BCBD,$9307CE413ABBFD00,$83F368F293D66830,$9F4B30064F6FCD63,$E8EA2D747E91B85F,$46FF20BB0349353D,$37D5605B08E59BAB,$54B3E436F45476A9,$ABC9F104C6490565,$3C748C212F9CBC46,$A0A38D2A7E903EE0,$60879C9D3E0EF335,$121CAF7AC7694989,$B14127A8F8BB94B7,$9EAD86F5F294F35B,$1EAB02CACD0D855D,$879332C42DF00709,$EDB1CEBFE2302010,$75112CF1EDD9E630,$15C4A50EBF0E3D33,$CBEA32BC01DBAEF1,$CCF8A0E65C150A68,$C59795D2D26C77C5,$A75CB8EEA3002A98,$3432CA3DD62EFD52,$EEC116DB31CA3B86,$A9EF6B7F32524D25,$4F19AB0357CDFD69,$5D272A831FEBC4D0,$5EEE201702C1761,$DD404958CA0FA55E,$4F7A2F94E71D0FF,$4015116F61E3E983,$92C385BD00F4E914,$A4505EA1701DB83E,$8DA64DED17473EB3,$2008,$2008
EndDataSection
"W̷i̷s̷h̷i̷n̷g o̷n a s̷t̷a̷r"
Post Reply