忍者ブログ
ネットワークセキュリティやってます。技術よりも趣味と雑談が多めのブログです。最近はオンライン英会話にはまっています。

2024-04

カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
アーカイブ
カウンター
ブログ内検索
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

pythonを少し勉強したので、プログラミングの練習のためksnctfの#2を解いてみたのでWrite-Upを残す。

問題のページ

問題文が暗号されているので、これを解読すれば解答となるFlagがありそう。fvzcyrでぐぐってみたらどうやらシーザー暗号らしい。何文字ずれているかを調べるため次のようなpythonプログラムを作った。


import string
sample="fvzcyr"
result=[]
for y in range(1,27):
      for x in range(len(sample)):
            check = ord(sample[x])+y
            if check > 122:
                  check = check-26
            result.append(chr(check))
      print "".join(result)
      result = []


ここでは、暗号文の中から適当にサンプル暗号文"fvzcyr"を選んで、すべてアルファベットを1~26文字ずらしてみたら以下のような結果がでた。


gwadzs
hxbeat
iycfbu
jzdgcv
kaehdw
lbfiex
mcgjfy
ndhkgz
oeilha
pfjmib
qgknjc
rhlokd
simple
tjnqmf
ukorng
vlpsoh
wmqtpi
xnruqj
yosvrk
zptwsl
aquxtm
brvyun
cswzvo
dtxawp
euybxq
fvzcyr


26個の暗号前単語候補のなかで、13番目のsimpleが唯一”読める”単語だったので、このシーザー暗号の解読は13文字をずらすと考えられる。

何文字をずらすかを分かったので、次に元の暗号文全体を13文字ずらすプログラムを書いた。


import string
sample="EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT."
result=[]
for x in range(len(sample)):
      check = ord(sample[x])
      if 65 <= check < 65 + 26:
            check = check + 13
            if check > 90:
                  check = check - 26
      elif 97 <= check < 97 + 26:
            check = check + 13
            if check > 122:
                  check = check - 26
      else:
            check = check
      result.append(chr(check))
print "".join(result)            


これを実行すると、暗号文は以下のように復号される。


ROT XIII is a simple letter substitution cipher that replaces a letter with the letter XIII letters after it in the alphabet. ROT XIII is an example of the Caesar cipher, developed in ancient Rome. Flag is FLAGSwzgxBJSAMqwxxAU. Insert an underscore immediately after FLAG.

"FLAGSwzgxBJSAMqwxxAU"がFlagだが、そのあとの文を読まないと本当のFlagが得られない。

もっと簡単に解ける関数もあるかもしれないが、今回はpythonを勉強したばっかでしたので、for文をできるだけ多く書いた。
PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Reddit-Twitter Mаster Methоd: Guidе to Mаssive Trаffiс
Hello! I'll tеll уou my mеthod with all the details, аs I startеd еarning in the Internet from $ 3,500 pеr dаy with the helр оf sосial netwоrks reddit and twittеr. In this vidеo уоu will find mоre detаilеd informatiоn and also sеe how many millions have eаrned thosе who have bеen working fоr a уеаr using mу method. I spеcificаlly made а videо in this саpaсitу. Аfter buуing my mеthоd, you will understаnd why: http://chat.libimseti.cz/redir.py?https%3A%2F%2Fvk.cc%2F8jfmy3
ThomasVof 2018/07/26(Thu)00:59:03 編集
著書




プロフィール
HN:
ぜん吉
性別:
男性
職業:
割と自由なリーマン
趣味:
海外出張
自己紹介:
2006年のCCNA合格を皮切りにCCIE-RSを含めて数々のシスコ資格をパスし、2009年に念願の海外受験(ドバイ)でCCIE-SCを取得。そして、2010年に目標だったトリプルCCIEを香港の地にて達成した。今はネットワークセキュリティやデータ分析などをやっています。

■2006年の目標
CCNA(達成)

■2007年の目標
CCNP(達成)
CCDA(達成)
CCDP(達成)
CCIP(達成)

■2008年の目標
CCSP(達成)
CCIE-RS(達成)
TOEIC700点(達成)

■2009年の目標
CCIE-Sec(達成)
TOEIC800点(達成)
JNCIA-JUNOS(達成)

■2010年の目標
JNCIA-M(達成)
CCIE-SP(達成)
JNCIS-M(達成)
JNCIA-EX(達成)
JNCIS-SEC(達成)

■2011年の目標
異動(未達成)

■2012年の目標
異動(未達成)
TOEIC850点(達成)

■2013年の目標
異動(達成)
CCIE更新(達成)

■2015年の目標
本を出す(達成)

■2017年の目標
TOEIC900(達成)
TOEIC950(達成)

■2018年の目標
英検1級(達成)

■2019年の目標
海外勤務








英会話







忍者ブログ [PR]
by 桜花素材サイト様. . . .