2016-06-01 29 views
0

我希望能夠從標準輸入讀取數據並掃描0x45的數據,這是我的IP標頭的開始。但我似乎無法確定如何識別IP標頭的開頭!我嘗試如下,我相信的問題是我如何讀取數據,並且無論是二進制數據需要轉換或我的價值來檢查需要的皈依:從標準輸入二進制數據中找到IP v4數據包

while True: 
    for data in sys.stdin.read(): 
     if(data==0x45): 
      #do somethin with the data... 
+1

比較好嗎? – salomonderossi

+0

這裏是一個從二進制流的片段的xxd轉儲:「... 080045b952ddacee ....」我想在哪裏找到0x45 – StianL

+0

'0x45'是字符'E',你可能會得到大量的錯誤陽性。 –

回答

0

看來你比較十進制十六進制。您在尋找45我覺得,並且與0x45相比較。

>> print(0x45) 
69 

因此,要找到你可以發佈一個例子輸入數據(從標準輸入)正確的部分,你應該有這樣的事情

for line in sys.stdin: 
    if "45" in line: 
     # do something with found data in line 
+0

這將是因爲XXD將數據從二進制轉換爲HEX爲了使其「可讀」。數據最初是二進制的,因此爲了解決您的解決方案,我需要通過f.ex將其轉換爲HEX。首先將它通過XXD管道,這是不可取的... – StianL