αžαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžαžΆαž˜αž•αŸ’αž‘αŸ‡ αž“αž·αž„αžŸαŸ’αžαž·αžαž·αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ?

αžšαŸ‰αŸ„αžαž‘αŸαžšαž•αŸ’αž‘αŸ‡ (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ FritzBox) αž’αžΆαž…αž€αžαŸ‹αžαŸ’αžšαžΆαž”αžΆαž“αž…αŸ’αžšαžΎαž“αŸ– αžαžΎαž…αžšαžΆαž…αžšαžŽαŸαž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž–αŸαž›αžŽαžΆ αž’αŸ’αž“αž€αžŽαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž›αŸ’αž”αžΏαž“αž’αŸ’αžœαžΈαŸ”αž›αŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“ (DNS) αž“αŸ…αž›αžΎαž”αžŽαŸ’αžαžΆαž‰αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αž‡αž½αž™αžαŸ’αž‰αž»αŸ†αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž›αžΆαž€αŸ‹αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹αŸ”

αžŸαžšαž»αž”αž˜αž€ DNS αž˜αžΆαž“αž₯αž‘αŸ’αž’αž·αž–αž›αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž›αžΎαž”αžŽαŸ’αžαžΆαž‰αž•αŸ’αž‘αŸ‡αŸ– αžœαžΆαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž›αŸ’αž”αžΏαž“ αžŸαŸ’αžαŸαžšαž—αžΆαž– αž“αž·αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αŸ”

αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αžŠαŸ‚αž›αž…αŸ„αž‘αž‡αžΆαžŸαŸ†αžŽαž½αžš αž“αž·αž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„αŸ” αž›αž‘αŸ’αž’αž•αž›αž”αžΆαž“αžαŸ’αžšαž„αž…αŸαž‰αž“αžΌαžœαžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž‚αžΆαž›αŸ‹ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžšαž½αž…αž αžΎαž™αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαžŠαŸ‚αž“αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž…αŸ†αž“αž½αž“ 60 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαž€αŸ†αž–αž»αž„αž‚αŸαž„?

αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒ αžŠαŸ‚αž“αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž…αŸ†αž“αž½αž“ 440 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž˜αŸ‰αŸ„αž„αžŸαž€αž˜αŸ’αž˜αŸ” αžαžΎαž–αž½αž€αž‚αŸαž‡αžΆαž“αžšαžŽαžΆ αž αžΎαž™αž–αž½αž€αž‚αŸαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ?

αž…αŸ†αž“αž½αž“αžŸαŸ†αžŽαžΎαž‡αžΆαž˜αž’αŸ’αž™αž˜αž€αŸ’αž“αž»αž„αž˜αž½αž™αžαŸ’αž„αŸƒαžαžΆαž˜αž˜αŸ‰αŸ„αž„

αžαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžαžΆαž˜αž•αŸ’αž‘αŸ‡ αž“αž·αž„αžŸαŸ’αžαž·αžαž·αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ?

αžŸαŸ†αžŽαž½αžšαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ SQL

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Line: DNS Requests per Day for Hours',
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch')) AS 'Day',
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS 'Requests per Day'
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY /* hour aggregate */
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))
ORDER BY strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))

αž“αŸ…αž–αŸαž›αž™αž”αŸ‹ αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž₯αžαžαŸ’αžŸαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘ αž αžΎαž™αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αž–αžΉαž„αž‘αž»αž€ αž–αŸ„αž›αž‚αžΊαž§αŸ” αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ‚αž“αžŠαŸ‚αž›αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž‘αŸαŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αž”αŸ†αž•αž»αžαž”αžΆαž“αž˜αž€αž–αžΈαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαžΌαž…αž‡αžΆ Android, iOS αž“αž·αž„ Blackberry OS αŸ”

αž…αžΌαžšαž™αžΎαž„αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž’αžΆαŸ†αž„αžαž„αŸ‹αžŸαŸŠαžΈαžαŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαžΌαž…αž‡αžΆαž…αŸ†αž“αž½αž“αžŸαŸ†αžŽαžΎαž€αŸ’αž“αž»αž„αž˜αž½αž™αžαŸ’αž„αŸƒ αž…αŸ†αž“αž½αž“αžαŸ’αž„αŸƒαž“αŸƒαžŸαž€αž˜αŸ’αž˜αž—αžΆαž– αž“αž·αž„αžšαž™αŸˆαž–αŸαž›αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž˜αŸ‰αŸ„αž„αž“αŸƒαžαŸ’αž„αŸƒαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ”

αž‡αž“β€‹αžŸαž„αŸ’αžŸαŸαž™β€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αžšαŸ†αž–αžΉαž„β€‹αž‘αž»αž€β€‹αž‚αžΊβ€‹αž˜αžΆαž“β€‹αž€αŸ’αž“αž»αž„β€‹αž”αž‰αŸ’αž‡αžΈαŸ”

αžŠαŸ‚αž“αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„

αžαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžαžΆαž˜αž•αŸ’αž‘αŸ‡ αž“αž·αž„αžŸαŸ’αžαž·αžαž·αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ?

αžŸαŸ†αžŽαž½αžšαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ SQL

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT 
  1 as 'Table: Havy DNS Requests',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests per Day',
  DH AS 'Hours per Day',
  DAYS AS 'Active Days'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  COUNT(DISTINCT REQUEST_NK) AS SUBD,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ,
  ROUND(1.0*COUNT(DISTINCT strftime('%d.%m %H', datetime(EVENT_DT, 'unixepoch')))/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS DH
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY REQUEST_NK )
WHERE DAYS > 9 -- long period
ORDER BY 4 DESC, 5 DESC
LIMIT 20

αž™αžΎαž„αžšαžΆαžšαžΆαŸ†αž„ isс.blackberry.com αž“αž·αž„ iceberg.blackberry.com αžŠαŸ‚αž›αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αžαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž’αŸ†αž–αžΈαž αŸαžαž»αž•αž›αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ” αž›αž‘αŸ’αž’αž•αž›αŸ– αž“αŸ…αž–αŸαž›αž–αŸ’αž™αžΆαž™αžΆαž˜αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… WLAN αžœαžΆαž”αž„αŸ’αž αžΆαž‰αž‘αŸ†αž–αŸαžšαž…αžΌαž› αž αžΎαž™αž˜αž·αž“αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž‘αŸ€αžαž‘αŸαŸ” αžŸαžΌαž˜β€‹αžŠαŸ„αŸ‡β€‹αžŸαŸ’αžšαžΆαž™β€‹αžœαžΆβ€‹αŸ”

detectportal.firefox.com αž‚αžΊαž‡αžΆαž™αž“αŸ’αžαž€αžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆ αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž Firefox αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαžΆαž‰ WLAN αžŠαŸ†αž”αžΌαž„αžœαžΆαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž‘αŸ†αž–αŸαžšαž…αžΌαž›αŸ” αžœαžΆαž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž‘αŸαžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“ ping αž‰αžΉαž€αž‰αžΆαž”αŸ‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αž“αŸ’αžαž€αžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αžŠαŸ„αž™αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αžαŸ”

skype αŸ” αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαž”αžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αžŠαž„αŸ’αž€αžΌαžœαž˜αž½αž™αžŠαŸ‚αžšαŸ– αžœαžΆαž›αžΆαž€αŸ‹αžαŸ’αž›αž½αž“ αž“αž·αž„αž˜αž·αž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαŸ’αž›αž½αž“αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž›αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαžšαž—αžΆαžšαž€αž·αž…αŸ’αž…αž”αž„αŸ’αž€αžΎαžαž…αžšαžΆαž…αžšαžŽαŸαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž”αžŽαŸ’αžαžΆαž‰ αžœαžΆαž™ 10 αžŠαŸ‚αž“αžšαŸ€αž„αžšαžΆαž›αŸ‹ 4 αž“αžΆαž‘αžΈαž˜αŸ’αžαž„αŸ” αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αž‡αžΆαžœαžΈαžŠαŸαž’αžΌ αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž’αŸŠαžΈαž’αžΊαžŽαž·αžαžαŸ‚αž„αžαŸ‚αžαžΌαž… αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž˜αž»αž“αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž“αŸ…αžαŸ‚αž˜αžΆαž“αŸ”

upload.fp.measure.office.com - αžŸαŸ†αžŠαŸ…αž‘αŸ… Office 365 αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαžŸαž˜αžšαž˜αŸ’αž™αž”αžΆαž“αž‘αŸαŸ”
browser.pipe.aria.microsoft.com - αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαžŸαž˜αžšαž˜αŸ’αž™αž”αžΆαž“αž‘αŸαŸ”
αž™αžΎαž„αžšαžΆαžšαžΆαŸ†αž„αž‘αžΆαŸ†αž„αž–αžΈαžšαŸ”

connect.facebook.net - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αž‡αŸ‚αž€αžαžΆαž˜αž αŸ’αžœαŸαžŸαž”αŸŠαž»αž€αŸ” αž“αŸ…αžŸαž›αŸ‹αŸ”

mediator.mail.ru αž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαžŸαŸ†αžŽαžΎαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ‚αž“ mail.ru αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹αž’αž“αž’αžΆαž“αž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜ αž“αž·αž„αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ’αžαž·αžαž·αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž˜αž·αž“αž‘αž»αž€αž…αž·αžαŸ’αžαŸ” αžŠαŸ‚αž“ mail.ru αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžαŸ’αž˜αŸ…αŸ”

google-analytics.com - αž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžšαžΆαžšαžΆαŸ†αž„αžœαžΆαŸ”
doubleclick.net - αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž»αž…αž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αŸ” αž™αžΎαž„αžšαžΆαžšαžΆαŸ†αž„αŸ”

αžŸαŸ†αžŽαžΎαž‡αžΆαž…αŸ’αžšαžΎαž“αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹ googleapis.com αŸ” αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž”αžΆαž“αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž€αžΆαžšαž”αž·αž‘αžŸαžΆαžšαžαŸ’αž›αžΈαŸ—αž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž”αž“αŸ’αž‘αŸ‡αžŠαŸαžšαžΈαž€αžšαžΆαž™ αžŠαŸ‚αž›αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž†αŸ’αž€αž½αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž αžΆαž„β€‹αž›αŸαž„β€‹αž”αžΆαž“β€‹αžˆαž”αŸ‹β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž™αžΎαž„β€‹αžˆαž”αŸ‹β€‹αž”αž·αž‘β€‹αžœαžΆβ€‹αžœαž·αž‰αŸ”

cloudflare.com - αž–αž½αž€αž‚αŸαžŸαžšαžŸαŸαžšαžαžΆαž–αž½αž€αž‚αŸαžŸαŸ’αžšαž‘αžΆαž‰αŸ‹αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αž αžΎαž™αž‡αžΆαž‘αžΌαž‘αŸ…αžŸαžšαžŸαŸαžšαž…αŸ’αžšαžΎαž“αž’αŸ†αž–αžΈαžαŸ’αž›αž½αž“αž–αž½αž€αž‚αŸαŸ” αž’αžΆαŸ†αž„αžαž„αŸ‹αžŸαŸŠαžΈαžαŸαž“αŸƒαž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αžŠαŸ‚αž“αž‚αžΊαž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αŸ„αŸ‡αž‘αŸ αžŠαŸ‚αž›αž‡αžΆαžšαžΏαž™αŸ—αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ” αžαŸ„αŸ‡αž‘αž»αž€αžœαžΆαž…αŸ„αž›αž₯αž‘αžΌαžœαž“αŸαŸ‡αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž’αžΆαŸ†αž„αžαž„αŸ‹αžŸαŸŠαžΈαžαŸαž“αŸƒαžŸαŸ†αžŽαžΎαž…αŸ’αžšαžΎαž“αžαŸ‚αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž’αŸ’αž“αž€β€‹αžŠαŸ‚αž›β€‹αž‡αŸ’αžšαž»αž›β€‹αžœαžΆβ€‹αž‡αžΆαž˜αž½αž™β€‹αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–β€‹αž€αŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αžŠαŸ‚αžšαŸ”

αžŠαŸ†αž”αžΌαž„αž”αŸ†αž•αž»αžαŸ”

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸŠαž·αž“αž’αžΊαžŽαž·αžαž₯αžαžαŸ’αžŸαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαž“αŸ…αžαŸ‚αžŠαŸαž€αž›αž€αŸ‹ αž αžΎαž™αžœαžΆαž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαžŸαŸ†αžŽαžΎαžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž˜αž»αž“αž‚αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž˜αŸ‰αŸ„αž„ 6:50 αž’αŸŠαž·αž“αž’αžΊαžŽαž·αžαž”αžΎαž€αž αžΎαž™αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αžŠαž”αŸ‹αž“αžΆαž‘αžΈαžŠαŸ†αž”αžΌαž„αž“αŸƒαž–αŸαž›αžœαŸαž›αžΆ 60 αžŠαŸ‚αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒ:

αžαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžαžΆαž˜αž•αŸ’αž‘αŸ‡ αž“αž·αž„αžŸαŸ’αžαž·αžαž·αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ?

αžŸαŸ†αžŽαž½αžšαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ SQL

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Table: First DNS Requests at 06:00',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests',
  DAYS AS 'Active Days',
  strftime('%H:%M', datetime(MIN_DT, 'unixepoch')) AS 'First Ping',
  strftime('%H:%M', datetime(MAX_DT, 'unixepoch')) AS 'Last Ping'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  MIN(EVENT_DT) AS MIN_DT,
  MAX(EVENT_DT) AS MAX_DT,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
  AND strftime('%H', datetime(EVENT_DT, 'unixepoch')) = strftime('%H', '2019-08-01 06:50:00')
GROUP BY REQUEST_NK
 )
WHERE DAYS > 3 -- at least 4 days activity
ORDER BY 5 DESC, 4 DESC

Firefox αž–αž·αž“αž·αžαŸ’αž™αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹ WLAN αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž‘αŸ†αž–αŸαžšαž…αžΌαž›αŸ”
Citrix αž€αŸ†αž–αž»αž„ pinging server αžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αž€αŸαžŠαŸ„αž™αŸ”
Symantec αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαŸ”
Mozilla αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαž αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž»αŸ†αž˜αž·αž“αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡αž€αŸαžŠαŸ„αž™αŸ”

mmo.de αž‚αžΊαž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž›αŸαž„αž αŸ’αž‚αŸαž˜αŸ” αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž‘αŸ†αž“αž„αž‡αžΆαžŸαŸ†αžŽαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž½αž…αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž€αžΆαžšαž‡αž‡αŸ‚αž€αžαžΆαž˜αž αŸ’αžœαŸαžŸαž”αŸŠαž»αž€αŸ” αž™αžΎαž„αžšαžΆαžšαžΆαŸ†αž„αŸ”

Apple αž“αžΉαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“αŸ” api-glb-fra.smoot.apple.com - αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸ„αž™αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆ αžšαžΆαž›αŸ‹αž€αžΆαžšαž…αž»αž…αž”αŸŠαžΌαžαž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž“αŸ…αž‘αžΈαž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ” αž˜αžΆαž“αž€αžΆαžšαžŸαž„αŸ’αžŸαŸαž™αžαŸ’αž–αžŸαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž˜αž»αžαž„αžΆαžšαŸ” αž™αžΎαž„αž‘αž»αž€αžœαžΆαž…αŸ„αž›αŸ”

αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αž‰αŸ’αž‡αžΈαžŸαŸ†αžŽαžΎαžŠαŸαžœαŸ‚αž„αž˜αž½αž™αž‘αŸ…αž€αžΆαž“αŸ‹ microsoft.com αŸ” αž™αžΎαž„αžšαžΆαžšαžΆαŸ†αž„αžŠαŸ‚αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ„αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž€αž˜αŸ’αžšαž·αžαž‘αžΈαž”αžΈαŸ”

αž…αŸ†αž“αž½αž“αž“αŸƒαžŠαŸ‚αž“αžšαž„αžŠαŸ†αž”αžΌαž„αž”αŸ†αž•αž»αžαŸ”
αžαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžαžΆαž˜αž•αŸ’αž‘αŸ‡ αž“αž·αž„αžŸαŸ’αžαž·αžαž·αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ?

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ 10 αž“αžΆαž‘αžΈαžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž”αžΎαž€αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž₯αžαžαŸ’αžŸαŸ‚αŸ”
αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš iOS αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž›αžΎαžŠαŸ‚αž“αžšαž„αž…αŸ’αžšαžΎαž“αž”αŸ†αž•αž»αž - 32. αžαžΆαž˜αž–αžΈαž€αŸ’αžšαŸ„αž™αžŠαŸ„αž™ Android - 24 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ Windows - 15 αž“αž·αž„αž…αž»αž„αž€αŸ’αžšαŸ„αž™ Blackberry - 9 αŸ”
αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ facebook αžαŸ‚αž―αž„αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž· 10 domains, skype polls 9 domainsαŸ”

αž”αŸ’αžšαž—αž–αž“αŸƒαž–αŸαžαŸŒαž˜αžΆαž“

αž”αŸ’αžšαž—αž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‚αžΊαž‡αžΆαž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ bind9 αžŠαŸ‚αž›αž˜αžΆαž“αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

01-Aug-2019 20:03:30.996 client 192.168.0.2#40693 (api.aps.skype.com): query: api.aps.skype.com IN A + (192.168.0.102)

αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αžΆαŸ†αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ sqlite αž“αž·αž„αžœαž·αž—αžΆαž‚αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ†αžŽαž½αžš SQL αŸ”
αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΎαžšαžαž½αž‡αžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αžŸαŸ†αžŽαžΎαž”αžΆαž“αž˜αž€αž–αžΈαžšαŸ‰αŸ„αžαž‘αŸαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž’αžαž·αžαž·αž‡αž“αžŸαŸ†αžŽαžΎαž˜αž½αž™αŸ” αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαžšαžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹, i.e. αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΆαž˜αž‘αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαž“αŸƒαžŸαŸ†αžŽαžΎ αžŸαŸ†αžŽαžΎαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž“αž·αž„αžŠαŸ‚αž“αž€αž˜αŸ’αžšαž·αžαž‘αžΈαž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αŸ”

αžαžΆαžšαžΆαž„ DDL

CREATE TABLE STG_BIND9_LOG (
  LINE_NK       INTEGER NOT NULL DEFAULT 1,
  DATE_NK       TEXT NOT NULL DEFAULT 'n.a.',
  TIME_NK       TEXT NOT NULL DEFAULT 'n.a.',
  CLI           TEXT, -- client
  IP            TEXT,
  REQUEST_NK    TEXT NOT NULL DEFAULT 'n.a.', -- requested domain
  DOMAIN        TEXT NOT NULL DEFAULT 'n.a.', -- domain second level
  QUERY         TEXT,
  UNIQUE (LINE_NK, DATE_NK, TIME_NK, REQUEST_NK)
);

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“ αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž‡αžΆαž„ 50 αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž”αŸ’αž›αž»αž€αŸ”

αž—αžΆαž–αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αŸƒαžŸαŸ†αžŽαž½αžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž™αŸ‰αžΆαž„αž›αŸ’αž’αžŠαŸ„αž™αž’αŸ’αž“αž€αž•αž›αž·αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž‡αž˜αŸ’αžšαž»αž‰αž‘αŸ†αž“αž»αž€αž…αž·αžαŸ’αžαŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž˜αž·αž“αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αž“αž·αž„αž‡αžΆαž…αž˜αŸ’αž„αž›αŸ‹αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹