Useful Firefox feature



  • Have you ever wanted to copy a password from a login form? Most browsers won't let you. Not Firefox though! Firefox gives you Freedom™ to do what you want.

    Of course, it would be a security risk to actually copy the password, so it actually only copies "●●●●●●●●●". Yes, U+25CF BLACK CIRCLE characters.


  • Impossible Mission Players - A

    To be fair, it's doing what you told it to, copy the black characters....



  • Meh. Doesn't seem that bad to me.



  • It's not bad, it's... weird. It just seems like a pointless thing to implement.



  • Belgium.



  • Yeah, I'd say ideally a field that couldn't be copied should have the "Copy" menu item greyed out.

    But at least it doesn't put the actual password in the clipboard; that would be a real WTF.



  • What I hate are browser password boxes that refuse to let you paste into them.

    What massive security hole do they think they're addressing by not letting you paste a password in?



  • @skotl said:

    What I hate are browser password boxes that refuse to let you paste into them.

    What massive security hole do they think they're addressing by not letting you paste a password in?

    In all fairness, that's mostly because a website will write code to overwrite On Right Click and On Paste events.

    But in double-fairness, fuck any browser that allows those events to be overwritten.


    Filed under: CTRL-F...


  • BINNED

    @Lorne_Kates said:

    But in double-fairness, fuck any browser that allows those events to be overwritten.

    Both have legitimate uses. An option to block the site from doing that would be nice though.



  • @Lorne_Kates said:

    In all fairness, that's mostly because a website will write code to overwrite On Right Click and On Paste events.

    But in double-fairness, fuck any browser that allows those events to be overwritten.

    I know, technically, why it happens. What I'm bemused about is, design-wise, why they think it's a good idea.
    Fair enough, if they snaffle right click to offer you a soopah-useful context menu (that includes the option to "Paste") but if all it does is throw the paste command away then that's Jefftastically I-know-what's-good-for-you-and-this-is-not!



  • It's better than not doing anything. Copying black circle characters clearly indicates that the user's request was understood, but not carried out.

    It's pretty pointless from a security standpoint, though. You can still get the password quite easily.


  • BINNED

    @anotherusername said:

    Copying black circle characters clearly indicates that the user's request was understood, but not carried out.

    And without pasting it into an external editor the users knows this... how?

    I expect the password field masking my input. Hence, seeing the same number of black circles in the "repeat password" field as I have in the "password" field indicates to me that it did, in fact, carry it out. I then proceed to blame the "shitty site for not working", presumably.



  • Yeah, that could be confusing. Let's just hope you paste it into an external editor to see if you typed it correctly before you blame the shitty site for not working.



  • @anonymous234 said:

    so it actually only copies "●●●●●●●●●".

    It says "hunter2" on my computer.



  • @Onyx said:

    Hence, seeing the same number of black circles in the "repeat password" field as I have in the "password" field indicates to me that it did, in fact, carry it out.

    Up till that sentence I was of the opinion that the behavior of Firefox was fine. But yes, what you describe is the likely outcome and of course not at all a desirable one.

    One of the passwords I use is actually a string of U+25CF BLACK CIRCLE characters. You'll be unsuspecting even when it's presented to you in plaintext :-)


  • BINNED

    Well, to be fair, I only ever done it the other way around: generate the password in something then paste to site. I still do this at times, I have NFC how to force chromeIPass to use my custom password generator settings from KeePass, it keeps using some default crap that uses only alphanumerics. I'm fine with this for "whatever" sites where 115ish bits of entropy it gives me is enough for me to declare "good enough, no one's gonna bother, if they do let them have it". But when it's places that have my credit card info for example, to custom generator and copy-pasting we go!



  • For a typical dumb user, this might be a good feature. Instead of wondering why is nothing getting copied, he gets exactly what he sees.



  • Dumbness aside, it's actually arguably correct. The text is select-able, so there's no reason it shouldn't be copy-able, and the copy consists of the exact characters that were selected.





  • There's several IP addresses in that screenshot that you may want to obfuscate...



  • I've checked the XML files, and they're different for every game. It's fine.



  • That's a game? Fooled me...



  • @TwelveBaud said:

    I've checked the XML files, and they're different for every game. It's fine.

    Hm, that looks interesting. I spent more time than I'd admit to on Uplink back in the days...


  • area_deu

    Me too.
    Sure looked like one of those ten million different tiling window managers for linux ...


    Filed under: I'm sure you can make awesome look like that



  • Uplink is a far bettermore involved and polished game than Hacknet, and I'm told Onlink helps extend the challenge to a nice, appreciable level. However, unless you have a source license like I do, it's difficult to get Uplink to run on modern video cards.



  • @TwelveBaud said:

    However, unless you have a source license like I do, it's difficult to get Uplink to run on modern video cards.

    WOMM last time I checked. The Steam version, at least.

    Is Introversion still alive? They had some really cool ideas back in the day, even though their coding and overall execution was shoddy at times (I played Darwinia for like 2 hours before realizing that the nigh-zero mouse sensitivity was a bug and not a part of the interface)



  • @LB_ said:

    There's several IP addresses in that screenshot that you may want to obfuscate...

    Too late.


    Filed under: TwelveBaud has some interesting tastes in porn.


  • Darwinia was boring as shit.



  • @Lorne_Kates said:

    Filed under: TwelveBaud has some interesting tastes in porn.

    http://cdn.meme.am/instances2/500x/1888909.jpg



  • Introversion is still a going concern, although they've spent many, many years working on their latest game, with nothing else in the pipeline or on the side, and this was after they cancelled Subversion. It's about to be 1.0'ed.@blakeyrat said:

    Darwinia was boring as shit.
    Loved the story, hated the game.



  • @TwelveBaud said:

    it's difficult to get Uplink to run on modern video cards

    Dammit, what do game developers do to make all their shit break in the future?

    Deus Ex hangs my computer for 20 seconds on minimize. How do you even do that?


  • Discourse touched me in a no-no place

    @anotherusername said:

    It's better than not doing anything.

    Well, except it's kind of an asshole thing to do. Next version, it's going to put "fuck you" on the clipboard instead, I hear.



  • @anonymous234 said:

    Deus Ex hangs my computer for 20 seconds on minimize. How do you even do that?

    Public Sub OnDeusExMinimize() Handles Window.Minimize
      Sleep(20000)
    End Sub
    

    Filed under: And you call yourself a fucking programmer.



  • That wouldn't hang the computer. What you're looking for is setting the process's priority to highest followed by busy waiting.



  • @skotl said:

    What I hate are browser password boxes that refuse to let you paste into them.

    Or email address fields. I know my address, I’m quite certain haven’t made any typos in it, but no, I have to type it again. (But luckily you can usually drag-and-drop into the text field anyway.)



  • The process priority does not matter if the thread isn't runable, like say, being in a sleep call. What you need to do in order to hang the entire system is to screw up in the drivers. Preferably the display driver, since those are always so complicated and poorly tested that anything goes.



  • @henke37 said:

    The process priority does not matter if the thread isn't runable, like say, being in a sleep call.

    Hence busy waiting.



  • To be honest, it doesn't strictly "hang" my computer.

    If you alt+tab from the maximised game, the screen remains at the same low resolution (and the colors shifted) for about 20 seconds before Windows figures it out and changes it back. Except for this one time where it didn't change back after two minutes, I had to lock my session and enter again.

    The game is significantly improved with a 3rd party launcher and Direct3D 10 renderer, thankfully. The original Direct3D renderer had huge mouse lag for some reason, and the OpenGL renderer had this weird glitch where the whole screen "lights up" (the global brightness goes up, even outside the game) for about a second every time you open a menu.



  • @Zecc said:

    That wouldn't hang the computer. What you're looking for is setting the process's priority to highest followed by busy waiting.

    Version 2:

    // Goal: for twenty seconds, spawn an infinite amount of forks with regression. Each fork is in its own thread, as to fuck up the system more
    // After twenty seconds, stop forking and let all the forks just die on their own

    Static Global futex Boolean = false  // like a mutex, but for fucking
    
    Sub ForkYou()
       if (futex)
           // Create more fucking!
          Threading.NewThread(ForkYou);
       end if
    End Sub
    
    Public Sub OnDeusExMinimize() Handles Window.Minimize
      futex = true  // fucking will occur
      ForkYou()  // start fucking
      Sleep(20000)  // sleep while forks fuck around
      futex = false  // STOP FUCKING!
    End Sub
    


  • @Lorne_Kates said:

    Each fork is in its own thread, as to fuck up the system more

    ...how do you fork without creating a new thread? Other than creating a new process which is even worse.

    Also, unless I'm missing something, your code is inefficient: each fork creates only one fork, then immediately dies. This means only (approximately) two threads are active at any given moment, which is almost certainly not enough to hang the system.



  • So... would it work with these modifications?

    Static Global futex Boolean = false  // like a mutex, but for fucking
    
    Sub ForkYou()
       while (futex)
           // Create more fucking!
          Threading.NewThread(ForkYou);
       end while
    End Sub
    
    Public Sub OnDeusExMinimize() Handles Window.Minimize
      futex = true  // fucking will occur
      Threading.NewThread(ForkYou); // start fucking
      Sleep(20000)  // sleep while forks fuck around
      futex = false  // STOP FUCKING!
    End Sub
    


  • @anotherusername said:

    while (futex)
    // Create more fucking!
    Threading.NewThread(ForkYou);
    end while

    That would work! See, this is why we have open source software.


    Filed under: Many eyes make all bugs more insidious and well hidden



  • Well, since I also replaced ForkYou() with Threading.NewThread(ForkYou) in the code that calls it, I think futex should be unset after 20 seconds like it's supposed to (assuming there are enough resources left after 20 seconds for the main thread to even come back from the sleep and execute the futex = false line...).

    A simple call to ForkYou there would've result in a deadlock: ForkYou wouldn't return until futex was unset, and the main thread wouldn't be able to unset futex until ForkYou returned.



  • Ah, but that's exponential. It would work too well, and probably crash the system before the 20 seconds have passed.
    Maybe set a limit, for example 5000 processes, after which the old processes die in a FIFO manner, so that the system is still busy but not enough to crash completely?

    (I assume modern Windows has some protection against fork bombs but I can't find anything)



  • Of all the forkbombs I've ever (accidentally) written, I don't recall ever "crashing" the system... just completely frozen it.



  • Can you explain the difference?



  • In a completely frozen system, theoretically, something is executing, and it should eventually get to the line that pops the balloon.



  • I managed to play through The Longest Journey (1999) installed from my old CD-s on a Windows 7 machine, even though online fora mentioned a lot of cooties with running it. It crashed a few times so I saved frequently, but nowhere near unbearable. (I hear the Steam version is better.)

    When it crashed or when I Alt+Tabbed out of it, the screen was weird. Not the resolution, but some serious "unsmoothing" effect. All fonts pixely as hell, etc. I guess it's the Windows compatibility shim architecture in full swing - it detects I'm running an old app and switches to an (emulated?) legacy graphics mode or whatever.



  • @anonymous234 said:

    I assume modern Windows has some protection against fork bombs but I can't find anything

    Try pasting my name into a non-elevated cmd window.



  • @anotherusername said:

    Well, since I also replaced ForkYou() with Threading.NewThread(ForkYou) in the code that calls it, I think futex should be unset after 20 seconds like it's supposed to (assuming there are enough resources left after 20 seconds for the main thread to even come back from the sleep and execute the futex = false line...).

    A simple call to ForkYou there would've result in a deadlock: ForkYou wouldn't return until futex was unset, and the main thread wouldn't be able to unset futex until ForkYou returned.

    Okay, Version 4. Wait, no, version numbers are too discoverable. Let's go the Android route. This is Version Delicious Dipship

    Static Global futex_start DateTime = DateTime.MinValue  // like a mutex, but for fucking
    Static Global futexing_length int = 20000 // I love the code drift away from a mutex, but still keeping the terminology
    Static Gloabl max_fucks = 5000 
    Static Global current_fucks = 0;
    
    Sub ForkYou()
       while (futux_start <> DateTime.MinValue AndAlso DateDiff(milliseconds, futex_start, Datetime.Now()) < futexing_length)
           // Create more fucking!
           if (current_fucks < max_fucks)
                current_fucks = current_fucks + 1;
                Threading.NewThread(ForkYou);
            end if
       end while
        current_fucks = current_fucks - 1
    End Sub
    
    Public Sub OnDeusExMinimize() Handles Window.Minimize
      // futex = true  // fucking will occur // that's old school fuxting
      futux_start = Datetime.Now()
      Threading.NewThread(ForkYou); // start fucking
      Sleep(futexing_length)  // sleep while forks fuck around
      // futex = false  // STOP FUCKING!
      futux_start = DateTime.MinValue // STOP FUCKING THE NEW WAY
    End Sub
    

Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.