找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15268|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. T9 f. F1 m( i$ w& X- o- N" T# a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # {) W% k6 a" @, A! W, u5 ]2 _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% S6 T/ n7 s1 X6 P8 A: n: Eusage: himr <address> <value>. sample: himr 0x80040000 0x0' [2 `6 ]: ?1 d; \! V

* O$ q8 n! R( S' ~- t* s4 z# M' q! X0 \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 n; _: ?% G! |5 v( z* d3 Z
6 B& k9 z2 ]% I& F补充内容 (2012-3-8 09:42):0 x5 U/ Z, e+ t
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ E, T1 m3 M1 w0 l# U. G. O8 Q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 X  M+ C8 `' u5 r% U: K( C) m0 h

4 A$ O' N# G& X8 @8 a& m8 ghimr <address> <value>. sample: himr 0x80040000 0x0
+ D. `# H: R1 t$ q5 J3 D% M6 d7 r9 c8 l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( |, l$ h* {7 V/ [% X
himr 0x80040000 0x00' J5 B3 a  B& ?% }. E: A0 X
himr 0x80040001 0x11
1 e; K- D; A( o1 v9 y7 r# @himr 0x80040002 0x22+ f, [  k& I/ j" x( z+ m
himr 0x80040003 0x33/ X5 ^2 Q3 \4 s, C6 a) x
himr 0x80040004 0x44
- g: [1 z" V  ^9 c& h4 B( zhimr 0x80040005 0x55
) ^' A2 y, X3 k6 k: r/ O
7 M, v! ?) F: i! c' G+ uSN也是类似。' {4 N" q4 _2 {3 H6 r
4 X) q1 J. Z% A) R
现在主要是,谁告诉我们MAC和SN的地址?
' d) ?# N0 l- j* K. K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 X( ]0 j6 N. z" _! l" N
一直想找到运程修改MAC和SN的办法,苦于无解啊

- P1 J! U' U5 F+ B& `: g: ?源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. D- j# J9 H$ F# b* ]; |6 M" l& r+ W$ J8 g
修改的代码早有了。到今天不会编译。' B. K, N! R( E/ H4 G2 r' d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 R& |7 ~, k" B7 I9 h* g
  2. #include <malloc.h>& k, V; u2 q9 h8 w. s) A
  3. #include <sys/types.h>8 e. j0 R5 B" r* s' c/ I, w9 Q
  4. #include <sys/stat.h>& |2 q2 k6 K3 H; ]+ W
  5. #include <sys/ioctl.h>
    2 k7 o4 q  g5 r
  6. #include <stdio.h>7 J. r: @5 R, A) n. R% Q' k
  7. #include <string.h>) f4 j! x8 E7 m& v. W; v) _
  8.   `' c1 G& U& u$ {1 N( f" ^( S
  9. typedef struct {
    5 n; x+ b0 J: U3 a7 O
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 j- C5 t0 I  }* N9 X
  11.         unsigned int        sub_addr_count;; C4 X/ F8 \( y' M. J) U, k
  12.         unsigned char*        e2prom_cmd_data;
    ; c" R# w& {  ?' h2 {* I
  13.         unsigned int        data_count;
    3 i2 P: i- g8 i! R( m  F
  14. } e2prom_s_cmd;
    ' N2 A' l, u, U# V
  15. 2 i2 k5 K* i, I# R9 x* Y( Z) F7 |
  16. #define E2PROM_CMD_READ 1- h7 y2 O. j: f1 ^4 n$ y
  17. #define E2PROM_CMD_WRITE 2
    ( a' J3 H! P$ I! \$ ?+ o7 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". B: i0 ]: ~3 T  h

  19.   g# f' ]$ W6 V- ~$ ]8 @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 Y2 G7 t3 m0 I( H1 j
  21. {
    % @) a( h) V8 `4 u5 I' q$ L
  22.         int fd, ret;# z1 w6 u: v7 d) k
  23.         e2prom_s_cmd arg;1 |+ i3 n, P2 R! P1 Z7 U) |
  24.         unsigned char buf[0x18];
    : O% x# {' Q" `& ?! S' p7 Z+ E5 j
  25. 4 n" w/ b" d' y& B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; F6 x  p, A1 p: p, k4 w0 {8 F
  27.         if (fd  < 0) {; v; V# Q# a' j- C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- q! K9 [" r$ I8 C- M( q0 `) F
  29.                 return -1;
    5 V* R6 w$ z0 t  e8 A( l
  30.         }* P% e. ~$ a3 I8 F& T" n
  31.         arg.sub_addr_count      = 2;
    - F8 [; _* z& _% G7 D- q' q
  32.         arg.data_count          = 0x18;8 I0 @1 l: q( D$ }0 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 ]* O$ L. T* K
  34.         arg.e2prom_cmd_data     = buf;  a: F. X6 N' c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - z# x, T8 {; u6 Y: _8 p# r
  36.         if (ret != 0) {
    : }* H( y2 {& N1 p; B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % m# s$ i/ v: ?# B* D
  38.                 return -1;
      Y& z* ~; d' O- d
  39.         }
    $ p9 T6 F  g9 S1 Q. _
  40.         memcpy(mac, buf, 6);
    . r" f  e1 a( V% J( f$ @: \
  41.         memcpy(stbid, &buf[6], 18);
    ( y& _; ^4 _% ?  a
  42.         stbid[18] = '\0';
    ) O, G8 p6 p2 |% Y* _# ^; L/ X$ f
  43. 3 P4 u1 k1 K. n
  44.         return 0;
    1 @( x4 m) U/ [" R5 a. o7 T
  45. }
    ' J  N) G0 U2 R! w( V+ k
  46. : L4 y, `# t" M) [$ Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / g- ]% s9 P/ C8 s
  48. {
    1 e5 c' n5 |0 Q- e* T8 U( V/ U
  49.         int fd, ret;; _- J* L. w: [5 X
  50.         e2prom_s_cmd arg;
    1 y  |: A4 j9 t. y8 Y
  51.         unsigned char buf[0x18];
    ! E2 j% Y7 r$ s2 l2 g9 m; H

  52. & ?# y- U" _& X) m
  53.         memcpy(buf, mac, 6);8 A) u0 G  T/ w! w8 M3 L
  54.         memcpy(&buf[6], stbid, 18);
    . W$ g. w) U/ V% f( K& I. j" y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 B/ K: L0 C2 N$ Q
  56.         if (fd  < 0) {8 d% X* w3 _  K& K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 e( y2 O2 K* ~% {# Q
  58.                 return -1;
      o. L3 [% _( o4 }) o
  59.         }8 }* S6 l+ y2 o' _: I
  60.         arg.sub_addr_count      = 2;; S- Z" p2 F+ S+ x5 E& y
  61.         arg.data_count          = 0x18;
    . ]% Y( V) Y* Z6 n& ?( ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - H3 Q4 x7 b5 N! m7 q! X" r5 z
  63.         arg.e2prom_cmd_data     = buf;  d: J" n( y7 y$ R1 n, F! L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 E6 ^1 I: G  w3 c5 u, h: K
  65.         if (ret != 0) {1 M2 R! @- n0 M2 \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# T$ M' C% ?- z5 d6 f" V* G! i
  67.                 return -1;
    ' J! [5 b1 g+ o, m) y; Y
  68.         }, k2 f8 S1 b% K9 m
  69. % k+ v6 ~# p+ p
  70.         return 0;
    . [8 F3 c$ f3 Y* E1 H
  71. }3 g' g' J# f2 [( v

  72. $ l9 |5 d2 o- Z# N1 [
  73. int main()
    5 r) x( x5 G4 P& y  d, |
  74. {! W# i2 [. D. d7 y* j
  75.         char c;
    ' i* h7 {3 }  H1 }0 H/ @& T% g0 X
  76.         int i, macs[6];! k# m4 {  a! z4 `5 D* |1 a
  77.         unsigned char mac[6];8 v5 N$ s9 L) C% z2 T
  78.         unsigned char stbid[256];+ c3 y0 b+ F0 e; r6 D3 }

  79. 5 Z' j/ c% k; l' {4 N
  80.         if (readparam(mac, stbid) < 0)+ ]& F; x6 M. r; X" l; C
  81.                 return 1;" I( T- C6 I4 Z+ C, K8 w, ?

  82. . o* j; H" k3 w; S
  83.         printf("Current parameters: \n");; W% Q1 f' @$ n  z+ r% i, l; ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 Q" R: {3 c2 J3 p) c$ y$ K& @7 {
  85.         printf("  STBID: %s\n", stbid);
    4 Y8 M) r, g1 {3 {
  86.         " {+ b) o  w5 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ ]) P* `! F+ V: J9 u" I& @. n" E- D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' C$ ?) j! m. f
  89.                 printf("Input MAC error\n");
    # p$ l! O+ e0 M1 c
  90.                 return 1;% S* n& q. B5 E
  91.         }
    # ~0 ?6 d8 N3 j8 c) \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' q' T6 Q( g! j& C
  93.         printf("\nPlease input new STBID: ");
    0 v. u. c3 L# ]4 }  J+ i
  94.         scanf("%s", stbid);
    & j! b" E, @3 D
  95.         if (strlen(stbid) != 18) {# v$ j0 o- {9 T! m* r/ ]% C
  96.                 printf("Invalid stbid\n");, O9 i. j/ ~5 m: Z/ j8 G! d
  97.                 return 1;
    % J' W/ O: V: l1 E  U
  98.         }
    + H4 h7 o* I  V$ B
  99.         printf("\nNew parameters: \n");
    : h7 Z6 Q. o" s- R  u2 P# T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ G$ l) {+ E6 {1 n/ Q/ J8 w; t2 `
  101.         printf("  STBID: %s\n", stbid);
    & d  E! t# w0 i- d# J+ z: G
  102. 5 U# B5 F  o1 S! F: w
  103.         printf("\nDo you want to change paramemters? (y/N) ");, A! j2 N; h1 [& Z: `# j
  104.         for (;;) {1 v/ c& \! T% V' B
  105.                 c = getchar();7 g8 T/ ]5 [5 }$ a+ F! ~
  106.                 if (c == 'y' || c == 'Y')
    & ^% a2 K) ^  B& d
  107.                         break;
    7 N6 Z5 d5 X  x* Q2 m
  108.                 if (c == 'n' || c == 'N') {
    ; t3 s/ r4 b8 i5 H0 u
  109.                         printf("\nAborted.\n");* ~+ b; S9 ?6 |( ]6 m
  110.                         return 1;9 W, F8 _' R7 }# ]
  111.                 }
    ) {2 i; W* D9 j( O( f% _+ o
  112.         }( g2 v" q' I7 X9 {3 V# y
  113.         if (writeparam(mac, stbid) == 0) 9 F9 }& P! M5 o+ u+ v
  114.                 printf("Parameters changed.\n");
    / i8 e/ [7 W" a/ i" K
  115. 1 R9 O9 s3 i9 \
  116.         return 0;( b7 x  L4 r( o' ~4 U# a  |4 c
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
  Z- N1 U4 `4 ^0 B$ w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 W# K' h. ~" C
你用的编译命令行格式是什么?
* ?9 o" ^4 k! H# O9 M+ e
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-14 22:04 , Processed in 0.048921 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表