- CS विभाग के IT सपोर्ट प्रभारी ने प्रोफेसर की Sparc4 performance गिरने की शिकायत पर दफ़्तर जाकर देखा और विंडो के पीछे छिपा हुआ xroach पाया
- एक विंडो minimize करते ही स्क्रीन के नीचे काला rectangle जैसा दिखा, और उसके भीतर तिलचट्टे बहुत धीरे-धीरे हिल रहे थे
- उनकी चाल लगभग 0.5 fps के स्तर की थी, और xterm के नीचे xroach के तिलचट्टे इतने ज़्यादा थे कि वे एक काले ठोस गुच्छे जैसे दिख रहे थे
- समस्या का मुख्य कारण hardware से ज़्यादा यह था कि यूज़र की नज़र से दूर xroach लगातार render हो रहा था
- पुराने X11 desktop environment में शरारती programs भी असली performance issue जैसे लग सकते हैं, इसलिए छिपी हुई विंडो और background state की जाँच अहम है
प्रोफेसर के दफ़्तर में देखे गए लक्षण
- Paco Hope, जब पहले CS विभाग में IT सपोर्ट प्रभारी के रूप में काम करते थे, तब एक प्रोफेसर ने शिकायत की कि Sparc4 धीमा है, और उन्हें दफ़्तर बुलाया गया
- उन्होंने सबसे पहले एक विंडो minimize की, और उसके नीचे उम्मीद से परे एक काला rectangle दिखाई दिया
- उस काले हिस्से के अंदर xroach के तिलचट्टे थोड़ा-थोड़ा हिल रहे थे
- उनकी चाल इतनी धीमी थी कि वह लगभग 0.5 fps जैसी लग रही थी
xterm के नीचे ठसा-ठस भरा xroach
- xterm के नीचे xroach इतनी मात्रा में फैला हुआ था कि अलग-अलग तिलचट्टे नहीं, बल्कि लगभग एकरंगा काला rectangle जैसा दिख रहा था
- प्रोफेसर ने विंडो minimize करने से पहले उसके नीचे की स्थिति देखी ही नहीं थी, और performance गिरने की शिकायत का सुराग इस छिपी हुई स्क्रीन अवस्था की जाँच से मिला
संक्षिप्त स्मरण और प्रतिक्रिया
- यह किस्सा 25 जुलाई 2023 को Paco Hope द्वारा Mastodon पर पोस्ट की गई एक छोटी-सी याद है
- पोस्ट पर 202 boosts और 389 favorites दिखे, जिससे पुराने desktop environments और मज़ाकिया programs को याद करने वाले यूज़र्स में यह बात गूँज उठी
1 टिप्पणियां
Hacker News की रायें
जब मैं एक स्थानीय अस्पताल में tech support कर रहा था, तो एक नर्स का फोन आया कि स्क्रीन पर “मौसम पूर्वानुमान जैसी कोई विंडो” खुली है और mouse उसके नीचे चला जाता है, इसलिए वह उसे बंद नहीं कर पा रही हैं
मुझे दिलचस्पी हुई, तो मैंने उनसे कहा कि कंप्यूटर को न छुएँ, और करीब 10 मिनट चलकर पहुँचा। उन्होंने कहा, “एक मिनट पहले अपने-आप बंद हो गई। 30 मिनट से खुली थी”
डेस्क की व्यवस्था और विंडो के वर्णन को देखकर मैंने monitor का बटन दबाया, तो पता चला कि keyboard के कोने से गलती से दब गया monitor OSD menu खुला था, और brightness 100% को सूरज वाले icon से दिखा रहा था। mouse का उसके नीचे चला जाना भी स्वाभाविक था
फिर 10 मिनट चलकर वापस गया और अगले फोन का इंतजार करने लगा
नर्सें जान बचाने और अपनी जिंदगी के सबसे बुरे दिन से गुजर रहे लोगों की देखभाल करने में व्यस्त होती हैं, और उसके ऊपर उन्हें खराब implementation और maintenance वाले workstations भी संभालने पड़ते हैं। मदद माँगने पर कभी-कभी वही लोग आकर उन्हें नीचा दिखाते हैं जिन्होंने समस्या बनाई होती है
नर्सें बेवकूफ या आलसी नहीं होतीं; वे ऐसे लोग हैं जिन्हें मामूली IT समस्याओं पर समय लगाने के बजाय कहीं ज्यादा जरूरी काम करने होते हैं
वास्तविक इलाज के लिए महत्वपूर्ण उपकरण आमतौर पर dedicated experts संभालते थे, और MRI equipment computer Active Directory से जुड़ा भी नहीं होता था और शायद network पर भी नहीं होता था। समस्या printer ठीक करने वाले व्यक्ति के पास नहीं, GE तक पहुँचाई जाती थी
जाकर देखा तो CRT monitor के ऊपर दो बड़े speakers वाला boombox रखा था, और उसे हटाते ही समस्या जादू की तरह ठीक हो गई
दरअसल नर्स ने जो हुआ था, उसे काफी सटीक तरीके से बताया भी था
1989 में मैं अकेला IT department संभालता था, ऐसी जगह जहाँ पूर्व अकादमिक economists Digital VAX 11/750 पर econometric modeling करते थे
यह minicomputer multi-user operating system VMS चलाता था, और सभी users के पास administrator privileges थे। हर कोई सोचता था कि अपने process priority को जितना हो सके बढ़ा देने से model तेज चलेगा, लेकिन इससे computer के संचालन के लिए जरूरी real-time processes में बाधा आती थी और असर उल्टा हो जाता था
वजह खोजकर privileges वापस लेने और system restart करने के बाद सब सामान्य हो गया, और मुझे system को तेज बनाने के लिए धन्यवाद मिला
किसी और ने ऐसा program बनाया जो खुद को 1000 बार fork करता,
nicevalue को 19 तक घटाता, फिरsleep(0)करके exit करता। CPU time का जरा-सा भी हिस्सा मिलते ही वह तुरंत खत्म हो जाता, लेकिन emacs चलते समय उसे वह मौका नहीं मिल पाता था। इस दौरानxloadमें दिखने वाला load एक काला डिब्बा बन गयाemacs इस्तेमाल कर रहे व्यक्ति ने root के रूप में
ps -ef | grep procname | xargs killचलाया, लेकिन kill process करने के लिए CPU time चाहिए था, इसलिए वहsleep(0)से ज्यादा समय लेता था और खास असर नहीं हुआदूसरी शरारत में process name
emaरखा गया, और नतीजतन emacs instances भी सभी kill हो गएतीसरी बार process name
etरखा गया, जो संयोग से/etc/initdसे भी match कर गया, और machine अचानक reboot हो गईScheme interpreter शुरू होने में धीमा था, खासकर जब 20 से ज्यादा लोग logged in हों। TA ने
ctrl-zसे interpreter को pause करने,viमें edit करने, फिरfgसे वापस जाने का तरीका बतायासमस्या यह थी कि आधे नहीं, बल्कि class के 2/3 लोग
fgभूल जाते थे और edit करने के बाद नया Scheme instance फिर से खोल देते थे। assignment deadline वाली रात terminal room में system के पूरी तरह रेंगने की याद अब भी हैबाद में मैंने दो या अधिक Scheme instances चलाने वाले classmates को ढूँढकर उन्हें
fgयाद दिलाना सीखा, और 8 queens problem को infinite recursion से हल करने वाले “solutions” ने भी load में बिल्कुल मदद नहीं की। असली सीख यह थी कि बाद में CS 401 assignment deadline वाली रात login नहीं करना चाहिएshared terminals एक ही room में इकट्ठे थे, इसलिए अपनी हरकत का असर real time में देखना मजेदार था
किसी ऐसे माहौल में जहाँ लोग queue में थे, किसी ने पूछा कि क्या उसकी समस्या दूसरों से पहले देखी जा सकती है। यानी उसे queue के सबसे आगे भेजने का अनुरोध था
उसने कहा, “बिल्कुल!” और जब सामने वाला हैरान हुआ, तो उसने जोड़ा, “लेकिन आपको पता है न कि जो भी यही request करेगा, मैं उसके साथ भी यही करूँगा?”
आखिरकार उस व्यक्ति ने अपनी जगह पर ही इंतजार करते रहने का फैसला किया
पुराने सुनहरे छात्र-जीवन की याद आ गई
मेरे मामले में यह 2000 के शुरुआती सालों की बात थी, और यूनिवर्सिटी लैब के कंप्यूटर बहुत शक्तिशाली नहीं थे, इसलिए लोग भारी X session चलाने के बजाय Linux console में काम किया करते थे
2001 के आसपास
console_ioctl(4)manual page पढ़ते हुए मुझे पता चला कि उसमें शरारतों के लिए बहुत कुछ भरा पड़ा है। मैंने छोटे-छोटे programs बनाए जो console font से छेड़छाड़ करके सारे अक्षरों को उल्टा कर देते, uppercase और lowercase बदल देते, keyboard LED patterns झपकाते, या palette बदलकर screen को काला fade-out करके फिर वापस ले आतेइसमें server component जोड़कर उसे सामान्य दिखने वाले terminal पर चला देता, victim के आने का इंतज़ार करता, फिर उसी कमरे की किसी दूसरी machine से remotely effects चालू करके उसकी प्रतिक्रिया देखता। गनीमत रही कि जल्द ही मुझे समझ आ गया कि लोगों को घबराते देखने से ज़्यादा मज़ा coding में ही है, और मैंने बाद वाला काम छोड़ दिया
एक और शरारत यह थी कि
gettylogin prompt पर ऐसा output खुद type कर देना जैसे root login सफल हो गया हो। इसमेंmotdतक शामिल करता, line breaks को tabs और spaces से imitate करता, कभी RET नहीं दबाता, और आखिर में[root@mailhost root]#पर समाप्त करताकोई जिज्ञासावश
whoamitype करता और हैरान होता कि password prompt क्यों आ रहा है, तो कोई कुछ भी छूने की हिम्मत नहीं करता, डरकर पीछे हट जाता और दूसरे terminal से system administrator को mail भेजताजब तक user logged in होता, Task Scheduler से असल में लगभग कोई भी program उसी user की permissions में चलाया जा सकता था, और Active Directory के साथ जोड़ने पर user information भी पता चल जाती थी। कौन कहाँ है यह जानकर किसी खास site पर
iexplorerखोल देना, या कोई harmless Word document दिखा देना—ऐसा ही कुछ। सबसे malicious example automatic logout batch script थाबाद में लोगों को तरीका समझ में आया और उन्होंने remote execution की नकल करने की कोशिश की, लेकिन target user की permissions में चलाने के बजाय अपनी permissions में चला बैठे, इसलिए IT admin के आने पर यह trace बहुत साफ था कि किसने चलाया था
मैंने शरारतें छोड़ दीं, और आखिरकार IT से होते हुए software engineer बन गया। कभी-कभी सोचता हूँ कि अगर उस समय मुझे disciplinary action मिला होता तो क्या होता
IBM 370 mainframe पर 80 से ज्यादा programmers थे, और VM/370 हर programmer के लिए एक virtual machine बना देता था। मैं “superuser” privileges वाले दो system programmers में से एक था
virtual machine के अंदर आम तौर पर CMS चलता था, लेकिन दूसरी चीज़ें भी चलाई जा सकती थीं, और कुछ machines MVS चलाती थीं
virtual machine को खुद command भेजने के लिए command के आगे एक special character लगाना पड़ता था, जिसका default
#था। उदाहरण के लिए#cp ...virtual machine को जाने वाला command था, और इस magic prefix को अपनी पसंद के character में बदला जा सकता थाएक दिन बोर होकर मुझे जिज्ञासा हुई कि क्या virtual machine के अंदर फिर से VM चलाया जा सकता है। मैंने “second level” में VM boot किया और prefix character को
!में बदल दिया, और उसके अंदर नई virtual machines बना सकता थाफिर “third level” virtual machine में VM boot किया और prefix character को
@में बदल दिया। आखिरकार मैं 8 levels की nesting तक चला गया, और यह पुष्टि कर ली कि VM, VM चला सकता है, और वह फिर VM चला सकता हैअब खत्म करके nested levels को बंद करने के लिए मैंने आदतन
#cp shutdowntype कर दिया, लेकिन असली machine का असली VM ही shut down हो गया। घबराकर machine room में भागा और console का start button दबायास्वाभाविक रूप से system logs रह गए थे, और दूसरा system programmer मेरे कमरे में आया और बोला, “फिर कभी ऐसा मत करना।” मज़ेदार दिन थे
#level 0 operating system, यानी host का नहीं, बल्कि level 1 VM का prefix character हैअगर
#से level 0 को command भेजी गई, तो सोच रहा हूँ कि level 1 का prefix क्या थाkillall procnameचला दिया। machine तुरंत मर गईsystem administrator के आने पर ही पता चला कि Solaris में
killallकुछ और करता है, और हमें कहा गया कि इसे फिर कभी इस्तेमाल न करें80 के दशक में विश्वविद्यालय में छात्र रहते हुए VAX 11/750, ठीक कहें तो 8750 Systime clone, तक पहुंच थी और उसी पर coding assignments करता था
छात्रों के terminals एक बड़े कमरे के आधे हिस्से में थे, और बाकी आधा हिस्सा विश्वविद्यालय के IT staff इस्तेमाल करते थे। अगर IT admin side में कोई खाली terminal नहीं होता, तो एक-दो staff partition के ठीक उस पार वाले students' terminals इस्तेमाल कर लेते थे
एक दिन COBOL project compile होने का इंतज़ार करते-करते इतना ऊब गया कि सोचा क्या system administrator का username और password पकड़ सकता हूं। CLI में login prompt को beep sound और message तक पूरी तरह mimic करने वाली script लिखी
script screen clear करती, username और password input का इंतज़ार करती, फिर input मिलते ही मुझे mail कर देती, username/password error दिखाती और logout करके असली login process को hand over कर देती
कुछ अनजान classmates पर test करके और थोड़ी anonymous prank करने के बाद, system administrators पर सच में try करने का फैसला किया। IT staff आम तौर पर जिन दो terminals का इस्तेमाल करते थे, उनमें login करके script चला छोड़ी; कुछ घंटों बाद लौटा तो हैरानी और थोड़ी घबराहट के साथ देखा कि SYSTEM login password मिल गया था
करीब एक महीने तक उस machine पर पूरा control था, और जब भी SYSTEM password बदलता, कभी-कभी script फिर चला देता। किसी को नहीं बताया, और graduation के आखिरी दिन एहतियातन login करके script delete कर दी। उस समय UK में unauthorized computer access से जुड़े कानून सख्त हो रहे थे
उस machine के विशाल manuals के साथ बहुत समय बिताकर VMS explore किया और सीखा, लेकिन किसी को पता नहीं चला
Ctrl+Alt+Delके जरिए security context में जाना पड़ता थाhttps://en.wikipedia.org/wiki/Control-Alt-Delete
उन्होंने मुझे मेरी पहली job दी :-) साथ ही मैंने कम जाने-पहचाने एक-दो accounts को पहले से जरूरी privileges दे रखे थे, ताकि “official” account से SYSTEM privileges वापस ले लिए जाएं तो भी उन्हें वापस पा सकूं
मजेदार दौर था, और हम naive भी थे। privileges से कोई तबाही नहीं मचाई
अब programming से रोजी-रोटी कमाता हूं, तो यह बहुत चौंकाने वाली बात भी नहीं लगती
मेरा वाला school Windows के लिए था, शायद Novell network के लिए Visual Basic 5 में।
win.iniबदलकर उसे असली login screen से पहले run कराना बहुत आसान थाusername और password को shared network drive या local file में save करता, “password error” दिखाता और फिर असली login prompt पर exit कर जाता
आखिर में समस्या तब हुई जब एक “दोस्त” ने इसी technique से लोगों के network account files अपने account में copy करने शुरू कर दिए। अंदाजा है कि quota भर जाने पर system ने network admin को alert किया होगा। थोड़ा देखने पर पता चला कि उसने teacher के thesis files तक copy कर लिए थे, और वह सच में बहुत बड़ा taboo था
इसी घटना की वजह से आखिरकार मुझे junior tech support/network admin के रूप में पहली computer-related job मिली
1988 में high school में मैंने और एक दोस्त ने नए computer lab के 30 IBM PS/2 Model 30-286 machines पर deployed NetWare में
autoexecnetwork boot sequence में program घुसाने की vulnerability खोजीउससे पहले मैंने उस समय नए VGA registers से छेड़छाड़ करते हुए पता लगाया था कि 80x25 text mode से 320x200 256-color graphics mode में बिना flicker या corruption के कैसे switch किया जाए। वजह यह थी कि दोनों modes का refresh rate 70Hz था
मेरे दोस्त ने एक TSR बनाया जो clown face की digital image को
A000:0000पर पहले से load कर देता था, और करीब 4 मिनट बाद कुछ frames के लिए clown face दिखाकर तुरंत user जिस screen पर काम कर रहा था, उसी पर वापस लौटा देता थाclassroom के कोने से students के confused और डरे हुए चेहरे देखकर हंसी रोक नहीं पाए और पकड़े गए। खासकर एक student ने teacher को बुलाकर 3 मिनट से ज्यादा screen दिखवाई, और जैसे ही teacher मुड़े, ठीक उसी timing पर clown face flash हुआ—वह कमाल का moment था
दोस्त का नाम Brian था, और वह उन सबसे होशियार लोगों में से एक था जिन्हें मैंने जाना। 10 साल बाद हमने mobygames.com बनाया
आवाज की frequency लगातार बदलती रहती थी, इसलिए एक पल के लिए भी कोई fixed tone नहीं होता था। उस समय speakers आम तौर पर सिर्फ beep करते थे, और मैं इसे unused machines पर छोड़ देता था
90 के दशक की शुरुआत में मैं एक state university के Computer Science department में नया undergraduate छात्र था। Computer lab SunOS चलाने वाली Sun SPARCstation IPC मशीनों से भरा था, और department के लोग आपस में बात करने के लिए एक basic email system इस्तेमाल करते थे
जो लोग technology में तेज थे वे पहले ही Usenet explore कर रहे थे, लेकिन ज़्यादातर लोगों के लिए email ही digital दुनिया की पूरी सीमा था
एक दिन दोस्तों के साथ prank करने का सोचा, और random quotes print करने वाले मशहूर
fortunecommand से idea लिया। हमने एक simple shell script बनाई जो हमारे लिखे मज़ेदार और बेहूदा वाक्यों वाली text file से random एक line चुनकर Computer Science department के किसी random user को email भेजती थी, और उसे cron job के रूप में register कर दिया ताकि हर घंटे एक message जाएशुरुआत में यह harmless prank था। लोगों को messages मज़ेदार लगे और वे lab में उन्हें share करते थे। Messages का source department में चर्चा का विषय बन गया, लेकिन किसी को पता नहीं था कि वे कहाँ से आ रहे हैं, और हम colleagues व professors को उस mysterious sender का अंदाज़ा लगाते देख मज़े लेते थे
लेकिन बात तब बढ़ गई जब dean को एक खास तौर पर अजीब message मिला: “Computer scientists Christmas और Halloween को confuse क्यों करते हैं? क्योंकि Oct 31 == Dec 25।” उन्हें joke समझ नहीं आया और उन्होंने इसे किसी cipher जैसा message या potential threat समझ लिया
Campus IT team जांच में लग गई, और email source trace करने की एक हफ्ते की हलचल शुरू हो गई। मैं और मेरे दोस्त घबराकर देखते रहे कि कहीं पकड़े जाकर निकाल न दिए जाएँ
आखिर कई दिन नींद उड़ने के बाद हमने confess करने का फैसला किया। Dean के पास जाकर सब बता दिया, तो लंबी चुप्पी के बाद वे हँसने लगे। पता चला कि Computer Science professors में से एक ने उन्हें joke समझा दिया था, और वे इंतज़ार कर रहे थे कि हम कब सामने आते हैं
उन्होंने prank को उदारता से लिया और हमारी initiative को creative माना, लेकिन ऐसे pranks के unintended consequences के बारे में चेतावनी दी
पीछे मुड़कर देखें तो यह मज़ेदार और यादगार prank था, और इसने technology use ethics पर एक कीमती lesson दिया। आज जब मैं अपने Computer Science students को digital दुनिया में ethical behaviour का महत्व सिखाता हूँ, तो यह कहानी अक्सर सुनाता हूँ
एक बार Mathematics department के head का PC अजीब behave कर रहा था, तो मुझे issue देखना पड़ा
पता चला कि उन्होंने Prime95 को Core 2 Duo के एक core पर spare cycles पूरे 10 साल तक use करने दिया था, और वह machine तभी boot होती थी जब room temperature तक ठंडी हो जाए
Graduate school के दिनों में एक दोस्त ने दूसरे दोस्त पर यह prank किया था
Victim login करके थोड़ी देर के लिए terminal छोड़कर गया, तो prankster ने
.loginfile मेंecho sleep -1 >> .loginजोड़ दियाकुछ दिनों बाद जब
sleepstatements 20 से ज़्यादा हो गए, तब जाकर साफ हुआ कि उस student के login में कुछ बहुत गड़बड़ है। हर दिन initial login से active terminal तक पहुँचने का समय धीरे-धीरे बढ़ता गया, victim और चिड़चिड़ा होता गया, और आखिर जब सहना मुश्किल हो गया तब prank पकड़ा गयाकुछ समय बाद लगा कि हर login में 1 second जोड़ना बहुत subtle है
echo "echo sleep 1 >> ~/.login" >> ~/.loginपुरानी कहानियों में से काफी का अंत आखिरकार “मंशा बुरी नहीं थी, बस मज़ाक करना था, पर अंदाज़ा नहीं था कि यह इतना multiply हो जाएगा या इतने resources खा जाएगा” पर आकर होता है, यह मज़ेदार है
Morris worm भी कुछ ऐसा ही था। बहस की गुंजाइश है, लेकिन उसे malware के रूप में designed माना जा सकता है, और कम से कम जो सुना जाता है, उसके मुताबिक intent यह नहीं था कि मामला इतना serious हो जाए