New tools to parse json data from ripe atlas (dns measurements)
This commit is contained in:
		
							
								
								
									
										84
									
								
								dns-abuf.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								dns-abuf.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,84 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # | ||||
| # Copyright (c) 2016, Babak Farrokhi | ||||
| # All rights reserved. | ||||
| # | ||||
| # Redistribution and use in source and binary forms, with or without | ||||
| # modification, are permitted provided that the following conditions are met: | ||||
| # | ||||
| # * Redistributions of source code must retain the above copyright notice, this | ||||
| #   list of conditions and the following disclaimer. | ||||
| # | ||||
| # * Redistributions in binary form must reproduce the above copyright notice, | ||||
| #   this list of conditions and the following disclaimer in the documentation | ||||
| #   and/or other materials provided with the distribution. | ||||
| # | ||||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
| # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
| # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
| # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| # | ||||
|  | ||||
| import json | ||||
| import os | ||||
| import sys | ||||
| import abuf | ||||
| import base64 | ||||
| from datetime import datetime | ||||
|  | ||||
|  | ||||
| def load_ids(fn): | ||||
|     """ | ||||
|     Loads measurement IDs from given file | ||||
|  | ||||
|     @param fn: input filename | ||||
|     @type fn: str | ||||
|     @return: Dictionary of loaded measurement IDs | ||||
|     @rtype: dict | ||||
|     """ | ||||
|     ids = {} | ||||
|  | ||||
|     if os.path.exists(fn): | ||||
|         with open(fn, "r") as fp:  # save all ids to json | ||||
|             try: | ||||
|                 ids = json.load(fp) | ||||
|             except Exception as e: | ||||
|                 print(e) | ||||
|                 exit(1) | ||||
|     return ids | ||||
|  | ||||
|  | ||||
| def dump_dns(ids): | ||||
|     for r in ids: | ||||
|         try: | ||||
|             rt = r.get("result")["abuf"] | ||||
|         except: | ||||
|             print(r) | ||||
|             pass | ||||
|         else: | ||||
|             try: | ||||
|                 abuf_json = abuf.AbufParser.parse(base64.b64decode(rt)) | ||||
|                 print(abuf_json['AnswerSection'][0]) | ||||
|             except Exception as e: | ||||
|                 print(abuf_json) | ||||
|                 pass | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     if len(sys.argv) < 2: | ||||
|         print("please provide json filename") | ||||
|         exit(0) | ||||
|     fn = sys.argv[1] | ||||
|  | ||||
|     ids = load_ids(fn) | ||||
|     dump_dns(ids) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										0
									
								
								dns-decoder.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								dns-decoder.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										76
									
								
								dns-maxmind.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										76
									
								
								dns-maxmind.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,76 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # | ||||
| # Copyright (c) 2016, Babak Farrokhi | ||||
| # All rights reserved. | ||||
| # | ||||
| # Redistribution and use in source and binary forms, with or without | ||||
| # modification, are permitted provided that the following conditions are met: | ||||
| # | ||||
| # * Redistributions of source code must retain the above copyright notice, this | ||||
| #   list of conditions and the following disclaimer. | ||||
| # | ||||
| # * Redistributions in binary form must reproduce the above copyright notice, | ||||
| #   this list of conditions and the following disclaimer in the documentation | ||||
| #   and/or other materials provided with the distribution. | ||||
| # | ||||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
| # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
| # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
| # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| # | ||||
|  | ||||
| import json | ||||
| import os | ||||
| import sys | ||||
| from datetime import datetime | ||||
|  | ||||
|  | ||||
| def load_ids(fn): | ||||
|     """ | ||||
|     Loads measurement IDs from given file | ||||
|  | ||||
|     @param fn: input filename | ||||
|     @type fn: str | ||||
|     @return: Dictionary of loaded measurement IDs | ||||
|     @rtype: dict | ||||
|     """ | ||||
|     ids = {} | ||||
|  | ||||
|     if os.path.exists(fn): | ||||
|         with open(fn, "r") as fp:  # save all ids to json | ||||
|             try: | ||||
|                 ids = json.load(fp) | ||||
|             except Exception as e: | ||||
|                 print(e) | ||||
|                 exit(1) | ||||
|     return ids | ||||
|  | ||||
|  | ||||
|  | ||||
| def dump_dns(ids): | ||||
|     for r in ids: | ||||
|         try: | ||||
|             rt = r.get("result")["answers"][0]["RDATA"][0] | ||||
|             print(rt) | ||||
|         except: | ||||
|             pass | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     if len(sys.argv) < 2: | ||||
|         print("please provide json filename") | ||||
|         exit(0) | ||||
|     fn = sys.argv[1] | ||||
|  | ||||
|     ids = load_ids(fn) | ||||
|     dump_dns(ids) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
		Reference in New Issue
	
	Block a user