【メモ】サイバーセキュリティプログラミング 3章 OSError: [WinError 10013]

対象

3章 3.3 IPレイヤーのデコード

sniffer_ip_header_decode.py

 

事象

sniffer_ip_header_decode.pyを実行したところ以下のエラーが発生

OSError: [WinError 10013] アクセス許可で禁じられた方法でソケットにアクセスしようとしました。

 

原因

On Windows Vista/7, with UAC, administrator accounts run programs in unprivileged mode by default.

Programs must prompt for administrator access before they run as administrator, with the ever-so-familiar UAC dialog. Since Python scripts aren't directly executable, there's no "Run as Administrator" context menu option.

socket.error: [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions

unprivileged... あっ... そういうことっすか。

管理者権限がなかったのでうまく動かなかったようです。

こんなことに1時間費やしてしまうとは...

 

対策

管理者権限で実行する。

私の場合はSpyderで実行していたのでSpyderを管理者権限で起動するように設定しました。

 

結果

f:id:window5296:20171104205511p:plain

パケットを捕まえてくれました。

 

所感

やっぱりエラーは英語でぐぐるべし。日本語だとあまり検索に引っ掛かりません。

 

書籍

 

【Excel】VBAでマインスイーパー作ってみた(コードあり)

以下、過去記事の追記修正版 です。

Excel VBAにトライしてみた

身近なところからプログラミングを始めたいという方におすすめのVBA。 Excelさえあればプログラムをつくる&動かすことができるので気軽に始められます。(一般的な言語だと開発環境を構築しないといけないので結構大変です)

以前、VBAの勉強会に参加した後、勉強がてらマインスイーパーを作っていたのでそれを公開したいと思います。

 

画面レイアウト

爆弾の設置箇所はランダム。セルをクリックすると、当該セルに隣接する爆弾の数に応じて数値を表示します。

f:id:window5296:20160611213552p:plain

爆弾をクリックしたら赤くなります。

f:id:window5296:20160611213557p:plain

 

?

ソースコード

いろいろとツッコミどころのあるコードですが書き直したくないのでこのまま晒します。

各自修正してくださいね。

標準モジュール



'初期化処理
Public Sub initialize()
    Randomize '乱数系列の初期化
    
    Range("A10").Select '初期選択セル
    Range("M2").Value = bomNum
    
    '対象セルを塗りつぶす & 爆弾解除
    For i = 1 To celNum
        For j = 1 To celNum
        
            Cells(i, j).Interior.Color = RGB(0, 115, 176)
            Cells(i, j).Font.Color = RGB(0, 0, 0)
            Cells(i, j).Value = ""
            
        Next
    Next

    '爆弾の設置箇所を決定する
    For i = 1 To bomNum
    
        Dim ranNum(2) As Integer
        ranNum(1) = Int((celNum) * Rnd + 1) '乱数 行
        ranNum(2) = Int((celNum) * Rnd + 1) '乱数 列
        
        '既に爆弾がセットされている場合
        If Cells(ranNum(1), ranNum(2)).Value = "A" Then
            
            'スキップ
            i = i - 1
            
        Else
        
            ' 爆弾セット
            Cells(ranNum(1), ranNum(2)).Value = "A"
            Cells(ranNum(1), ranNum(2)).Font.Color = RGB(0, 115, 176)
        
        End If
    
    Next
End Sub

' 爆発処理
Public Sub explosion()

    For i = 1 To celNum
        For j = 1 To celNum
        
            Cells(i, j).Interior.Color = RGB(255, 0, 0)
            Cells(i, j).Font.Color = RGB(0, 0, 0)
            
            If Cells(i, j).Value = "A" Then
                Cells(i, j).Value = "★"

            End If
            
        Next
    Next
        
End Sub

標準モジュール2


Global Const celNum = 9 'セル幅
Global Const bomNum = 15 '爆弾の数

Sheet


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    On Error Resume Next
    
    'リセットボタンだった場合
    If Target.Value = "R" Then
        Call initialize
        Exit Sub
    End If
    
    
    '爆弾だった場合
    If Target.Value = "A" Then
        Call explosion
        Exit Sub
    End If
    
    '範囲外
    If Target.Row > celNum Or Target.Column > celNum Then
        Exit Sub
    End If
    
    '通常セルの場合
    Dim rowN As Integer
    Dim columnN As Integer
    Dim count As Integer
    count = 0
    
    rowN = Target.Row
    columnN = Target.Column
    
    For i = -1 To 1
        For j = -1 To 1
        
            ' 選択セル同士の比較はしない
            If Not (i = 0 And j = 0) Then
            
                If Not (rowN + i < 1 Or rowN + i > celNum Or columnN + j < 1 Or columnN + j > celNum) Then
                    If Cells(rowN + i, columnN + j).Value = "A" Then
                        
                        count = count + 1
                        
                    End If
                    
                End If
            
            End If
        
        Next
    Next
    
    If Not count = 0 Then
        Target.Value = count
    End If
    
    Target.Interior.Color = RGB(142, 209, 224)
    
End Sub

ThisWorkBook


Private Sub Workbook_Open()
        
    Call initialize
    
End Sub

 

エディターもExcel搭載のもので、自動的にエラーチェックもしてくれます。

(Alt+F11で起動します)

f:id:window5296:20160611213601p:plain

 

だいぶ前に書いた記事であるにも関わらず、一定数のアクセスがあったため今回こちらのブログで再公開することになりました。意外に需要があるのかな。

【過去問解説】平成29年度春期 応用情報技術者試験 ネットワーク(午後 問5)

平成29年度春期 応用情報技術者試験 午後問5

問5 レイヤ3スイッチの故障対策

難易度:★★★普通

設問1

a:どのノードに対してpingコマンドを実行したのかが問われています。DNSサーバの経路障害を疑う一文が解答欄aの直前にあるため、DNSサーバとの通信を調査したいことが分かります。

したがって答えはa:イです。

b:OSPFがルーティングプロトコルであることを知っていれば、その内容を知らなくても解答できるはずです。ルーティングプロトコルを設定すれば、ルータ間の経路情報を自動的に交換することが可能となります。この方式は、経路情報を管理者が事前に設定する"静的"経路制御と対をなすものであり、"動的"経路制御というものです。

したがって答えはb:コです。

c:問題文をよく見ると、PCのデフォルトゲートウェイは図1から変更していないとの記述があります(27ページ4行目)。図1では、PCから一番近いL3SWのポートはL3SW1のp10となっており、図2ではこのポートに171.16.2.250と明記されています。

したがって解答はc:オです。

d:L3SW1のp1が故障しているため、L3SW1を経由したPCからのサーバアクセスは不可能となります。したがって、PCがサーバにアクセスするためにはL3SW2を経由しなければなりません。つまり、PCから「ファイルサーバにアクセスしたい」というパケットが到着したときには「L3SW2を訪ねてください」とPCに伝えるためにルーティングテーブルを更新する必要があります

よって答えはd:カです。

e:サーバにアクセスしようとするPCはL3SW1の故障を知らないため、デフォルトゲートウェイであるL3SW1にパケットを送ります。しかし、L3SW1経由ではサーバアクセスできないため、L3SW1がこの事実を送信元ホストであるPCに伝達する必要があります。このような場合に、最適ではない経路を使用しているホストに対して最適な経路情報を通知する機能がICMPリダイレクトです

よって解答はe:クとなります。

?

設問2(1)

K君のPCでpingコマンドを実行した理由が問われています。いま、J君のPCからは業務サーバを利用できているがK君のPCからは利用できない状態です。この事象をOSI参照モデルをもとに考えてみると、「利用できるという状態=ネットワーク層のレベルで接続できている+ネットワーク層より上位層が正常に動作している」と切り分けることができます。

IPアドレスを使ってpingコマンドを実行することで相手先ホストにIPパケットが到達するかどうか(=ネットワーク層のレベルで接続できているか)を調べることができます。pingコマンドの実行の結果、パケットが到達しない場合は経路上に何らかの問題があるといえますし、反対に、パケットが到達すればネットワーク層の段階では問題なく接続できているといえるでしょう。

したがって、解答としては「業務サーバへの経路に障害があるかどうかを確認するため」となります。


設問2(2)

問題に答える前に、J君がDNS周りの障害であると判断した根拠が何なのか考えていきましょう。まず問題文に書かれている事象を整理します。

  • 業務サーバは正しく動作しているが、一部のサーバからは利用できておらず、IPアドレスをもとにしたpingコマンドを実行すると正しく到達していること。
  • 他の社員から、ファイルサーバや営業支援サーバも利用できないという連絡があった。

これらのことから以下のことが分かります。

  • 業務サーバ、ファイルサーバ、営業支援サーバは正常に動作している。
  • 人によって利用できないサーバが異なる。
  • 業務サーバ、ファイルサーバ、営業支援サーバいずれについてもIPアドレスによる通信は正常である(業務サーバへのping結果からの類推)

これらのことから、IPアドレスを使用した通信は正しく行われているが、それ以外の何かを使った通信ができていないと言えそうです。つまり、FQDNの名前解決が行えていないのです。例えば業務サーバに「Gyomu-Server」という名前を付け、それとIPアドレスとを紐づけていたとします。DNSが正しく動作していれば、PCから「Gyomu-Server」へアクセスがあった場合、それと紐づくIPアドレス172.16.1.1をPCに伝えることで正しく通信できることになるわけです。

さて、問題に戻りましょう。DNSサーバが利用できない状況でなぜサーバを利用できているのでしょうか。答えは簡単、DNSサーバを使わずに各種サーバにアクセスしているためです。サーバにアクセスするたびにDNSに問い合わせるのは非効率的ですので、PCはDNS情報を一時的にPC内に保持しています(キャッシュ)。

したがって解答は「PCにDNSのキャッシュが残っているから」です。

 

設問3

L3SW1のp1故障時にルーティングテーブルがどのように更新されるかが問われています。P1が故障しているのですから、それに対応する項番1の内容を変えなければなりません。設問1のdの解答より、各種サーバにアクセスするためには172.16.2.251にアクセスする必要があります。L3SW1にサーバ向けのパケットが到着したとき、そのパケットは172.16.2.251方向に転送されるのが適当です。

したがって、VLANインターフェースはp10と紐づく「172.168.2.250」、VLAN名は「VLAN20」となります

 

設問4(準備中)

準備中です。

解説について

・解答(太字部分)は

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_1/2017h29h_ap_pm_ans.pdf から引用しています。

・明らかに解説が誤っている場合はご連絡ください。

問題冊子・公式解答

IPA 独立行政法人 情報処理推進機構:問題冊子・配点割合・解答例・採点講評(2017、平成29年)

参考文献

応用情報の勉強時に使用したテキスト(最新版)

にほんブログ村 資格ブログ IT系資格へ
にほんブログ村

 

【過去問解説】平成21年度秋期 応用情報技術者試験 ネットワーク(午後 問5)

問題冊子・公式解答はこちらから

情報処理推進機構:情報処理技術者試験:問題冊子・配点割合・解答例・採点講評(2009、平成21年)

 

試験問題:平成21年度 秋期 AP試験区分 午後 問5

問5 リモートアクセスに関する問題

 

設問1

a,b:認証に用いられる技術またはシステムを答える必要があります。しかし、解答群の用語のうち、認証に関わる用語は2つしかありません。CHAPはチャレンジレスポンス方式を用いた認証システムであり、またRADIUSは利用者の認証・利用記録を一元的に行うシステムです。したがって答えはa:ウ、b:クとなります。


c:サーバ証明書を発行する機関またはシステムはCA、すなわち認証局ですので、答えはc:イです。認証局という名前ですが、公開鍵にディジタル署名を行うことでディジタル証明書の発行を行います。


d:IPsecにおいて暗号化機能を有するプロトコルはESPですので、正解はd:エとなります。なお、AHはメッセージ認証機能を持っていますが、暗号化機能はありません。


当設問1はセキュリティよりの問題が多く、かつ覚えていなければ解答できない問題ですので、基礎知識が定着していない方には難しいと思われます。

 

設問2

案1:案2、案3では暗号化に関して言及されているにも関わらず、案1だけ認証のことのみで暗号化にはまったく言及されていません。そのため平文での通信が予想されるため、秘密情報が盗聴される恐れがあります。したがって、答えは暗号化の検討について述べた、案1:イです。


案2:SSL-VPNには、Webブラウザのみの利用(HTTP)であればクライアント側での設備が不要であるという特徴があります。言い換えると、Web以外のアプリを使用する場合は専用ソフトウェアのインストールやクライアント側の環境設定が必要となります。しかし問題文にはクライアント側でSSL-VPN用の設定を行うことについて言及されていないので、HTTP以外のプロトコルは使用できません。よって答えは案2:アとなります。


案3:IPsecでの暗号化通信を行うにあたり、通信機器同士が鍵を交換する必要があります(IKE:Internet Key Exchange)。その鍵交換を行うにはお互いが正当であるか確かめる必要があり、その手段の一つとして事前共有鍵認証が存在します。そのため答えは案3:エです。

 

解説について

・解答(太字部分)は

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_2/2009h21a_ap_pm_ans.pdf

から引用しています。

・明らかに解説が誤っている場合はご連絡ください。

・ 設問3は別で公開します... 

参考文献

 

応用情報の勉強時に使用したテキスト(最新版)

にほんブログ村 資格ブログ IT系資格へ
にほんブログ村

【過去問解説】平成21年度春期 応用情報技術者試験 ネットワーク(午後 問5)

 

平成21年度 春期 AP試験区分 午後 問5

問5 DHCPに関する問題

難易度:★★★☆☆ 普通

設問1

a:DHCPを利用する目的について問われています。DHCPの目的自体を覚えていなくても、DHCPがないとどのような問題が起こるのか?」を考えてみればわかると思います。

DHCPがなければ、接続の度に重複していないIPアドレスを探して手作業で設定しなければなりません。一方、DHCPがあれば自動的にIPアドレスが採番されるので、すぐにTCP/IP通信が行えるようになります。

DHCPによって設定作業がラクになることが分かるので、答えはアとなります。

 

b,c: この問題もaと同じように、「もしリース期間がなかったら何が起こるか?」を考えてみましょう。リース期間がなければ、割り振られたIPアドレスはいつになっても変更されることなく、コンピュータに割り当てられ続けます。まったく使用されていない場合であってもです。とはいえ、DHCPサーバにとって使用することのできるIPアドレスの数の上限もあるので、使用していないまたは不要になった場合はIPアドレスは返却してもらいたいわけです。

リース期間があれば、一定時間ごとにIPアドレスを回収することができるのでIPアドレスを効率的に再利用することができます。そうすれば、DHCPサーバに登録するIPアドレスも減らすことができます。

したがって、答えはb:エ、c:アとなります。


d: DHCPリレーエージェントにはDHCPサーバのIPアドレスを設定することになっています。

そのため、答えはd:イです。


e:図からも分かるように、サブネットワークは建物ごとに設定されることが予想されるので、DHCPサーバは利用可能なIPアドレスを無作為に割り振るわけにはいきません。すなわち、DHCPサーバは、DHCPディスカバを送信したクライアントが属するサブネットワークに応じたIPアドレスを割り振る必要があります。そのためには、DHCPサーバはサブネットワークごとにIPアドレスなどのネットワーク設定情報を管理しなければなりません。

したがって、答えはe:オとなります。

 

f:DHCPディスカバを受信したDHCPリレーエージェント(ルータC)はすでにDHCPサーバのIPアドレスを知っているため、そもそもブロードキャストする必要がありません。

よって答えはf:Uとなります。


g:一方、DHCPリレーエージェント(ルータC)からDHCPディスカバを送信したPCに対しては、ブロードキャストでなければなりません。なぜなら、当該PCにIPアドレスはまだ割り振られていないからです。

したがって、答えはg:Bとなります。

?

設問2

h:DHCPオファーは、DHCPディスカバを受信したDHCPサーバから送信されるものなので、

答えはh:192.168.10.190です。


i,j:リース期間の延長は、DHCPクライアントからDHCPサーバに対してリクエストされます。したがって、

送信元IPアドレスはPC001のi:192.168.10.150

送信先IPアドレスDHCPサーバのj:192.168.10.190となります。

 

設問3(準備中)

準備中です。

設問4(準備中) 

準備中です。

解説について

・解答(太字部分)は

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_2/2009h21a_ap_pm_ans.pdf から引用しています。

・明らかに解説が誤っている場合はご連絡ください。

問題冊子・公式解答はこちらから

情報処理推進機構:情報処理技術者試験:問題冊子・配点割合・解答例・採点講評(2009、平成21年)

参考文献

応用情報の勉強時に使用したテキスト(最新版)

にほんブログ村 資格ブログ IT系資格へ
にほんブログ村