我正在使用Python 3从pcapy输出中检索HTTP标头。这应该不是那么困难,但是我很难将数据包变成可读的东西,这使我无法继续下去。我只允许使用pcapy和其他Python标准库工具。
(function(){
angular.module('test', []);
angular.module('test')
.controller('MainController', MainController)
.directive('modelGatherer', modelGatherer)
.directive('gatheredModelDisplay', gatheredModelDisplay);
MainController.$inject = [];
function MainController() {
var vm = this;
vm.displayed = true;
}
function modelGatherer() {
modelGathererController.$inject = ['$scope'];
function modelGathererController($scope) {
var vm = this;
vm.ngModels = [];
vm.addModel = addModel;
//
function addModel(model) {
if(angular.isDefined(model)) {
vm.ngModels.push(model);
}
}
}
return {
restrict: 'A',
scope: true,
require: 'modelGatherer',
controller: modelGathererController,
priority: 5000,
link: link
};
function link(scope, element, attrs, ctrl) {
var ngModelElements = Array.prototype.slice.call(element[0].querySelectorAll('[ng-model]'));
ngModelElements
.map(toNgModelController)
.forEach(addToCtrl);
//
function toNgModelController(val) {
return angular.element(val).controller('ngModel');
}
function addToCtrl(val) {
ctrl.addModel(val);
}
}
}
function gatheredModelDisplay() {
return {
restrict: 'E',
require: '^modelGatherer',
template: '<pre>{{ctrlNames | json}}</pre>',
scope: true,
link: link
};
function link(scope, element, attrs, ctrl) {
scope.ctrlNames = [];
scope.$watch(getNgModelCtrls, onNgModelCtrlChange, true);
//
function getNgModelCtrls() {
return ctrl.ngModels;
}
function onNgModelCtrlChange(newVal) {
scope.ctrlNames = newVal.map(toName);
//
function toName(val) {
return val.$name;
}
}
}
}
})();
返回数据包的字节字符串(任何数据包):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div ng-app="test" ng-controller="MainController as main">
<form no-validate model-gatherer>
<input type="text" name="test1" placeholder="test1" ng-model="main.test1" />
<input type="text" name="test2" placeholder="test2" ng-model="main.test2" />
<input type="text" name="test3" placeholder="test3" ng-model="main.test3" />
<div ng-if="main.displayed">
<input type="text" name="test4" placeholder="test4" ng-model="main.test4" />
</div>
<div ng-switch="main.displayed">
<input ng-switch-when="true" type="text" name="test5" placeholder="test5" ng-model="main.test5" />
</div>
<div ng-show="main.displayed">
<input type="text" name="test6" placeholder="test6" ng-model="main.test6" />
</div>
<gathered-model-display />
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
</body>
</html>
返回的有效负载的某些部分是人类可读的,而其他部分则不是,我认为是用ASCII编码的。
此时我迷路了,因为我们刚刚被告知我们可以“编写我们自己的结构”来解析这些数据,而不知道它是如何工作的。
如何在保留已经人类可读的内容的同时解码剩余的字节串? HTTP标头已经显示,但我很有兴趣检索与标头关联的源和目标IP地址。