查看: 16905|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( J+ G1 t$ ^. n; p' S. g' e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / N7 f9 b$ g! w" }9 R1 @9 ?2 W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: Z% a& [& C+ v8 P, N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 I8 q+ o' U' d- w  n5 i* B/ s9 Q; ^  [! p! _5 G! j( G$ ?

; w1 C/ P# {4 l* Q9 R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 B) I' o& I6 m* b6 y# P- j. d* {+ y5 d0 `" ]9 C" [
补充内容 (2012-3-8 09:42):* p* ?# R" z& M1 n( u( l" C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ |" K/ z& e) N2 h5 o3 B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
  R7 I- p# X. R7 G4 }) m; f  A- _$ A  U9 o# j
himr <address> <value>. sample: himr 0x80040000 0x0* _5 j( h7 n, G2 F1 ^" W" m
% ]/ {- E' P1 o" a( G# {
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* _. j) ]4 @  C4 q; V3 T6 x2 C9 v
himr 0x80040000 0x00
( r( {  x& D$ m4 L0 V, ^himr 0x80040001 0x11
  l0 D0 _' Z6 J  I) ghimr 0x80040002 0x22
$ H1 [3 g6 v6 ^+ u4 g3 B: Mhimr 0x80040003 0x33' U! u; K2 A# n+ C+ |4 Z1 w* ?
himr 0x80040004 0x44
, v( t- q9 q% ~- `himr 0x80040005 0x55# I( M# K7 w# T
4 b" G# X) C( B( X; f
SN也是类似。
: b# |( R" v/ j! O# U+ L1 y5 _$ h1 e6 ]- g- m' z
现在主要是,谁告诉我们MAC和SN的地址?
9 _- r9 [. [/ k1 ~* |6 p7 A
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - L8 `! v5 ]3 `) x4 n! q9 W$ A* r9 P9 ]
一直想找到运程修改MAC和SN的办法,苦于无解啊

, Q4 n! X  A: O2 b& D& c# ?' y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / n4 S7 u4 q2 n# Z

5 i) |( A9 B5 s! e修改的代码早有了。到今天不会编译。. \, V8 U* K. L" R  c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 [# g1 Y1 b. J' B4 {2 C
  2. #include <malloc.h>
    " \  e  {5 w3 c( G1 ^& b+ D
  3. #include <sys/types.h>
    9 M+ v% f. }* s2 k
  4. #include <sys/stat.h>
    8 F1 u4 X2 _+ i* l3 @7 n$ N4 `
  5. #include <sys/ioctl.h>; `4 a: r& R. F. l- I  y5 @8 w
  6. #include <stdio.h>
      t% @/ m; A. `4 u! O, \3 t
  7. #include <string.h>, T' J9 R' @2 f9 `5 v
  8. 2 F9 t8 Q9 F7 c7 U1 e
  9. typedef struct {0 R. L3 y5 w$ c- y( h# e
  10.         unsigned int        e2prom_cmd_sub_addr;
    , _# L! e" }8 M0 C! y  C
  11.         unsigned int        sub_addr_count;) |% s# f. @4 {( b3 i0 h: p7 P8 q
  12.         unsigned char*        e2prom_cmd_data;
    ) T2 N% G2 O$ @! A
  13.         unsigned int        data_count;: F* k, p1 ~4 T, |. V& x
  14. } e2prom_s_cmd;
    5 b6 A1 `, W4 t' V9 [
  15. 1 D( |1 @0 ~2 J* T' i
  16. #define E2PROM_CMD_READ 1- N* N6 Y  m: l  z' \; R+ `% c
  17. #define E2PROM_CMD_WRITE 2
    & F: Q% g3 A  x1 j/ h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 \0 L$ J6 J% f/ ^% @% V0 b5 A

  19. $ h0 k  Y6 W$ i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& ~9 u- X" R8 Q0 c9 [! s
  21. {2 I( ~8 W# U$ A/ k6 w& @
  22.         int fd, ret;2 Y; i8 O6 B8 B9 _7 k+ K
  23.         e2prom_s_cmd arg;
    # v* G5 ~: z! Y3 `+ _4 s
  24.         unsigned char buf[0x18];
    $ Y7 n% e3 [8 m* k+ U: A

  25. 2 q' D; f7 L2 ?8 @: ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% F' R- s: n- N; W7 u2 Z
  27.         if (fd  < 0) {
    5 u8 C$ u+ H# N# y  q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' @' A( @6 L2 K) z
  29.                 return -1;
    5 b. p4 R4 a8 \. r( w! I
  30.         }: r7 Q) D8 x" f) ?
  31.         arg.sub_addr_count      = 2;
    7 q4 K- t: H) o5 w9 R. R
  32.         arg.data_count          = 0x18;
    & D4 R$ e' O( X( g) |3 F
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ c% ^  n" O! a+ m4 h- h
  34.         arg.e2prom_cmd_data     = buf;
    % B8 z3 t- `2 {2 H* j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " t  j2 D8 n- @9 Z' W0 q1 c
  36.         if (ret != 0) {
    " |; k* a' b! o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ a  A0 @4 _. c$ \
  38.                 return -1;/ m6 |% R9 o# G0 T4 n$ I9 h8 J
  39.         }
    7 W3 h. K% o% L+ C3 I% [2 e6 D3 ]
  40.         memcpy(mac, buf, 6);. Z- ?4 F2 s! \- {  K. D
  41.         memcpy(stbid, &buf[6], 18);/ s$ {) G) C( `( P" j1 o
  42.         stbid[18] = '\0';3 H9 H$ I0 O- P+ }: W1 x' u' M  F) [

  43. ! W( O; M) r& D
  44.         return 0;$ z9 O9 Y9 E! B" ?
  45. }
    8 F7 n% W8 [. j! R5 ?

  46. - l7 p7 l9 B" o9 x+ U9 l* @# K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* y. s1 B- C) f3 h* S- v. F4 c
  48. {
    . h- {1 A3 A3 P1 ~$ q. P! c8 x
  49.         int fd, ret;
    3 W- X" \/ ^- h
  50.         e2prom_s_cmd arg;% W# `+ f& |% n. X/ }3 Q8 F
  51.         unsigned char buf[0x18];
    6 S% D$ B( `( N8 F: v$ E

  52. * r& S% H( K9 j: k4 t
  53.         memcpy(buf, mac, 6);) w; }- I$ ?& C' _0 l0 D
  54.         memcpy(&buf[6], stbid, 18);
    9 I4 y% Q! W, U4 `) D! m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. l1 \- ?) v# q2 p. [6 j, ^6 e
  56.         if (fd  < 0) {
    5 P6 b  h3 X9 S: m; }( v+ B( e3 U3 [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 Q0 R1 l1 ^. Z# a  ^* F5 }
  58.                 return -1;
    3 Y4 c5 ^7 c" `5 i8 Y& l
  59.         }
      R+ K/ g7 q- I# v7 t
  60.         arg.sub_addr_count      = 2;& W- s* ]% B. S- u7 ~; h6 U
  61.         arg.data_count          = 0x18;+ C' w2 y2 \1 @6 N# f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 |  \) ?: H- }9 @& E
  63.         arg.e2prom_cmd_data     = buf;
    9 r) m3 G+ U* f+ y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' b( ?9 U1 K* p( _6 B# m# W- [
  65.         if (ret != 0) {( Y( s" j0 Y: Q) Q9 ~' ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 f( t( y4 H* r! a/ _
  67.                 return -1;
    # e4 g  q* B2 x3 `! I
  68.         }
    & X' `5 f& W9 [0 u
  69. - d# j0 ]6 v0 D3 U3 L$ _5 o
  70.         return 0;" y0 `: H) a5 C7 M0 @
  71. }2 c3 H7 d' T+ {% z8 t
  72. % F3 r  |; ~! k* @1 i- K# A
  73. int main()
    & t( f" t" Z8 s+ C  s* c' `) ^
  74. {
    9 K: ?' x( s5 J
  75.         char c;# V+ ?; N! e9 g. X2 G% g& D: w4 |* L
  76.         int i, macs[6];
    7 j7 Z  H# A" C9 ]+ z; I: T
  77.         unsigned char mac[6];( Q: N, ^! h5 Q; O) H
  78.         unsigned char stbid[256];
    ; ?4 \( c5 ]- i% q) k
  79. + ^  l% O: ^1 B0 d( B7 O
  80.         if (readparam(mac, stbid) < 0)+ B. q# T) Y1 B# S6 H3 h; L5 t  c
  81.                 return 1;- t7 ~# l" W- I5 q4 W9 t

  82.   i4 k  t1 e: Y8 `+ z
  83.         printf("Current parameters: \n");9 \9 W: u* f1 l$ @& j3 p1 t3 n* |9 X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 t/ n0 d. y4 J6 B: ^1 x
  85.         printf("  STBID: %s\n", stbid);
    * k; J2 F: a% t1 \6 L2 E0 l, c
  86.         % \& S: U6 s  s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 \) |9 ^3 j" a9 l: s9 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & ^- c7 e/ `5 ~
  89.                 printf("Input MAC error\n");* I9 [3 t: Y# x
  90.                 return 1;! N) E% K; a, E% V
  91.         }$ i9 v0 E- _" R: P6 N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 s; a& [- x, i0 o1 s
  93.         printf("\nPlease input new STBID: ");6 Y: L, Z* A. \; {5 r; E$ e
  94.         scanf("%s", stbid);
    " m3 Q, @. H! \* L8 A' y
  95.         if (strlen(stbid) != 18) {. a; I( v+ q3 r( y
  96.                 printf("Invalid stbid\n");1 u$ r5 |5 X3 q. s* \) P. y( r
  97.                 return 1;
    : @' P8 V5 D  `$ \% Y- B+ ?0 U
  98.         }) `: ~- m5 q9 `  w, V: v
  99.         printf("\nNew parameters: \n");" Q, A) S. r( k) P: e  G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : u2 A6 j6 ?( a; A* H, b3 j
  101.         printf("  STBID: %s\n", stbid);
    ' n2 q" _/ i; W0 u, [# I

  102. ( I' {. q" w6 E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * V% p7 e. v/ [* T
  104.         for (;;) {
    + i' p4 F" w4 r2 q
  105.                 c = getchar();
    % F! t  T4 S5 k& C2 _
  106.                 if (c == 'y' || c == 'Y')0 \( h1 A+ ~( X* n1 E/ B
  107.                         break;
    / d3 }1 d0 t( Z3 ^$ _8 @
  108.                 if (c == 'n' || c == 'N') {5 g4 w( b- E  x% L6 ^
  109.                         printf("\nAborted.\n");8 I9 O$ K! O% k' L1 g5 L% t) p" @8 X
  110.                         return 1;8 c# D, m, B. D4 P1 R) a6 y7 E
  111.                 }
    - t# d5 ~$ s. d
  112.         }
    " V9 @. H1 k. I/ J  c/ Z
  113.         if (writeparam(mac, stbid) == 0) 4 K! n5 f8 \2 D' H/ c, y5 l
  114.                 printf("Parameters changed.\n");/ S: f. j1 A  y% ]1 m! e' g3 L

  115. 0 c$ I8 n9 [/ x8 ]1 a1 `
  116.         return 0;0 q, W( ?! R& q/ l/ j
  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 0 f% T) g- G8 K0 W
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 g' b6 }7 X) K( g9 ]) H
你用的编译命令行格式是什么?! ?! W& e5 e: F) o8 Y2 |# o  N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部