[{"data":1,"prerenderedAt":293},["ShallowReactive",2],{"project-25417022":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":44,"post_text":46,"what":47,"said":63,"maker_in_thread":138,"shape":147,"grid":151,"attempts":255,"same_week":256,"maker_shows":246,"maker_hidden":285,"reader_version":286,"card":287},"25417022","Keytap2","acoustic keyboard eavesdropping based on n-gram frequencies","title","Show HN: Keytap2 – acoustic keyboard eavesdropping based on n-gram frequencies","https:\u002F\u002Fgithub.com\u002Fggerganov\u002Fkbd-audio\u002Fdiscussions\u002F31","github.com","ggerganov",1607951234,2020,168,39,354,3028,12,"notable","security_privacy","acoustic keyboard eavesdropping","cli",[24,25,26,27,28],"acoustic eavesdropping","keystroke recovery","n-gram","keyboard audio","substitution cipher","mixed",0.215,{"positive":32,"neutral":33,"mixed":34,"critical":35},7,9,0,3,19,{"performance":38,"idea":40,"privacy":42,"execution":43},{"positive":39,"critical":39},1,{"positive":41,"critical":34},2,{"positive":39,"critical":41},{"positive":35,"critical":34},[34,45,34,39,34,35,34,34,35,34,35,34,45,35,45,34,35,34,35,35,34,34,35,34,39,34,45,34,35,34,34,39,34,34,34,45,34,45,45],5,null,{"problem":48,"audience":46,"pricing":46,"motivation":55,"time_to_build":46,"stack":61,"openness":62,"stage":62,"team_size":62},{"value":49,"source":50,"evidence":51},"Recovers unknown typed text from recorded audio of keystrokes.","maker",[52],{"id":53,"by":11,"text":54},"25430986","Hello HN, I've been working for some time on an algorithm for recovering unknown text just by analyzing the recorded audio of a person tapping on their keyboard (i.e. acoustic…",{"value":56,"source":50,"evidence":57},"Security research into acoustic exploits; maker says they do not condone malicious use.",[58],{"id":59,"by":11,"text":60},"25431738","> What drove you to continue the development of the software? The same things that drive security researchers to explore different security exploits. I don't condone anyone using…",[],"unknown",{"praise":64,"objections":88,"requests":97,"questions":121,"alternatives":126},[65,77],{"value":66,"source":67,"evidence":68},"Works impressively well in testing.","commenter",[69,73],{"id":70,"by":71,"text":72},"25431896","ffpip","This works incredibly well. I hope you realize what you've created (and made available to every person in the world).",{"id":74,"by":75,"text":76},"25431040","Raphmedia","I just tried it and it works incredibly well. It kind of makes me want to stop using a mechanical keyboard.",{"value":78,"source":67,"evidence":79},"Important security research that raises awareness.",[80,84],{"id":81,"by":82,"text":83},"25438133","seveibar","It's important work, thanks! Don't let people like me being afraid of a bad actors stop the process of publicizing exploits if it leads to a safer future :)",{"id":85,"by":86,"text":87},"25431904","SamBam","I believe the technology has existed for quite some time. I think perhaps the idea was even mentioned in Cryptonomicon. So I think that making it more available\u002Fopen should…",[89],{"value":90,"source":67,"evidence":91},"Enables easy eavesdropping on typing and lowers the barrier for attackers.",[92,93,94],{"id":70,"by":71,"text":72},{"id":85,"by":86,"text":87},{"id":95,"by":82,"text":96},"25431545","This is a bit scary for coding livestreamers who may have to answer the call from sudo now and again. I'm curious how the maintainer feels about the usage of this application.…",[98,112],{"value":99,"source":67,"evidence":100},"Use spectrogram or wavelet analysis instead of raw waveform comparison.",[101,105,109],{"id":102,"by":103,"text":104},"25431058","cnity","Hey. I've been working on an audio recognition tool that is remarkably similar to this one, and there are a few areas I strongly recommend exploring if you want to improve the…",{"id":106,"by":107,"text":108},"25431377","waffletower","I don't recommend using DFT (FFT) analysis unless you can constrain N to small sizes (\u003C= 256 at 44.1KHz sampling rate perhaps) to reduce time aliasing. Use of wavelets may be a…",{"id":110,"by":107,"text":111},"25432061","The uncertainty principle is is the key concept that I think is relevant here: https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FUncertainty_principle#Harmonic_analysis A Discrete Fourier Transform…",{"value":113,"source":67,"evidence":114},"Use higher sample rate than 16kHz.",[115,118],{"id":116,"by":103,"text":117},"25431548","If you want to compute an FFT with fewer bins you can also use STFT and configure the bin count and hop size (essentially computing many FFTs of smaller regions of the signal and…",{"id":119,"by":107,"text":120},"25432098","I agree, 44.1KHz is a commonly available sampling rate and could provide better temporal resolution regardless of time doamin and frequency domain analysis technique you decide…",[122],{"value":123,"source":67,"evidence":124},"How does the maker feel about misuse, and what drove development?",[125],{"id":95,"by":82,"text":96},[127],{"value":128,"source":67,"evidence":129},"Prior keyboard acoustic attack research and password cracking via keyboard acoustics.",[130,134],{"id":131,"by":132,"text":133},"25432772","redgiraffe","You may find this interesting - the technique has been used before to do unsupervised recovery of keystrokes: \"Cracking Passwords using Keyboard Acoustics and Language Modeling\"…",{"id":135,"by":136,"text":137},"25434276","zerd","Well known since at least 2004 https:\u002F\u002Fweb.eecs.umich.edu\u002F~genkin\u002Fteaching\u002Ffall2018\u002FEECS598-12_files\u002Fkbdacoustic.pdf…",{"comments":32,"answered":41,"key":139},[140,141,144],{"id":53,"text":54},{"id":142,"text":143},"25431132","Thank you for these suggestions! The idea for comparing sounds in the frequency domain was something that I was considering, but couldn't figure out a proper way to do it. I will…",{"id":145,"text":146},"25431433","I have found that I need to use about 75-100 ms of audio around the keystroke-down peak when comparing waveforms. At the sample rate that I am using - 16kHz, I would probably…",{"commenters":148,"max_depth":32,"maker_replies":32,"first_comment_mins":149,"lifespan_hours":150},26,1564,37,[152,154,156,158,160,162,163,165,168,169,172,173,176,180,183,186,189,192,196,199,202,206,208,209,212,215,217,219,223,225,226,229,231,235,238,242,244,248,252],[53,34,34,153,11,39],"project\u002Fneutral\u002Fidea",[102,34,45,155,103,34],"maker\u002Fpositive\u002Fperformance",[142,34,34,157,11,39],"maker\u002Fpositive\u002Fexecution",[106,34,39,159,107,34],"project\u002Fcritical\u002Fperformance",[145,34,34,161,11,39],"project\u002Fneutral\u002Fperformance",[116,34,35,161,103,34],[164,34,34,161,11,39],"25431667",[166,34,34,167,103,34],"25431728","commenter\u002Fneutral\u002Fnone",[119,34,35,161,107,34],[170,34,34,171,103,34],"25431505","commenter\u002Fneutral\u002Fperformance",[110,34,35,161,107,34],[174,34,34,167,175,34],"25437250","randomcarbloke",[177,34,45,178,179,34],"25431332","project\u002Fpositive\u002Fidea","raxxorrax",[181,34,35,153,182,34],"25433680","jlokier",[184,39,45,178,185,34],"25432697","rgovostes",[187,39,34,188,11,39],"25433086","maker\u002Fneutral\u002Fexecution",[190,39,35,153,191,34],"25435888","fl0wenol",[193,39,34,194,195,34],"25436893","other\u002Fneutral\u002Fnone","mhh__",[197,41,35,153,198,34],"25437005","nmstoker",[200,41,35,153,201,34],"25437129","deadmutex",[203,41,34,204,205,34],"25437231","other\u002Fneutral\u002Fidea","core-questions",[207,41,34,167,198,34],"25437436",[131,35,35,153,132,34],[210,35,34,211,11,39],"25432950","maker\u002Fpositive\u002Fnone",[95,213,39,214,82,34],4,"project\u002Fcritical\u002Fprivacy",[59,213,34,216,11,39],"maker\u002Fneutral\u002Fprivacy",[81,213,45,218,82,34],"maker\u002Fpositive\u002Fprivacy",[220,213,34,221,222,34],"25431843","other\u002Fneutral\u002Fprivacy","avh02",[85,213,35,224,86,34],"project\u002Fneutral\u002Fprivacy",[135,213,34,204,136,34],[227,45,34,221,228,34],"25434915","aarchi",[70,230,39,214,71,34],6,[232,230,34,233,234,34],"25434284","commenter\u002Fneutral\u002Fprivacy","rcoveson",[236,32,34,194,237,34],"25430977","jedimastert",[239,240,34,194,241,34],"25436330",8,"lrossi",[74,33,45,243,75,34],"project\u002Fpositive\u002Fexecution",[245,246,34,204,247,34],"25432266",10,"simias",[249,250,45,157,251,34],"25434058",11,"jrexilius",[253,18,45,157,254,34],"25432666","xvector",[],[257,262,267,272,277,282],{"id":258,"name":259,"points":260,"category":261},"25372464","SongBox",647,"web_saas",{"id":263,"name":264,"points":265,"category":266},"25434753","33Mail",442,"productivity",{"id":268,"name":269,"points":270,"category":271},"25414389","Typesense Books Search",424,"data",{"id":273,"name":274,"points":275,"category":276},"25405259","A Book Like Foo",344,"learning_science",{"id":278,"name":279,"points":280,"category":281},"25429685","Polotno Studio",180,"dev_tools",{"id":283,"name":284,"points":14,"category":281},"25394567","Devbook",false,"v2",{"id":288,"name":5,"line":6,"ai":285,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":289,"top":18,"kw":290,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":291,"url":9,"mix":292,"praise":66,"objection":90,"sub":21},25417022,0.22,[24,25,26,27,28],"050103003030535030330030105030010005055",[32,33,34,35],1794036599575]