ä»æ¥ã¯ãLLC SatelliteïŒPermïŒã®Skolkovoãã¯ãããŒã¯ã®å± äœè ããIPã«ã¡ã©MACROSCOPã®ãœãããŠã§ã¢ããã±ãŒãžãç¥ãéçšã§çºèŠããè匱æ§ã«ã€ããŠã話ããŸãã MACROSCOPã¯åãªããœãããŠã§ã¢ããã±ãŒãžã§ãããœãªã¥ãŒã·ã§ã³ã«ã¯å€ãã®ã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŠããããã§ããMicrosoftWindowsãã¡ããªã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã çšã®ãµãŒããŒãšããªãŒã«ã€ã³ã¯ã³ãããŒãïŒéçºè ã¯æè¿Linuxãœãªã¥ãŒã·ã§ã³ã®éçºãæŸæ£ããŸããïŒãWindowsãAndroidãiOSãWindowsã®ã¯ã©ã€ã¢ã³ãããŒãé»è©±ãã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒãWebã«ã¡ã©ãæ¥ç¶ããããã®ããã°ã©ã ãç¬èªã®åœ¢åŒã®ãã¡ã€ã«ãã¬ãŒã€ãŒãã¢ãŒã«ã€ããããŒã«ã«ã§è¡šç€ºããã³ããã¯ã¢ããããããã®ããã°ã©ã ãã·ã¹ãã ã®ç¶æ ãç£èŠããããã®ããã°ã©ã ãããŸããŸãªã€ã³ããªãžã§ã³ãã¢ãžã¥ãŒã«ãããã³çµ±åã¢ããªã±ãŒã·ã§ã³ ããã€ãã®ãµãŒãããŒãã£ã·ã¹ãã ãšãSDKãä»ããŠä»»æã®ãœãããŠã§ã¢ãšçµ±åããããã®ååãªæ©äŒãããã ãã¯ãã¹ã³ããã«ã¯å€ãã®å©ç¹ããããŸãããããã§ãæ¬ ç¹ããªãããã§ã¯ãããŸãããæ¬ ç¹ã«ã€ããŠã¯ãå¥ã®èšäºã§èª¬æã§ããŸããéçºè ã¯åžžã«è£œåã®ãã¬ãã£ããªåŽé¢ã宣äŒããããã§ã¯ãããŸããã
çºèŠãããè匱æ§ã¯ãææžåãããŠããªãã¹ãŒããŒãŠãŒã¶ãŒã¢ã«ãŠã³ãã«å¯Ÿãã匱ããŠãŒã¶ãŒåãšãã¹ã¯ãŒãã®äœ¿çšãããã³ãã®ã¢ã«ãŠã³ãã䜿çšããŠäžéšã®ãµãŒããŒèŠæ±ãå®è¡ããæ©èœã§ãã MACROSCOPããã¹ããããšããã«ã¡ã©ã®ã¢ã«ãŠã³ããšããã°ã©ã èªäœãã©ãã ãå®å šã«ä¿åãããŠãããã確èªããå¿ èŠãããããã®çµæããCurrent.CmnConfãæ§æãã¡ã€ã«ã泚ç®ãéããŸããã å€æããããã«ãã«ã¡ã©ã®ãã¹ã¯ãŒãã¯ã¯ãªã¢ããã¹ãã§ä¿åãããããã°ã©ã ã¢ã«ãŠã³ãã®ãã¹ã¯ãŒãã¯md5ããã·ã¥ã®åœ¢åŒã§ãããã»ãšãã©ã®å Žåãå¯éçã«æå·åããã圢åŒã§ãã æ§æãã¡ã€ã«ã調ã¹ãŠãããšãSuperUserãšSuperPassã®è¡ã«å ããŠããªã¢ãŒãã§ããã·ã¥ã«äŒŒã2ã€ã®é£ç¶ããè¡ã«åºããããŸããã ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãšã³ã³ãã£ã®ã¥ã¬ãŒã¿ã䜿çšããèªèšŒã«ãã®ãã¢ã䜿çšããããšããŠããç®çã®çµæã¯åŸãããŸããã§ããããããã¯äœãã«å¿ èŠã§ãããã©ããã§åäœããã¯ãã ãšããèããæšãŠãŸããã§ããã ãã®ã¢ã«ãŠã³ãã«é¢ãããŠãŒã¶ãŒããã¥ã¢ã«ã«ã¯èšèããªãã£ãããããã¯ãã¹ã³ãSDKã䜿çšããŠå€éšã¢ãžã¥ãŒã«ãéçºããããã®ããã¥ã¡ã³ãã調æ»ããããšã«ããŸãããããã§ãæ å ±ãèŠã€ããããšãã§ããŸããã§ããããããã°ã©ã ããããŒã¿ã¹ããªãŒã ãåä¿¡ããããã«HTTPã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãã説æã«èå³ããããŸããã 次ã®ãããªã¯ãšãªã§ãã®ãã¢ã®äœ¿çšã確èªããããšãããšãã®é©ããæ³åããŠãã ããã
server:8080/video?channel=""&login=superuser&password=superpass
ãã®ãªã¯ãšã¹ãããã§ãã¯ããããšã¯ç§ã®æåŸ ãæºãããŠããŸããããã©ãŠã¶ã¯æå®ããããªã³ã¯ã«ããŒã¿ãä¿åããããšãææ¡ããããã¯ãã¹ããªãŒãããšããååã®ãã£ã³ãã«ããã®ãªã¢ã«ã¿ã€ã ãããªã¹ããªãŒã ã«ä»ãªããŸããã 次ã«ããããªã·ã¹ãã ã®ãã¹ãŠã®ãã£ã³ãã«ã®ååãååŸããæ¹æ³ã«ã€ããŠè³ªåããããŸããã éçºè èªèº«ãSDKã§ãã®è³ªåãžã®åçãæäŸããŸããMACROSCOPã§ãã£ã³ãã«åãèå¥åãèšå®ãååŸããã«ã¯ã次ã®ãªã¯ãšã¹ããå®è¡ããå¿ èŠããããŸãã
server:8080/configex?login=superuser&password=superpass
èŠæ±ãžã®å¿çã¯xml圢åŒã§æäŸãããŸãã ãã®å¿çã«åºã¥ããŠãä»»æã®ãã£ãã«ãããªã¢ã«ã¿ã€ã ãããªã®ãªã¯ãšã¹ããçæã§ããŸãã äžèŠãããšãããããã°ã©ã ã®å éšç®çã®ããã«éçºè ãææžåãããŠããªãã¢ã«ãŠã³ãã䜿çšãããšããäºå®ã«ã¯ç¹å¥ãªããšã¯äœããªãããã«èŠããŸããããæŒ ç¶ãšããçãã«èŠãã¿ãããã§æ¢ãŸããªãããšã«æ±ºããŸããã
ãã®ã¢ã«ãŠã³ããã©ã®ããã«åœ¢æãããããå®å šã«ç解ããããšã«ããŸããã MACROSCOPããã°ã©ã ãšã©ã€ãã©ãªã¯ãäž»ã«.NETãœãããŠã§ã¢ãã©ãããã©ãŒã åãã«äœæãããŠããããã.NET Reflectorããã°ã©ã ã䜿çšããŠãããã調æ»ããå¿ èŠããããŸããã ããŒã¯ãŒãã«ããæ€çŽ¢ã«ã¯æéãããããŸããã§ãããèå³ã®ããã³ãŒãã¯ãCommonConfigã¯ã©ã¹ã®å®è£ ã®Common.dllã©ã€ãã©ãªã§èŠã€ãããŸããã
Random random = new Random(); byte[] buffer = new byte[21]; byte[] buffer2 = new byte[21]; random.NextBytes(buffer); random.NextBytes(buffer2); this.SuperUser = SDKCommon.MD5Hash(Encoding.UTF8.GetString(buffer)); this.SuperPass = SDKCommon.MD5Hash(Encoding.UTF8.GetString(buffer2));
MACROSCOPã§ã¯ãæåã®æ§æãé©çšãããšãã«ãã®ã³ãŒãã䜿çšãããããã°ã©ã èšå®ããã¢ã¯ã»ã¹ã§ããªãã¹ãŒããŒãŠãŒã¶ãŒã¢ã«ãŠã³ããäœæãããç¹å®ã®ç¹æš©ããããåžžã«å€æŽãããŸããã Randomã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãåæåãããç¹å®ã®é·ãã®ä»»æã®ããŒã¿ã®2ã€ã®é åãååŸããããããããæååãåä¿¡ãããæçµçã«md5ããã·ã¥ã«ãªãããšãã³ãŒãããããããŸãã ä»»æã®ããŒã¿ã·ãŒã±ã³ã¹ãšäžå¯éå€æã䜿çšããã®ã¯ãããªãã¯ã§ã¯ãªãããã«èŠããŸãããRandomã¯ã©ã¹ã䜿çšããªãéãããã®èšäºã«è匱æ§ã¯ãããŸããã
MACROSCOPã®è匱æ§ã®æ ¹æ¬åå ã¯ãæšæºã®.NETã¯ã©ã¹Randomã®äœ¿çšã«ãããŸããããã«ããã劥åœãªæéå ã«ååŸã§ããã¢ã«ãŠã³ããçæãããŸãã å®éããã®ã¯ã©ã¹ã¯GetTickCountã·ã¹ãã é¢æ°ãåŒã³åºããŠååŸãã32ãããå€ã䜿çšããŠãã³ã³ãã¥ãŒã¿ãŒã®é»æºãå ¥ããŠããçµéããããªç§æ°ã§ããæ¬äŒŒä¹±æ°ã®é åãåæåããŸãã ãããã£ãŠããã®çªå·ã«åºã¥ããŠããŠãŒã¶ãŒåãšãã¹ã¯ãŒãã®ãã¢ã圢æãããŸãã ãã®ãã¢ã¯ãã³ã³ãã¥ãŒã¿ãŒã®é»æºãå ¥ããŠããæåã®æ§æãé©çšããããŸã§ã®çµéæéã®å¯èœãªå€ããã¹ãŠåæããããšã§æ€åºã§ããŸãã ãã®åé¡ã¯ãã»ãšãã©ã®å Žåãã³ã³ãã¥ãŒã¿ãŒã®é»æºãå ¥ããŠããæåã®æ§æãé©çšããããŸã§ã®æéãã»ãšãã©çµéããªããšããäºå®ã«ãã£ãŠãæªåããŸãã ããšãã°ãã³ã³ãã¥ãŒã¿ãŒã®é»æºãå ¥ããŠãã1æéåŸã«æåã®æ§æãé©çšãããå Žåã360äžã®çµã¿åããïŒ1æé* 60å* 60ç§* 1000ããªç§ïŒã®ã¿ããã§ãã¯ããå¿ èŠããããŸãã ã³ã³ãã¥ãŒã¿ãŒã®é»æºãéåžžã«é·ãéãªã³ã«ãªã£ãŠããå Žåã§ãããã«ãŒããã©ãŒã¹ã«ããæ»æãããã»ã©è€éã«ããããšã¯ãããŸããã Randomã¯ã©ã¹ã¯32ãããã®ç¬Šå·ä»ãæ°å€ã®ã¢ãžã¥ã©ã¹ã®å€ãåæåããããã«äœ¿çšãããããå ¥åå€ã®æ°ã¯æçµçã«31ãããã®æ°å€ã«å¶éãããŸãã ãããã£ãŠãåæã®çµã¿åããã®æ倧æ°ã¯2 ^ 31ïŒ2147483648ïŒã®å€ã§ãããã³ã³ãã¥ãŒã¿ãŒã®é»æºãå ¥ããŠããæåã®æ§æãé©çšããããŸã§ã®æéã¯çŽ25æ¥éã§ããã®åŸã«ãŠã³ãããŠã³ã¯æåããå§ãŸããŸãã æ€çŽ¢ã¯ããã£ãã«åããã®èå¥åããã³èšå®ãåä¿¡ããããã«ä»¥åã«æå®ãããèŠæ±ã䜿çšããŠå®è¡ãããŸãã çæ³çãªæ¡ä»¶ïŒå°ãªããšã50 Mbpsã®éä¿¡ãµãŒããŒãã£ãã«é床ããã«ãã³ã¢ããã»ããµãäœããã»ããµè² è·ïŒã§ã¯ãæ€çŽ¢é床ã¯æ¯ç§çŽ5000ã¢ã«ãŠã³ãã«éããããšããããŸãã ã€ãŸããã³ã³ãã¥ãŒã¿ãŒã®é»æºãå ¥ããŠãã1æéåŸã«æåã®æ§æãé©çšãããå Žåãã¢ã«ãŠã³ãã®åææéã¯12å以å ã«ãªããŸãã ãŸããå¶æ¥æéäžã«ã³ã³ãã¥ãŒã¿ãŒã®é»æºããªã³ã«ãªã£ãæšå®æéãèæ ®ãããšãæ€çŽ¢æéãççž®ããããšãã§ããŸããããšãã°ãå¶æ¥æ¥ããã³å¶æ¥æéäžã«ã³ã³ãã¥ãŒã¿ãŒã®é»æºããªã³ã«ã§ããå Žåãæ€çŽ¢æéã¯3.7åã«ççž®ã§ããŸãã
éžæããã¢ã«ãŠã³ãã¯ãç¹å®ã®ç®çã§å°æ¥äœ¿çšã§ããŸãã ç§ãçºèŠãããã®ã®ãã¡-ããã¯ãåè¿°ã®ããã«ããã¹ãŠã®ãã£ãã«ã§ãªã¢ã«ã¿ã€ã ã«ãããªã衚瀺ããæ©èœãšããµãŒããŒã®ä»»æã®æ§æã䜿çšããæ©èœã§ãã æåŸã®æ©äŒã¯æ倧ã®è åšã§ã ãµãŒããŒãå®å šã«å¶åŸ¡ã§ããŸãã ç°¡åãªè¡šçŸã§ã¯ãæ§æå€æŽã«å¯Ÿããæ»æã¯æ¬¡ã®ããã«å®è£ ãããŸããæ»æè ã¯æ§æå€æŽã®ãªã¯ãšã¹ããæºåã§ããŸããããšãã°ããµãŒããŒãžã®ãªã¢ãŒãã¢ã¯ã»ã¹ãæäŸããã«ã¡ã©ã®1ã€ã«å¯ŸããŠã¹ã¯ãªãããå®è¡ãããŸãã ãã®ãªã¯ãšã¹ãã§ã¯ã以åã«åãåã£ãã¢ã«ãŠã³ããšããªããžã§ã³çªå·ãèå¥åãæ§æå€æŽã®æ¥ä»ãªã©ã䜿çšãããŸãã æ»æè ããµãŒããŒã«äŸµå ¥ãããšãããã¯ãã¢ãã€ã³ã¹ããŒã«ããããã°ãã¡ã€ã«ãå€æŽãããå€ãæ§æãããã¯ã¢ãããã埩å ãããŸãã
äºåæ€èšŒã«ãããšãã¹ãŒããŒãŠãŒã¶ãŒã¢ã«ãŠã³ãã¯ãããšãã°ãã£ãã«ã¬ã³ãŒãã®ã¢ãŒã«ã€ããšçŸåšã®æ§æã«ã¢ã¯ã»ã¹ããããã«äœ¿çšããããšã¯ã§ããŸããïŒç§ã¯ééã£ãŠããå¯èœæ§ããããŸãïŒããé«ã確çã§ãéçºè ããã¹ãä»ã®ç®çã«äœ¿çšã§ããŸãããç¥ãããŠããŸãã
éçºè ã¯MACROSCOPã®è匱æ§ã«ã€ããŠéç¥ãåãã2é±éåŸïŒ2014幎3æ12æ¥ïŒãããã°ã©ã ããŒãžã§ã³1.9.72ã®ãªãªãŒã¹ã§ãããã¯ããŒãºããŸããã ãã«ãã€ã³ã¢ã«ãŠã³ãçæã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
byte[] data = new byte[21]; byte[] buffer2 = new byte[21]; try { RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider(); provider.GetBytes(data); provider.GetBytes(buffer2); } catch (Exception exception) { b1x.a(exception, "dsfimdfsmsdfdkfskfds"); Random random = new Random(Guid.NewGuid().GetHashCode()); random.NextBytes(data); random.NextBytes(buffer2); } Buffer.BlockCopy(Guid.NewGuid().ToByteArray(), 0, data, 0, 8); Buffer.BlockCopy(Guid.NewGuid().ToByteArray(), 0, buffer2, 0, 8); this.SuperUser = SDKCommon.MD5Hash(Encoding.UTF8.GetString(data)); this.SuperPass = SDKCommon.MD5Hash(Encoding.UTF8.GetString(buffer2));
æ°ããããŒãžã§ã³ã®ã³ãŒãã¯ãGuidãšæ··åããã©ã³ãã ããŒã¿ãçæããæå·åã¯ã©ã¹ã䜿çšããŸããããã«ãããã¢ã«ãŠã³ããéžæããããšã¯å®è³ªçã«äžå¯èœã«ãªããŸããããã«ãéçºè ã¯ã以åã«æå®ãã2ã€ã®ãµãŒããŒãªã¯ãšã¹ãã§ãã®ã¢ã«ãŠã³ãã䜿çšããå¯èœæ§ãéããŸããã ããã§ãããã®ã¢ã«ãŠã³ãã¯æ§æã®é©çšæã«äœ¿çšãããŸããããã®å Žåã®æ€çŽ¢é床ã¯ã¯ããã«é ããªããŸãããµãŒããŒãžã®æå°èŠæ±ã¯çŽ10 Kbã§ãããã¯ä»¥åã®æ¹æ³ã®10åã®ãã©ãã£ãã¯ã§ãããæŽæ°ã®ãªã¹ã¯ããããã®ã®ã¿ãæ®ããŸãå€ããŠãŒã¶ãŒã å®éã«ã¯ãæ¢åã®æ§æã§ã¯ãããã°ã©ã ã®æ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããšãã«ããã€ãã®ããã·ã¥ãå€æŽãããªãããããã®æé ã¯ç¬ç«ããŠå®è¡ãããã ãã§ãã æãéèŠãªããšã¯ããã«ããµãŒããŒæ§æã䜿çšãããå Žåãããã€ãã®ããã·ã¥ãšãããã«å¿ããŠãæ§æèªäœããã¹ãŠã®ãµãŒããŒã§äžèŽããå¿ èŠãããããšã§ãã ããããªããšãæ°ããæ§æãé©çšãããšãã«ç«¶åãçºçããŸãã ãããã£ãŠãããŒãžã§ã³1.9.72ããããã°ã©ã ã䜿çšãå§ããã°ããã®æ°ããäœæãããMACROSCOPãŠãŒã¶ãŒã®å Žåããã®è匱æ§ã¯æããããŸããããå€ããŠãŒã¶ãŒã®å Žåã次ã®ããã«é€å»ã§ããå°ããªãªã¹ã¯ããããŸãã
-ã³ã³ãã¥ãŒã¿ãŒã§MacroscopServerãµãŒãã¹ãåæ¢ããããã¹ã¿ã³ãã¢ãã³ããŒãžã§ã³ãã·ã£ããããŠã³ããŸãã
-ããã°ã©ã ãã©ã«ããŒã«ãã16é²ãšãã£ã¿ãŒã§æ§æãã¡ã€ã«ãCurrent.CmnConfããéããŸãïŒæåã«ãã¡ã€ã«ã®ããã¯ã¢ããã³ããŒãäœæããããšããå§ãããŸãïŒã
-ãã¡ã€ã«ã«ãAlarus.Config.SystemEditionsããšããè¡ãã€ãŸããšã³ããªã®2çªç®ã®çµæããããŸãã
-æ€çŽ¢çµæã®ããäžã«32æåã®é·ãã®2è¡ããããŸã-ããã¯ãã«ãã€ã³ã¢ã«ãŠã³ãã®ããŒã¿ã§ãã
-æååã®é·ããå€æŽããã«ãã»ããã0123456789ABCDEFãã®æå¹ãªæåãèæ ®ããŠãæååã®å 容ãä»»æã®å€ã«å€æŽããŸãã
-èšå®ãä¿åããŸãã
-ãµãŒãã¹ã®ããã°ã©ã ãŸãã¯ã¹ã¿ã³ãã¢ãã³ããŒãžã§ã³ãå®è¡ããŸãã
-ãã«ããµãŒããŒæ§æã䜿çšããå Žåãåãã¢ã¯ã·ã§ã³ãå®è¡ãã以åã«ç·šéããå€ã®ã¿ãæååãšããŠäœ¿çšããããæ§æãä¿®æ£ãããã®ã«çœ®ãæããŸãã
èŠçŽãããšããã¹ãŠã®éçºè ãæšæºã®Randomã¯ã©ã¹ã䜿çšããŠééããç¹°ãè¿ãããã©ã³ãã ããŒã¿çæã¢ã«ãŽãªãºã ã®æå·åå®è£ ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®æœåšçãªè åšã«è¿ éã«å¯Ÿå¿ããããšãæã¿ãŸãã